env-util: introduce env_update_systemd_exec_pid()

Will be used in later commits.
This commit is contained in:
Yu Watanabe
2021-02-01 01:13:44 +09:00
parent 2824374f95
commit cfd1c6e262
3 changed files with 63 additions and 0 deletions
+38
View File
@@ -4,6 +4,8 @@
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
#include "parse-util.h"
#include "process-util.h"
#include "serialize.h"
#include "string-util.h"
#include "strv.h"
@@ -335,6 +337,41 @@ static void test_env_assignment_is_valid(void) {
assert_se(!env_assignment_is_valid("głąb=printf \"\x1b]0;<mock-chroot>\x07<mock-chroot>\""));
}
static void test_setenv_systemd_exec_pid(void) {
_cleanup_free_ char *saved = NULL;
const char *e;
pid_t p;
log_info("/* %s */", __func__);
e = getenv("SYSTEMD_EXEC_PID");
if (e)
assert_se(saved = strdup(e));
assert_se(unsetenv("SYSTEMD_EXEC_PID") >= 0);
assert_se(setenv_systemd_exec_pid(true) == 0);
assert_se(!getenv("SYSTEMD_EXEC_PID"));
assert_se(setenv("SYSTEMD_EXEC_PID", "*", 1) >= 0);
assert_se(setenv_systemd_exec_pid(true) == 0);
assert_se(e = getenv("SYSTEMD_EXEC_PID"));
assert_se(streq(e, "*"));
assert_se(setenv("SYSTEMD_EXEC_PID", "123abc", 1) >= 0);
assert_se(setenv_systemd_exec_pid(true) == 1);
assert_se(e = getenv("SYSTEMD_EXEC_PID"));
assert_se(parse_pid(e, &p) >= 0);
assert_se(p == getpid_cached());
assert_se(unsetenv("SYSTEMD_EXEC_PID") >= 0);
assert_se(setenv_systemd_exec_pid(false) == 1);
assert_se(e = getenv("SYSTEMD_EXEC_PID"));
assert_se(parse_pid(e, &p) >= 0);
assert_se(p == getpid_cached());
assert_se(set_unset_env("SYSTEMD_EXEC_PID", saved, 1) >= 0);
}
int main(int argc, char *argv[]) {
test_setup_logging(LOG_DEBUG);
@@ -353,6 +390,7 @@ int main(int argc, char *argv[]) {
test_env_name_is_valid();
test_env_value_is_valid();
test_env_assignment_is_valid();
test_setenv_systemd_exec_pid();
return 0;
}