From: Zbigniew Jędrzejewski-Szmek Date: Sat, 5 Nov 2022 16:40:01 +0000 (+0100) Subject: basic: move container_get_leader() to process-util.[ch] X-Git-Tag: v253-rc1~572^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3ec2ad35ba881f17bf4cbbb9bc07df9f53062335;p=thirdparty%2Fsystemd.git basic: move container_get_leader() to process-util.[ch] basic/util.[ch] is a grab-bag of unrelated functions. Let's move a few of the remaning functions to better locations. --- diff --git a/src/basic/process-util.c b/src/basic/process-util.c index 0213f5913f5..6e4a56b0aac 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -22,12 +22,14 @@ #include "alloc-util.h" #include "architecture.h" +#include "env-file.h" #include "env-util.h" #include "errno-util.h" #include "escape.h" #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "hostname-util.h" #include "locale-util.h" #include "log.h" #include "macro.h" @@ -35,6 +37,7 @@ #include "missing_sched.h" #include "missing_syscall.h" #include "namespace-util.h" +#include "parse-util.h" #include "path-util.h" #include "process-util.h" #include "raw-clone.h" @@ -253,6 +256,47 @@ int get_process_cmdline(pid_t pid, size_t max_columns, ProcessCmdlineFlags flags return 0; } +int container_get_leader(const char *machine, pid_t *pid) { + _cleanup_free_ char *s = NULL, *class = NULL; + const char *p; + pid_t leader; + int r; + + assert(machine); + assert(pid); + + if (streq(machine, ".host")) { + *pid = 1; + return 0; + } + + if (!hostname_is_valid(machine, 0)) + return -EINVAL; + + p = strjoina("/run/systemd/machines/", machine); + r = parse_env_file(NULL, p, + "LEADER", &s, + "CLASS", &class); + if (r == -ENOENT) + return -EHOSTDOWN; + if (r < 0) + return r; + if (!s) + return -EIO; + + if (!streq_ptr(class, "container")) + return -EIO; + + r = parse_pid(s, &leader); + if (r < 0) + return r; + if (leader <= 1) + return -EIO; + + *pid = leader; + return 0; +} + static int update_argv(const char name[], size_t l) { static int can_do = -1; diff --git a/src/basic/process-util.h b/src/basic/process-util.h index ed2f73673e7..d5986ad6469 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -50,6 +50,8 @@ int get_process_environ(pid_t pid, char **ret); int get_process_ppid(pid_t pid, pid_t *ret); int get_process_umask(pid_t pid, mode_t *ret); +int container_get_leader(const char *machine, pid_t *pid); + int wait_for_terminate(pid_t pid, siginfo_t *status); typedef enum WaitFlags { diff --git a/src/basic/util.c b/src/basic/util.c index c47ea4584b9..74f5ad7236a 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -21,47 +21,6 @@ int saved_argc = 0; char **saved_argv = NULL; -int container_get_leader(const char *machine, pid_t *pid) { - _cleanup_free_ char *s = NULL, *class = NULL; - const char *p; - pid_t leader; - int r; - - assert(machine); - assert(pid); - - if (streq(machine, ".host")) { - *pid = 1; - return 0; - } - - if (!hostname_is_valid(machine, 0)) - return -EINVAL; - - p = strjoina("/run/systemd/machines/", machine); - r = parse_env_file(NULL, p, - "LEADER", &s, - "CLASS", &class); - if (r == -ENOENT) - return -EHOSTDOWN; - if (r < 0) - return r; - if (!s) - return -EIO; - - if (!streq_ptr(class, "container")) - return -EIO; - - r = parse_pid(s, &leader); - if (r < 0) - return r; - if (leader <= 1) - return -EIO; - - *pid = leader; - return 0; -} - int version(void) { printf("systemd " STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")\n%s\n", systemd_features); diff --git a/src/basic/util.h b/src/basic/util.h index 347e4fe4b03..6438555c6ca 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -66,8 +66,6 @@ static inline unsigned log2u_round_up(unsigned x) { return log2u(x - 1) + 1; } -int container_get_leader(const char *machine, pid_t *pid); - int version(void); void disable_coredumps(void); diff --git a/src/libsystemd/sd-bus/bus-container.c b/src/libsystemd/sd-bus/bus-container.c index b3c0279c0bd..b9a38269d9d 100644 --- a/src/libsystemd/sd-bus/bus-container.c +++ b/src/libsystemd/sd-bus/bus-container.c @@ -10,7 +10,6 @@ #include "namespace-util.h" #include "process-util.h" #include "string-util.h" -#include "util.h" int bus_container_connect_socket(sd_bus *b) { _cleanup_close_pair_ int pair[2] = { -1, -1 }; diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 2b180a8c0f6..7972fc009e5 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -40,7 +40,6 @@ #include "terminal-util.h" #include "time-util.h" #include "utf8.h" -#include "util.h" #include "web-util.h" /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */