mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2026-10-24 02:08:57 +03:00
all: only markup --help when outputting to tty
Since v9.10 (Feb 2026) --help always outputs bold and hyperlinks even when output was not a tty, as this was thought more useful with pagers and grep etc. This change makes the more conservative choice of only outputting markup to tty so that users who do not have less setup to display color (-R), or users who enable color by default in grep, get improved output (though without URLs etc.) * src/system.h (oputs_): Call isatty() when not forcing markup with $IN_HELP2MAN. Also reverse the double negatives to a more natural form. * man/local.mk: Remove redundant assignment of $TERM. * doc/coreutils.texi (common options): Mention that --help markup requires output to be a tty, and that $IN_HELP2MAN overrides that. * NEWS: Mention the change in behavior.
This commit is contained in:
4
NEWS
4
NEWS
@@ -53,6 +53,10 @@ GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
** Changes in behavior
|
||||
|
||||
command --help output will no longer be marked up with bold or hyperlinks
|
||||
when output is not a tty. E.g. paged --help output will no longer
|
||||
contain URLs to the full online manual.
|
||||
|
||||
'env' and 'printenv' now quote printed environment variables only when
|
||||
outputting to a terminal. The previous release enabled this for all
|
||||
outputs by default, requiring setting QUOTING_STYLE=literal to disable.
|
||||
|
||||
@@ -765,11 +765,14 @@ these programs, abbreviations of the long options are not always recognized.
|
||||
@item --help
|
||||
@opindex --help
|
||||
@vindex TERM
|
||||
@vindex IN_HELP2MAN
|
||||
@cindex help, online
|
||||
Print a usage message listing all available options, then exit successfully.
|
||||
Help output may be marked up with terminal codes for formatting or
|
||||
hyperlinks, which can be disabled by unsetting the @env{TERM} environment
|
||||
variable, or setting it to the value @samp{dumb}.
|
||||
When outputting to a tty @option{--help} output may be marked up with
|
||||
terminal codes for formatting or hyperlinks, which can be disabled by
|
||||
unsetting the @env{TERM} environment variable, or setting it to the value
|
||||
@samp{dumb}. To force the use of markup when output is not a tty,
|
||||
e.g. when piping to a pager, set the @env{IN_HELP2MAN} environment variable.
|
||||
|
||||
@item --version
|
||||
@opindex --version
|
||||
|
||||
@@ -27,7 +27,7 @@ if HAVE_PERL
|
||||
if BOLD_MAN_REFS
|
||||
help2man_OPTS=--bold-refs
|
||||
endif
|
||||
run_help2man = env IN_HELP2MAN=1 TERM=not_dumb $(PERL) -- \
|
||||
run_help2man = env IN_HELP2MAN=1 $(PERL) -- \
|
||||
$(srcdir)/man/help2man --loose-indent $(help2man_OPTS)
|
||||
else
|
||||
run_help2man = $(SHELL) $(srcdir)/man/dummy-man
|
||||
|
||||
22
src/system.h
22
src/system.h
@@ -584,20 +584,22 @@ is_nul (void const *buf, size_t length)
|
||||
static inline void
|
||||
oputs_ (MAYBE_UNUSED char const *program, char const *option)
|
||||
{
|
||||
static int help_no_sgr =
|
||||
#if ! defined MANUAL_URL && ! defined BOLD_MAN_REFS
|
||||
1; /* Disable. */
|
||||
#else
|
||||
static int help_markup =
|
||||
#if defined MANUAL_URL || defined BOLD_MAN_REFS
|
||||
-1; /* Lookup. */
|
||||
#else
|
||||
0; /* Disable. */
|
||||
#endif
|
||||
if (help_no_sgr == -1)
|
||||
if (help_markup == -1)
|
||||
{
|
||||
/* Note we don't consult isatty() since usually you
|
||||
would want markup when piping to grep/less etc. */
|
||||
char const *term = getenv ("TERM");
|
||||
help_no_sgr = (!term || !*term || streq (term, "dumb"));
|
||||
/* Note one generally would want markup when piping to grep/less etc.
|
||||
but we're conservative here for now, and only markup to tty. */
|
||||
char const *te;
|
||||
help_markup = (isatty (STDOUT_FILENO)
|
||||
? ((te = getenv ("TERM")) && *te && !streq (te, "dumb"))
|
||||
: getenv ("IN_HELP2MAN") != NULL);
|
||||
}
|
||||
if (help_no_sgr)
|
||||
if (! help_markup)
|
||||
{
|
||||
fputs (option, stdout);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user