From: Lennart Poettering Date: Mon, 12 Dec 2016 12:42:06 +0000 (+0100) Subject: util-lib: read $SYSTEMD_PROC_CMDLINE if set when looking for the kernel cmdline X-Git-Tag: v233~237^2~29 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2467cc55f139cf540dc1ed6da5f3774fcbab4475;p=thirdparty%2Fsystemd.git util-lib: read $SYSTEMD_PROC_CMDLINE if set when looking for the kernel cmdline if we want to parse the kernel command line, let's check the $SYSTEMD_PROC_CMDLINE environment variable first. This is useful for debugging purposes. --- diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md index 4ace45751f7..1ad2addfeef 100644 --- a/ENVIRONMENT.md +++ b/ENVIRONMENT.md @@ -21,6 +21,11 @@ All tools: * `$SD_EVENT_PROFILE_DELAYS=1` — if set, the sd-event event loop implementation will print latency information at runtime. +* `$SYSTEMD_PROC_CMDLINE` — if set, may contain a string that is used as kernel + command line instead of the actual one readable from /proc/cmdline. This is + useful for debugging, in order to test generators and other code against + specific kernel command lines. + systemctl: * `$SYSTEMCTL_FORCE_BUS=1` — if set, do not connect to PID1's private D-Bus diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c index 8297a222b76..98c94ed5e26 100644 --- a/src/basic/proc-cmdline.c +++ b/src/basic/proc-cmdline.c @@ -34,8 +34,22 @@ #include "virt.h" int proc_cmdline(char **ret) { + const char *e; assert(ret); + /* For testing purposes it is sometimes useful to be able to override what we consider /proc/cmdline to be */ + e = secure_getenv("SYSTEMD_PROC_CMDLINE"); + if (e) { + char *m; + + m = strdup(e); + if (!m) + return -ENOMEM; + + *ret = m; + return 0; + } + if (detect_container() > 0) return get_process_cmdline(1, 0, false, ret); else