preserve stringlengths when outputting stuff in the imap module
[citadel.git] / citadel / ecrash.c
index ea75ea1cd65aa1da4c7b2126b3216b06bd28c00b..ec91a02e4418bc166e9e0289fc5834526b7cf8cc 100644 (file)
  *
  * vim: ts=4
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 3.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
 #include "sysdep.h"
@@ -45,7 +39,7 @@
 #include "citserver.h"
 #include "ecrash.h"
 
-#define NIY()  printf("%s: Not Implemented Yet!\n", __FUNCTION__)
+#define NIY()  printf("function not implemented yet!\n");
 #ifdef HAVE_BACKTRACE
 #include <execinfo.h>
 static eCrashParameters gbl_params;
@@ -58,7 +52,6 @@ static int    gbl_backtraceDoneFlag = 0;
 static void *stack_frames[50];
 static size_t size, NThread;
 static char **strings;
-static char StaticBuf[SIZ];
 
 /* 
  * Private structures for our thread list
@@ -185,14 +178,7 @@ static void outputPrintf(char *format, ...)
 
        va_start(ap, format);
 
-       if (enable_syslog)
-       {
-               snprintf (StaticBuf, SIZ, format, ap);
-               syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf);
-       }
-       else
-               CtdlLogPrintf(CTDL_EMERG, format, ap);
-
+       vsyslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, format, ap);
 } // outputPrintf
 
 
@@ -208,25 +194,14 @@ static void createGlobalBacktrace( void )
 {
 
        size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*));
-       if (enable_syslog)
-               for (NThread = 0; NThread < size; NThread++) 
-               {
-                       snprintf (StaticBuf, SIZ, "RAW: %p  ", stack_frames[NThread]);
-                       syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf);
-               }
-       else 
-               for (NThread = 0; NThread < size; NThread++) 
-                       CtdlLogPrintf(CTDL_ALERT, "RAW: %p\n", stack_frames[NThread]);
+       for (NThread = 0; NThread < size; NThread++) 
+       {
+               syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p  ", stack_frames[NThread]);
+       }
        strings = backtrace_symbols(stack_frames, size);
        for (NThread = 0; NThread < size; NThread++) {
                if (strings != NULL) {
-                       if (enable_syslog)
-                       {// vsyslogs printf compliance sucks.
-                               snprintf (StaticBuf, SIZ, "RAW: %p  ", strings[NThread]);
-                               syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf);
-                       }
-                       else
-                               CtdlLogPrintf(CTDL_ALERT, "%s\n", strings[NThread]);
+                       syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p  ", strings[NThread]);
                }
        }
 } /* createGlobalBacktrace */
@@ -234,15 +209,10 @@ static void outputRawtrace( void )
 {
 
        size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*));
-       if (enable_syslog)
-               for (NThread = 0; NThread < size; NThread++) 
-               {
-                       snprintf (StaticBuf, SIZ, "RAW: %p  ", stack_frames[NThread]);
-                       syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf);
-               }
-       else 
-               for (NThread = 0; NThread < size; NThread++) 
-                       CtdlLogPrintf(CTDL_ALERT, "RAW: %p\n", stack_frames[NThread]);
+       for (NThread = 0; NThread < size; NThread++) 
+       {
+               syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p  ", stack_frames[NThread]);
+       }
 } /* createGlobalBacktrace */
 
 /*!
@@ -423,6 +393,7 @@ int eCrash_Init(eCrashParameters *params)
 
        DPRINTF(ECRASH_DEBUG_VERY_VERBOSE,"Init Starting params = %p\n", params);
 
+       if (params == NULL) return -1;
        // Allocate our backtrace area
        gbl_backtraceBuffer = malloc(sizeof(void *) * (params->maxStackDepth+5));