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)
[DRAW_TREE_RIGHT] = "\342\224\224\342\224\200", /* └─ */
[DRAW_TREE_SPACE] = " ", /* */
[DRAW_TRIANGULAR_BULLET] = "\342\200\243 ", /* ‣ */
+ [DRAW_BLACK_CIRCLE] = "\342\227\217 ", /* ● */
},
/* ASCII fallback */ {
[DRAW_TREE_VERT] = "| ",
[DRAW_TREE_RIGHT] = "`-",
[DRAW_TREE_SPACE] = " ",
[DRAW_TRIANGULAR_BULLET] = "> ",
+ [DRAW_BLACK_CIRCLE] = "* ",
}
};
return 0;
}
-bool restore_state(void) {
+int shall_restore_state(void) {
_cleanup_free_ char *line;
char *w, *state;
- int r;
size_t l;
+ int r;
- if (detect_container(NULL) > 0)
- return true;
+ r = proc_cmdline(&line);
+ if (r < 0)
+ return r;
+ if (r == 0) /* Container ... */
+ return 1;
- r = read_one_line_file("/proc/cmdline", &line);
- if (r < 0) {
- log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
+ 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;
}
- FOREACH_WORD_QUOTED(w, l, line, state)
- if (strneq(w, "systemd.restore_state=0", l))
- return false;
+ r = read_one_line_file("/proc/cmdline", ret);
+ if (r < 0)
+ return r;
- return true;
+ return 1;
}