systemctl: accept -p more than once

This commit is contained in:
Lennart Poettering 2010-07-23 05:24:05 +02:00
parent 7a58bfa4ae
commit ea4a240dc2
3 changed files with 19 additions and 5 deletions

2
fixme
View File

@ -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...

View File

@ -100,7 +100,10 @@
not specified all set properties are
shown. The argument should be a
property name, such as
<literal>MainPID</literal>.</para></listitem>
<literal>MainPID</literal>. If
specified more than once all
properties with the specified names
are shown.</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -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;
}