X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmain.c;h=ed317b44132235a7c4b63e57863813056a0dcd2e;hb=4b9397474f2c80957fd1cedf885061052333fb25;hp=a849824bb3fb2cf92645690bb16b881533a4e2c4;hpb=2c6db6fb9b1a10184b086df0d23228c4c0205a49;p=elogind.git diff --git a/src/main.c b/src/main.c index a849824bb..ed317b441 100644 --- a/src/main.c +++ b/src/main.c @@ -323,6 +323,26 @@ static int parse_proc_cmdline_word(const char *word) { log_warning("Failed to parse default standard error switch %s. Ignoring.", word + 31); else arg_default_std_error = r; + } else if (startswith(word, "systemd.setenv=")) { + char *cenv, *eq; + int r; + + cenv = strdup(word + 15); + if (!cenv) + return -ENOMEM; + + eq = strchr(cenv, '='); + if (!eq) { + r = unsetenv(cenv); + if (r < 0) + log_warning("unsetenv failed %s. Ignoring.", strerror(errno)); + } else { + *eq = 0; + r = setenv(cenv, eq + 1, 1); + if (r < 0) + log_warning("setenv failed %s. Ignoring.", strerror(errno)); + } + free(cenv); #ifdef HAVE_SYSV_COMPAT } else if (startswith(word, "systemd.sysv_console=")) { int r;