[Gnucash-changes] Stephen Evanchik's trace crash patch.
Derek Atkins
warlord at cvs.gnucash.org
Thu Dec 2 10:20:10 EST 2004
Log Message:
-----------
Stephen Evanchik's trace crash patch.
* src/engine/gnc-trace.c: Try a few different filenames for
the trace log and if all else fails fall back to stderr.
Modified Files:
--------------
gnucash:
ChangeLog
gnucash/src/engine:
gnc-trace.c
Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1861
retrieving revision 1.1862
diff -LChangeLog -LChangeLog -u -r1.1861 -r1.1862
--- ChangeLog
+++ ChangeLog
@@ -3,6 +3,9 @@
* src/business/business-ledger/Makefile.am: add explicit
dependency on business-utils.
+ * src/engine/gnc-trace.c: Try a few different filenames for
+ the trace log and if all else fails fall back to stderr.
+
2004-11-27 Christian Stimming <stimming at tuhh.de>
* src/import-export/import-backend.c
Index: gnc-trace.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/gnc-trace.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -Lsrc/engine/gnc-trace.c -Lsrc/engine/gnc-trace.c -u -r1.11 -r1.12
--- src/engine/gnc-trace.c
+++ src/engine/gnc-trace.c
@@ -26,6 +26,11 @@
#include "config.h"
#include <glib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#else
+ /* What to do? */
+#endif
#include <stdarg.h>
#include <string.h>
#include <sys/time.h>
@@ -65,6 +70,7 @@
};
static FILE *fout = NULL;
+static const int MAX_TRACE_FILENAME = 100;
static void
fh_printer (const gchar *log_domain,
@@ -74,14 +80,24 @@
{
FILE *fh = user_data;
fprintf (fh, "%s\n", message);
+ fflush(fh);
}
void
gnc_log_init (void)
{
- fout = stderr;
- fout = stdout;
+ char *filename;
+
fout = fopen ("/tmp/gnucash.trace", "w");
+
+ if(!fout && (filename = (char *)malloc(MAX_TRACE_FILENAME))) {
+ snprintf(filename, MAX_TRACE_FILENAME-1, "/tmp/gnucash.trace.%d", getpid());
+ fout = fopen (filename, "w");
+ }
+
+ if(!fout)
+ fout = stderr;
+
g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_MASK, fh_printer, fout);
}
More information about the gnucash-changes
mailing list