summaryrefslogtreecommitdiff
path: root/src/systemctl
diff options
context:
space:
mode:
authorOleksii Shevchuk <alxchk@gmail.com>2013-04-05 20:58:04 +0300
committerLennart Poettering <lennart@poettering.net>2013-04-05 20:01:42 +0200
commit76d14b876a1c286ea62c4e0e4fc5ba3c695e169f (patch)
treee49e7438692a11be8f25ec64228b05e4dd45db41 /src/systemctl
parent0c20f88d55161be943a6cab47eaa7e22aebc6ef6 (diff)
systemctl: Add DropIn paths to status message
$ systemctl status null.target null.target - NYAN Loaded: loaded (/home/alxchk/.config/systemd/user/null.target; disabled) Drop-In: /home/alxchk/.config/systemd/user/null.target.d └─ descr.conf, install-1.conf, install.conf /etc/systemd/user/null.target.d └─ test.conf Active: active since Пт 2013-04-05 20:42:13 EEST; 1min 58s ago
Diffstat (limited to 'src/systemctl')
-rw-r--r--src/systemctl/systemctl.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index a7c2eef5d4..a7b541dc3f 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -2225,6 +2225,8 @@ typedef struct UnitStatusInfo {
const char *source_path;
const char *default_control_group;
+ char **dropin_paths;
+
const char *load_error;
const char *result;
@@ -2331,6 +2333,34 @@ static void print_status_info(UnitStatusInfo *i) {
printf(" %*s: %s%s%s\n",
maxlen, "Loaded", on, strna(i->load_state), off);
+ if (!strv_isempty(i->dropin_paths)) {
+ char ** dropin;
+ char * dir = NULL;
+ bool last = false;
+
+ STRV_FOREACH(dropin, i->dropin_paths) {
+ if (! dir || last) {
+ printf(" %*s ", maxlen, dir ? "" : "Drop-In:");
+
+ free(dir);
+
+ if (path_get_parent(*dropin, &dir) < 0) {
+ log_oom();
+ return;
+ }
+
+ printf("%s\n %*s %s ", dir, maxlen, "",
+ draw_special_char(DRAW_TREE_RIGHT));
+ }
+
+ last = ! (*(dropin + 1) && startswith(*(dropin + 1), dir));
+
+ printf("%s%s", path_get_file_name(*dropin), last ? "\n" : ", ");
+ }
+
+ free(dir);
+ }
+
ss = streq_ptr(i->active_state, i->sub_state) ? NULL : i->sub_state;
if (streq_ptr(i->active_state, "failed")) {
@@ -2771,6 +2801,11 @@ static int status_property(const char *name, DBusMessageIter *iter, UnitStatusIn
return 0;
+ } else if (dbus_message_iter_get_element_type(iter) == DBUS_TYPE_STRING && streq(name, "DropInPaths")) {
+ int r = bus_parse_strv_iter(iter, &i->dropin_paths);
+ if (r < 0)
+ return r;
+
} else if (dbus_message_iter_get_element_type(iter) == DBUS_TYPE_STRING &&
streq(name, "Documentation")) {
@@ -3106,6 +3141,7 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo
}
strv_free(info.documentation);
+ strv_free(info.dropin_paths);
strv_free(info.listen);
if (!streq_ptr(info.active_state, "active") &&