diff --git a/man/udevadm.xml b/man/udevadm.xml index 734e38cd05..1e2202aa66 100644 --- a/man/udevadm.xml +++ b/man/udevadm.xml @@ -780,6 +780,13 @@ + + + + Do not show summary. + + + diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm index 3c3c403153..2e2fe5a58e 100644 --- a/shell-completion/bash/udevadm +++ b/shell-completion/bash/udevadm @@ -64,7 +64,7 @@ _udevadm() { [MONITOR_ARG]='-s --subsystem-match -t --tag-match' [TEST]='-a --action -N --resolve-names' [TEST_BUILTIN]='-a --action' - [VERIFY]='-N --resolve-names --root' + [VERIFY]='-N --resolve-names --root --no-summary' [WAIT]='-t --timeout --initialized=no --removed --settle' [LOCK]='-t --timeout -d --device -b --backing -p --print' ) diff --git a/shell-completion/zsh/_udevadm b/shell-completion/zsh/_udevadm index e8414eef67..96fb59af89 100644 --- a/shell-completion/zsh/_udevadm +++ b/shell-completion/zsh/_udevadm @@ -109,6 +109,7 @@ _udevadm_verify(){ _arguments \ {-N+,--resolve-names=}'[When to resolve names.]:resolve:(early never)' \ '--root=[Operate on catalog hierarchy under specified directory]:directories:_directories' \ + {--no-summary}'[Do not show summary.]' \ {-h,--help}'[Print help text.]' \ '*::files:_files' } diff --git a/src/udev/udevadm-verify.c b/src/udev/udevadm-verify.c index 37c477da6a..58d35fef13 100644 --- a/src/udev/udevadm-verify.c +++ b/src/udev/udevadm-verify.c @@ -20,6 +20,7 @@ static ResolveNameTiming arg_resolve_name_timing = RESOLVE_NAME_EARLY; static char *arg_root = NULL; +static bool arg_summary = true; STATIC_DESTRUCTOR_REGISTER(arg_root, freep); @@ -37,6 +38,7 @@ static int help(void) { " -V --version Show package version\n" " -N --resolve-names=early|never When to resolve names\n" " --root=PATH Operate on an alternate filesystem root\n" + " --no-summary Do not show summary\n" "\nSee the %s for details.\n", program_invocation_short_name, ansi_highlight(), @@ -49,12 +51,14 @@ static int help(void) { static int parse_argv(int argc, char *argv[]) { enum { ARG_ROOT = 0x100, + ARG_NO_SUMMARY, }; static const struct option options[] = { - { "help", no_argument, NULL, 'h' }, - { "version", no_argument, NULL, 'V' }, - { "resolve-names", required_argument, NULL, 'N' }, - { "root", required_argument, NULL, ARG_ROOT }, + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, 'V' }, + { "resolve-names", required_argument, NULL, 'N' }, + { "root", required_argument, NULL, ARG_ROOT }, + { "no-summary", no_argument, NULL, ARG_NO_SUMMARY }, {} }; @@ -87,6 +91,9 @@ static int parse_argv(int argc, char *argv[]) { if (r < 0) return r; break; + case ARG_NO_SUMMARY: + arg_summary = false; + break; case '?': return -EINVAL; @@ -172,16 +179,17 @@ static int verify_rules(UdevRules *rules, char **files) { r = verify_rules_filelist(rules, files, &fail_count, &success_count, /* walk_dirs */ true); - printf("\n%s%zu udev rules files have been checked.%s\n" - " Success: %zu\n" - "%s Fail: %zu%s\n", - ansi_highlight(), - fail_count + success_count, - ansi_normal(), - success_count, - fail_count > 0 ? ansi_highlight_red() : "", - fail_count, - fail_count > 0 ? ansi_normal() : ""); + if (arg_summary) + printf("\n%s%zu udev rules files have been checked.%s\n" + " Success: %zu\n" + "%s Fail: %zu%s\n", + ansi_highlight(), + fail_count + success_count, + ansi_normal(), + success_count, + fail_count > 0 ? ansi_highlight_red() : "", + fail_count, + fail_count > 0 ? ansi_normal() : ""); return r; } diff --git a/test/units/testsuite-17.11.sh b/test/units/testsuite-17.11.sh index d70a93b74f..56e9ac24ac 100755 --- a/test/units/testsuite-17.11.sh +++ b/test/units/testsuite-17.11.sh @@ -134,6 +134,8 @@ rm "${rules_dir}/loop.rules" # Empty rules. touch "${rules_dir}/empty.rules" assert_0 --root="${workdir}" +: >"${exo}" +assert_0 --root="${workdir}" --no-summary # Directory with a single *.rules file. cp "${workdir}/default_output_1_success" "${exo}"