From ea4a240dc2e70adcb39704542b1422b1608e76e6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 23 Jul 2010 05:24:05 +0200 Subject: [PATCH 1/1] systemctl: accept -p more than once --- fixme | 2 ++ man/systemctl.xml | 5 ++++- src/systemctl.c | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/fixme b/fixme index ec2f72117..286651a3f 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 b8e00b6d5..678bf0b2e 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 d78294b6d..de928c566 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; } -- 2.30.2