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=342c30789921d1245250c608f6842f5149cd8cb1;hb=bbc732830876ce75a95c57ccf8677f74e4569efc;hpb=28dbc1e80b0db09313f11e44f218138aefd646c8 diff --git a/src/logger.c b/src/logger.c index 342c30789..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 256 +#define STREAMS_MAX 4096 #define SERVER_FD_MAX 16 -#define TIMEOUT ((int) (10*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;