X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogger.c;h=81196dbe00cd0e0734989d22149439bd5e040d14;hp=510f4e223d00dd479a50e2670d19d82ab55f892e;hb=bbc732830876ce75a95c57ccf8677f74e4569efc;hpb=84168c7740e8b370cb92548bd21defea0150c69f diff --git a/src/logger.c b/src/logger.c index 510f4e223..81196dbe0 100644 --- a/src/logger.c +++ b/src/logger.c @@ -37,10 +37,11 @@ #include "list.h" #include "sd-daemon.h" #include "tcpwrap.h" +#include "def.h" #define STREAMS_MAX 4096 #define SERVER_FD_MAX 16 -#define TIMEOUT ((int) (5*60*MSEC_PER_SEC)) +#define TIMEOUT_MSEC ((int) (DEFAULT_EXIT_USEC/USEC_PER_MSEC)) typedef struct Stream Stream; @@ -104,20 +105,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 +127,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 +516,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. */ @@ -666,7 +662,7 @@ int main(int argc, char *argv[]) { if ((k = epoll_wait(server.epoll_fd, &event, 1, - server.n_streams <= 0 ? TIMEOUT : -1)) < 0) { + server.n_streams <= 0 ? TIMEOUT_MSEC : -1)) < 0) { if (errno == EINTR) continue;