#include "device-nodes.h"
#include "utf8.h"
#include "gunicode.h"
+#include "virt.h"
int saved_argc = 0;
char **saved_argv = NULL;
/* Kernel threads have no argv[] */
if (r == NULL || r[0] == 0) {
- char *t;
+ _cleanup_free_ char *t = NULL;
int h;
free(r);
return h;
r = strjoin("[", t, "]", NULL);
- free(t);
-
if (!r)
return -ENOMEM;
}
assert(s);
/* Escapes all chars that D-Bus' object path cannot deal
- * with. Can be reverse with bus_path_unescape(). We special
+ * with. Can be reversed with bus_path_unescape(). We special
* case the empty string. */
if (*s == 0)
char **p;
errno = 0;
- k = glob(optarg, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
+ k = glob(path, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
if (k == GLOB_NOMATCH)
return -ENOENT;
return 0;
}
+
+int shall_restore_state(void) {
+ _cleanup_free_ char *line;
+ char *w, *state;
+ size_t l;
+ int r;
+
+ r = proc_cmdline(&line);
+ if (r < 0)
+ return r;
+ if (r == 0) /* Container ... */
+ return 1;
+
+ FOREACH_WORD_QUOTED(w, l, line, state)
+ if (l == 23 && memcmp(w, "systemd.restore_state=0", 23))
+ return 0;
+
+ return 1;
+}
+
+int proc_cmdline(char **ret) {
+ int r;
+
+ if (detect_container(NULL) > 0) {
+ *ret = NULL;
+ return 0;
+ }
+
+ r = read_one_line_file("/proc/cmdline", ret);
+ if (r < 0)
+ return r;
+
+ return 1;
+}