]> git.ipfire.org Git - thirdparty/coreutils.git/log
thirdparty/coreutils.git
3 years agosort: fix sort -g infloop again
Paul Eggert [Mon, 2 May 2022 05:46:21 +0000 (22:46 -0700)] 
sort: fix sort -g infloop again

Problem reported by Giulio Genovese (Bug#55212).
* src/sort.c (nan_compare): To compare NaNs, simply printf+strcmp.
This avoids the problem of padding bits and unspecified behavior.
Args are now long double instead of char *; caller changed.

3 years agomv: test Bug#55029
Paul Eggert [Thu, 21 Apr 2022 02:44:56 +0000 (19:44 -0700)] 
mv: test Bug#55029

* tests/mv/backup-dir.sh: New test for Bug#55029,
reported by Steve Ward.

3 years agobuild: update gnulib submodule to latest
Paul Eggert [Thu, 21 Apr 2022 02:36:44 +0000 (19:36 -0700)] 
build: update gnulib submodule to latest

3 years agopr: don’t use uninitialized var
Paul Eggert [Tue, 19 Apr 2022 23:13:55 +0000 (16:13 -0700)] 
pr: don’t use uninitialized var

Found with -flto and --enable-gcc-warnings.
* src/pr.c (getoptarg): Fix misuse of xstrtol, which does not
necessarily set tmp_long on errror, and does not set errno in any
reliable way.  The previous code might access uninitialized
storage; on typical platforms this merely causes it to possibly
print the wrong diagnostic.

3 years agodoc: fix ' and ` in PDF output of code
Paul Eggert [Tue, 19 Apr 2022 20:38:17 +0000 (13:38 -0700)] 
doc: fix ' and ` in PDF output of code

* doc/coreutils.texi: Set txicodequoteundirected and
txicodequotebacktick so that ' and ` in code examples appear
as-is, rather than being transliterated to ’ and ‘.  E.g., prefer
“... this is equivalent to ‘tr '\303\266' '\305\201'’ and ...” to
“... this is equivalent to ‘tr ’\303\266’ ’\305\201’’ and ...”
in PDF output.

3 years agodoc: fix footnote formats
Paul Eggert [Tue, 19 Apr 2022 20:28:15 +0000 (13:28 -0700)] 
doc: fix footnote formats

* doc/coreutils.texi: Reword footnote, or put it right next
to previous punctuation.

3 years agodoc: prefer ö to $'\u7530'
Paul Eggert [Tue, 19 Apr 2022 20:24:42 +0000 (13:24 -0700)] 
doc: prefer ö to $'\u7530'

* doc/coreutils.texi (Character arrays): Avoid using shell
notation like $'\u7530' since this isn’t in POSIX yet. Instead,
use ö and Ł which should work in all texinfo output formats.

3 years agodoc: rmdir: clarify --ignore-fail-on-non-empty operation
Pádraig Brady [Sun, 17 Apr 2022 12:11:09 +0000 (13:11 +0100)] 
doc: rmdir: clarify --ignore-fail-on-non-empty operation

This option has changed from ignoring only ENOTEMPTY|EEXIST
(i.e. ignore errors _solely_ due to dir not empty),
to ignoring some other errors from more protected dirs
that are not empty.  That adjustment was made to better
support use with --parents, to essentially remove as much of
a hierarchy as possible, without erroring as we hit more
protected non empty parent dirs.
That functionality adjustment was originally discussed at:
https://lists.gnu.org/r/bug-coreutils/2008-01/msg00283.html

* src/rmdir.c (usage): Adjust to be more accurate to current behavior.
Also adjust --parents option to be easier to read.
* doc/coreutils.texi (rmdir invocation): Likewise.
Reported at https://github.com/coreutils/coreutils/issues/40

3 years agomaint: post-release administrivia
Pádraig Brady [Fri, 15 Apr 2022 21:40:41 +0000 (22:40 +0100)] 
maint: post-release administrivia

* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.

3 years agoversion 9.1 v9.1
Pádraig Brady [Fri, 15 Apr 2022 21:10:07 +0000 (22:10 +0100)] 
version 9.1

* NEWS: Record release date.

3 years agodoc: avoid unicode errors in texi conversion
Pádraig Brady [Fri, 15 Apr 2022 17:01:32 +0000 (18:01 +0100)] 
doc: avoid unicode errors in texi conversion

Avoid "Unicode character U+#1 not supported, sorry" error
when converting from texi to dvi or pdf.

* doc/coreutils.texi (tr invocation): Avoid the @U{XXXX}
texi representation, as even though info and html can represent
these characters directly, there are conversion errors
for pdf and dvi.  Instead use the more abstract shell
$'\uXXXX' representation.

3 years agobuild: copy: fix build on macos 10.12
Pádraig Brady [Thu, 14 Apr 2022 12:35:22 +0000 (13:35 +0100)] 
build: copy: fix build on macos 10.12

* src/copy.c (copy_reg): Handle the case where CLONE_NOOWNERCOPY
is not defined.
Reported by Jeffrey Walton

3 years agotail: detect closed stdout on Solaris
Pádraig Brady [Wed, 13 Apr 2022 16:31:47 +0000 (17:31 +0100)] 
tail: detect closed stdout on Solaris

* src/tail.c (check_output_alive): Use poll() on Solaris.
Also handle POLLHUP, which Solaris returns in this case.
* tests/tail-2/pipe-f.sh: Use `head -n2` rather than `sed 2q`
as Solaris sed does not exit in this case.
* NEWS: Mention the improvement.
Reported by Bruno Haible.

3 years agomaint: syntax-check: fix preprocessor indentation
Pádraig Brady [Wed, 13 Apr 2022 11:19:16 +0000 (12:19 +0100)] 
maint: syntax-check: fix preprocessor indentation

* gl/lib/targetdir.h: Keep '#' at start of line.

3 years agocp,mv,install: omit an ‘inline’
Paul Eggert [Wed, 13 Apr 2022 06:56:41 +0000 (23:56 -0700)] 
cp,mv,install: omit an ‘inline’

* gl/lib/targetdir.c (target_directory_operand):
Omit unnecessary ‘inline’.

3 years agocp,mv,install: improve EACCES targetdir messages
Paul Eggert [Wed, 13 Apr 2022 06:56:41 +0000 (23:56 -0700)] 
cp,mv,install: improve EACCES targetdir messages

This improves on the fix for --target-directory diagnostics bugs on
Solaris 11.  Problem reported by Bruno Haible and Pádraig Brady; see:
https://lists.gnu.org/r/coreutils/2022-04/msg00044.html
Also, omit some unnecessary stat calls.
* gl/lib/targetdir.c (target_directory_operand): If !O_DIRECTORY,
do not bother calling open if stat failed with errno != EOVERFLOW.
Rename is_a_dir to try_to_open since that’s closer to what it means.
If the open failed with EACCES and we used O_SEARCH, look at stat
results to see whether errno should be ENOTDIR for better diagnostics.
Treat EOVERFLOW as an “I don’t know whether it’s a directory and
there’s no easy way to find out” rather than as an error.

3 years agocp,mv,install: avoid excess stat calls on non-GNU
Paul Eggert [Wed, 13 Apr 2022 06:56:41 +0000 (23:56 -0700)] 
cp,mv,install: avoid excess stat calls on non-GNU

* gl/lib/targetdir.c (target_directory_operand): New arg ST.
All callers changed.
* src/cp.c (do_copy):
* src/mv.c (main):
Avoid unnecessary stat call if target_directory_operand already
got the status.

3 years agocp,mv,install: modularize targetdir
Paul Eggert [Wed, 13 Apr 2022 06:56:41 +0000 (23:56 -0700)] 
cp,mv,install: modularize targetdir

Move target directory code out of system.h to a new targetdir module.
This doesn’t change functionality.
* bootstrap.conf (gnulib_modules): Add targetdir.
* src/cp.c, src/install.c, src/mv.c: Include targetdir.h.
* src/system.h (must_be_working_directory, target_directory_operand)
(targetdir_dirfd_valid): Move from here ...
* gl/lib/targetdir.c, gl/lib/targetdir.h, gl/modules/targetdir:
... to these new files.

3 years agocp,mv,install: avoid EACCES with non directory destination
Pádraig Brady [Sun, 10 Apr 2022 15:59:40 +0000 (16:59 +0100)] 
cp,mv,install: avoid EACCES with non directory destination

* src/system.h (target_directory_operand): Also check with stat()
on systems with O_SEARCH, to avoid open("file", O_SEARCH|O_DIRECTORY)
returning EACCES rather than ENOTDIR, which was seen on Solaris 11.4
when operating on non dirs without execute bit set.
* NEWS: Remove related bug entry, as that issue was only introduced
after coreutils v9.0 was released.
Reported by Bruno Haible.

3 years agosync: support syncing files on cygwin
Pádraig Brady [Tue, 12 Apr 2022 11:04:38 +0000 (12:04 +0100)] 
sync: support syncing files on cygwin

* src/sync.c (sync_arg): Similarly to AIX, Cygwin 2.9.0
was seen to need write access to have permission to sync a file.

3 years agotests: cygwin: handle ENOENT from execvp(".")
Pádraig Brady [Tue, 12 Apr 2022 11:31:01 +0000 (12:31 +0100)] 
tests: cygwin: handle ENOENT from execvp(".")

* tests/misc/env.sh: Verify with another command that
execvp() doesn not return ENOENT, before testing the
exit code from the command in question.
* tests/misc/nice-fail.sh: Likewise.
* tests/misc/stdbuf.sh: Likewise.
* tests/misc/timeout-parameters.sh: Likewise.

3 years agotests: env-S.pl: unset cygwin hardwired env vars
Pádraig Brady [Tue, 12 Apr 2022 11:50:40 +0000 (12:50 +0100)] 
tests: env-S.pl: unset cygwin hardwired env vars

* tests/misc/env-S.pl: Unset SYSTEMROOT and WINDIR.

3 years agotests: md5sum: fix false failures on cygwin
Pádraig Brady [Mon, 11 Apr 2022 14:37:04 +0000 (15:37 +0100)] 
tests: md5sum: fix false failures on cygwin

* tests/misc/md5sum-newline.pl: Avoid binary '*' tags when
comparing checksums.
* tests/misc/md5sum-bsd.sh: Avoid binary '*' tags so that we correctly
trigger the ambiguity test.
Reported by Bruno Haible

3 years agotests: b2sum.sh: fix false failure on cygwin
Pádraig Brady [Mon, 11 Apr 2022 14:37:04 +0000 (15:37 +0100)] 
tests: b2sum.sh: fix false failure on cygwin

* tests/misc/b2sum.sh: Avoid binary '*' tags when comparing checksums.
Reported by Bruno Haible

3 years agotests: dircolors.pl: avoid false failure with TERM=dumb
Pádraig Brady [Mon, 11 Apr 2022 13:17:59 +0000 (14:17 +0100)] 
tests: dircolors.pl: avoid false failure with TERM=dumb

* tests/Coreutils.pm: Ensure an unset $TERM env var,
which is required on perl 5.22.2 on Solaris 11 OpenIndiana at least,
where TERM was being reset to 'dumb'.
Reported By Bruno Haible.

3 years agotests: printf-mb.sh: fix false failure with french translations
Pádraig Brady [Mon, 11 Apr 2022 12:47:44 +0000 (13:47 +0100)] 
tests: printf-mb.sh: fix false failure with french translations

* tests/misc/printf-mb.sh: As per commit 04148c99c,
adjust non C warnings before comparison, to those of LC_MESSAGES=C.
Reported by Adam Sampson

3 years agotests: stty.sh: skip on systems without perl
Pádraig Brady [Sun, 10 Apr 2022 14:47:52 +0000 (15:47 +0100)] 
tests: stty.sh: skip on systems without perl

* init.cfg (stty_reversible_init_): Add require_perl_
to ensure we skip rather than error, without perl.

3 years agocp,mv,install: avoid opening non directory destination
Pádraig Brady [Sat, 9 Apr 2022 14:46:52 +0000 (15:46 +0100)] 
cp,mv,install: avoid opening non directory destination

commit v9.0-66-ge2daa8f79 introduced an issue, for example
where cp could hang when overwriting a destination fifo,
when it would try to open() the fifo on systems
like Solaris 10 that didn't support the O_DIRECTORY flag.

This is still racy on such systems, but only in the
case where a directory is replaced by a fifo in
the small window between stat() and open().

* src/system.h (target_directory_operand): On systems without
O_DIRECTORY, ensure the file is a directory before attempting to open().
* tests/cp/special-f.sh: Protect cp with timeout(1),
as cp was seen to hang when trying to overwrite an existing fifo.
* NEWS: Mention the bug fix.

3 years agodoc: install --compare: clarify mode of operation
Pádraig Brady [Sat, 9 Apr 2022 11:42:37 +0000 (12:42 +0100)] 
doc: install --compare: clarify mode of operation

* doc/coreutils.texi (install invocation): For the --compare option,
clarify that the ownership or permissions of the source files don't
matter.  Also don't imply --owner or --group need to be specified
for --compare to be effective.
* src/install.c (usage): Add more detail on what's being compared.
Fixes https://bugs.gnu.org/50889

3 years agodoc: remove older ChangeLog items
Pádraig Brady [Fri, 8 Apr 2022 16:08:32 +0000 (17:08 +0100)] 
doc: remove older ChangeLog items

* Makefile.am: Update the oldest documented version
to 8.27 which is now about 5 years old.

3 years agomaint: remove obsolete statat gnulib module
Bernhard Voelker [Thu, 7 Apr 2022 16:59:16 +0000 (18:59 +0200)] 
maint: remove obsolete statat gnulib module

* bootstrap.conf (gnulib_modules): Remove statat.

3 years agobuild: update gnulib submodule to latest
Pádraig Brady [Thu, 7 Apr 2022 16:19:37 +0000 (17:19 +0100)] 
build: update gnulib submodule to latest

* gnulib: Update to latest
* src/copy.c: Replace deprecated {l,}statat(), with fstatat().
* src/cp.c: Likewise.
* src/install.c: Likewise.
* src/remove.c: Likewise.

3 years agofactor: improve support on RISCV and loongson
Pádraig Brady [Mon, 4 Apr 2022 12:41:32 +0000 (13:41 +0100)] 
factor: improve support on RISCV and loongson

* src/longlong.h: Pull in RISCV fix and loongarch64 support from
https://gmplib.org/repo/gmp/log/tip/longlong.h

3 years agodoc: describe `dd iseek` as a feature not a change
Pádraig Brady [Sun, 3 Apr 2022 21:11:25 +0000 (22:11 +0100)] 
doc: describe `dd iseek` as a feature not a change

* NEWS: Move description from "Changes in behavior"
to "New features".

3 years agols: avoid expensive capability lookup by default
Pádraig Brady [Sun, 3 Apr 2022 20:42:42 +0000 (21:42 +0100)] 
ls: avoid expensive capability lookup by default

Lookup of file-based capabilities adds 30% overhead to the common
case of ls --color usage.  Since the use of file capabilities is
very rare, it doesn't make sense to pay this cost in the common
case.  It's better to use getcap to inspect capabilities, and the
following run shows only 8 files using capabilities on my fedora
35 distro (14 years after the feature was introduced to the linux
kernel).

  $ getcap -r /
  /usr/bin/arping = cap_net_raw+p
  /usr/bin/clockdiff = cap_net_raw+p
  /usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
  /usr/bin/gnome-shell = cap_sys_nice+ep
  /usr/bin/newgidmap = cap_setgid+ep
  /usr/bin/newuidmap = cap_setuid+ep
  /usr/sbin/mtr-packet = cap_net_raw+ep
  /usr/sbin/suexec = cap_setgid,cap_setuid+ep

* src/dircolors.hin: Set "CAPABILITY" to "00", to indicate unused.
* src/ls.c: Set the default C_CAP color to not colored.
* NEWS: Mention the change in behavior.

3 years agodircolors: colorize backup files with bright black
Ville Skyttä [Tue, 22 Mar 2022 18:24:27 +0000 (20:24 +0200)] 
dircolors: colorize backup files with bright black

* src/dircolors.hin: Add patterns for suffixes for "backup files".
The color used is so they stand out less than non-backup files,
and bright black works well on both light and dark backgrounds.
* THANKS.in: Remove duplicate.
Fixes https://bugs.gnu.org/54521

3 years agodoc: join: clarify that -e only effective for -12jo fields
Pádraig Brady [Tue, 29 Mar 2022 15:34:10 +0000 (16:34 +0100)] 
doc: join: clarify that -e only effective for -12jo fields

* src/join.c (usage): Clarify that -e is not sufficient
to enable output of missing fields from one of the inputs.
Rather the -12jo options are required to explicitly
enable output of those fields.
Fixes https://bugs.gnu.org/54625

3 years agomaint: sync latest bootstrap from gnulib
Pádraig Brady [Fri, 25 Mar 2022 19:08:28 +0000 (19:08 +0000)] 
maint: sync latest bootstrap from gnulib

* bootstrap: Should have updated this with the last gnulib update.

3 years agotests: improve recent printf test
Pádraig Brady [Sun, 20 Mar 2022 17:46:13 +0000 (17:46 +0000)] 
tests: improve recent printf test

* tests/misc/printf-mb.sh: Given we shortcut the single char
(invalid multi-byte) case, add a case to ensure we're correctly
checking the return from mbrtowc().

3 years agoprintf: support printing the numeric value of multi-byte chars
Pádraig Brady [Fri, 18 Mar 2022 14:52:36 +0000 (14:52 +0000)] 
printf: support printing the numeric value of multi-byte chars

* src/printf.c (STRTOX): Update to support multi-byte chars.
* tests/misc/printf-mb.sh: Add a new test.
* tests/local.mk: Reference the new test.
* NEWS: Mention the improvement.
Fixes https://bugs.gnu.org/54388

3 years agomaint: move build-related NEWS item to its own section
Pádraig Brady [Fri, 18 Mar 2022 15:02:42 +0000 (15:02 +0000)] 
maint: move build-related NEWS item to its own section

* NEWS: Follow other Build-related patterns in NEWS.

3 years agodoc: test: clarify that -rwx don't just check perm bits
Pádraig Brady [Fri, 11 Mar 2022 12:47:05 +0000 (12:47 +0000)] 
doc: test: clarify that -rwx don't just check perm bits

* src/test.c (usage): State that -rwx is determined by
user access, rather than permission bits.
* doc/coreutils.texi (Access permission tests): Likewise.
* man/test.x [SEE ALSO]: access(2).
Fixes https://bugs.gnu.org/54338

3 years agomaint: address syntax-check issues in recent commit
Pádraig Brady [Mon, 7 Mar 2022 22:39:32 +0000 (22:39 +0000)] 
maint: address syntax-check issues in recent commit

* cfg.mk (sc_die_EXIT_FAILURE): Generalize to match any EXIT_ define,
and also relax to ignore error() usage with ternary operator.
* src/chroot.c (main): Use () to avoid the sc_error_quotes check.

3 years agostat: only automount with --cached=never
Pádraig Brady [Mon, 7 Mar 2022 23:29:20 +0000 (23:29 +0000)] 
stat: only automount with --cached=never

Revert to the default behavior before the introduction of statx().

* src/stat.c (do_stat): Set AT_NO_AUTOMOUNT without --cached=never.
* doc/coreutils.texi (stat invocation): Mention the automount
behavior with --cached=never.
* NEWS: Mention the change in behavior.

Fixes https://bugs.gnu.org/54287

3 years agols: avoid triggering automounts
Rohan Sable [Mon, 7 Mar 2022 14:14:13 +0000 (14:14 +0000)] 
ls: avoid triggering automounts

statx() has different defaults wrt automounting
compared to stat() or lstat(), so explicitly
set the AT_NO_AUTOMOUNT flag to suppress that behavior,
and avoid unintended operations or potential errors.

* src/ls.c (do_statx): Pass AT_NO_AUTOMOUNT to avoid this behavior.
* NEWS: Mention the change in behavior.
Fixes https://bugs.gnu.org/54286

Signed-off-by: Rohan Sable <rsable@redhat.com>
3 years agobuild: ensure AT_NO_AUTOMOUNT is defined
Pádraig Brady [Mon, 7 Mar 2022 22:00:22 +0000 (22:00 +0000)] 
build: ensure AT_NO_AUTOMOUNT is defined

update gnulib submodule to latest,
where this is the only change

3 years agodate: fix newly-introduced %%-N bug
Paul Eggert [Sat, 5 Mar 2022 19:23:01 +0000 (11:23 -0800)] 
date: fix newly-introduced %%-N bug

* src/date.c (adjust_resolution): Don’t mishandle %%-N.
* tests/misc/date.pl (pct-pct): New test.

3 years agochown: warn about USER.GROUP
Paul Eggert [Fri, 25 Feb 2022 02:17:23 +0000 (18:17 -0800)] 
chown: warn about USER.GROUP

Suggested by Dan Jacobson (Bug#44770).
* src/chown.c, src/chroot.c (main):
Issue warnings if obsolete USER.GROUP notation is present.

3 years agobuild: update gnulib submodule to latest
Paul Eggert [Fri, 25 Feb 2022 02:05:03 +0000 (18:05 -0800)] 
build: update gnulib submodule to latest

3 years agofmt: fix invalid multi-byte splitting on macOS
Pádraig Brady [Wed, 23 Feb 2022 17:50:46 +0000 (17:50 +0000)] 
fmt: fix invalid multi-byte splitting on macOS

On macOS, isspace(0x85) returns true,
which results in splitting within multi-byte characters.

* src/fmt.c (get_line): s/isspace/c_isspace/.
* tests/fmt/non-space.sh: Add a new test.
* tests/local.mk: Reference new test.
* NEWS: Mention the fix.
Addresses https://bugs.gnu.org/54124

3 years agotests: improve compat with macOS
Pádraig Brady [Wed, 23 Feb 2022 17:27:15 +0000 (17:27 +0000)] 
tests: improve compat with macOS

* tests/misc/wc-nbsp.sh: Only the en_US.iso8859-1 form
is accepted on macOS 10.15.7 at least.  GNU/Linux also
accepts ISO-8859-1 (and canonicalizes the charmap to this).

3 years agodd: counts ending in "B" now count bytes
Paul Eggert [Wed, 23 Feb 2022 02:27:09 +0000 (18:27 -0800)] 
dd: counts ending in "B" now count bytes

This implements my suggestion in Bug#54112.
* src/dd.c (usage): Document the change.
(parse_integer, scanargs): Implement the change.
Omit some now-obsolete checks for invalid flags.
* tests/dd/bytes.sh: Test the new behavior, while retaining
checks for the now-obsolete usage.
* tests/dd/nocache_eof.sh: Avoid now-obsolete usage.

3 years agodd: improve doc relative to POSIX
Paul Eggert [Tue, 22 Feb 2022 16:55:53 +0000 (08:55 -0800)] 
dd: improve doc relative to POSIX

* doc/coreutils.texi (dd invocation): Improve documentation,
clarifying whether features are extensions to POSIX.

3 years agodd: support iseek= and oseek=
Paul Eggert [Mon, 21 Feb 2022 19:23:02 +0000 (11:23 -0800)] 
dd: support iseek= and oseek=

Alias iseek=N to skip=N, oseek=N to seek=N (Bug#45648).
* src/dd.c (scanargs): Parse iseek= and oseek=.
* tests/dd/skip-seek.pl (sk-seek5): New test case.

3 years agocp: avoid unnecessary buffer allocation
Paul Eggert [Mon, 21 Feb 2022 08:18:19 +0000 (00:18 -0800)] 
cp: avoid unnecessary buffer allocation

Do not allocate I/O buffer if copy_file_range suffices.
* src/copy.c (sparse_copy, lseek_copy): Buffer arg is now char **
instead of char *, and buffer is now allocated only if needed.
All uses changed.

3 years agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 19 Feb 2022 23:43:45 +0000 (15:43 -0800)] 
build: update gnulib submodule to latest

3 years agodoc: env: fix man page reference of exec(2) to exec(3p)
Pádraig Brady [Mon, 14 Feb 2022 22:56:18 +0000 (22:56 +0000)] 
doc: env: fix man page reference of exec(2) to exec(3p)

* man/env.x: Change exec() reference from section 2 to 3p.

3 years agodoc: use bold style for man page references
Pádraig Brady [Mon, 14 Feb 2022 21:36:29 +0000 (21:36 +0000)] 
doc: use bold style for man page references

It's more common to use bold style than not,
for references to other man pages.
Ideally each man page renderer would highlight references,
but currently some rely on styles in the page itself.

* man/help2man: Implement a --bold-refs option that
will mark up references like "name(1)" with bold
style around the "name" component.
* man/local.mk: Pass --bold-refs to our help2man unless disabled.
* configure.ac: Add a --disable-bold-man-page-references option.
Addresses https://bugs.gnu.org/53977

3 years agodircolors: speed up processing of TERM entries
Pádraig Brady [Mon, 14 Feb 2022 17:25:04 +0000 (17:25 +0000)] 
dircolors: speed up processing of TERM entries

* src/dircolors.c (main): Avoid glob matching
when we've already matched in a group of {COLOR,}TERM entries.

3 years agodircolors: consider COLORTERM as well as TERM env vars
Pádraig Brady [Sat, 12 Feb 2022 21:54:07 +0000 (22:54 +0100)] 
dircolors: consider COLORTERM as well as TERM env vars

COLORTERM is an environment used usually to expose truecolor support in
terminal emulators.  Therefore support matches on that in addition
to TERM.  Also set the default COLORTERM match pattern so that
we apply colors if COLORTERM is any value.

This implicitly supports a terminal like "foot"
without a need for an explicit TERM entry.

* NEWS: Mention the new feature.
* src/dircolors.c (main): Match COLORTERM like we do for TERM.
* src/dircolors.hin: Add default config to match any COLORTERM.
* tests/misc/dircolors.pl: Add test cases.

3 years agotr: mention multibyte problem in man page
Paul Eggert [Mon, 14 Feb 2022 20:16:07 +0000 (12:16 -0800)] 
tr: mention multibyte problem in man page

* man/tr.x: Document tr problem.

3 years agotr: improve multibyte etc. doc
Paul Eggert [Mon, 14 Feb 2022 20:00:16 +0000 (12:00 -0800)] 
tr: improve multibyte etc. doc

Problem reported by Dan Jacobson (Bug#48248).
* doc/coreutils.texi (tr invocation): Improve documentation for
tr's failure to support multibyte characters POSIX-style.
* doc/coreutils.texi (tr invocation), src/tr.c (usage):
Use terminology closer to POSIX's.

3 years agodircolors: add --print-ls-colors to display colored entries
Pádraig Brady [Sun, 13 Feb 2022 18:19:04 +0000 (18:19 +0000)] 
dircolors: add --print-ls-colors to display colored entries

* NEWS: Mention the new feature.
* doc/coreutils.texi (dircolors invocation): Describe the new
--print-ls-colors option.
* src/dircolors.c (print_ls_colors): A new global to select
between shell or terminal output.
(append_entry): A new function refactored from dc_parse_stream()
to append the entry in the appropriate format.
(dc_parse_stream): Adjust to call append_entry().
* tests/misc/dircolors.pl: Add test cases.

3 years agochown,chgrp: reinstate numeric id output in -v messages
Pádraig Brady [Sat, 12 Feb 2022 21:20:21 +0000 (21:20 +0000)] 
chown,chgrp: reinstate numeric id output in -v messages

since gnulib commit ff208d546a,
related to coreutils commit v9.0-143-gabde15969
we no longer maintain numeric IDs through chopt->{user,group}_name.
Therefore we need to adjust to ensure tests/chown/basic.sh passes.

* src/chown-core.c (uid_to_str, gid_to_str): New helper functions
to convert numeric id to string.
(change_file_owner): Use the above new functions to pass
numeric ids to describe_change().

3 years agosort: fix several version-sort problems
Paul Eggert [Sun, 13 Feb 2022 04:14:27 +0000 (20:14 -0800)] 
sort: fix several version-sort problems

This also affects ls -v in some corner cases.
Problems reported by Michael Debertol <https://bugs.gnu.org/49239>.
While looking into this, I spotted some more areas where the
code and documentation did not agree, or where the documentation
was unclear.  In some cases I changed the code; in others
the documentation.  I hope things are nailed down better now.
* doc/sort-version.texi: Distinguish more carefully between
characters and bytes.  Say that non-identical strings can
compare equal, since they now can.  Improve readability in
various ways.  Make it clearer that a suffix can be the
entire string.
* src/ls.c (cmp_version): Fall back on strcmp if filevercmp
reports equality, since filevercmp is no longer a total order.
* src/sort.c (keycompare): Use filenvercmp, to treat NULs correctly.
* tests/misc/ls-misc.pl (v_files):
Adjust test to match new behavior.
* tests/misc/sort-version.sh: Add tests for stability,
and for sorting with NUL bytes.

3 years agobuild: update gnulib submodule to latest
Paul Eggert [Sun, 13 Feb 2022 00:44:54 +0000 (16:44 -0800)] 
build: update gnulib submodule to latest

3 years agodoc: avoid using "[" is URLS in --help output
Pádraig Brady [Sat, 12 Feb 2022 18:43:25 +0000 (18:43 +0000)] 
doc: avoid using "[" is URLS in --help output

* src/system.h (emit_ancillary_info): While supported if entered
  manually, the "[" character is not highlighted as part of a
  URL by default in terminals, so avoid using it.
  Addresses https://bugs.gnu.org/53946

3 years agodoc: adust --help, --version alignment
Pádraig Brady [Sat, 12 Feb 2022 18:23:48 +0000 (18:23 +0000)] 
doc: adust --help, --version alignment

* src/system.h: Adjust the alignment of the --help
and --version option descriptions, to start at column 21.
This better aligns with the descriptions of most commands,
and also aligns with the minimum column a description must
start at to ensure a blank line is not output when a description
follows an option on a line by itself.

3 years agodoc: rmdir: improve --help formatting
Pádraig Brady [Sat, 12 Feb 2022 18:16:10 +0000 (18:16 +0000)] 
doc: rmdir: improve --help formatting

* src/rmdir.c (usage): Move description to column 21,
so that a --long-option on its own line without a
trailing description, doesn't have an erroneous blank
line inserted between the option and description.
Also group descriptions with blank lines rather than indents,
so that man pages don't have erroneous blank lines
added within the description.
Addresses https://bugs.gnu.org/53946

3 years agodoc: ls: reference dircolors(1) from --help
Pádraig Brady [Sat, 12 Feb 2022 18:03:38 +0000 (18:03 +0000)] 
doc: ls: reference dircolors(1) from --help

* src/ls.c (usage): s/dircolors/dircolors(1)/.
* man/ls.x [SEE ALSO]: Reference dircolors(1).
Addresses https://bugs.gnu.org/53946

3 years agodoc: ls: improve --help formatting
Pádraig Brady [Sat, 12 Feb 2022 17:52:32 +0000 (17:52 +0000)] 
doc: ls: improve --help formatting

* src/ls.c (usage): Use blank lines to group multi-line
option descriptions, rather than indenting.
This results in more consistent alignment of descriptions,
and also avoids erroneous new lines in generated in man pages.
Addresses https://bugs.gnu.org/53946

3 years agodoc: improve version-sort doc
Paul Eggert [Tue, 8 Feb 2022 18:52:10 +0000 (10:52 -0800)] 
doc: improve version-sort doc

* doc/coreutils.texi, doc/sort-version.texi:
Capitalize “Coreutils”.
* doc/sort-version.texi: Don’t emphasize natural sort so much,
since Coreutils has just version sort.
Use the term “lexicographic” instead of “alphabetic” or “standard”.
Suggest combining ‘V’ with ‘b’, and show why ‘b’ is needed.
Use shorter titles for sections, as GNU Emacs displays info poorly
when titles are too long to fit in a line.
Use @samp instead of @code for samples of data.
Do not use @samp{@code{...}}; @samp{...} should suffice and
double-nesting looks bad with Emacs.
Omit blank lines in examples that would not be present
in actual shell sessions.
Quote with `` and '', not with " or with '.
Mention dpkg --compare-versions more prominently.
Don’t rely on "\n" being equivalent to "\\n" in shell args.
Prefer Unicode name for hyphen-minus.

3 years agodircolors: highlight .avif as image
Christian Hesse [Tue, 4 Jan 2022 09:56:53 +0000 (10:56 +0100)] 
dircolors: highlight .avif as image

This add highlighting for AV1 Image File Format (AVIF):
https://aomediacodec.github.io/av1-avif/

* src/dircolors.hin: Highlight .avif as image.

Signed-off-by: Christian Hesse <mail@eworm.de>
3 years agodate: test against bug#50115
Paul Eggert [Sat, 5 Feb 2022 21:46:44 +0000 (13:46 -0800)] 
date: test against bug#50115

* tests/misc/date.pl: Add test.

3 years agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 5 Feb 2022 19:08:45 +0000 (11:08 -0800)] 
build: update gnulib submodule to latest

3 years agodoc: fix somewhat ambiguous date format representation
Pádraig Brady [Sat, 5 Feb 2022 12:47:33 +0000 (12:47 +0000)] 
doc: fix somewhat ambiguous date format representation

* doc/coreutils.texi (date invocation): Remove @var{...} usage,
as that capitalizes in the representation and thus somewhat
ambiguates the format wrt Month and Minute.  This also avoids
a syntax check failure about redundant capitalization in @var{}.

3 years agodate: improve doc
Paul Eggert [Sat, 5 Feb 2022 02:21:06 +0000 (18:21 -0800)] 
date: improve doc

Problem reported by Dan Jacobson (Bug#51288).
* doc/coreutils.texi (date invocation, Setting the time)
(Options for date):
* src/date.c (usage): Improve doc.

3 years agobuild: update gnulib submodule to latest
Paul Eggert [Fri, 4 Feb 2022 22:29:28 +0000 (14:29 -0800)] 
build: update gnulib submodule to latest

3 years agoid: print groups of listed name
Paul Eggert [Fri, 4 Feb 2022 22:43:31 +0000 (14:43 -0800)] 
id: print groups of listed name

Problem reported by Vladimir D. Seleznev (Bug#53631).
* src/id.c (main): Do not canonicalize user name before
deciding what groups the user belongs to.

3 years agodoc: add NEWS entry for recent cksum change
Bernhard Voelker [Tue, 1 Feb 2022 13:11:47 +0000 (13:11 +0000)] 
doc: add NEWS entry for recent cksum change

* NEWS (Changes in behavior): Add entry for commit v9.0-92-ga42a03913.

3 years agomaint: suppress bogus noreturn warnings
Paul Eggert [Tue, 1 Feb 2022 06:08:56 +0000 (22:08 -0800)] 
maint: suppress bogus noreturn warnings

* configure.ac: Move the single-binary code before the
gcc-warnings code, so that the latter can depend on the former.
Suppress -Wsuggest-attribute=noreturn with single binaries,
to avoid diagnostics like the following:
  src/expr.c: In function 'single_binary_main_expr':
  error: function might be candidate for attribute 'noreturn'
Problem reported by Pádraig Brady in:
https://lists.gnu.org/r/coreutils/2022-01/msg00061.html

3 years agotr: pacify -fsanitizer=leak
Paul Eggert [Tue, 1 Feb 2022 03:58:15 +0000 (19:58 -0800)] 
tr: pacify -fsanitizer=leak

* src/tr.c (main): Use main_exit, not return, in a couple of
places missed last time.

3 years agochgrp: fix typo in previous change
Paul Eggert [Tue, 1 Feb 2022 03:57:14 +0000 (19:57 -0800)] 
chgrp: fix typo in previous change

* src/chgrp.c (main): Use main_exit, not exit.

3 years agomaint: mark some _Noreturn functions
Paul Eggert [Tue, 1 Feb 2022 03:55:54 +0000 (19:55 -0800)] 
maint: mark some _Noreturn functions

* src/basenc.c (finish_and_exit, do_encode, do_decode):
* src/comm.c (compare_files):
* src/tsort.c (tsort):
* src/uptime.c (uptime):
Mark with _Noreturn.  Otherwise, unoptimized compilations may warn
that the calling renamed-main function doesn't return a value,
when !lint and when single-binary.

3 years agodf: fix memory leak
Paul Eggert [Tue, 1 Feb 2022 03:52:43 +0000 (19:52 -0800)] 
df: fix memory leak

* src/df.c (devlist_free): Remove.
(filter_mount_list): Free all of devlist, instead of merely
the entries in devlist_table.

3 years agomaint: cut: avoid exporting recently added variable
Pádraig Brady [Mon, 31 Jan 2022 21:59:09 +0000 (21:59 +0000)] 
maint: cut: avoid exporting recently added variable

* src/cut.c: Make output_delimiter_default static,
as identified by `make syntax-check`.

3 years agomaint: pacify gcc -flto -Wmaybe-uninitialized
Paul Eggert [Mon, 31 Jan 2022 18:21:48 +0000 (10:21 -0800)] 
maint: pacify gcc -flto -Wmaybe-uninitialized

* gl/lib/xdectoint.c (__xnumtoint): Tell gcc that ‘error’
does not return here.
* gl/modules/xdectoint (Depends-on): Add stdbool, verify.

3 years agodd: do not access uninitialized
Paul Eggert [Mon, 31 Jan 2022 18:20:21 +0000 (10:20 -0800)] 
dd: do not access uninitialized

* src/dd.c (parse_integer): Avoid undefined behavior
that accesses an uninitialized ‘n’ when e == LONGINT_INVALID.
Return more-accurate error code when INTMAX_MAX < n.

3 years agouptime: simplify -fsanitize=leak pacification
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
uptime: simplify -fsanitize=leak pacification

* src/uptime.c (uptime): Exit here ...
(main): ... instead of here.

3 years agouniq: remove IF_LINT
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
uniq: remove IF_LINT

* src/uniq.c (check_file): Remove a no-longer-needed IF_LINT.

3 years agounexpand: remove IF_LINT
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
unexpand: remove IF_LINT

* src/unexpand.c (unexpand): Remove a no-longer-needed IF_LINT.

3 years agopr: remove IF_LINT
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
pr: remove IF_LINT

* src/pr.c (read_line): Remove a no-longer-needed IF_LINT.

3 years agotruncate: simplify
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
truncate: simplify

* src/truncate.c (do_ftruncate): Check != 0 instead of == -1.
Avoid a cast.
(main): Use C99 style decls after statements.
Simplify ‘open’ logic.

3 years agoshred: remove IF_LINT
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
shred: remove IF_LINT

* src/shred.c (dopass): Remove a no-longer-needed IF_LINT.

(read_line): Remove an IF_LINT; no longer needed with
today’s GCC.

3 years agopr: simplify -fsanitize=leak pacification
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
pr: simplify -fsanitize=leak pacification

* src/pr.c (main): Remove an IF_LINT.
Use main_exit rather than return.

3 years agopinky: simplify -fsanitize=leak pacification
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
pinky: simplify -fsanitize=leak pacification

* src/pinky.c (short_pinky): exit instead of freeing.

3 years agopaste: remove IF_LINT
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
paste: remove IF_LINT

* src/paste.c (paste_parallel): Remove no-longer-needed IF_LINT.

3 years agohostname: simplify
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
hostname: simplify

* src/hostname.c (sethostname): Provide a substitute on all
platforms, to simplify the mainline code.
(main): Simplify.  Remove an IF_LINT.
Use main_exit rather than return.

3 years agofactor: remove IF_LINT
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
factor: remove IF_LINT

* src/factor.c (factor_using_squfof) [USE_SQUFOF]:
Use plain assert (...), not IF_LINT (assert (...)).
This code is currently never compiled or executed,
so this is merely a symbolic cleanup.

3 years agoexpand: remove IF_LINT
Paul Eggert [Mon, 31 Jan 2022 16:42:07 +0000 (08:42 -0800)] 
expand: remove IF_LINT

* src/expand.c (expand): Remove no-longer-needed IF_LINT.