-const char errlog_rcs[] = "$Id: errlog.c,v 1.61 2007/11/04 19:03:01 fabiankeil Exp $";
+const char errlog_rcs[] = "$Id: errlog.c,v 1.65 2008/01/31 14:44:33 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/errlog.c,v $
*
* Revisions :
* $Log: errlog.c,v $
+ * Revision 1.65 2008/01/31 14:44:33 fabiankeil
+ * Use (a != b) instead of !(a == b) so the sanity check looks less insane.
+ *
+ * Revision 1.64 2008/01/21 18:56:46 david__schmidt
+ * Swap #def from negative to positive, re-joined it so it didn't
+ * span an assertion (compilation failure on OS/2)
+ *
+ * Revision 1.63 2007/12/15 19:49:32 fabiankeil
+ * Stop overloading logfile to control the mingw32 log window as well.
+ * It's no longer necessary now that we disable all debug lines by default
+ * and at least one user perceived it as a regression (added in 1.55).
+ *
+ * Revision 1.62 2007/11/30 15:33:46 fabiankeil
+ * Unbreak LOG_LEVEL_FATAL. It wasn't fatal with logging disabled
+ * and on mingw32 fatal log messages didn't end up in the log file.
+ *
* Revision 1.61 2007/11/04 19:03:01 fabiankeil
* Fix another deadlock Hal spotted and that mysteriously didn't affect FreeBSD.
*
{
if (logfp != NULL)
{
- log_error(LOG_LEVEL_INFO, "No logfile configured. Logging disabled.");
+ log_error(LOG_LEVEL_INFO,
+ "No logfile configured. Please enable it before reporting any problems.");
lock_logfile();
fclose(logfp);
logfp = NULL;
* settings and that logging is enabled.
* Bail out otherwise.
*/
- if ((loglevel != LOG_LEVEL_FATAL) &&
- ((0 == (loglevel & debug)) || (logfp == NULL)))
+ if ((0 == (loglevel & debug))
+#ifndef _WIN32
+ || (logfp == NULL)
+#endif
+ )
{
return;
}
length += strlcpy(outbuf + length, "\n", log_buffer_size - length);
/* Some sanity checks */
- if (!(length < log_buffer_size)
- || !(outbuf[log_buffer_size-1] == '\0')
- || !(outbuf[log_buffer_size] == '\0')
+ if ((length >= log_buffer_size)
+ || (outbuf[log_buffer_size-1] != '\0')
+ || (outbuf[log_buffer_size] != '\0')
)
{
/* Repeat as assertions */
loglevel = LOG_LEVEL_FATAL;
}
- assert(NULL != logfp || loglevel == LOG_LEVEL_FATAL);
+ assert(loglevel & debug);
+#ifndef _WIN32
+ /*
+ * On Windows this is acceptable in case
+ * we are logging to the GUI window only.
+ */
+ assert(NULL != logfp);
+#endif
if (loglevel == LOG_LEVEL_FATAL)
{
fatal_error(outbuf_save);
/* Never get here */
}
- fputs(outbuf_save, logfp);
-
+ if (logfp != NULL)
+ {
+ fputs(outbuf_save, logfp);
+ }
unlock_logfile();
#if defined(_WIN32) && !defined(_WIN_CONSOLE)