X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogger.c;h=faa6c9721f2f3752692124c9592f992ce609cba7;hb=3bbecb2f2cd758e2513993efad01180c7c3c665f;hp=710dfed33bc9b12a0e0a6bfef38e41aef6507ff8;hpb=29db583471f019ed9939a90966b3e194a9560e7e;p=elogind.git diff --git a/src/logger.c b/src/logger.c index 710dfed33..faa6c9721 100644 --- a/src/logger.c +++ b/src/logger.c @@ -93,42 +93,6 @@ struct Stream { LIST_FIELDS(Stream, stream); }; -static void parse_priority(char **p, int *priority) { - int a = 0, b = 0, c = 0; - int k; - - assert(p); - assert(*p); - assert(priority); - - if ((*p)[0] != '<') - return; - - if (!strchr(*p, '>')) - return; - - if ((*p)[2] == '>') { - c = undecchar((*p)[1]); - k = 3; - } else if ((*p)[3] == '>') { - b = undecchar((*p)[1]); - c = undecchar((*p)[2]); - k = 4; - } else if ((*p)[4] == '>') { - a = undecchar((*p)[1]); - b = undecchar((*p)[2]); - c = undecchar((*p)[3]); - k = 5; - } else - return; - - if (a < 0 || b < 0 || c < 0) - return; - - *priority = a*100+b*10+c; - *p += k; -} - static int stream_log(Stream *s, char *p, usec_t ts) { char header_priority[16], header_time[64], header_pid[16]; @@ -141,25 +105,14 @@ static int stream_log(Stream *s, char *p, usec_t ts) { priority = s->priority; if (s->prefix) - parse_priority(&p, &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; - } + parse_syslog_priority(&p, &priority); if (*p == 0) return 0; /* Patch in LOG_USER facility if necessary */ - if (LOG_FAC(priority) == 0) - priority = LOG_MAKEPRI(LOG_USER, LOG_PRI(priority)); + if ((priority & LOG_FACMASK) == 0) + priority = LOG_USER | LOG_PRI(priority); /* * The format glibc uses to talk to the syslog daemon is: