basic/log: split out invoked_by_systemd() utility function

This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2022-07-15 15:47:23 +02:00
parent 17021368fc
commit 494f4ee9c7
3 changed files with 28 additions and 20 deletions
+2 -20
View File
@@ -1153,30 +1153,12 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat
}
static bool should_parse_proc_cmdline(void) {
const char *e;
pid_t p;
/* PID1 always reads the kernel command line. */
if (getpid_cached() == 1)
return true;
/* If the process is directly executed by PID1 (e.g. ExecStart= or generator), systemd-importd,
* or systemd-homed, then $SYSTEMD_EXEC_PID= is set, and read the command line. */
e = getenv("SYSTEMD_EXEC_PID");
if (!e)
return false;
if (streq(e, "*"))
/* For testing. */
return true;
if (parse_pid(e, &p) < 0) {
/* We know that systemd sets the variable correctly. Something else must have set it. */
log_debug("Failed to parse \"$SYSTEMD_EXEC_PID=%s\". Ignoring.", e);
return false;
}
return getpid_cached() == p;
/* Otherwise, parse the commandline if invoked directly by systemd. */
return invoked_by_systemd();
}
void log_parse_environment_variables(void) {