chiark / gitweb /
unit: pull in logger unit only when running in system mode
[elogind.git] / src / logger.c
index 342c30789921d1245250c608f6842f5149cd8cb1..faa6c9721f2f3752692124c9592f992ce609cba7 100644 (file)
@@ -38,9 +38,9 @@
 #include "sd-daemon.h"
 #include "tcpwrap.h"
 
-#define STREAMS_MAX 256
+#define STREAMS_MAX 4096
 #define SERVER_FD_MAX 16
-#define TIMEOUT ((int) (10*MSEC_PER_SEC))
+#define TIMEOUT ((int) (5*60*MSEC_PER_SEC))
 
 typedef struct Stream Stream;
 
@@ -104,20 +104,16 @@ static int stream_log(Stream *s, char *p, usec_t ts) {
 
         priority = s->priority;
 
-        if (s->prefix &&
-            p[0] == '<' &&
-            p[1] >= '0' && p[1] <= '7' &&
-            p[2] == '>') {
-
-                /* Detected priority prefix */
-                priority = LOG_MAKEPRI(LOG_FAC(priority), (p[1] - '0'));
-
-                p += 3;
-        }
+        if (s->prefix)
+                parse_syslog_priority(&p, &priority);
 
         if (*p == 0)
                 return 0;
 
+        /* Patch in LOG_USER facility if necessary */
+        if ((priority & LOG_FACMASK) == 0)
+                priority = LOG_USER | LOG_PRI(priority);
+
         /*
          * The format glibc uses to talk to the syslog daemon is:
          *
@@ -130,8 +126,7 @@ static int stream_log(Stream *s, char *p, usec_t ts) {
          *  We extend the latter to include the process name and pid.
          */
 
-        snprintf(header_priority, sizeof(header_priority), "<%i>",
-                 s->target == STREAM_SYSLOG ? priority : LOG_PRI(priority));
+        snprintf(header_priority, sizeof(header_priority), "<%i>", priority);
         char_array_0(header_priority);
 
         if (s->target == STREAM_SYSLOG) {
@@ -520,7 +515,7 @@ static int server_init(Server *s, unsigned n_sockets) {
 
                 /* We use ev.data.ptr instead of ev.data.fd here,
                  * since on 64bit archs fd is 32bit while a pointer is
-                 * 64bit. To make sure we can easily distuingish fd
+                 * 64bit. To make sure we can easily distinguish fd
                  * values and pointer values we want to make sure to
                  * write the full field unconditionally. */