mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-26 09:57:26 +03:00
Merge pull request #18596 from keszybz/systemctl-quiet-legend
systemctl: hide legends with --quiet, allow overriding
This commit is contained in:
commit
dc288ffeab
@ -35,6 +35,15 @@
|
||||
<listitem><para>Do not query the user for authentication for privileged operations.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id='legend'>
|
||||
<term><option>--legend=</option><replaceable>BOOL</replaceable></term>
|
||||
|
||||
<listitem>
|
||||
<para>Enable or disable printing of the legend, i.e. column headers and the footer with hints. The
|
||||
legend is printed by default, unless disabled with <option>--quiet</option> or similar.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id='no-legend'>
|
||||
<term><option>--no-legend</option></term>
|
||||
|
||||
|
@ -2326,7 +2326,7 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
|
||||
<xi:include href="user-system-options.xml" xpointer="machine" />
|
||||
|
||||
<xi:include href="standard-options.xml" xpointer="no-pager" />
|
||||
<xi:include href="standard-options.xml" xpointer="no-legend" />
|
||||
<xi:include href="standard-options.xml" xpointer="legend" />
|
||||
<xi:include href="standard-options.xml" xpointer="help" />
|
||||
<xi:include href="standard-options.xml" xpointer="version" />
|
||||
</variablelist>
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
__systemctl() {
|
||||
local mode=$1; shift 1
|
||||
systemctl $mode --full --no-legend --no-pager --plain "$@" 2>/dev/null
|
||||
systemctl $mode --full --legend=no --no-pager --plain "$@" 2>/dev/null
|
||||
}
|
||||
|
||||
__systemd_properties() {
|
||||
@ -123,7 +123,7 @@ _systemctl () {
|
||||
|
||||
local -A OPTS=(
|
||||
[STANDALONE]='--all -a --reverse --after --before --defaults --force -f --full -l --global
|
||||
--help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall --now
|
||||
--help -h --no-ask-password --no-block --legend=no --no-pager --no-reload --no-wall --now
|
||||
--quiet -q --system --user --version --runtime --recursive -r --firmware-setup
|
||||
--show-types --plain --failed --value --fail --dry-run --wait'
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root
|
||||
|
@ -147,7 +147,7 @@
|
||||
# @todo _systemd-run has a helper with the same name, so we must redefine
|
||||
__systemctl()
|
||||
{
|
||||
systemctl $_sys_service_mgr --full --no-legend --no-pager --plain "$@" 2>/dev/null
|
||||
systemctl $_sys_service_mgr --full --legend=no --no-pager --plain "$@" 2>/dev/null
|
||||
}
|
||||
|
||||
|
||||
@ -480,7 +480,7 @@ _arguments -s \
|
||||
'--check-inhibitors[Specify if inhibitors should be checked]:mode:_systemctl_check_inhibitors' \
|
||||
{-q,--quiet}'[Suppress output]' \
|
||||
'--no-block[Do not wait until operation finished]' \
|
||||
'--no-legend[Do not print a legend, i.e. the column headers and the footer with hints]' \
|
||||
'--legend=no[Do not print a legend, i.e. the column headers and the footer with hints]' \
|
||||
'--no-pager[Do not pipe output into a pager]' \
|
||||
'--system[Connect to system manager]' \
|
||||
'--user[Connect to user service manager]' \
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "main-func.h"
|
||||
#include "nulstr-util.h"
|
||||
#include "pager.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "pretty-print.h"
|
||||
@ -2340,29 +2341,15 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_MAN:
|
||||
if (optarg) {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse --man= argument.");
|
||||
|
||||
arg_man = r;
|
||||
} else
|
||||
arg_man = true;
|
||||
|
||||
r = parse_boolean_argument("--man", optarg, &arg_man);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_GENERATORS:
|
||||
if (optarg) {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse --generators= argument.");
|
||||
|
||||
arg_generators = r;
|
||||
} else
|
||||
arg_generators = true;
|
||||
|
||||
r = parse_boolean_argument("--generators", optarg, &arg_generators);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_ITERATIONS:
|
||||
|
@ -2471,27 +2471,22 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_EXPECT_REPLY:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--expect-reply=", optarg, &arg_expect_reply);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --expect-reply= parameter '%s': %m", optarg);
|
||||
|
||||
arg_expect_reply = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_AUTO_START:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--auto-start=", optarg, &arg_auto_start);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --auto-start= parameter '%s': %m", optarg);
|
||||
|
||||
arg_auto_start = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_ALLOW_INTERACTIVE_AUTHORIZATION:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--allow-interactive-authorization=", optarg,
|
||||
&arg_allow_interactive_authorization);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --allow-interactive-authorization= parameter '%s': %m", optarg);
|
||||
|
||||
arg_allow_interactive_authorization = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_TIMEOUT:
|
||||
@ -2502,19 +2497,15 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_AUGMENT_CREDS:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--augment-creds=", optarg, &arg_augment_creds);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --augment-creds= parameter '%s': %m", optarg);
|
||||
|
||||
arg_augment_creds = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_WATCH_BIND:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--watch-bind=", optarg, &arg_watch_bind);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --watch-bind= parameter '%s': %m", optarg);
|
||||
|
||||
arg_watch_bind = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case 'j':
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "hashmap.h"
|
||||
#include "main-func.h"
|
||||
#include "missing_sched.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "pretty-print.h"
|
||||
@ -867,12 +868,11 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_RECURSIVE:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--recursive=", optarg, &arg_recursive);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --recursive= argument '%s': %m", optarg);
|
||||
return r;
|
||||
|
||||
arg_recursive = r;
|
||||
arg_recursive_unset = r == 0;
|
||||
arg_recursive_unset = !r;
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
|
@ -937,15 +937,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_DUMP_CORE:
|
||||
if (!optarg)
|
||||
arg_dump_core = true;
|
||||
else {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse dump core boolean: \"%s\": %m",
|
||||
optarg);
|
||||
arg_dump_core = r;
|
||||
}
|
||||
r = parse_boolean_argument("--dump-core", optarg, &arg_dump_core);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_CRASH_CHVT:
|
||||
@ -956,27 +950,15 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_CRASH_SHELL:
|
||||
if (!optarg)
|
||||
arg_crash_shell = true;
|
||||
else {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse crash shell boolean: \"%s\": %m",
|
||||
optarg);
|
||||
arg_crash_shell = r;
|
||||
}
|
||||
r = parse_boolean_argument("--crash-shell", optarg, &arg_crash_shell);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_CRASH_REBOOT:
|
||||
if (!optarg)
|
||||
arg_crash_reboot = true;
|
||||
else {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse crash shell boolean: \"%s\": %m",
|
||||
optarg);
|
||||
arg_crash_reboot = r;
|
||||
}
|
||||
r = parse_boolean_argument("--crash-reboot", optarg, &arg_crash_reboot);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_CONFIRM_SPAWN:
|
||||
@ -989,11 +971,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_SERVICE_WATCHDOGS:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--service-watchdogs=", optarg, &arg_service_watchdogs);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse service watchdogs boolean: \"%s\": %m",
|
||||
optarg);
|
||||
arg_service_watchdogs = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_SHOW_STATUS:
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "main-func.h"
|
||||
#include "nulstr-util.h"
|
||||
#include "pager.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "pretty-print.h"
|
||||
@ -586,7 +587,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{}
|
||||
};
|
||||
|
||||
int c;
|
||||
int c, r;
|
||||
|
||||
assert(argc >= 1);
|
||||
assert(argv);
|
||||
@ -616,18 +617,10 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
case ARG_DIFF:
|
||||
if (!optarg)
|
||||
arg_diff = 1;
|
||||
else {
|
||||
int b;
|
||||
|
||||
b = parse_boolean(optarg);
|
||||
if (b < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse diff boolean.");
|
||||
|
||||
arg_diff = b;
|
||||
}
|
||||
r = parse_boolean_argument("--diff", optarg, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
arg_diff = r;
|
||||
break;
|
||||
|
||||
case '?':
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "journal-remote.h"
|
||||
#include "main-func.h"
|
||||
#include "memory-util.h"
|
||||
#include "parse-argument.h"
|
||||
#include "pretty-print.h"
|
||||
#include "process-util.h"
|
||||
#include "rlimit-util.h"
|
||||
@ -34,8 +35,8 @@ static const char* arg_listen_raw = NULL;
|
||||
static const char* arg_listen_http = NULL;
|
||||
static const char* arg_listen_https = NULL;
|
||||
static char** arg_files = NULL; /* Do not free this. */
|
||||
static int arg_compress = true;
|
||||
static int arg_seal = false;
|
||||
static bool arg_compress = true;
|
||||
static bool arg_seal = false;
|
||||
static int http_socket = -1, https_socket = -1;
|
||||
static char** arg_gnutls_log = NULL;
|
||||
|
||||
@ -965,34 +966,20 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_COMPRESS:
|
||||
if (optarg) {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --compress= parameter.");
|
||||
|
||||
arg_compress = !!r;
|
||||
} else
|
||||
arg_compress = true;
|
||||
|
||||
r = parse_boolean_argument("--compress", optarg, &arg_compress);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_SEAL:
|
||||
if (optarg) {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse --seal= parameter.");
|
||||
|
||||
arg_seal = !!r;
|
||||
} else
|
||||
arg_seal = true;
|
||||
|
||||
r = parse_boolean_argument("--seal", optarg, &arg_seal);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_GNUTLS_LOG: {
|
||||
case ARG_GNUTLS_LOG:
|
||||
#if HAVE_GNUTLS
|
||||
const char* p = optarg;
|
||||
for (;;) {
|
||||
for (const char* p = optarg;;) {
|
||||
_cleanup_free_ char *word = NULL;
|
||||
|
||||
r = extract_first_word(&p, &word, ",", 0);
|
||||
@ -1011,7 +998,6 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Option --gnutls-log is not available.");
|
||||
#endif
|
||||
}
|
||||
|
||||
case '?':
|
||||
return -EINVAL;
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "log.h"
|
||||
#include "main-func.h"
|
||||
#include "mkdir.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "pretty-print.h"
|
||||
@ -356,7 +357,7 @@ static int open_file_for_upload(Uploader *u, const char *filename) {
|
||||
|
||||
u->input = fd;
|
||||
|
||||
if (arg_follow) {
|
||||
if (arg_follow != 0) {
|
||||
r = sd_event_add_io(u->events, &u->input_event,
|
||||
fd, EPOLLIN, dispatch_fd_input, u);
|
||||
if (r < 0) {
|
||||
@ -747,16 +748,10 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_FOLLOW:
|
||||
if (optarg) {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse --follow= parameter.");
|
||||
|
||||
arg_follow = !!r;
|
||||
} else
|
||||
arg_follow = true;
|
||||
|
||||
r = parse_boolean_argument("--follow", optarg, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
arg_follow = r;
|
||||
break;
|
||||
|
||||
case ARG_SAVE_STATE:
|
||||
@ -857,7 +852,7 @@ static int run(int argc, char **argv) {
|
||||
r = open_journal_for_upload(&u, j,
|
||||
arg_cursor ?: u.last_cursor,
|
||||
arg_cursor ? arg_after_cursor : true,
|
||||
!!arg_follow);
|
||||
arg_follow != 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "alloc-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "main-func.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "pretty-print.h"
|
||||
#include "string-util.h"
|
||||
@ -67,7 +68,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{}
|
||||
};
|
||||
|
||||
int c;
|
||||
int c, r;
|
||||
|
||||
assert(argc >= 0);
|
||||
assert(argv);
|
||||
@ -104,16 +105,11 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
"Failed to parse stderr priority value.");
|
||||
break;
|
||||
|
||||
case ARG_LEVEL_PREFIX: {
|
||||
int k;
|
||||
|
||||
k = parse_boolean(optarg);
|
||||
if (k < 0)
|
||||
return log_error_errno(k, "Failed to parse level prefix value.");
|
||||
|
||||
arg_level_prefix = k;
|
||||
case ARG_LEVEL_PREFIX:
|
||||
r = parse_boolean_argument("--level-prefix=", optarg, &arg_level_prefix);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
}
|
||||
|
||||
case '?':
|
||||
return -EINVAL;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "mount-util.h"
|
||||
#include "mountpoint-util.h"
|
||||
#include "pager.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "pretty-print.h"
|
||||
@ -265,11 +266,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
case ARG_FSCK:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--fsck=", optarg, &arg_fsck);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --fsck= argument: %s", optarg);
|
||||
|
||||
arg_fsck = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_DESCRIPTION:
|
||||
@ -289,9 +288,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_AUTOMOUNT:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--automount=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "--automount= expects a valid boolean parameter: %s", optarg);
|
||||
return r;
|
||||
|
||||
arg_action = r ? ACTION_AUTOMOUNT : ACTION_MOUNT;
|
||||
break;
|
||||
|
@ -44,8 +44,8 @@
|
||||
#include "mkdir.h"
|
||||
#include "mkfs-util.h"
|
||||
#include "mount-util.h"
|
||||
#include "parse-util.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "pretty-print.h"
|
||||
#include "proc-cmdline.h"
|
||||
@ -3575,11 +3575,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_DRY_RUN:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--dry-run=", optarg, &arg_dry_run);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --dry-run= parameter: %s", optarg);
|
||||
|
||||
dry_run = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_EMPTY:
|
||||
@ -3604,18 +3602,15 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_DISCARD:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--discard=", optarg, &arg_discard);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --discard= parameter: %s", optarg);
|
||||
|
||||
arg_discard = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_FACTORY_RESET:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--factory-reset=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --factory-reset= parameter: %s", optarg);
|
||||
|
||||
return r;
|
||||
arg_factory_reset = r;
|
||||
break;
|
||||
|
||||
@ -3646,10 +3641,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_PRETTY:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--pretty=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --pretty= parameter: %s", optarg);
|
||||
|
||||
return r;
|
||||
arg_pretty = r;
|
||||
break;
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "missing_network.h"
|
||||
#include "netlink-util.h"
|
||||
#include "pager.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "pretty-print.h"
|
||||
#include "resolvconf-compat.h"
|
||||
@ -2811,11 +2812,9 @@ static int compat_parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_LEGEND:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--legend=", optarg, &arg_legend);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --legend= argument");
|
||||
|
||||
arg_legend = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
@ -2877,30 +2876,30 @@ static int compat_parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_CNAME:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--cname=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --cname= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_CNAME, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_SERVICE_ADDRESS:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--service-address=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --service-address= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_ADDRESS, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_SERVICE_TXT:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--service-txt=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --service-txt= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_TXT, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_SEARCH:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--search=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --search argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_SEARCH, r == 0);
|
||||
break;
|
||||
|
||||
@ -3107,11 +3106,9 @@ static int native_parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_LEGEND:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--legend=", optarg, &arg_legend);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --legend= argument");
|
||||
|
||||
arg_legend = r;
|
||||
return r;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
@ -3157,72 +3154,72 @@ static int native_parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_CNAME:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--cname=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --cname= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_CNAME, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_VALIDATE:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--validate=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --validate= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_VALIDATE, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_SYNTHESIZE:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--synthesize=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --synthesize= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_SYNTHESIZE, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_CACHE:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--cache=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --cache= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_CACHE, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_ZONE:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--zone=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --zone= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_ZONE, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_TRUST_ANCHOR:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--trust-anchor=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --trust-anchor= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_TRUST_ANCHOR, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_NETWORK:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--network=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --network= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_NETWORK, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_SERVICE_ADDRESS:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--service-address=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --service-address= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_ADDRESS, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_SERVICE_TXT:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--service-txt=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --service-txt= argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_TXT, r == 0);
|
||||
break;
|
||||
|
||||
case ARG_SEARCH:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--search=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --search argument.");
|
||||
return r;
|
||||
SET_FLAG(arg_flags, SD_RESOLVED_NO_SEARCH, r == 0);
|
||||
break;
|
||||
|
||||
|
@ -10,6 +10,27 @@
|
||||
|
||||
/* All functions in this file emit warnigs. */
|
||||
|
||||
int parse_boolean_argument(const char *optname, const char *s, bool *ret) {
|
||||
int r;
|
||||
|
||||
/* Returns the result through *ret and the return value. */
|
||||
|
||||
if (s) {
|
||||
r = parse_boolean(s);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse boolean argument to %s: %s.", optname, s);
|
||||
|
||||
if (ret)
|
||||
*ret = r;
|
||||
return r;
|
||||
} else {
|
||||
/* s may be NULL. This is controlled by getopt_long() parameters. */
|
||||
if (ret)
|
||||
*ret = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
int parse_json_argument(const char *s, JsonFormatFlags *ret) {
|
||||
assert(s);
|
||||
assert(ret);
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include "json.h"
|
||||
|
||||
int parse_boolean_argument(const char *optname, const char *s, bool *ret);
|
||||
int parse_json_argument(const char *s, JsonFormatFlags *ret);
|
||||
int parse_path_argument(const char *path, bool suppress_root, char **arg);
|
||||
int parse_signal_argument(const char *s, int *ret);
|
||||
|
@ -64,7 +64,7 @@ static int output_jobs_list(sd_bus *bus, const struct job_info* jobs, unsigned n
|
||||
assert(n == 0 || jobs);
|
||||
|
||||
if (n == 0) {
|
||||
if (!arg_no_legend) {
|
||||
if (arg_legend != 0) {
|
||||
on = ansi_highlight_green();
|
||||
off = ansi_normal();
|
||||
|
||||
@ -79,7 +79,7 @@ static int output_jobs_list(sd_bus *bus, const struct job_info* jobs, unsigned n
|
||||
if (!table)
|
||||
return log_oom();
|
||||
|
||||
table_set_header(table, !arg_no_legend);
|
||||
table_set_header(table, arg_legend != 0);
|
||||
if (arg_full)
|
||||
table_set_width(table, 0);
|
||||
|
||||
@ -111,7 +111,7 @@ static int output_jobs_list(sd_bus *bus, const struct job_info* jobs, unsigned n
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to print the table: %m");
|
||||
|
||||
if (!arg_no_legend) {
|
||||
if (arg_legend != 0) {
|
||||
on = ansi_highlight();
|
||||
off = ansi_normal();
|
||||
|
||||
|
@ -157,7 +157,7 @@ static int output_machines_list(struct machine_info *machine_infos, unsigned n)
|
||||
if (!table)
|
||||
return log_oom();
|
||||
|
||||
table_set_header(table, !arg_no_legend);
|
||||
table_set_header(table, arg_legend != 0);
|
||||
if (arg_plain) {
|
||||
/* Hide the 'glyph' column when --plain is requested */
|
||||
r = table_hide_column_from_display(table, 0);
|
||||
@ -210,7 +210,7 @@ static int output_machines_list(struct machine_info *machine_infos, unsigned n)
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (!arg_no_legend) {
|
||||
if (arg_legend != 0) {
|
||||
printf("\n");
|
||||
if (state_missing && geteuid() != 0)
|
||||
printf("Notice: some information only available to privileged users was not shown.\n");
|
||||
|
@ -58,7 +58,7 @@ static int output_unit_file_list(const UnitFileList *units, unsigned c) {
|
||||
if (!table)
|
||||
return log_oom();
|
||||
|
||||
table_set_header(table, !arg_no_legend);
|
||||
table_set_header(table, arg_legend != 0);
|
||||
if (arg_full)
|
||||
table_set_width(table, 0);
|
||||
|
||||
@ -127,7 +127,7 @@ static int output_unit_file_list(const UnitFileList *units, unsigned c) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
printf("\n%u unit files listed.\n", c);
|
||||
|
||||
return 0;
|
||||
|
@ -97,7 +97,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
|
||||
if (!table)
|
||||
return log_oom();
|
||||
|
||||
table_set_header(table, !arg_no_legend);
|
||||
table_set_header(table, arg_legend != 0);
|
||||
if (arg_plain) {
|
||||
/* Hide the 'glyph' column when --plain is requested */
|
||||
r = table_hide_column_from_display(table, 0);
|
||||
@ -177,7 +177,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (!arg_no_legend) {
|
||||
if (arg_legend != 0) {
|
||||
const char *on, *off;
|
||||
size_t records = table_get_rows(table) - 1;
|
||||
|
||||
@ -365,7 +365,7 @@ static int output_sockets_list(struct socket_info *socket_infos, unsigned cs) {
|
||||
return log_error_errno(r, "Failed to set columns to display: %m");
|
||||
}
|
||||
|
||||
table_set_header(table, !arg_no_legend);
|
||||
table_set_header(table, arg_legend != 0);
|
||||
if (arg_full)
|
||||
table_set_width(table, 0);
|
||||
|
||||
@ -416,7 +416,7 @@ static int output_sockets_list(struct socket_info *socket_infos, unsigned cs) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (!arg_no_legend) {
|
||||
if (arg_legend != 0) {
|
||||
printf("\n%s%u sockets listed.%s\n", on, cs, off);
|
||||
if (!arg_all)
|
||||
printf("Pass --all to see loaded but inactive sockets, too.\n");
|
||||
@ -610,7 +610,7 @@ static int output_timers_list(struct timer_info *timer_infos, unsigned n) {
|
||||
if (!table)
|
||||
return log_oom();
|
||||
|
||||
table_set_header(table, !arg_no_legend);
|
||||
table_set_header(table, arg_legend != 0);
|
||||
if (arg_full)
|
||||
table_set_width(table, 0);
|
||||
|
||||
@ -655,7 +655,7 @@ static int output_timers_list(struct timer_info *timer_infos, unsigned n) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (!arg_no_legend) {
|
||||
if (arg_legend != 0) {
|
||||
printf("\n%s%u timers listed.%s\n", on, n, off);
|
||||
if (!arg_all)
|
||||
printf("Pass --all to see loaded but inactive timers, too.\n");
|
||||
|
@ -68,7 +68,7 @@ const char *arg_job_mode = "replace";
|
||||
UnitFileScope arg_scope = UNIT_FILE_SYSTEM;
|
||||
bool arg_wait = false;
|
||||
bool arg_no_block = false;
|
||||
bool arg_no_legend = false;
|
||||
int arg_legend = -1; /* -1: true, unless --quiet is passed, 1: true */
|
||||
PagerFlags arg_pager_flags = 0;
|
||||
bool arg_no_wtmp = false;
|
||||
bool arg_no_sync = false;
|
||||
@ -268,7 +268,7 @@ static int systemctl_help(void) {
|
||||
" --no-block Do not wait until operation finished\n"
|
||||
" --no-wall Don't send wall message before halt/power-off/reboot\n"
|
||||
" --no-reload Don't reload daemon after en-/dis-abling unit files\n"
|
||||
" --no-legend Do not print a legend (column headers and hints)\n"
|
||||
" --legend=BOOL Enable/disable the legend (column headers and hints)\n"
|
||||
" --no-pager Do not pipe output into a pager\n"
|
||||
" --no-ask-password Do not ask for system passwords\n"
|
||||
" --global Enable/disable/mask unit files globally\n"
|
||||
@ -310,88 +310,89 @@ static int systemctl_help(void) {
|
||||
}
|
||||
|
||||
static void help_types(void) {
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("Available unit types:");
|
||||
|
||||
DUMP_STRING_TABLE(unit_type, UnitType, _UNIT_TYPE_MAX);
|
||||
}
|
||||
|
||||
static void help_states(void) {
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("Available unit load states:");
|
||||
DUMP_STRING_TABLE(unit_load_state, UnitLoadState, _UNIT_LOAD_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable unit active states:");
|
||||
DUMP_STRING_TABLE(unit_active_state, UnitActiveState, _UNIT_ACTIVE_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable unit file states:");
|
||||
DUMP_STRING_TABLE(unit_file_state, UnitFileState, _UNIT_FILE_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable automount unit substates:");
|
||||
DUMP_STRING_TABLE(automount_state, AutomountState, _AUTOMOUNT_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable device unit substates:");
|
||||
DUMP_STRING_TABLE(device_state, DeviceState, _DEVICE_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable mount unit substates:");
|
||||
DUMP_STRING_TABLE(mount_state, MountState, _MOUNT_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable path unit substates:");
|
||||
DUMP_STRING_TABLE(path_state, PathState, _PATH_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable scope unit substates:");
|
||||
DUMP_STRING_TABLE(scope_state, ScopeState, _SCOPE_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable service unit substates:");
|
||||
DUMP_STRING_TABLE(service_state, ServiceState, _SERVICE_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable slice unit substates:");
|
||||
DUMP_STRING_TABLE(slice_state, SliceState, _SLICE_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable socket unit substates:");
|
||||
DUMP_STRING_TABLE(socket_state, SocketState, _SOCKET_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable swap unit substates:");
|
||||
DUMP_STRING_TABLE(swap_state, SwapState, _SWAP_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable target unit substates:");
|
||||
DUMP_STRING_TABLE(target_state, TargetState, _TARGET_STATE_MAX);
|
||||
|
||||
if (!arg_no_legend)
|
||||
if (arg_legend != 0)
|
||||
puts("\nAvailable timer unit substates:");
|
||||
DUMP_STRING_TABLE(timer_state, TimerState, _TIMER_STATE_MAX);
|
||||
}
|
||||
|
||||
static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
enum {
|
||||
ARG_FAIL = 0x100,
|
||||
ARG_FAIL = 0x100, /* compatibility only */
|
||||
ARG_REVERSE,
|
||||
ARG_AFTER,
|
||||
ARG_BEFORE,
|
||||
ARG_CHECK_INHIBITORS,
|
||||
ARG_DRY_RUN,
|
||||
ARG_SHOW_TYPES,
|
||||
ARG_IRREVERSIBLE,
|
||||
ARG_IGNORE_DEPENDENCIES,
|
||||
ARG_IRREVERSIBLE, /* compatibility only */
|
||||
ARG_IGNORE_DEPENDENCIES, /* compatibility only */
|
||||
ARG_VALUE,
|
||||
ARG_VERSION,
|
||||
ARG_USER,
|
||||
ARG_SYSTEM,
|
||||
ARG_GLOBAL,
|
||||
ARG_NO_BLOCK,
|
||||
ARG_NO_LEGEND,
|
||||
ARG_LEGEND,
|
||||
ARG_NO_LEGEND, /* compatibility only */
|
||||
ARG_NO_PAGER,
|
||||
ARG_NO_WALL,
|
||||
ARG_ROOT,
|
||||
@ -443,7 +444,8 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
{ "global", no_argument, NULL, ARG_GLOBAL },
|
||||
{ "wait", no_argument, NULL, ARG_WAIT },
|
||||
{ "no-block", no_argument, NULL, ARG_NO_BLOCK },
|
||||
{ "no-legend", no_argument, NULL, ARG_NO_LEGEND },
|
||||
{ "legend", required_argument, NULL, ARG_LEGEND },
|
||||
{ "no-legend", no_argument, NULL, ARG_NO_LEGEND }, /* compatibility only */
|
||||
{ "no-pager", no_argument, NULL, ARG_NO_PAGER },
|
||||
{ "no-wall", no_argument, NULL, ARG_NO_WALL },
|
||||
{ "dry-run", no_argument, NULL, ARG_DRY_RUN },
|
||||
@ -630,7 +632,14 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_NO_LEGEND:
|
||||
arg_no_legend = true;
|
||||
arg_legend = false;
|
||||
break;
|
||||
|
||||
case ARG_LEGEND:
|
||||
r = parse_boolean_argument("--legend", optarg, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
arg_legend = r;
|
||||
break;
|
||||
|
||||
case ARG_NO_PAGER:
|
||||
@ -663,6 +672,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
|
||||
case 'q':
|
||||
arg_quiet = true;
|
||||
|
||||
if (arg_legend < 0)
|
||||
arg_legend = false;
|
||||
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
@ -721,7 +734,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
optarg);
|
||||
|
||||
if (OUTPUT_MODE_IS_JSON(arg_output)) {
|
||||
arg_no_legend = true;
|
||||
arg_legend = false;
|
||||
arg_plain = true;
|
||||
}
|
||||
break;
|
||||
|
@ -52,7 +52,7 @@ extern const char *arg_job_mode;
|
||||
extern UnitFileScope arg_scope;
|
||||
extern bool arg_wait;
|
||||
extern bool arg_no_block;
|
||||
extern bool arg_no_legend;
|
||||
extern int arg_legend;
|
||||
extern PagerFlags arg_pager_flags;
|
||||
extern bool arg_no_wtmp;
|
||||
extern bool arg_no_sync;
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "format-util.h"
|
||||
#include "main-func.h"
|
||||
#include "pager.h"
|
||||
#include "parse-argument.h"
|
||||
#include "parse-util.h"
|
||||
#include "pretty-print.h"
|
||||
#include "socket-util.h"
|
||||
@ -720,17 +721,17 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_WITH_NSS:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--with-nss=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --with-nss= parameter: %s", optarg);
|
||||
return r;
|
||||
|
||||
SET_FLAG(arg_userdb_flags, USERDB_AVOID_NSS, !r);
|
||||
break;
|
||||
|
||||
case ARG_SYNTHESIZE:
|
||||
r = parse_boolean(optarg);
|
||||
r = parse_boolean_argument("--synthesize=", optarg, NULL);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --synthesize= parameter: %s", optarg);
|
||||
return r;
|
||||
|
||||
SET_FLAG(arg_userdb_flags, USERDB_DONT_SYNTHESIZE, !r);
|
||||
break;
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user