diff --git a/fixme b/fixme index ec2f721179..286651a3f2 100644 --- a/fixme +++ b/fixme @@ -53,6 +53,8 @@ * io priority during initialization +* if a service fails too often, make the service enter maintainence mode, and the socket, too. + External: * default.target must be %ghosted... diff --git a/man/systemctl.xml b/man/systemctl.xml index b8e00b6d5c..678bf0b2ee 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -100,7 +100,10 @@ not specified all set properties are shown. The argument should be a property name, such as - MainPID. + MainPID. If + specified more than once all + properties with the specified names + are shown. diff --git a/src/systemctl.c b/src/systemctl.c index d78294b6d8..de928c5661 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -47,7 +47,7 @@ #include "list.h" static const char *arg_type = NULL; -static const char *arg_property = NULL; +static char **arg_property = NULL; static bool arg_all = false; static bool arg_fail = false; static bool arg_session = false; @@ -1702,7 +1702,7 @@ static int print_property(const char *name, DBusMessageIter *iter) { /* This is a low-level property printer, see * print_status_info() for the nicer output */ - if (arg_property && !streq(name, arg_property)) + if (arg_property && !strv_find(arg_property, name)) return 0; switch (dbus_message_iter_get_arg_type(iter)) { @@ -3089,14 +3089,21 @@ static int systemctl_parse_argv(int argc, char *argv[]) { arg_type = optarg; break; - case 'p': - arg_property = optarg; + case 'p': { + char **l; + + if (!(l = strv_append(arg_property, optarg))) + return -ENOMEM; + + strv_free(arg_property); + arg_property = l; /* If the user asked for a particular * property, show it to him, even if it is * empty. */ arg_all = true; break; + } case 'a': arg_all = true; @@ -3927,5 +3934,7 @@ finish: dbus_shutdown(); + strv_free(arg_property); + return retval; }