From: Pádraig Brady Date: Tue, 26 Jul 2022 13:10:59 +0000 (+0100) Subject: doc: env: clarify that empty signal args are ignored X-Git-Tag: v9.2~168 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=187712b97b04f3ee6c2137f5b045970d76bb01f0;p=thirdparty%2Fcoreutils.git doc: env: clarify that empty signal args are ignored It's useful to treat empty and missing arguments differently. Missing means all signals, while empty means no signals and so is a no-op. It's useful to treat empty arguments like this, so that dynamically specified arguments like the following are supported env --ignore-signals "$SIGS_TO_IGNORE" Note `env --ignore-signals=` is treated as an empty argument. * doc/coreutils.texi (env invocation): Empty args are treated differently to missing arguments, so call that out explicitly. * src/env.c (usage): Likewise. Addresses https://bugs.debian.org/1016049 --- diff --git a/doc/coreutils.texi b/doc/coreutils.texi index 53257f7d9f..d441012737 100644 --- a/doc/coreutils.texi +++ b/doc/coreutils.texi @@ -17574,9 +17574,9 @@ env --chdir=/build FOO=bar timeout 5 true @item --default-signal[=@var{sig}] Unblock and reset signal @var{sig} to its default signal handler. Without @var{sig} all known signals are unblocked and reset to their defaults. -Multiple signals can be comma-separated. The following command runs -@command{seq} with SIGINT and SIGPIPE set to their default -(which is to terminate the program): +Multiple signals can be comma-separated. An empty @var{sig} argument is a no-op. +The following command runs @command{seq} with SIGINT and SIGPIPE set to their +default (which is to terminate the program): @example env --default-signal=PIPE,INT seq 1000 | head -n1 @@ -17603,9 +17603,9 @@ trap '' PIPE && sh -c 'env --default-signal=PIPE seq inf | head -n1' @item --ignore-signal[=@var{sig}] Ignore signal @var{sig} when running a program. Without @var{sig} all -known signals are set to ignore. Multiple signals can be -comma-separated. The following command runs @command{seq} with SIGINT set -to be ignored - pressing @kbd{Ctrl-C} will not terminate it: +known signals are set to ignore. Multiple signals can be comma-separated. +An empty @var{sig} argument is a no-op. The following command runs @command{seq} +with SIGINT set to be ignored - pressing @kbd{Ctrl-C} will not terminate it: @example env --ignore-signal=INT seq inf > /dev/null @@ -17627,7 +17627,9 @@ env --default-signal=INT,PIPE --ignore-signal=INT @end example @item --block-signal[=@var{sig}] -Block signal(s) @var{sig} from being delivered. +Block signal(s) @var{sig} from being delivered. Without @var{sig} all +known signals are set to blocked. Multiple signals can be comma-separated. +An empty @var{sig} argument is a no-op. @item --list-signal-handling List blocked or ignored signals to standard error, before executing a command. diff --git a/src/env.c b/src/env.c index f7ef297e7f..1bd2163da7 100644 --- a/src/env.c +++ b/src/env.c @@ -158,7 +158,7 @@ A mere - implies -i. If no COMMAND, print the resulting environment.\n\ \n\ SIG may be a signal name like 'PIPE', or a signal number like '13'.\n\ Without SIG, all known signals are included. Multiple signals can be\n\ -comma-separated.\n\ +comma-separated. An empty SIG argument is a no-op.\n\ "), stdout); emit_ancillary_info (PROGRAM_NAME); }