X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsystemctl.c;h=ff6f86a0d2ef76036a35e6b8282945a837ec9c33;hb=ef639c5f9e9ed397424b50b14e2160993c7841d1;hp=ecf3e013f2add664fcb4848d6a8904a8ee28a785;hpb=5d452f9ceceabf2bf69acb58e69a41fb41011e37;p=elogind.git diff --git a/src/systemctl.c b/src/systemctl.c index ecf3e013f..ff6f86a0d 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -52,6 +52,7 @@ #include "shutdownd.h" #include "exit-status.h" #include "bus-errors.h" +#include "build.h" static const char *arg_type = NULL; static char **arg_property = NULL; @@ -336,7 +337,7 @@ static int list_units(DBusConnection *bus, char **args, unsigned n) { qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info); - if (isatty(STDOUT_FILENO)) { + if (on_tty()) { if (columns() >= 80+12 || arg_full) printf("%-25s %-6s %-12s %-18s %-15s %s\n", "UNIT", "LOAD", "ACTIVE", "SUB", "JOB", "DESCRIPTION"); else @@ -399,7 +400,7 @@ static int list_units(DBusConnection *bus, char **args, unsigned n) { } } - if (isatty(STDOUT_FILENO)) { + if (on_tty()) { printf("\nLOAD = Reflects whether the unit definition was properly loaded.\n" "ACTIVE = The high-level unit activation state, i.e. generalization of SUB.\n" @@ -1253,7 +1254,11 @@ static int start_unit(DBusConnection *bus, char **args, unsigned n) { method = "StartUnit"; mode = (arg_action == ACTION_EMERGENCY || - arg_action == ACTION_RESCUE) ? "isolate" : "replace"; + arg_action == ACTION_RESCUE || + arg_action == ACTION_RUNLEVEL2 || + arg_action == ACTION_RUNLEVEL3 || + arg_action == ACTION_RUNLEVEL4 || + arg_action == ACTION_RUNLEVEL5) ? "isolate" : "replace"; one_name = table[arg_action]; } @@ -3845,6 +3850,7 @@ static int systemctl_help(void) { printf("%s [OPTIONS...] {COMMAND} ...\n\n" "Send control commands to or query the systemd manager.\n\n" " -h --help Show this help\n" + " --version Show package version\n" " -t --type=TYPE List only units of a particular type\n" " -p --property=NAME Show only properties by this name\n" " -a --all Show all units/properties, including dead/empty ones\n" @@ -3979,6 +3985,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { enum { ARG_FAIL = 0x100, + ARG_VERSION, ARG_SESSION, ARG_SYSTEM, ARG_GLOBAL, @@ -3994,6 +4001,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { static const struct option options[] = { { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, { "type", required_argument, NULL, 't' }, { "property", required_argument, NULL, 'p' }, { "all", no_argument, NULL, 'a' }, @@ -4026,6 +4034,12 @@ static int systemctl_parse_argv(int argc, char *argv[]) { systemctl_help(); return 0; + case ARG_VERSION: + puts(PACKAGE_STRING); + puts(DISTRIBUTION); + puts(SYSTEMD_FEATURES); + return 0; + case 't': arg_type = optarg; break;