Add DBUS_SYSTEM_LOG_FATAL severity
authorColin Walters <walters@verbum.org>
Fri, 12 Mar 2010 16:30:00 +0000 (11:30 -0500)
committerColin Walters <walters@verbum.org>
Tue, 16 Mar 2010 19:57:24 +0000 (15:57 -0400)
This severity is useful for when we encounter a fatal problem; we
get a log message out, then exit.

dbus/dbus-sysdeps-util-unix.c
dbus/dbus-sysdeps.h

index 4269381..93ad253 100644 (file)
@@ -397,6 +397,8 @@ _dbus_system_log (DBusSystemLogSeverity severity, const char *msg, ...)
  * @param msg a printf-style format string
  * @param args arguments for the format string
  *
+ * If the FATAL severity is given, this function will terminate the program
+ * with an error code.
  */
 void
 _dbus_system_logv (DBusSystemLogSeverity severity, const char *msg, va_list args)
@@ -410,10 +412,16 @@ _dbus_system_logv (DBusSystemLogSeverity severity, const char *msg, va_list args
       case DBUS_SYSTEM_LOG_SECURITY:
         flags = LOG_AUTH | LOG_NOTICE;
         break;
+      case DBUS_SYSTEM_LOG_FATAL:
+        flags = LOG_DAEMON|LOG_CRIT;
       default:
         return;
     }
+
   vsyslog (flags, msg, args);
+  
+  if (severity == DBUS_SYSTEM_LOG_FATAL)
+    exit (1);
 }
 
 /** Installs a UNIX signal handler
index 4011cab..12e9124 100644 (file)
@@ -442,7 +442,8 @@ void _dbus_init_system_log (void);
 
 typedef enum {
   DBUS_SYSTEM_LOG_INFO,
-  DBUS_SYSTEM_LOG_SECURITY
+  DBUS_SYSTEM_LOG_SECURITY,
+  DBUS_SYSTEM_LOG_FATAL
 } DBusSystemLogSeverity;
 
 void _dbus_system_log (DBusSystemLogSeverity severity, const char *msg, ...);