summaryrefslogtreecommitdiff
path: root/sal/osl/unx/signal.c
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2004-05-10 10:06:35 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2004-05-10 10:06:35 +0000
commit2bf10fad5c10cd689f0cbc06aac020c848745739 (patch)
treec73cb1e600b917b45e7ed8a45ea5dd44e348da6e /sal/osl/unx/signal.c
parentb26f57db727aa35b73839c229bdc5762e4771e99 (diff)
INTEGRATION: CWS crashreport01 (1.20.6); FILE MERGED
2004/04/19 08:55:46 hro 1.20.6.2: #110526# Use environment variables for crash reportwer configuration 2004/03/17 13:19:54 hro 1.20.6.1: #110526# Enable UI less crash reporting
Diffstat (limited to 'sal/osl/unx/signal.c')
-rw-r--r--sal/osl/unx/signal.c53
1 files changed, 46 insertions, 7 deletions
diff --git a/sal/osl/unx/signal.c b/sal/osl/unx/signal.c
index 43e242820471..5c65661ac35c 100644
--- a/sal/osl/unx/signal.c
+++ b/sal/osl/unx/signal.c
@@ -2,9 +2,9 @@
*
* $RCSfile: signal.c,v $
*
- * $Revision: 1.20 $
+ * $Revision: 1.21 $
*
- * last change: $Author: hr $ $Date: 2004-02-03 13:23:08 $
+ * last change: $Author: hr $ $Date: 2004-05-10 11:06:35 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -90,6 +90,7 @@
#include <osl/mutex.h>
#include <osl/signal.h>
#include <osl/process.h>
+#include <osl/thread.h>
#include <rtl/digest.h>
@@ -358,9 +359,12 @@ static int fputs_xml( const char *string, FILE *stream )
/* Create intermediate files and run crash reporter */
+#define REPORTENV_PARAM "-crashreportenv:"
+
static int ReportCrash( int Signal )
{
static sal_Bool bCrashReporterExecuted = sal_False;
+ sal_Bool bNoUI = sal_False;
sal_uInt32 argi;
sal_uInt32 argc;
@@ -377,6 +381,39 @@ static int ReportCrash( int Signal )
rtl_uString_release( ustrCommandArg );
return -1;
}
+ else if ( 0 == rtl_ustr_ascii_compare( rtl_uString_getStr( ustrCommandArg ), "-autocrashreport" ) )
+ {
+ bNoUI = sal_True;
+ }
+ else if ( 0 == rtl_ustr_ascii_shortenedCompare_WithLength(
+ rtl_uString_getStr( ustrCommandArg ), rtl_uString_getLength( ustrCommandArg ),
+ REPORTENV_PARAM, strlen(REPORTENV_PARAM) )
+ )
+ {
+ rtl_uString *ustrEnvironment = NULL;
+ rtl_String *strEnv = NULL;
+
+ rtl_uString_newFromStr( &ustrEnvironment, rtl_uString_getStr( ustrCommandArg ) + strlen(REPORTENV_PARAM) );
+
+ if ( ustrEnvironment )
+ {
+ rtl_uString2String(
+ &strEnv,
+ rtl_uString_getStr( ustrEnvironment ), rtl_uString_getLength( ustrEnvironment ),
+ osl_getThreadTextEncoding(), OUSTRING_TO_OSTRING_CVTFLAGS
+ );
+
+ if ( strEnv )
+ {
+ putenv( rtl_string_getStr( strEnv ) );
+ rtl_string_release( strEnv );
+ }
+
+ rtl_uString_release( ustrEnvironment );
+ }
+
+ }
+
}
}
@@ -550,25 +587,27 @@ static int ReportCrash( int Signal )
#if defined( LINUX )
if ( pXMLTempName && pChecksumTempName && pStackTempName )
snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
- "crash_report -p %d -s %d -xml %s -chksum %s -stack %s",
+ "crash_report -p %d -s %d -xml %s -chksum %s -stack %s%s",
getpid(),
Signal,
pXMLTempName,
pChecksumTempName,
- pStackTempName );
+ pStackTempName,
+ bNoUI ? " -noui" : "" );
#elif defined ( SOLARIS )
if ( pXMLTempName && pChecksumTempName )
snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
- "crash_report -p %d -s %d -xml %s -chksum %s",
+ "crash_report -p %d -s %d -xml %s -chksum %s%s",
getpid(),
Signal,
pXMLTempName,
- pChecksumTempName );
+ pChecksumTempName,
+ bNoUI ? " -noui" : "" );
#endif
#else /* defined INCLUDE BACKTRACE */
snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
- "crash_report -p %d -s %d", getpid(), Signal );
+ "crash_report -p %d -s %d%s", getpid(), Signal, bNoUI ? " -noui" : "" );
#endif /* defined INCLUDE BACKTRACE */