summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/util.c23
-rw-r--r--src/shared/util.h2
2 files changed, 25 insertions, 0 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index 1822770304..d086fac7f8 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -76,6 +76,7 @@
#include "device-nodes.h"
#include "utf8.h"
#include "gunicode.h"
+#include "virt.h"
int saved_argc = 0;
char **saved_argv = NULL;
@@ -5990,3 +5991,25 @@ int split_pair(const char *s, const char *sep, char **l, char **r) {
return 0;
}
+
+bool restore_state(void) {
+ _cleanup_free_ char *line;
+ char *w, *state;
+ int r;
+ size_t l;
+
+ if (detect_container(NULL) > 0)
+ return true;
+
+ r = read_one_line_file("/proc/cmdline", &line);
+ if (r < 0) {
+ log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
+ return 0;
+ }
+
+ FOREACH_WORD_QUOTED(w, l, line, state)
+ if (strneq(w, "systemd.restore_state=0", l))
+ return false;
+
+ return true;
+}
diff --git a/src/shared/util.h b/src/shared/util.h
index 63cb4ac636..dc35b4d980 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
@@ -765,6 +765,8 @@ void parse_user_at_host(char *arg, char **user, char **host);
int split_pair(const char *s, const char *sep, char **l, char **r);
+bool restore_state(void);
+
/**
* Normal qsort requires base to be nonnull. Here were require
* that only if nmemb > 0.