[PATCH] Extract LogFinishInit from LogInit

Mikhail Gusarov dottedmag at dottedmag.net
Sun Oct 24 16:32:43 PDT 2010


This change makes logging initialization a bit less obscure.

Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
---
 include/os.h |    1 +
 os/log.c     |   29 +++++++++++++++--------------
 os/osinit.c  |    8 +++++---
 3 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/include/os.h b/include/os.h
index efa202c..2c63491 100644
--- a/include/os.h
+++ b/include/os.h
@@ -526,6 +526,7 @@ typedef enum {
 } MessageType;
 
 extern _X_EXPORT const char *LogInit(const char *fname, const char *backup);
+extern           void LogFinishInit(void);
 extern _X_EXPORT void LogClose(void);
 extern _X_EXPORT Bool LogSetParameter(LogParameter param, int value);
 extern _X_EXPORT void LogVWrite(int verb, const char *f, va_list args);
diff --git a/os/log.c b/os/log.c
index f5dfdbf..52bb4aa 100644
--- a/os/log.c
+++ b/os/log.c
@@ -163,9 +163,21 @@ asm (".desc ___crashreporter_info__, 0x10");
 #endif
 
 /*
- * LogInit is called to start logging to a file.  It is also called (with
- * NULL arguments) when logging to a file is not wanted.  It must always be
- * called, otherwise log messages will continue to accumulate in a buffer.
+ * Dicard buffered log messages (if any) and stop further buffering.
+ */
+void
+LogFinishInit(void)
+{
+    if (saveBuffer) {
+	free(saveBuffer);	/* Must be free(), not free() */
+	saveBuffer = NULL;
+    }
+    bufferSize = 0;
+    needBuffer = FALSE;
+}
+
+/*
+ * LogInit is called to start logging to a file.
  *
  * %s, if present in the fname or backup strings, is expanded to the display
  * string.
@@ -218,17 +230,6 @@ LogInit(const char *fname, const char *backup)
 	}
     }
 
-    /*
-     * Unconditionally free the buffer, and flag that the buffer is no longer
-     * needed.
-     */
-    if (saveBuffer && bufferSize > 0) {
-	free(saveBuffer);	/* Must be free(), not free() */
-	saveBuffer = NULL;
-	bufferSize = 0;
-    }
-    needBuffer = FALSE;
-
     return logFileName;
 }
 
diff --git a/os/osinit.c b/os/osinit.c
index c83c32c..0d409e2 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -300,11 +300,13 @@ OsInit(void)
     }
     TimerInit();
     OsVendorInit();
+
     /*
-     * No log file by default.  OsVendorInit() should call LogInit() with the
-     * log file name if logging to a file is desired.
+     * This call will disable further buffering of log messages. DDX should have
+     * initialized logging in OsVendorInit already.
      */
-    LogInit(NULL, NULL);
+    LogFinishInit();
+
     SmartScheduleInit ();
 }
 
-- 
1.7.1



More information about the xorg-devel mailing list