From 1d03e9aa8b0f718e3f0cc22ca3434e9cdc499dc8 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sun, 19 Mar 2023 09:18:18 +0100 Subject: [PATCH] Follow-up to a47abfd, fix logged PID reported by external logger tool Issue #344 Signed-off-by: Joachim Wiberg --- src/service.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/service.c b/src/service.c index 270bf829..219fc44d 100644 --- a/src/service.c +++ b/src/service.c @@ -243,9 +243,12 @@ static void fallback_logger(char *ident, char *prio) static int lredirect(svc_t *svc) { static int have_sysklogd = -1; - pid_t pid; + pid_t pid, svc_pid; int fd; + svc_pid = getpid(); + dbg("%s pid: %d", svc_ident(svc, NULL, 0), svc_pid); + /* * Open PTY to connect to logger. A pty isn't buffered * like a pipe, and it eats newlines so they aren't logged @@ -268,21 +271,19 @@ static int lredirect(svc_t *svc) if (have_sysklogd == -1) { FILE *pp; + have_sysklogd = 0; + pp = popen("logger -h 2>/dev/null", "r"); if (pp) { char buf[128]; - have_sysklogd = 0; while (fgets(buf, sizeof(buf), pp)) { if (strstr(buf, "-I PID")) { have_sysklogd = 1; break; } } - pclose(pp); - } else { - have_sysklogd = 0; } } @@ -318,7 +319,7 @@ static int lredirect(svc_t *svc) char rot[25], pid[16]; snprintf(rot, sizeof(rot), "%d:%d", logfile_size_max, logfile_count_max); - snprintf(pid, sizeof(pid), "%d", getppid()); + snprintf(pid, sizeof(pid), "%d", svc_pid); execlp("logger", "logger", "-f", svc->log.file, "-b", "-t", tag, "-p", prio, "-I", pid, "-r", rot, NULL); } else { char sz[20], num[3]; @@ -339,7 +340,7 @@ static int lredirect(svc_t *svc) if (have_sysklogd) { char pid[16]; - snprintf(pid, sizeof(pid), "%d", getppid()); + snprintf(pid, sizeof(pid), "%d", svc_pid); execlp("logger", "logger", "-t", tag, "-p", prio, "-I", pid, NULL); } else { execlp(_PATH_LOGIT, "logit", "-t", tag, "-p", prio, NULL);