mirror of
https://github.com/troglobit/finit.git
synced 2026-10-30 12:50:34 +00:00
Follow-up to a47abfd, fix logged PID reported by external logger tool
Issue #344 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 parent
5340e47e81
commit
1d03e9aa8b
1 file changed
+8
-7
+8
-7
@@ -243,9 +243,12 @@ static void fallback_logger(char *ident, char *prio)
|
|||||||
static int lredirect(svc_t *svc)
|
static int lredirect(svc_t *svc)
|
||||||
{
|
{
|
||||||
static int have_sysklogd = -1;
|
static int have_sysklogd = -1;
|
||||||
pid_t pid;
|
pid_t pid, svc_pid;
|
||||||
int fd;
|
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
|
* Open PTY to connect to logger. A pty isn't buffered
|
||||||
* like a pipe, and it eats newlines so they aren't logged
|
* 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) {
|
if (have_sysklogd == -1) {
|
||||||
FILE *pp;
|
FILE *pp;
|
||||||
|
|
||||||
|
have_sysklogd = 0;
|
||||||
|
|
||||||
pp = popen("logger -h 2>/dev/null", "r");
|
pp = popen("logger -h 2>/dev/null", "r");
|
||||||
if (pp) {
|
if (pp) {
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
have_sysklogd = 0;
|
|
||||||
while (fgets(buf, sizeof(buf), pp)) {
|
while (fgets(buf, sizeof(buf), pp)) {
|
||||||
if (strstr(buf, "-I PID")) {
|
if (strstr(buf, "-I PID")) {
|
||||||
have_sysklogd = 1;
|
have_sysklogd = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pclose(pp);
|
pclose(pp);
|
||||||
} else {
|
|
||||||
have_sysklogd = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,7 +319,7 @@ static int lredirect(svc_t *svc)
|
|||||||
char rot[25], pid[16];
|
char rot[25], pid[16];
|
||||||
|
|
||||||
snprintf(rot, sizeof(rot), "%d:%d", logfile_size_max, logfile_count_max);
|
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);
|
execlp("logger", "logger", "-f", svc->log.file, "-b", "-t", tag, "-p", prio, "-I", pid, "-r", rot, NULL);
|
||||||
} else {
|
} else {
|
||||||
char sz[20], num[3];
|
char sz[20], num[3];
|
||||||
@@ -339,7 +340,7 @@ static int lredirect(svc_t *svc)
|
|||||||
if (have_sysklogd) {
|
if (have_sysklogd) {
|
||||||
char pid[16];
|
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);
|
execlp("logger", "logger", "-t", tag, "-p", prio, "-I", pid, NULL);
|
||||||
} else {
|
} else {
|
||||||
execlp(_PATH_LOGIT, "logit", "-t", tag, "-p", prio, NULL);
|
execlp(_PATH_LOGIT, "logit", "-t", tag, "-p", prio, NULL);
|
||||||
|
|||||||
Reference in new issue
Block a user