--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include <unistd.h>
+
+#include "env-util.h"
+#include "initrd-util.h"
+#include "parse-util.h"
+#include "stat-util.h"
+#include "string-util.h"
+
+static int saved_in_initrd = -1;
+
+bool in_initrd(void) {
+ int r;
+ const char *e;
+ bool lenient = false;
+
+ if (saved_in_initrd >= 0)
+ return saved_in_initrd;
+
+ /* We have two checks here:
+ *
+ * 1. the flag file /etc/initrd-release must exist
+ * 2. the root file system must be a memory file system
+ *
+ * The second check is extra paranoia, since misdetecting an
+ * initrd can have bad consequences due the initrd
+ * emptying when transititioning to the main systemd.
+ *
+ * If env var $SYSTEMD_IN_INITRD is not set or set to "auto",
+ * both checks are used. If it's set to "lenient", only check
+ * 1 is used. If set to a boolean value, then the boolean
+ * value is returned.
+ */
+
+ e = secure_getenv("SYSTEMD_IN_INITRD");
+ if (e) {
+ if (streq(e, "lenient"))
+ lenient = true;
+ else if (!streq(e, "auto")) {
+ r = parse_boolean(e);
+ if (r >= 0) {
+ saved_in_initrd = r > 0;
+ return saved_in_initrd;
+ }
+ log_debug_errno(r, "Failed to parse $SYSTEMD_IN_INITRD, ignoring: %m");
+ }
+ }
+
+ if (!lenient) {
+ r = path_is_temporary_fs("/");
+ if (r < 0)
+ log_debug_errno(r, "Couldn't determine if / is a temporary file system: %m");
+
+ saved_in_initrd = r > 0;
+ }
+
+ r = access("/etc/initrd-release", F_OK);
+ if (r >= 0) {
+ if (saved_in_initrd == 0)
+ log_debug("/etc/initrd-release exists, but it's not an initrd.");
+ else
+ saved_in_initrd = 1;
+ } else {
+ if (errno != ENOENT)
+ log_debug_errno(errno, "Failed to test if /etc/initrd-release exists: %m");
+ saved_in_initrd = 0;
+ }
+
+ return saved_in_initrd;
+}
+
+void in_initrd_force(bool value) {
+ saved_in_initrd = value;
+}
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include <stdbool.h>
+
+bool in_initrd(void);
+void in_initrd_force(bool value);
'hostname-util.h',
'in-addr-util.c',
'in-addr-util.h',
+ 'initrd-util.c',
+ 'initrd-util.h',
'inotify-util.c',
'inotify-util.h',
'io-util.c',
#include "efivars.h"
#include "extract-word.h"
#include "fileio.h"
+#include "initrd-util.h"
#include "macro.h"
#include "parse-util.h"
#include "proc-cmdline.h"
#include "process-util.h"
#include "special.h"
#include "string-util.h"
-#include "util.h"
#include "virt.h"
int proc_cmdline(char **ret) {
#include "dirent-util.h"
#include "fd-util.h"
#include "fs-util.h"
+#include "initrd-util.h"
#include "macro.h"
#include "path-lookup.h"
#include "set.h"
#include "alloc-util.h"
#include "build.h"
#include "env-file.h"
-#include "env-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "hostname-util.h"
int saved_argc = 0;
char **saved_argv = NULL;
-static int saved_in_initrd = -1;
-
-bool in_initrd(void) {
- int r;
- const char *e;
- bool lenient = false;
-
- if (saved_in_initrd >= 0)
- return saved_in_initrd;
-
- /* We have two checks here:
- *
- * 1. the flag file /etc/initrd-release must exist
- * 2. the root file system must be a memory file system
- *
- * The second check is extra paranoia, since misdetecting an
- * initrd can have bad consequences due the initrd
- * emptying when transititioning to the main systemd.
- *
- * If env var $SYSTEMD_IN_INITRD is not set or set to "auto",
- * both checks are used. If it's set to "lenient", only check
- * 1 is used. If set to a boolean value, then the boolean
- * value is returned.
- */
-
- e = secure_getenv("SYSTEMD_IN_INITRD");
- if (e) {
- if (streq(e, "lenient"))
- lenient = true;
- else if (!streq(e, "auto")) {
- r = parse_boolean(e);
- if (r >= 0) {
- saved_in_initrd = r > 0;
- return saved_in_initrd;
- }
- log_debug_errno(r, "Failed to parse $SYSTEMD_IN_INITRD, ignoring: %m");
- }
- }
-
- if (!lenient) {
- r = path_is_temporary_fs("/");
- if (r < 0)
- log_debug_errno(r, "Couldn't determine if / is a temporary file system: %m");
-
- saved_in_initrd = r > 0;
- }
-
- r = access("/etc/initrd-release", F_OK);
- if (r >= 0) {
- if (saved_in_initrd == 0)
- log_debug("/etc/initrd-release exists, but it's not an initrd.");
- else
- saved_in_initrd = 1;
- } else {
- if (errno != ENOENT)
- log_debug_errno(errno, "Failed to test if /etc/initrd-release exists: %m");
- saved_in_initrd = 0;
- }
-
- return saved_in_initrd;
-}
-
-void in_initrd_force(bool value) {
- saved_in_initrd = value;
-}
int container_get_leader(const char *machine, pid_t *pid) {
_cleanup_free_ char *s = NULL, *class = NULL;
saved_argv = argv;
}
-bool in_initrd(void);
-void in_initrd_force(bool value);
-
/* Note: log2(0) == log2(1) == 0 here and below. */
#define CONST_LOG2ULL(x) ((x) > 1 ? (unsigned) __builtin_clzll(x) ^ 63U : 0)
#include "efi-loader.h"
#include "generator.h"
+#include "initrd-util.h"
#include "log.h"
#include "mkdir.h"
#include "special.h"
#include "bpf-dlopen.h"
#include "bpf-util.h"
#include "cgroup-util.h"
+#include "initrd-util.h"
#include "log.h"
bool cgroup_bpf_supported(void) {
#include "format-util.h"
#include "fs-util.h"
#include "hexdecoct.h"
+#include "initrd-util.h"
#include "import-creds.h"
#include "io-util.h"
#include "mkdir-label.h"
#include "hostname-setup.h"
#include "ima-setup.h"
#include "import-creds.h"
+#include "initrd-util.h"
#include "killall.h"
#include "kmod-setup.h"
#include "limits-util.h"
#include "time-util.h"
#include "umask-util.h"
#include "user-util.h"
-#include "util.h"
#include "virt.h"
#include "watchdog.h"
#include "fd-util.h"
#include "fileio.h"
#include "format-util.h"
+#include "initrd-util.h"
#include "macro.h"
#include "manager-serialize.h"
#include "manager.h"
#include "fileio.h"
#include "generator-setup.h"
#include "hashmap.h"
+#include "initrd-util.h"
#include "inotify-util.h"
#include "install.h"
#include "io-util.h"
#include "exit-status.h"
#include "format-util.h"
#include "fstab-util.h"
+#include "initrd-util.h"
#include "libmount-util.h"
#include "log.h"
#include "manager.h"
#include <selinux/selinux.h>
#endif
+#include "initrd-util.h"
#include "log.h"
#include "macro.h"
#include "selinux-setup.h"
#include "selinux-util.h"
#include "string-util.h"
#include "time-util.h"
-#include "util.h"
#if HAVE_SELINUX
_printf_(2,3)
#include "alloc-util.h"
#include "dropin.h"
#include "generator.h"
+#include "initrd-util.h"
#include "mkdir-label.h"
#include "parse-util.h"
#include "path-util.h"
#include "fstab-util.h"
#include "generator.h"
#include "in-addr-util.h"
+#include "initrd-util.h"
#include "log.h"
#include "main-func.h"
#include "mkdir.h"
#include "string-util.h"
#include "strv.h"
#include "unit-name.h"
-#include "util.h"
#include "virt.h"
#include "volatile-util.h"
#include "fstab-util.h"
#include "generator.h"
#include "gpt.h"
+#include "initrd-util.h"
#include "mkdir.h"
#include "mountpoint-util.h"
#include "parse-util.h"
#include "string-util.h"
#include "strv.h"
#include "unit-name.h"
-#include "util.h"
#include "virt.h"
static const char *arg_dest = NULL;
#include "dropin.h"
#include "fstab-util.h"
#include "generator.h"
+#include "initrd-util.h"
#include "log.h"
#include "main-func.h"
#include "mkdir-label.h"
#include "alloc-util.h"
#include "devnum-util.h"
#include "fileio.h"
+#include "initrd-util.h"
#include "log.h"
-#include "util.h"
int main(int argc, char *argv[]) {
struct stat st;
#include "hashmap.h"
#include "hostname-util.h"
#include "id128-util.h"
+#include "initrd-util.h"
#include "io-util.h"
#include "journal-authenticate.h"
#include "journal-internal.h"
#include "fileio.h"
#include "firewall-util.h"
#include "fs-util.h"
+#include "initrd-util.h"
#include "local-addresses.h"
#include "netlink-util.h"
#include "network-internal.h"
#include "hexdecoct.h"
#include "hmac.h"
#include "id128-util.h"
+#include "initrd-util.h"
#include "io-util.h"
#include "json.h"
#include "list.h"
#include "fs-util.h"
#include "glob-util.h"
#include "hostname-util.h"
+#include "initrd-util.h"
#include "ima-util.h"
#include "limits-util.h"
#include "list.h"
#include "alloc-util.h"
#include "device-nodes.h"
#include "fstab-util.h"
+#include "initrd-util.h"
#include "macro.h"
#include "mount-util.h"
#include "nulstr-util.h"
#include "fileio.h"
#include "fstab-util.h"
#include "generator.h"
+#include "initrd-util.h"
#include "log.h"
#include "macro.h"
#include "mkdir-label.h"
#include "string-util.h"
#include "time-util.h"
#include "unit-name.h"
-#include "util.h"
int generator_open_unit_file(
const char *dir,
#include "dirent-util.h"
#include "fd-util.h"
#include "format-util.h"
+#include "initrd-util.h"
#include "killall.h"
#include "parse-util.h"
#include "process-util.h"
#include "stdio-util.h"
#include "string-util.h"
#include "terminal-util.h"
-#include "util.h"
static bool ignore_proc(pid_t pid, bool warn_rootfs) {
_cleanup_fclose_ FILE *f = NULL;
#include "base-filesystem.h"
#include "chase-symlinks.h"
#include "fd-util.h"
+#include "initrd-util.h"
#include "log.h"
#include "missing_syscall.h"
#include "mkdir-label.h"
#include "strv.h"
#include "switch-root.h"
#include "user-util.h"
-#include "util.h"
int switch_root(const char *new_root,
const char *old_root_after, /* path below the new root, where to place the old root after the transition */
#include "exec-util.h"
#include "fd-util.h"
#include "fileio.h"
+#include "initrd-util.h"
#include "killall.h"
#include "log.h"
#include "parse-util.h"
#include "sysctl-util.h"
#include "terminal-util.h"
#include "umount.h"
-#include "util.h"
#include "virt.h"
#include "watchdog.h"
#include "format-table.h"
#include "fs-util.h"
#include "hashmap.h"
+#include "initrd-util.h"
#include "log.h"
#include "main-func.h"
#include "missing_magic.h"
#include "alloc-util.h"
#include "env-util.h"
#include "errno-util.h"
+#include "initrd-util.h"
#include "log.h"
#include "macro.h"
#include "proc-cmdline.h"
#include "special.h"
#include "string-util.h"
#include "tests.h"
-#include "util.h"
static int obj;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "initrd-util.h"
#include "path-lookup.h"
#include "set.h"
#include "special.h"