Systemctl accepted anything as the argument for -t, and simply said '0 units found'. It is better to catch this user error early. --- A small thing thing I noticed today.
src/systemctl/systemctl.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 66f4113..d353071 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4325,6 +4325,19 @@ static int runlevel_help(void) { return 0; } +static int arg_type_ok(const char *type) { + + static const char *types[] = {"service", "socket", "device", "mount", + "swap", "automount", "target", "path", + "timer", "snapshot"}; + unsigned i; + + for (i=0; i<ELEMENTSOF(types); i++) + if (!strcmp(type, types[i])) + return true; + return false; +} + static int systemctl_parse_argv(int argc, char *argv[]) { enum { @@ -4408,6 +4421,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { return 0; case 't': + if (!arg_type_ok(optarg)) { + log_error("Invalid unit type '%s'", optarg); + return -EINVAL; + } arg_type = optarg; break; -- 1.7.10.2.667.gf1138e2 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel