X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsystemctl%2Fsystemctl.c;h=344dcd3e753268ee029cb58336282df048a52f95;hp=b8b9ed09546c793a097eca91e3f1c5d6d42fd62d;hb=085d71209ba32c1e4e72ec031536be892054352e;hpb=b0193f1c1f1540bfccbdca02df82669b9308e4e2 diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index b8b9ed095..344dcd3e7 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -65,6 +65,7 @@ #include "path-util.h" static const char *arg_type = NULL; +static const char *arg_load_state = NULL; static char **arg_property = NULL; static bool arg_all = false; static const char *arg_job_mode = "replace"; @@ -337,7 +338,9 @@ static bool output_show_unit(const struct unit_info *u) { return (!arg_type || ((dot = strrchr(u->id, '.')) && streq(dot+1, arg_type))) && - (arg_all || !(streq(u->active_state, "inactive") || u->following[0]) || u->job_id > 0); + (!arg_load_state || streq(u->load_state, arg_load_state)) && + (arg_all || !(streq(u->active_state, "inactive") + || u->following[0]) || u->job_id > 0); } static void output_units_list(const struct unit_info *unit_infos, unsigned c) { @@ -2589,8 +2592,13 @@ static void print_status_info(UnitStatusInfo *i) { } if (i->id && arg_transport != TRANSPORT_SSH) { + int flags = (arg_lines*OUTPUT_SHOW_ALL | + arg_follow*OUTPUT_FOLLOW | + !arg_quiet*OUTPUT_WARN_CUTOFF); printf("\n"); - show_journal_by_unit(i->id, arg_output, 0, i->inactive_exit_timestamp_monotonic, arg_lines, arg_all, arg_follow, !arg_quiet); + show_journal_by_unit(i->id, arg_output, 0, + i->inactive_exit_timestamp_monotonic, + arg_lines, flags); } if (i->need_daemon_reload) @@ -2663,7 +2671,7 @@ static void show_unit_help(UnitStatusInfo *i) { wait_for_terminate(pid, NULL); } else - log_info("Can't show %s.", *p); + log_info("Can't show: %s", *p); } } @@ -3921,7 +3929,7 @@ finish: static int enable_sysv_units(char **args) { int r = 0; -#if defined (HAVE_SYSV_COMPAT) && (defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_SUSE) || defined(TARGET_MEEGO) || defined(TARGET_ALTLINUX) || defined(TARGET_MAGEIA)) +#if defined (HAVE_SYSV_COMPAT) && (defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_SUSE) || defined(TARGET_ALTLINUX) || defined(TARGET_MAGEIA)) const char *verb = args[0]; unsigned f = 1, t = 1; LookupPaths paths; @@ -4650,9 +4658,17 @@ static int systemctl_parse_argv(int argc, char *argv[]) { return 0; case 't': - arg_type = optarg; - break; - + if (unit_type_from_string(optarg) >= 0) { + arg_type = optarg; + break; + } + if (unit_load_state_from_string(optarg) >= 0) { + arg_load_state = optarg; + break; + } + log_error("Unkown unit type or load state '%s'.", + optarg); + return -EINVAL; case 'p': { char **l;