12334 lines
464 KiB
Text
12334 lines
464 KiB
Text
2025-04-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
version 9.7
|
||
* NEWS: Record release date.
|
||
|
||
2025-04-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: adjust csplit VM limit for CheriBSD
|
||
* tests/misc/csplit-heap.sh: More memory is required to avoid
|
||
a false failure on CheriBSD with its heap accounting overhead.
|
||
This is confirmed to still trigger with the original memory leak
|
||
being tested.
|
||
|
||
ls: support capabilities with device 0,0
|
||
* src/ls.c (has_capability_cache): Don't assume
|
||
a device major,minor of 0,0 never occurs.
|
||
|
||
2025-04-08 Bruno Haible <bruno@clisp.org>
|
||
|
||
ls: fix crash of "ls -Z ." on OpenBSD's /dev/wd0a disk
|
||
* src/ls.c (file_has_aclinfo_cache): Add new static variable
|
||
'unsupported_cached'. Don't assume that device 0 never occurs.
|
||
|
||
2025-04-07 Jim Meyering <meyering@meta.com>
|
||
|
||
build: use _GL_ATTRIBUTE_NONSTRING attribute to avoid new warnings
|
||
Avoid warnings like this from GCC 15:
|
||
src/basenc.c:1139:20: error: initializer-string for array of 'char'
|
||
truncates NUL terminator but destination lacks 'nonstring' attribute
|
||
(9 chars into 8 available) [-Werror=unterminated-string-initialization]
|
||
* src/basenc.c (z85_encoding, do_decode): Mark two more variables as
|
||
non-terminated.
|
||
|
||
2025-04-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid syntax-check failures from recent commit
|
||
* gl/lib/dtimespec-bound.h: Indent, Spellcheck.
|
||
* gl/local.mk: Add new gl files.
|
||
|
||
2025-04-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: mention workaround for combining hex floats with suffixes
|
||
* doc/coreutils.texi (hexDuration): Mention the p style exponent trick.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
timeout: don’t sleep less than requested
|
||
Also, change sleep and tail to not sleep less than requested.
|
||
* bootstrap.conf (gnulib_modules): Add dtimespec-bound.
|
||
* gl/lib/dtimespec-bound.c, gl/lib/dtimespec-bound.h:
|
||
* gl/modules/dtimespec-bound: New files.
|
||
* src/sleep.c, src/tail.c, src/timeout.c: Include dtimespec-bound.h.
|
||
* src/sleep.c, src/tail.c: Don’t include xstrtod.h.
|
||
* src/sleep.c (apply_suffix, main):
|
||
* src/tail.c (parse_options):
|
||
* src/timeout.c (apply_time_suffix):
|
||
Don’t sleep less than the true number of seconds.
|
||
* src/timeout.c: Don’t include ctype.h.
|
||
(is_negative): Remove; no longer needed.
|
||
(parse_duration): Use a slightly looser bound on the timeout, one
|
||
that doesn’t need -lm on GNU/Linux. Clear errno before calling
|
||
cl_strtod.
|
||
|
||
2025-04-06 Jim Meyering <jim@meyering.net>
|
||
|
||
maint: silence a -Wunterminated-string-initialization warning
|
||
* src/basenc.c (base16_encode): Mark BASE16 as not NUL-terminated.
|
||
|
||
2025-04-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2025-04-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
timeout: remove dependence on libm
|
||
This was seen to add about 100,000 ns to the startup time,
|
||
on a 2.6 GHz i7-5600U with glibc 2.40.
|
||
|
||
* .gitignore: Remove /lib/fenv.h.
|
||
* bootstrap.conf: Remove fenv-rounding and signbit deps.
|
||
* src/local.mk: Remove fenv lib dependency.
|
||
* src/timeout.c (is_negative): A new helper function to
|
||
be equivalent of signbit in the underflow case.
|
||
(parse_duration): Remove the rounding up logic,
|
||
as a nanosecond here or there has no significance.
|
||
|
||
2025-04-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: mention the edge case of hex durations with 'd' suffix
|
||
* doc/coreutils.texi (sleep invocation): Mention that suffixes are
|
||
best avoided with hex arguments.
|
||
(timeout invocation): Likewise.
|
||
* tests/misc/sleep.sh: Ensure 'd' is not interpreted as "day".
|
||
|
||
2025-04-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: adjustments to recent timeout change
|
||
* .gitignore: Add /lib/fenv.h to ignore list.
|
||
* tests/timeout/timeout-parameters.sh: Use a sleep length of 10s
|
||
to be consistent with the pattern where we use this larger time
|
||
when it does not slow down a test, but also provides protection
|
||
against a hung test, and better avoidance of false failures due
|
||
to races on very loaded systems. Also fix the setting of FAIL.
|
||
* tests/timeout/timeout-large-parameters.sh: Remove duplicated test.
|
||
|
||
2025-04-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
timeout: round timeouts up
|
||
This handles timeouts like 16777216.000000001 correctly;
|
||
formerly the subsecond part of that timeout was ignored.
|
||
* bootstrap.conf (gnulib_modules): Add fenv-rounding, signbit.
|
||
* src/local.mk (src_timeout_LDADD): Append $(FENV_ROUNDING_LIBM).
|
||
* src/timeout.c: Include fenv.h, math.h.
|
||
Don’t include xstrtod.h, as xstrtod’s checking now gets in the way.
|
||
(parse_duration): Round up when calling cl_strtod.
|
||
Check for -1e-1000. Don’t double-round 1e-9.
|
||
* tests/timeout/timeout-parameters.sh: Test for -0.1,
|
||
-1e-1000, 1e-1000.
|
||
|
||
2025-04-04 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: ensure that new "make syntax-check"-run sc_codespell passes
|
||
* cfg.mk (codespell_ignore_words_list): Ignore false-positives.
|
||
(exclude_file_name_regexp--sc_codespell): Skip some file names.
|
||
* doc/coreutils.texi (mktemp invocation): Use "alphanumeric" which is
|
||
consistent with the rest of the documentation.
|
||
* src/expand-common.c: Fix typo.
|
||
* src/ls.c: Likewise.
|
||
* tests/split/l-chunk-root.sh: Likewise.
|
||
|
||
2025-04-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
timeout: ensure infinitesimal timeouts timeout quickly
|
||
* src/timeout.c (parse_duration): Clamp infinitesimal values to 1ns.
|
||
* tests/timeout/timeout-large-parameters.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/77535
|
||
|
||
tests: fix false failure with multi-byte thousands separators
|
||
* tests/sort/sort-h-thousands-sep.sh: sv_SE defaults to UTF-8
|
||
on macOS 18, so avoid the test for multi-byte separators.
|
||
Fixes https://bugs.gnu.org/77509
|
||
|
||
2025-03-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: suppress ENOENT errors when reading ACL info
|
||
* src/ls.c (gobble_file): Indicating unknown ACL info with '?'
|
||
suffices for the edge case of a file being removed while reading,
|
||
or older cygwin when reading through dangling symlinks.
|
||
Reported by Corinna Vinschen.
|
||
|
||
2025-03-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: print correct xattr error on all platforms
|
||
* src/ls.c (gobble_file): Output errno, as u.err
|
||
is not populated by file_has_aclinfo() on all platforms.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2025-03-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mv: port test to OpenBSD 7.5
|
||
Problem reported by Bruno Haible <https://bugs.gnu.org/75685>.
|
||
* tests/mv/sticky-to-xpart.sh: Also allow OpenBSD behavior.
|
||
|
||
2025-03-22 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: id: be direct about valid options with -nr
|
||
* src/id.c (usage): State what options are valid with -nr,
|
||
rather than just stating the default format is invalid.
|
||
Fixes https://bugs.gnu.org/77163
|
||
|
||
doc: id: make option combinations more searchable
|
||
* src/id.c (usage): Add commas to make options more searchable.
|
||
Don't add spaces since that would overflow 80 cols.
|
||
Fixes https://bugs.gnu.org/77162
|
||
|
||
2025-03-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: fix crash on systems with SELinux but without xattr support
|
||
This was seen on termux on Android with ./configure --disable-xattr
|
||
where listxattr() and getxattr() returned ENOTSUP.
|
||
Then the valid security context obtained by file_has_aclinfo()
|
||
was discounted, and problematically then freed multiple times.
|
||
Reported at https://github.com/termux/termux-packages/issues/23752
|
||
|
||
* src/ls.c (file_has_aclinfo_cache): Only discount the returned
|
||
acl info when all components are defaulted due to being unsupported.
|
||
|
||
2025-03-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
dircolors: add vt220 as a color capable terminal
|
||
This isn't strictly historically accurate
|
||
but most practical these days, especially since
|
||
systemd uses this as its default TERM type.
|
||
See https://github.com/coreutils/coreutils/issues/96
|
||
|
||
Tested with:
|
||
$ LS_COLORS= COLORTERM= TERM=vt220 src/ls --color
|
||
$ COLORTERM= TERM=vt220 src/dircolors
|
||
|
||
* src/dircolors.hin: Add vt220.
|
||
|
||
2025-03-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: dd: ensure posix_fadvise errors are handled
|
||
* tests/dd/nocache_fail.sh: Add a test case for the recent fix.
|
||
|
||
2025-03-10 Frédéric Yhuel <frederic.yhuel@dalibo.com>
|
||
|
||
dd: fix error detection with "nocache" flag
|
||
* NEWS: Mention the bug fix.
|
||
* src/dd.c (invalidate_cache): Adjust to the unusual
|
||
error propagation sematics of posix_fadvise().
|
||
|
||
2025-03-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2025-03-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: mention logname improvement in NEWS
|
||
* NEWS: Mention the improvement in gnulib commit 90840606.
|
||
Addresses https://bugs.gnu.org/76876
|
||
|
||
2025-02-26 Grisha Levit <grishalevit@gmail.com>
|
||
|
||
build: fix LIBCRYPTO_SONAME value with config cache
|
||
* configure.ac (LIBCRYPTO_SONAME): Store library name in cache so we
|
||
do not end up with an empty value for it when a cache file is used.
|
||
The configure variable name is changed from utils_cv_dlopen_libcrypto
|
||
to utils_cv_libcrypto_soname.
|
||
|
||
2025-02-24 Lukáš Zaoral <lzaoral@redhat.com>
|
||
|
||
who: fix -m with guessed tty names
|
||
* who.c (scan_entries): Account for guessed tty names (e.g.
|
||
'sshd pts/1') from the readutmp module when using the systemd backend.
|
||
* bootstrap.conf (gnulib_modules): Add str_endswith.
|
||
* News: Mention the bug fix.
|
||
Addresses https://bugzilla.redhat.com/2343998
|
||
|
||
2025-02-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to 757345e8.
|
||
* src/who.c: Adjust to new defines.
|
||
|
||
maint: fix sc_tight_scope failure
|
||
This reverts commit 83fb600a21c6bad362b5739e7a9a9780639fa550.
|
||
|
||
maint: fix sc_preprocessor_indentation failure
|
||
* src/cksum.h: Indent appropriately.
|
||
|
||
2025-02-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
sort: improve -u brief doc
|
||
* src/sort.c (usage): Reword -u help (Bug#76290).
|
||
|
||
du: update debug option setup
|
||
Current Gnulib arranges for fts debugging if GNULIB_FTS_DEBUG
|
||
is defined, so key off that rather than off DU_DEBUG.
|
||
* src/du.c (fts_debug): Remove decl, as Gnulib does this now.
|
||
(FTS_CROSS_CHECK): Remove; all uses removed.
|
||
(FTS_DEBUG) [!GNULIB_FTS_DEBUG]: Remove.
|
||
(long_options) [GNULIB_FTS_DEBUG]: Add a ---debug option.
|
||
(du_files): Call fts_cross_check only if fts_debug and GNULIB_FTS_DEBUG.
|
||
(main): Set fts_debug if GNULIB_FTS_DEBUG, not DU_DEBUG.
|
||
|
||
maint: omit function defn extern
|
||
* src/chown-core.c, src/copy.c, src/cp-hash.c, src/csplit.c:
|
||
* src/expand-common.c, src/find-mount-point.c, src/force-link.c:
|
||
* src/group-list.c, src/iopoll.c, src/operand2sig.c:
|
||
* src/show-date.c, src/wc_avx2.c:
|
||
Omit unnecessary ‘extern ’ at the start of function defns.
|
||
This is less wordy, makes it a bit easier to grep for issues such
|
||
as the missing consistency checking in cksum.
|
||
|
||
cksum: check API better
|
||
* src/cksum_avx2.c, src/cksum_avx512.c, src/cksum_pclmul.c:
|
||
* src/cksum_vmull.c:
|
||
Include cksum.h instead of copying its decls/includes by hand.
|
||
This is a better way to ensure consistency among defns and uses.
|
||
|
||
cksum: minor crctab generation cleanups
|
||
* src/cksum.c [CRCTAB]: Include only config.h and stdio.h,
|
||
to simplify the crctab-generating code.
|
||
[!CRCTAB]: Do not include stdint.h or stdio.h, as cksum.h does it now.
|
||
(BIT, r, crc_remainder, main) [CRCTAB]: Use unsigned int, not
|
||
uint_fast32_t or uint32_t, as this is good enough for GNU where
|
||
unsigned int is guaranteed to be at least 32 bits, and this way we
|
||
needn’t worry about mismatches between %08x formats and uint_fast32_t.
|
||
(main) [CRCTAB]: Prefer more-local decls. Do not output
|
||
unnecessary directives to include stdint.h or stdio.h.
|
||
No need for ‘return EXIT_SUCCESS;’ nowadays.
|
||
* src/crctab.c: Regenerate.
|
||
|
||
cksum: make cksum.h standalone
|
||
* src/cksum.h: Include stdint.h, stdio.h so that this file
|
||
can be included in any order, after config.h.
|
||
Add a copyright notice.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2025-02-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cksum: port to 32-bit uint_fast32_t
|
||
* src/cksum_vmull.c (cksum_vmull): Don’t assume
|
||
uint_fast32_t can hold 64 bits.
|
||
Problem reported by Alyssa Ross (Bug#76360).
|
||
|
||
cksum: fix test for missing
|
||
* tests/cksum/cksum.sh: Don’t output confusing diagnostic.
|
||
Problem reported by Alyssa Ross (Bug#76360).
|
||
|
||
2025-02-16 Mike Swanson <mikeonthecomputer@gmail.com>
|
||
|
||
dircolors: recognize “jxl” (JPEG XL) files
|
||
|
||
2025-02-14 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cat: fix plain ‘cat’ bug
|
||
* src/cat.c (main): Do not fail with plain ‘cat’ where input and
|
||
output are both /dev/tty, if the output happens to have O_APPEND set.
|
||
Problem reported by lilydjwg <https://bugs.gnu.org/76255>.
|
||
Also, don’t report an error if the seek position is at or after EOF,
|
||
even if O_APPEND is set.
|
||
|
||
cat: omit unnecessary lseek
|
||
* src/cat.c (main): Don’t bother to try lseek on a fifo or socket,
|
||
as it will fail.
|
||
|
||
cat: port to platforms with shm, tmo
|
||
* src/cat.c (main): Work even on platforms that have shared memory
|
||
objects and typed memory objects, which means st_dev and st_ino do
|
||
not work.
|
||
|
||
2025-02-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove extraneous new lines in some man pages
|
||
* local.mk: Add the --loose-indent option, which results in help2man
|
||
avoiding extraneous new lines in expr.1, id.1, numfmt.1, shred.1,
|
||
tail.1, and timeout.1.
|
||
Fixes https://bugs.gnu.org/74107
|
||
|
||
doc: sync help2man to latest version
|
||
* man/help2man: sync changes to commit 8fe02612
|
||
The main change here is to Use \f(CR for monospace text
|
||
when using groff in troff mode.
|
||
Previously \f(CW was used, but that's not portable.
|
||
|
||
tests: du: avoid intermittent false failure
|
||
* tests/du/long-sloop.sh: Avoid failure due to
|
||
intermittent reception of FTS_DNR, seen on BTRFS at least.
|
||
|
||
2025-02-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2025-02-03 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: pacify ‘gcc -Wswitch-enum’
|
||
I thought of a way to pacify -Wswitch-enum without much trouble.
|
||
Either add all the enums, or if that’s too verbose use ‘switch (+E)’
|
||
to indicate to the reader that there need not be a case for
|
||
every enum value. Since this approach improves static checking,
|
||
make the change everywhere and check it with -Wswitch-enum.
|
||
* configure.ac: Compile with -Wswitch-enum if it works and
|
||
--enable-gcc-warnings. No need to remove -Wswitch-default
|
||
since Gnulib no longer adds it.
|
||
* src/chmod.c (describe_change):
|
||
* src/chown-core.c (describe_change):
|
||
* src/copy.c (copy_debug_string, copy_debug_sparse_string):
|
||
* src/df.c (decode_output_arg, get_dev):
|
||
* src/du.c (main):
|
||
* src/factor.c (print_factors):
|
||
* src/head.c (diagnose_copy_fd_failure):
|
||
* src/ls.c (time_type_to_statx, calc_req_mask)
|
||
(decode_line_length, get_funky_string, parse_ls_color)
|
||
(gobble_file, print_long_format):
|
||
* src/split.c (main):
|
||
* src/sync.c (sync_arg):
|
||
* src/tr.c (is_char_class_member):
|
||
* src/wc.c (main):
|
||
Add switch cases to pacify -Wswitch-enum.
|
||
* src/copy.c (copy_debug_string, copy_debug_sparse_string):
|
||
Add unreachable () for unreachable cases.
|
||
* src/digest.c (main):
|
||
* src/od.c (decode_one_format):
|
||
* src/tr.c (get_next, get_spec_stats):
|
||
switch (E) → switch (+E).
|
||
* src/digest.c (main):
|
||
* src/tr.c (get_next):
|
||
Omit unnecessary ‘default: break;’ that merely pacified GCC,
|
||
as the new pacification style is better.
|
||
* src/ls.c (decode_line_length):
|
||
Add default unreachable case to prevent warning that function
|
||
might not return a value.
|
||
(gobble_file): Distinguish DEREF_NEVER from unreachable cases.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2025-01-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: ls: clarify --format options
|
||
* src/ls.c (usage): Use parentheses to be less ambiguous as
|
||
to what are WORDs and equivalent short options. This is also
|
||
consistent with the description of --sort and --indicator-style.
|
||
Fixes https://bugs.gnu.org/75916
|
||
|
||
2025-01-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: support --with-packager-bug-reports
|
||
* src/system.h (emit_ancillary_info): Output
|
||
PACKAGE_PACKAGER_BUG_REPORTS if the build is configured
|
||
--with-packager-bug-reports.
|
||
Reported by Bruno Haible.
|
||
|
||
2025-01-22 Pádraig Brady <P@draigBrady.com>
|
||
|
||
sort: drop "note" from a --debug message
|
||
* src/sort.c (key_warnings): Remove "note " from the start
|
||
of a usually informational message, as this simplifies translation.
|
||
* tests/sort/sort-debug-warn.sh": Adjust accordingly.
|
||
Fixes https://bugs.gnu.org/75763
|
||
|
||
2025-01-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid ENAMETOOLONG ERROR on some systems
|
||
* tests/du/long-from-unreadable.sh: Relax to a skip_ for now,
|
||
as this was seen to error on ext4 on Debian 11 in a docker container.
|
||
|
||
2025-01-20 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: tests: remove duplicate uses of 'my' in Perl
|
||
* tests/env/env-S.pl (cf): Remove uses of 'my' after the variable has
|
||
been declared.
|
||
* tests/factor/factor.pl (t): Likewise.
|
||
* tests/misc/fold.pl (prog): Remove duplicate assignment.
|
||
|
||
2025-01-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: remove use of unprotected 'set'
|
||
* cfg.mk (sc_prohibit_bare_set): A new syntax check to
|
||
ensure we protect use of set with '--', so that args
|
||
beginning with '-' are not interpreted as options,
|
||
and if no args are present, all existing args are cleared.
|
||
* tests/cp/symlink-slash.sh: Add -- to unprotected use of set.
|
||
* tests/ls/ls-time.sh: Likewise.
|
||
* tests/ls/symlink-slash.sh: Likewise.
|
||
* tests/mkdir/perm.sh: Likewise.
|
||
* tests/mkdir/selinux.sh: Likewise.
|
||
* tests/mkdir/smack-no-root.sh: Likewise.
|
||
* tests/mkdir/smack-root.sh: Likewise.
|
||
* tests/mv/part-hardlink.sh: Likewise.
|
||
* tests/nice/nice.sh: Likewise.
|
||
* tests/stty/stty-row-col.sh: Likewise.
|
||
|
||
2025-01-19 Daniel Hofstetter <dhofstet@gmail.com>
|
||
|
||
tests: fix typo in tests/ls/ls-time.sh
|
||
* tests/ls/ls-time.sh: s/--sort-name -t/-t --sort=name/.
|
||
|
||
2025-01-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
doc: fix superscript in Texinfo manual's math
|
||
The numeral "3" in the exponent was set at full size on the baseline.
|
||
|
||
2025-01-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: fix crash with --context
|
||
* src/ls.c (main): Flag that we need to stat()
|
||
if we're going to get security context (call file_has_aclinfo_cache).
|
||
(file_has_aclinfo_cache): Be defensive and only lookup the device
|
||
for the file if the stat has been performed.
|
||
(has_capability_cache): Likewise.
|
||
* tests/ls/selinux-segfault.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Reported by Bruno Haible.
|
||
|
||
2025-01-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 9.6
|
||
* NEWS: Record release date.
|
||
|
||
build: update gnulib submodule to latest
|
||
Mainly to avoid make dist-check failure with --disable-nls
|
||
|
||
2025-01-16 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: fix compilation error on CentOS 8 Stream
|
||
* configure.ac (USE_AVX512_CRC32): Set to false if the function
|
||
_mm512_set_epi8 does not exist.
|
||
|
||
2025-01-16 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: tail-c.sh: avoid failure on Linux kernels <= 2
|
||
tests/tail/tail-c.sh: Exclude older kernels from timeout failure.
|
||
|
||
2025-01-16 Bruno Haible <bruno@clisp.org>
|
||
|
||
ls: Fix compilation error on CentOS 6
|
||
* src/ls.c (XATTR_NAME_CAPS): Define fallback.
|
||
|
||
2025-01-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
sort: fix --debug buffer overrun
|
||
* src/sort.c (debug_key): Fix undefined behavior when a key ends
|
||
before it starts. Problem reported by Bruno Haible
|
||
<https://bugs.gnu.org/75606>.
|
||
|
||
2025-01-16 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure with replaced readdir
|
||
* tests/rm/rm-readdir-fail.sh: Simulate EIO rather than ENOENT,
|
||
as gnulib absorbs the latter since commit 5a2d28df.
|
||
|
||
ls: suppress ENOTSUP errors on virtiofs
|
||
* gnulib: Update to latest to pick up commit caf76886.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2025-01-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: misc/write-errors.sh: increase memory limit
|
||
* tests/head/head-c.sh: Use a larger VM limit to avoid
|
||
mem allocation failures, which were seen on CheriBSD.
|
||
|
||
tests: head: avoid false failure on some systems
|
||
* tests/head/head-c.sh: Pass a more similar operation
|
||
to get_min_ulimit_v_, so we get a more appropriate limit.
|
||
This was seen to be significant with CheriBSD.
|
||
|
||
yes: avoid failure on CHERI protected systems
|
||
* src/yes.c (main): Don't reuse the argv array as CHERI's
|
||
capability bounds do not allow for that, failing like:
|
||
$ yes $(seq 156) | head -n1
|
||
In-address space security exception (core dumped)
|
||
|
||
2025-01-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tac: avoid out of bounds access
|
||
This was flagged on CheriBSD on ARM Morello with the error:
|
||
"In-address space security exception (core dumped)"
|
||
triggered with: tac -s '' /dev/null
|
||
|
||
* src/tac.c (main): Ensure we don't read beyond the
|
||
end of the supplied optarg.
|
||
|
||
2025-01-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid ERRORs with no mntent.h
|
||
* tests/df/skip-duplicates.sh: Just skip this test if we fail
|
||
to build the shared lib. This fails on Solaris 11 at least
|
||
due to no HAVE_MNTENT_H. Note HAVE_SYS_MNTENT_H does not
|
||
suffice for this wrapper code.
|
||
* tests/df/no-mtab-status.sh: Likewise.
|
||
|
||
tests: avoid false failure with many mountpoints
|
||
* tests/ls/readdir-mountpoint-inode.sh: Only take the first 64.
|
||
|
||
tests: printf: avoid false failure
|
||
* tests/printf/printf-surprise.sh: Increase the VM limit
|
||
to avoid false failures in rare cases.
|
||
|
||
tests: avoid slow ulimit -v behavior
|
||
* init.cfg (ulimit_supported_): skip_ if the ulimit -v
|
||
takes too long, which was seen with bash 5.2 on Solaris 11,
|
||
where fork() returned EAGAIN under memory constraints,
|
||
and bash retried for about 16 seconds.
|
||
(get_min_ulimit_v_): Break early if skipped.
|
||
* tests/misc/write-errors.sh: Be more conservative and
|
||
skip on failure to determine min ulimit.
|
||
|
||
tests: use more portable timeout presence check
|
||
* init.cfg: timeout(1) on FreeBSD doesn't support --version
|
||
(or --help with success status), so use syntax compatible
|
||
with both FreeBSD and GNU.
|
||
|
||
tests: tail: avoid failure on Solaris 11
|
||
* tests/tail/tail-c.sh: On Solaris 11, tail -c 4096 /dev/urandom,
|
||
will induce an lseek(,-4096,SEEK_END) which returns -4096 without
|
||
setting errno, and a subsequent read() then gives EINVAL.
|
||
Since tailing the end of a psuedo device is an edge case,
|
||
we just verify that we don't spin reading the device forever.
|
||
|
||
maint: avoid syntax-check failure
|
||
* src/cksum.c: Use spaces to indent, not tabs.
|
||
|
||
2025-01-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cksum: port to Oracle Developer Studio 12.6
|
||
* src/cksum.c (cksum_fp_t): New typedef.
|
||
(pclmul_supported, avx2_supported, avx512_supported)
|
||
(vmull_supported): Return this new type instead of bool.
|
||
All callers changed. That way, callers do not need to
|
||
refer to functions like cksum_avx512 that might not
|
||
exist on this platform. Although GCC optimizes such
|
||
references away, the C standard does not require this
|
||
optimization.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2025-01-14 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
tests: env-S.pl: unset GNU/Hurd env vars
|
||
* tests/misc/env-S.pl: Unset LD_ORIGIN_PATH.
|
||
|
||
2025-01-13 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: readdir errno fixes
|
||
* src/ls.c (print_dir): Fix bug: file_failure can set errno to
|
||
something other than EOVERFLOW but the code assumed it didn’t.
|
||
Also, omit ENOENT bug workaround with glibc 2.3 and later,
|
||
for consistency with Gnulib.
|
||
|
||
2025-01-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail: fix regression in open() flags used
|
||
* src/tail.c (tail_file): Fix precedence issue introduced
|
||
in commit v9.5-231-g177fcec66 so that we pass correct flags to open().
|
||
Effectively this meant we would have dropped the O_BINARY flag
|
||
on windows, since O_RDONLY is generally 0.
|
||
Issue spotted by coverity.
|
||
|
||
build: update to latest gnulib
|
||
Ensure WCOREDUMP is always defined,
|
||
and ensure --enable-silent-rules is honored with crc code generation.
|
||
|
||
2025-01-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
all: fix program name with --enable-single-binary=shebangs
|
||
* gnulib: Pick up gnulib commit f11caad4fd which ensures
|
||
we diagnose the actual utility name, and not just "coreutils"
|
||
when in single binary mode. This adjustment is required
|
||
since gnulib commit 959152ba37 which enforced use of gnulib's
|
||
error() once verror is used, and gnulib's error() always
|
||
outputs the base name of the command, which the new gnulib
|
||
commit now keeps up to date.
|
||
|
||
tests: make misc/write-errors.sh immune to default signal disposition
|
||
* tests/misc/write-errors.sh: Reset SIGPIPE to the default (terminate)
|
||
disposition, so that the test doesn't erroneously fail due to an
|
||
ignored SIGPIPE in the test environment.
|
||
|
||
2025-01-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: fix inaccurate indication of ACLs on NFS
|
||
* gnulib: Update to latest to pick up gnulib commit 05c63bc908
|
||
which ensures accurate determination of the presence of NFSv4 ACLs.
|
||
* NEWS: Adjust accordingly.
|
||
Related to https://bugs.gnu.org/74692
|
||
|
||
2025-01-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
csplit: avoid extraenous output files given empty input
|
||
* src/csplit.c (get_first_line_in_buffer): Don't exit here
|
||
upon empty input, rather indicate no input in the return
|
||
to let callers handle in a more consistent fashion.
|
||
* NEWS: Mention the bug fix.
|
||
* tests/csplit/csplit.sh: Add a test case.
|
||
Reported by Daniel Hofstetter.
|
||
|
||
2025-01-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: suppress "Permission denied" errors on NFS
|
||
NFS (on Linux 6.12 at least) was seen to return EACCES
|
||
from listxattr() for files without read access.
|
||
We started using listxattr() in coreutils 9.4.
|
||
|
||
* src/ls.c (gobble_file): Map EACCES from file_has_aclinfo()
|
||
to '?', rather than displaying the error.
|
||
* doc/coreutils.texi (ls invocation): Document the '?' flag.
|
||
* NEWS: Mention the bug fix.
|
||
Addresses https://bugs.gnu.org/74692
|
||
|
||
2025-01-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2025-01-08 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: update comment
|
||
* src/ls.c (file_has_aclinfo_cache): Fix comment.
|
||
|
||
2025-01-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail: honor --pid with fifos
|
||
* src/tail.c (tail_file): Open files with O_NONBLOCK
|
||
if we might need async processing.
|
||
(pipe_bytes): Ignore EAGAIN read() errors.
|
||
(pipe_lines): Likewise.
|
||
* tests/tail/pid-pipe.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the bug fix.
|
||
Reported by Berhard Voelker.
|
||
|
||
2025-01-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp,mv: decouple --update from -f,-i,-n options
|
||
* src/copy.h: Change update member from bool to enum.
|
||
* src/copy.c: s/interactive == I_ALWAYS_NO/update == UPDATE_NONE_FAIL/;
|
||
s/interactive == I_ALWAYS_SKIP/update == UPDATE_NONE/;
|
||
s/update/update == UPDATE_OLDER/;
|
||
* src/install.c: Init with UPDATE_ALL, rather than false.
|
||
* src/cp.c: Likewise. Simply parse -f,-i,-n to x.interactive,
|
||
and parse --update to x.update.
|
||
* src/mv.c: Likewise.
|
||
* tests/cp/cp-i.sh: Add a test case where -n --update -i
|
||
honors the --update option, which would previously have been
|
||
ignored due to the preceding -n.
|
||
|
||
2025-01-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp,mv: ensure -i,f are not overridden by -u
|
||
Since coreutils 9.3 we had --update={all,older} override -i.
|
||
In coreutils 9.5 this was expanded to -u
|
||
(to make it consistent with --update=older).
|
||
|
||
This patch reinstates things so that -i combines with -u instead.
|
||
I.e. have -i be protective, rather than selective (like -u).
|
||
|
||
The -f option of mv is similarly adjusted in this patch,
|
||
so now --update does not override any of -f,-i,-n.
|
||
|
||
* NEWS: Mention the bug fix.
|
||
* src/cp.c (main): Don't have -u disable prompting.
|
||
* src/mv.c (main): Likewise.
|
||
* tests/cp/cp-i.sh: Add a test case for -i.
|
||
* tests/mv/update.sh: Likewise.
|
||
* tests/mv/i-3.sh. Add a test case for -f.
|
||
Fixes https://bugs.gnu.org/70887
|
||
|
||
2025-01-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: clarify mv -f operation in texinfo
|
||
* doc/coreutils.texi (mv invocation): Be less ambiguous,
|
||
in that -f is significant for any replacement operation
|
||
on the destination, not just unlinking.
|
||
|
||
2025-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: update all copyright year number ranges
|
||
Update to latest gnulib with new copyright year.
|
||
Run "make update-copyright" and then...
|
||
|
||
* gnulib: Update included in this commit as copyright years
|
||
are the only change from the previous gnulib commit.
|
||
* tests/init.sh: Sync with gnulib to pick up copyright year.
|
||
* bootstrap: Likewise.
|
||
* tests/sample-test: Adjust to use the single most recent year.
|
||
|
||
2025-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
pwd: fix erroneous leading slash on some systems
|
||
* gnulib: Pull in the fix to getcwd() from gnulib.
|
||
* NEWS: Mention the fix.
|
||
|
||
2024-12-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
numfmt: don't require a suffix with --from=iec-i
|
||
* src/numfmt.c (simple_strtod_human): Only look for 'i'
|
||
after detecting a suffix.
|
||
* tests/misc/numfmt.pl: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Reported at https://bugs.debian.org/1091758
|
||
|
||
maint: fix syntax-check error
|
||
* src/seq.c: Adjust line length.
|
||
|
||
2024-12-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: adjust to Gnulib module renaming
|
||
* bootstrap.conf, gl/modules/buffer-lcm, gl/modules/randperm:
|
||
* gl/modules/randread, gl/modules/strnumcmp, gl/modules/targetdir:
|
||
* gl/modules/xdectoint, gl/modules/xfts:
|
||
Adjust to recent renaming of Gnulib modules, e.g., stdbool → bool,
|
||
inttypes → inttypes-h.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
date: improve doc for ambiguous formats
|
||
Problem reported by Tim Connors <https://bugs.gnu.org/75208>.
|
||
* doc/coreutils.texi (Date conversion specifiers):
|
||
* src/date.c (usage):
|
||
Warn about ambiguous formats like %D.
|
||
|
||
maint: ISDIGIT → c_isdigit
|
||
* gl/lib/strnumcmp-in.h (ISDIGIT):
|
||
* src/system.h (ISDIGIT): Remove. All uses replaced by c_isdigit,
|
||
with appropriate inclusions of c-ctype.h. This is more regular,
|
||
and is more portable to existing (but unlikely) platforms where
|
||
INT_MAX == UINT_MAX.
|
||
|
||
2024-12-30 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: improve the chmod/symlinks.sh test
|
||
The variable of the loop isn't passed to the command making
|
||
it less interesting
|
||
|
||
* tests/chmod/symlinks.sh: Fix the test case.
|
||
|
||
2024-12-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
kill: with -l,-t list signal 0
|
||
The 0 (EXIT) signal is valid as input
|
||
(and useful to determine existence of a pid),
|
||
so list it along with other signals.
|
||
|
||
* doc/coreutils.texi (signal specifications): Document 0, "EXIT".
|
||
* src/kill.c (list_signals): Start loops at 0, not 1.
|
||
* tests/misc/kill.sh: Add a test case.
|
||
* NEWS: Mention the change in behavior.
|
||
|
||
2024-12-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: correct © dates for hardware optimized crc routines
|
||
* src/cksum_pclmul.c: 2021-2024.
|
||
* src/cksum_avx2.c: 2024.
|
||
* src/cksum_avx512.c: 2024.
|
||
* src/cksum_vmull.c: 2024.
|
||
|
||
tail: always fail when followed files become inaccessible
|
||
* src/tail.c (tail_forever): Without --retry, exit with failure
|
||
status like we do for the inotify case (since v8.11-15-g61de57cd2).
|
||
This is also consistent with the failure exit if no file was
|
||
accessible at tail startup.
|
||
* tests/tail/follow-stdin.sh: Tweak due to earlier exit.
|
||
* tests/tail/follow-name.sh: Test with and without inotify.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2024-12-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: update to pclmul optimized crc32b from gnulib
|
||
* bootstrap.conf: Depend on crc-x86_64 rather than crc.
|
||
* gnulib: Update to latest.
|
||
* src/cksum.c (crc32b_sum_stream): Add --debug info.
|
||
* NEWS: Mention the performance improvement.
|
||
|
||
2024-12-16 Daniel Hofstetter <dhofstet@gmail.com>
|
||
|
||
maint: tests: update deprecated perl backreference syntax
|
||
* tests/basenc/basenc.pl: perl warns that $1 is better than \1,
|
||
so update to the preferred form.
|
||
|
||
2024-12-12 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: sync help2man to latest version
|
||
* man/help2man: sync changes from version 1.48.5 through 1.49.3.
|
||
This doesn't materially change the generated man pages.
|
||
|
||
2024-12-05 Sam Russell <sam.h.russell@gmail.com>
|
||
|
||
cksum: use ARMv8 SIMD extensions
|
||
* configure.ac: Add check for ARMv8 VMULL support.
|
||
* src/cksum.c: Add ARMv8 VMULL detection function.
|
||
* src/cksum.h: Add ARMv8 VMULL implementation declaration.
|
||
* src/cksum_vmull.c: ARMv8 VMULL implementation.
|
||
* src/local.mk: Add build flags for ARMv8 VMULL.
|
||
* NEWS: Mention the ARMv8 SIMD improvement.
|
||
|
||
2024-12-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail: ensure --follow=name unfollows renamed files
|
||
Require --retry to continue to track files upon rename.
|
||
We already unfollowed a file if it was renamed
|
||
to another file system (unlinked), so this makes the behavior
|
||
consistent if renaming to a file in the same file system.
|
||
I.e. --follow=name without --retry, means unfollow if the
|
||
name is unlinked or moved, so this change ensures that
|
||
behavior for all rename cases.
|
||
Related commits: v8.0-121-g3b997a9bc, v8.23-161-gd313a0b24
|
||
|
||
* src/tail.c (tail_forever_notify): Remove watch for a renamed file
|
||
if --retry is not specified.
|
||
* tests/tail/F-vs-rename.sh: Related test cleanup.
|
||
* tests/tail/follow-name.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/74653
|
||
|
||
2024-11-26 Sam Russell <sam.h.russell@gmail.com>
|
||
|
||
cksum: use AVX2 and AVX512 for speedup
|
||
* configure.ac: Add checks for avx2 and avx512 support.
|
||
* src/cksum_avx2.c: AVX2 implementation.
|
||
* src/cksum_avx512.c: AVX512 implementation.
|
||
* src/local.mk: Add build flags for avx2 and avx512.
|
||
* src/cksum.c: Add avx2 and avx512 detection functions.
|
||
* src/cksum.h: Add avx2 and avx512 implementation declarations.
|
||
* NEWS: Mention the AVX2 and AVX512 improvement.
|
||
|
||
2024-11-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail,tee: fix broken pipe detection on darwin 9
|
||
* src/iopoll.c (): Restrict use of poll() on macOS
|
||
to >= 11 (darwin 20), as it was seen to fail on macOS 10.5.
|
||
Fixes https://bugs.gnu.org/74503
|
||
|
||
2024-11-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure with unicode decomposed file systems
|
||
* tests/ls/dired.sh: macOS normalizes unicode characters to decomposed
|
||
(NFD) form when storing names in the file system, which breaks the
|
||
round-trip comparison employed by the test. So instead use a character
|
||
which does not decompose; verified with:
|
||
echo æ | uconv -f utf8 -t utf8 -x nfd | od -Ax -tx1z
|
||
|
||
2024-11-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: port big-offset test to macOS 12.6
|
||
* tests/dd/skip-seek-past-file.sh: Do not assume that
|
||
seek to exactly OFF_T_MAX should fail; it works on macOS 12.6
|
||
and POSIX allows this. Come to think of it, it should work
|
||
on Solaris too, if someone ever comes across a Solaris host
|
||
with a file system that allows such files.
|
||
|
||
2024-11-20 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: update .gitignore
|
||
* .gitignore (/lib/crc-sliceby8.h): Add file generated by Gnulib.
|
||
|
||
maint: prefer mbszero over memset
|
||
* src/df.c (replace_invalid_chars): Use mbszero.
|
||
|
||
2024-11-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: port to Oracle Developer Studio 12.6
|
||
Oracle Developer Studio 12.6 for sparc mishandles
|
||
‘sizeof ((char []) {'x', 'y'})’: it says
|
||
“warning: null dimension: sizeof()” and then generates
|
||
the wrong length in data. Work around the compiler bug
|
||
by counting sizes by hand, which may be a bit clearer anyway,
|
||
if a bit more error-prone.
|
||
* src/ls.c (BIN_STR): Remove.
|
||
(color_indicator): Spell out instead of using BIN_STR.
|
||
|
||
factor: fix ‘return’ typo
|
||
* src/factor.c (lbuf_putint): Don’t use ‘return E;’ in
|
||
a void function’s body, fixing a recently-introduced typo.
|
||
|
||
2024-11-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: mention "printf %d ''" change
|
||
|
||
2024-11-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix inconsistent use of getlimits_
|
||
* tests/dd/skip-seek-past-file.sh: s/eval $(getlimits)/getlimits_/
|
||
|
||
tests: printf: avoid iconv issues on macOS
|
||
* tests/printf/printf-cov.pl: Since gnulib commit v1.0-1103-ge5b82978e2
|
||
we avoid iconv() on ASCII range 0x32 - 0x7F inclusive, so adjust
|
||
this test to fall within that range.
|
||
Addresses https://bugs.gnu.org/74428
|
||
|
||
2024-11-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
chown: port test to macOS 12.6 nogroup user
|
||
* tests/chown/preserve-root.sh (id_g): Set to empty if id -gn
|
||
reports that it is nogroup, and skip that part of the test.
|
||
|
||
maint: omit unnecessary to_uchar
|
||
* src/df.c (replace_control_chars):
|
||
* src/dircolors.c (parse_line):
|
||
* src/printf.c (print_esc):
|
||
* src/ptx.c (unescape_string):
|
||
* src/stat.c (print_it):
|
||
* src/tr.c (star_digits_closebracket):
|
||
Omit to_uchar calls that aren’t needed, because the parent
|
||
expression works with ‘char’ as well as with ‘unsigned char’.
|
||
|
||
tests: Remove stray ‘i’
|
||
|
||
printf: diagnose empty args correctly
|
||
Also, port better to macOS.
|
||
* src/printf.c (verify_numeric): Don’t assume that when s == end
|
||
then errno is zero; it is EINVAL on macOS, and POSIX allows this.
|
||
(print_direc): Treat missing arg as zero for numeric conversions,
|
||
and as an empty string for the others.
|
||
(print_formatted): Use null pointer, not an empty string,
|
||
to represent missing arg.
|
||
* tests/printf/printf.sh: Test empty and space widths and precisions.
|
||
|
||
printf: do n$ overflow checking by hand
|
||
* src/printf.c (get_curr_arg): Mark as pure to pacify GCC 14.
|
||
Do overflow checking by hand rather than relying on strspn
|
||
and strtoimax.
|
||
|
||
printf: refactor macros to function
|
||
* src/printf.c (struct arg_cursor): New struct.
|
||
(get_curr_arg): New function.
|
||
(print_formatted): Use it instead of ...
|
||
(GET_CURR_ARG, SET_CURR_ARG): ... these removed macros.
|
||
This makes the code a bit easier to follow, and any efficiency
|
||
cost should be minimal.
|
||
|
||
2024-11-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid a syntax-check failure
|
||
This was also updated in gnulib.
|
||
|
||
* bootstrap: s/can not/cannot/
|
||
|
||
2024-11-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: describe "New programs" consistently in NEWS
|
||
* NEWS: s/New commands/New programs/
|
||
|
||
2024-11-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
Also, copy bootstrap from gnulib/build-aux/bootstrap.
|
||
|
||
factor: pacify -Wunused-macros
|
||
* src/factor.c: Also use __GMP_GNUC_PREREQ
|
||
|
||
2024-11-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: refactor gobble_file get_scontext
|
||
* src/ls.c (gobble_file): Simplify by pulling get_scontext
|
||
out of ‘if’.
|
||
|
||
2024-11-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: ls: also test security context output for symlinks
|
||
* tests/ls/selinux.sh: Test symlinks as well as files.
|
||
|
||
tests: avoid false failure with --disable-selinux
|
||
* tests/ls/selinux-segfault.sh: Move recent addition to ...
|
||
* tests/ls/selinux.sh: ... this new test that uses require_selinux_
|
||
to skip appropriately when we've built without selinux support.
|
||
Also add a non root test that checks we output '.' along with the
|
||
mode for files, to indicate a security context is present.
|
||
* tests/local.mk (Reference the new test).
|
||
|
||
2024-11-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: fix security context indication in --long mode
|
||
* src/ls.c (gobble_file): Always get the security context with -l
|
||
so that we can indicate a context with '.' if present.
|
||
|
||
2024-11-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
This also fixes a problem with ls -Z when configured with
|
||
--disable-acl, reported by Pádraig Brady
|
||
<https://bugs.gnu.org/73418#52>.
|
||
* src/ls.c (gobble_file): Pass ACL_GET_SCONTEXT to
|
||
file_has_aclinfo, if -Z is used.
|
||
|
||
2024-11-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib to latest
|
||
* NEWS: Mention the fix to nproc honoring the affinity mask
|
||
on systems with more than 1024 processors.
|
||
|
||
2024-11-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: add test case for ls -Z bug
|
||
Problem reported by Pádraig Brady <https://bugs.gnu.org/73418#35>.
|
||
This bug was fixed by the recent gnulib update.
|
||
* tests/ls/selinux-segfault.sh:
|
||
Also test for ls -Z on broken symlinks.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2024-11-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure on older valgrind
|
||
* src/shuf.c (main): In dev mode call randint_all_free()
|
||
to avoid false failure with valgrind 3.16.1 at least.
|
||
Note this partially reinstates commit v9.0-109-g0106b5a4b.
|
||
This was noticed on a debian 11 system running CI tests.
|
||
|
||
2024-11-09 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
seq: seq_fast always exits now
|
||
* src/seq.c (seq_fast): Always exit. Don’t bother freeing
|
||
just before exit.
|
||
|
||
seq: simplify cmp calls
|
||
* src/seq.c (seq_fast): Call cmp in just one place, not two.
|
||
Redo loop structure to make it work.
|
||
|
||
seq: use full_write instead of fwrite
|
||
* src/seq.c: Include full-write.h.
|
||
(seq_fast): Since we’re doing all the buffering work anyway,
|
||
we might as well use syscalls instead of stdio to write.
|
||
Use full_write instead of fwrite.
|
||
|
||
seq: simplify output buffer management
|
||
* src/seq.c (seq_fast): Simplify by using an output buffer of
|
||
known size (BUFSIZ) on the stack, rather than a heap buffer that
|
||
might grow. For the number buffer, don’t bother appending NUL
|
||
since nobody uses the NUL, and xpalloc from nullptr not p0 since
|
||
we need to move the buffer data by hand anyway.
|
||
|
||
seq: omit unnecessary malloc for upper bound
|
||
* src/seq.c (seq_fast): Speed up test for "inf".
|
||
Do not allocate and free a copy of B, as it is fine as-is.
|
||
|
||
seq: simplify cmp
|
||
* src/seq.c (cmp): Simplify, and change some size_t to idx_t.
|
||
(INITIAL_ALLOC_DIGITS): Now a constant, not a macro.
|
||
|
||
seq: explicate incr
|
||
* src/seq.c (incr): Change API to make the code easier to follow,
|
||
and also to avoid undefined behavior on hypothetical platforms
|
||
where '9' == INT_MAX (!). Caller changed.
|
||
|
||
env: prefer xpalloc to xrealloc
|
||
* src/env.c (extract_varname): Prefer free+xpalloc to
|
||
xrealloc, since the old buffer contents don’t matter.
|
||
|
||
shuf: prefer xpalloc to xnrealloc
|
||
* src/shuf.c (RESERVOIR_LINES_INCREMENT): Remove.
|
||
All uses removed.
|
||
(read_input_reservoir_sampling, main):
|
||
Prefer idx_t to size_t for sizes related to xpalloc.
|
||
(read_input_reservoir_sampling): Prefer xpalloc to xnrealloc.
|
||
|
||
pwd: prefer xpalloc to xnrealloc
|
||
* src/pwd.c (struct file_name, file_name_prepend):
|
||
Prefer idx_t to size_t for sizes related to xpalloc,
|
||
(file_name_init): Don’t overflow if PATH_MAX == INT_MAX.
|
||
(file_name_prepend): Prefer xpalloc to by-hand resizing.
|
||
Simplify by using memcpy return value.
|
||
|
||
du: prefer xpalloc to xnrealloc
|
||
* src/du.c (prev_level, process_file):
|
||
Prefer idx_t to size_t for sizes related to xpalloc,
|
||
and to nesting levels (since that’s what fts_level does anyway).
|
||
(process_file): Prefer xpalloc to xnrealloc.
|
||
|
||
df: prefer xpalloc to xnrealloc
|
||
* src/df.c (ncolumns, nrows, print_table, get_header, get_dev):
|
||
Prefer idx_t to size_t for sizes related to xpalloc.
|
||
(ncolumns_alloc, nrows_alloc): New static vars.
|
||
(alloc_table_row, alloc_field): Prefer xpalloc to xnrealloc.
|
||
|
||
basenc: prefer xpalloc to xnrealloc
|
||
* src/basenc.c (prepare_inbuf): Prefer xpalloc to xnrealloc.
|
||
|
||
ls: prefer xpalloc to xnrealloc
|
||
* src/ls.c (cwd_n_alloc, cwd_n_used, clear_files)
|
||
(extract_dirs_from_files, initialize_ordering_vector)
|
||
(update_current_files_info, sort_files, print_current_files)
|
||
(print_many_per_line, print_horizontal, print_with_separator)
|
||
(init_column_info, calculate_columns):
|
||
Prefer idx_t to size_t for sizes related to xpalloc.
|
||
(main): Let the compiler fold constants.
|
||
(gobble_file, init_column_info): Use xpalloc, not xnrealloc.
|
||
(print_many_per_line): Fix very-unlikely integer overflow.
|
||
|
||
df: simplify via xasprintf
|
||
* src/df.c: Include xvasprintf.h.
|
||
(get_header, get_dev): Simplify by using xasprintf and xstrdup
|
||
rather than doing the error checking ourselves.
|
||
|
||
csplit: port to IDX_MAX < INT_MAX
|
||
* src/csplit.c (max_out): Defend against unlikely IDX_MAX < INT_MAX.
|
||
|
||
pr: prefer xpalloc to x2realloc
|
||
* src/pr.c (buff_allocated, main):
|
||
Prefer idx_t to size_t for sizes.
|
||
(main, store_char): Use xpalloc, not x2realloc.
|
||
(init_store_cols): Check for multiplication overflow ourselves
|
||
and use ximalloc, not xnmalloc. This is a bit simpler.
|
||
* src/system.h (X2REALLOC): Remove; no longer used.
|
||
|
||
od: prefer xpalloc to x2realloc
|
||
* src/od.c (string_min, dump_strings): Prefer idx_t to size_t for
|
||
sizes. Use xpalloc, not x2realloc.
|
||
|
||
fold: prefer xpalloc to x2realloc
|
||
* src/fold.c (fold_file): Prefer idx_t to size_t for sizes.
|
||
Use xpalloc, not x2realloc.
|
||
|
||
sort: prefer xpalloc to x2nrealloc
|
||
* src/sort.c (struct buffer, temp_dir_count, temp_dir_alloc)
|
||
(create_temp_file, add_temp_dir, fillbuf):
|
||
Prefer idx_t to ptrdiff_t/size_t for nonnegative directory counts.
|
||
(add_temp_dir, fillbuf): Use xpalloc, not x2nrealloc.
|
||
* src/system.h (X2NREALLOC): Remove; no longer used.
|
||
|
||
cut,numfmt: prefer xpalloc to x2nrealloc
|
||
* src/set-fields.c (n_frp, n_frp_allocated, complement_rp, set_fields):
|
||
Prefer idx_t to ptrdiff_t/size_t for nonnegative sizes.
|
||
(add_range_pair): Use xpalloc, not x2nrealloc.
|
||
|
||
ptx: prefer xpalloc to x2nrealloc
|
||
* src/ptx.c (line_width, gap_size, WORD, WORD_TABLE)
|
||
(maximum_word_length, reference_max_width, occurs_alloc)
|
||
(number_of_occurs, half_line_width, truncation_string_length)
|
||
(compare_words, search_table, digest_word_file)
|
||
(find_occurs_in_text, fix_output_parameters)
|
||
(generate_all_output, main, find_occurs_in_text)
|
||
(fix_output_parameters, generate_all_output):
|
||
Prefer idx_t to ptrdiff_t/size_t for nonnegative sizes.
|
||
(first, second): Remove macros, replacing them with locals.
|
||
(search_table): Use hi (for highest + 1) to simplify.
|
||
Avoid unlikely overflow by not computing lo + hi.
|
||
(digest_word_file, find_occurs_in_text): Use xpalloc, not x2nrealloc.
|
||
|
||
od: prefer xpalloc to x2nrealloc
|
||
* src/od.c (n_specs, n_specs_allocated, write_block, get_lcm, main):
|
||
Use idx_t instead of size_t for some sizes, so that we can
|
||
use xpalloc.
|
||
(decode_format_string): Prefer xpalloc to X2NREALLOC.
|
||
|
||
expand: check for colno overflow
|
||
* src/expand-common.c (get_next_tab_column): Check for tab
|
||
stop overflow here. All callers changed to not check.
|
||
* src/expand.c (expand): Use colno for column number.
|
||
|
||
ls: fix aclinfo cache bug
|
||
Found when testing on a new platform with a new file system.
|
||
* src/ls.c (file_has_aclinfo_cache): For failures, also cache
|
||
return value, scontext, and scontext_err, and when using cached
|
||
values make sure buf and size have reasonable values for
|
||
aclinfo_free etc.
|
||
|
||
ls: use Gnulib’s unsupported errno list
|
||
* bootstrap.conf (gnulib_modules): Add acl-permissions, which
|
||
supplies acl_errno_valid, and which we are already using
|
||
indirectly via file-has-acl.
|
||
* src/ls.c (errno_unsupported): Remove. All calls replaced
|
||
by !acl_errno_valid.
|
||
|
||
expand: use signed colno
|
||
* src/expand-common.h (colno): Now intmax_t, not uintmax_t.
|
||
|
||
expand: refactor to introduce ‘colno’
|
||
* src/expand-common.h (colno): New typedef.
|
||
All uses of uintmax_t for column numbers replaced by colno.
|
||
* src/expand-common.c (add_tab_stop): Use xpalloc
|
||
instead of X2NREALLOC, and use ckd_add to check for overflow.
|
||
|
||
expand: prefer xpalloc to x2nrealloc
|
||
* src/expand-common.c (max_column_width, n_tabs_allocated)
|
||
(first_free_tab, add_tab_stop, parse_tab_stops, validate_tab_stops)
|
||
(get_next_tab_column):
|
||
Use idx_t for sizes. All uses changed.
|
||
(add_tab_stop): Use xpalloc instead of X2NREALLOC.
|
||
Use ckd_add to check for overflow, instead of doing it by hand.
|
||
|
||
env: prefer xpalloc to x2nrealloc
|
||
* src/env.c (usvars_alloc): Use idx_t for size.
|
||
(append_unset_var): Use xpalloc instead of x2nrealloc.
|
||
|
||
chroot: expand heap a bit less aggressively
|
||
* src/chroot.c (parse_additional_groups, main):
|
||
Prefer idx_t to size_t for sizes.
|
||
(parse_additional_groups): Use xpalloc instead of x2nrealloc.
|
||
|
||
maint: expand heap a bit less aggressively
|
||
* gl/lib/heap.c (struct heap, heap_alloc, heap_insert)
|
||
(heapify_down, heapify_up): Prefer idx_t to size_t for sizes.
|
||
(heap_insert): Use xpalloc instead of x2nrealloc.
|
||
(heapify_down): Return void since no caller cares about value.
|
||
* gl/modules/heap: Depend on idx.
|
||
|
||
2024-11-03 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: Regenerate distributed built files in $(top_srcdir)
|
||
* src/local.mk (src/dircolors.h, src/fs-is-local.h, src/fs.h): Generate
|
||
in $(top_srcdir).
|
||
|
||
2024-11-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: add support for --algorithm=crc32b
|
||
$ echo -n '123456789' | cksum --raw -a crc32b | basenc --base16
|
||
CBF43926
|
||
|
||
* bootstrap.conf: Explicitly depend on the crc module.
|
||
* doc/coreutils.texi (cksum): Add "crc32b" as an argument to -a.
|
||
* src/cksum.c (crc32b_sum_stream): A new function similar to
|
||
crc_sum_stream, but which does not include the length in
|
||
the CRC calculation.
|
||
* src/cksum.h: Add crc32b_sum_stream prototype.
|
||
* src/digest.c: Add "crc32b" as an argument to -a.
|
||
* tests/cksum/cksum.sh: Refactor to test both crc and crc32b.
|
||
* tests/cksum/cksum-a.sh: Add "crc32b" case.
|
||
* tests/cksum/cksum-base64.pl: Likewise.
|
||
* tests/misc/read-errors.sh: Likewise.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2024-11-02 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
test: add string operators added by POSIX 2024
|
||
* src/test.c (binop): Recognize the ">" and "<" operators.
|
||
(three_arguments): Likewise.
|
||
(binary_operator): Implement the "<" and ">" operators.
|
||
(usage): Add operators to --help output.
|
||
* tests/test/test.pl (@Tests): Add functionality tests.
|
||
* doc/coreutils.texi (test invocation, String tests): Document new
|
||
operators.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2024-11-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: mention new timeout short options in NEWS
|
||
* NEWS: Mention the timeout -f and -p options.
|
||
|
||
2024-11-01 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
stty: adjust --help to match POSIX 2024
|
||
* src/stty.c (usage): Mark cols, rows, and size as standardized by
|
||
POSIX.
|
||
* doc/coreutils.texi (Special): Likewise.
|
||
|
||
2024-11-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix timeout --help for -p
|
||
* src/timeout.c (usage): Fix typo of period with comma.
|
||
* tests/timeout/timeout.sh: Only test a single option variant,
|
||
as tests/misc/usage_vs_getopt.sh suffices for basic option validation.
|
||
|
||
2024-10-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
timeout: add -f and -p short options as per POSIX 2024
|
||
* src/timeout.c: Support -f and -p short options, corresponding to
|
||
--foreground and --preserve-status respectively. This adds
|
||
compatability with POSIX 2024 and OpenBSD.
|
||
(usage): Separate translations, and reorder the option descriptions.
|
||
* doc/coreutils.texi (timeout invocation): Adjust accordingly,
|
||
and also reorder the option descriptions alphabetically.
|
||
* tests/timeout/timeout.sh: Also test short option variants.
|
||
|
||
2024-10-20 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: cksum: verify --check with comments
|
||
* tests/cksum/cksum-c.sh: Add a test case with a comment.
|
||
|
||
tests: improve ls --dired with symlink testing
|
||
* tests/ls/dired.sh: Verify ls --dired with symlink.
|
||
|
||
2024-10-14 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: add syntax-check to ensure all gl/ files are distributed
|
||
* cfg.mk (sc_gldist_missing): Add a new target to ensure we don't
|
||
forget to distribute any new gl/ files.
|
||
* gl/local.mk: Remove generation comment since it's
|
||
now encapsulated in the syntax-check, which outputs a consumable
|
||
diff to make any future adjustments.
|
||
Also adjust ordering to that of the C locale used in the syntax check.
|
||
|
||
2024-10-14 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: distribute the gl/ directory in the tarballs
|
||
Suggested by Michael Pratt in
|
||
<https://mail.gnu.org/archive/html/coreutils/2024-10/msg00010.html>.
|
||
|
||
* gl/local.mk: New file, based on gettext/gnulib-local/Makefile.am.
|
||
* Makefile.am: Include it.
|
||
|
||
2024-10-12 Masatake YAMATO <yamato@redhat.com>
|
||
|
||
cp,mv: align the descriptions of long options
|
||
* src/cp.c (usage): Adjust white spaces for --update.
|
||
* src/mv.c (usage): Ditto.
|
||
Fixes https://bugs.gnu.org/73772
|
||
|
||
2024-10-07 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
chroot,whoami: use uintmax_t for printing uids
|
||
* src/chroot.c (main): Cast the uid to uintmax_t instead of int.
|
||
* src/whoami.c (main): Cast the uid to uintmax_t instead of unsigned
|
||
long int.
|
||
|
||
2024-10-06 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: adjust check-ls-dircolors to recent change in ls.c
|
||
'make distcheck' would fail since commit 75b34c77e43a, because the
|
||
comparison by check-ls-dircolors fails.
|
||
|
||
* Makefile.am (check-ls-dircolors): Adjust sed(1) expression to the
|
||
changed data initialization.
|
||
|
||
2024-10-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: fix spurious output with -Z
|
||
* src/ls.c (gobble_file): Only output an error if there actually
|
||
was an error.
|
||
|
||
tests: ls: don't always skip a capability test
|
||
* tests/ls/no-cap.sh: Move to being a root only test, since
|
||
commit v9.5-132-g2a6bed933 we now need to call setcap
|
||
to make the test effective. Otherwise we would have always
|
||
just skipped the test.
|
||
|
||
2024-10-03 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: tune usage of getxattr/stat syscalls
|
||
Update gnulib submodule to latest. This changes the file_has_aclinfo
|
||
API, so at the same time do the following changes to ls.c, which
|
||
adjusts to these changes among other things.
|
||
* src/ls.c (filetype_d_type, d_type_filetype): New static constants.
|
||
(format_needs_capability): New static var.
|
||
(main): Set and use it. Don’t set format_needs_stat merely
|
||
because print_scontext, as we needn’t call stat to get the
|
||
scontext. Instead, set format_needs_type if print_scontext but
|
||
not format_needs_stat.
|
||
(print_dir): Use new static tables to determine filetype
|
||
more efficiently.
|
||
(file_has_aclinfo_cache): Adjust to Gnulib file_has_aclinfo API change.
|
||
(gobble_file): Check stat if format_needs_type but the type is
|
||
unknown. Be conservative, and when deciding whether to check stat
|
||
but the type is unknown, assume it might be directory. Similarly
|
||
for normal files when classifying; if the type is unknown assume
|
||
it might be normal. Use new static constants and IFTODT to
|
||
compute filetype more straightforwardly. Get ACLs and check for
|
||
capability less often.
|
||
(get_color_indicator): Omit unnecessary call to is_colored (C_CAP),
|
||
since f->has_capability can be true only if is_colored (C_CAP).
|
||
|
||
ls: omit cast from gobble_file
|
||
* src/ls.c (gobble_file): Minor refactoring. Last arg is now null
|
||
pointer, not "", for no directory. All callers changed.
|
||
Avoid need for cast from char const * to char *.
|
||
|
||
ls: check FILETYPE_INDICATORS cardinality
|
||
* src/ls.c (filetype_cardinality): New constant.
|
||
(filetype_letter): Omit unnecessary trailing NUL.
|
||
(FILETYPE_INDICATORS): Remove, moving definiens to ...
|
||
(get_color_indicator): ... here, and check its cardinality too.
|
||
|
||
ls: tune indicator_name
|
||
* src/ls.c (indicator_name): Simplify type; it is now merely
|
||
a 2-dimensional array of char. All uses changed.
|
||
|
||
ls: omit some unnecessary NULs
|
||
* src/ls.c (BIN_STR): New macro, replacing LEN_STR_PAIR.
|
||
All uses changed. This avoids the need to store the
|
||
trailing \0 in each string. This change is more for clarity,
|
||
to make it clear the \0 is not needed.
|
||
|
||
ls: tune is_colored
|
||
* src/ls.c (is_colored): Tune.
|
||
This shrinks the machine code considerably on x86-64.
|
||
|
||
ls: omit unnecessary test
|
||
* src/ls.c (gobble_file): Omit redundant test of variable that
|
||
must be false here.
|
||
|
||
2024-10-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: reinstate capability checking in more cases
|
||
The recent commit v9.5-119-g4ce432ad8 restricted capability checking
|
||
to only files with XATTR_NAME_CAPS set. If this is done then we need
|
||
to adjust tests/ls/no-cap.sh so that it doesn't always skip. More
|
||
problematically XATTR_NAME_CAPS was only determined in long listing
|
||
mode, thus breaking capability coloring in short listing mode
|
||
as evidenced by the failing tests/ls/capability.sh test.
|
||
|
||
Note capability checking does have a large overhead, but we've
|
||
disabled capability checking by default anyway through the default
|
||
color configuration since v9.0-187-g6b5134770
|
||
|
||
So for these reasons revert to checking capabilities as before.
|
||
|
||
* src/ls.c (gobble_file): Check for capabilities in all modes
|
||
if enabled in color config.
|
||
|
||
2024-10-02 Lukáš Zaoral <lzaoral@redhat.com>
|
||
|
||
doc: ls: fix regression in -k description
|
||
The description of -k regressed in coreutils 9.0
|
||
|
||
* doc/coreutils.texi (ls invocation): Fix incomplete paragraph
|
||
describing -k introduced by a mistake in commit v8.32-180-g1625916a1.
|
||
|
||
2024-10-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: df: avoid false failure due to fuse.portal
|
||
* tests/df/skip-rootfs.sh: Explicitly exclude "fuse.portal"
|
||
file systems as these give EPERM errors from statfs().
|
||
|
||
2024-10-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix skipping of mtab simulation tests
|
||
Where rpl_fopen() is used rather than fopen(),
|
||
wrapping fopen() is ineffective.
|
||
Note rpl_fopen() is used as of glibc-2.39 at least
|
||
(due to fflush and fclose being replaced).
|
||
|
||
* tests/df/no-mtab-status.sh: Wrap open() rather than fopen().
|
||
* tests/df/skip-duplicates.sh: Likewise.
|
||
|
||
2024-09-30 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: avoid sc_preprocessor_indentation failure in factor.c
|
||
Prompted by the following 'make syntax-check' failure:
|
||
cppi: src/factor.c: line 175: not properly indented
|
||
cppi: src/factor.c: line 176: not properly indented
|
||
maint.mk: incorrect preprocessor indentation
|
||
make: *** [cfg.mk:750: sc_preprocessor_indentation] Error 1
|
||
|
||
* src/factor.c: Filter through 'cppi -a'.
|
||
|
||
2024-09-30 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
tests: add fold(1) test for --bytes option
|
||
Inspired by:
|
||
- https://access.redhat.com/solutions/3459791
|
||
- https://src.fedoraproject.org/rpms/coreutils/c/8080f5a15a20362c
|
||
|
||
* tests/misc/fold.pl (bw1, bw2): Add tests for 'fold -b'.
|
||
|
||
2024-09-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: use fewer xattr-related syscalls
|
||
* src/ls.c: Do not include <selinux/selinux.h> or "smack.h".
|
||
Include <linux/attr.h> if HAVE_LINUX_ATTR_H, for XATTR_NAME_CAPS.
|
||
(free_ent): Use aclinfo_scontext_free to free f->scontext.
|
||
(getfilecon_cache): Remove; no longer needed.
|
||
(file_has_aclinfo_cache): Rename from file_has_acl_cache,
|
||
and use file_has_aclinfo instead of file_has_acl. All uses changed.
|
||
(gobble_file): Use file_has_aclinfo instead of file_has_acl, so
|
||
that we get more info about the file before deciding whether to
|
||
issue further syscalls for it. Let file_has_aclinfo worry about
|
||
smack and SELinux. Call has_capability only if the xattr list
|
||
mentions XATTR_NAME_CAPS.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2024-09-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
factor: eliminate print_uuint recursion
|
||
* src/factor.c (lbuf_putint_append): New function, with
|
||
most of the old lbuf_putint body. Do the umaxtostr stuff
|
||
by hand so that we needn’t worry about the trailing NUL.a
|
||
Do the string copy by hand since the string is so short.
|
||
(lbuf_putint): Reimplement in terms of lbuf_putint_append.
|
||
Omit last arg, which is no longer needed. All callers changed.
|
||
(print_uuint): Rewrite to avoid recursion, using
|
||
lbuf_putint_append for the usual case.
|
||
|
||
factor: lessen print_uuint recursion
|
||
* src/factor.c (BIG_POWER_OF_10, LOG_BIG_POWER_OF_10):
|
||
New constants.
|
||
(print_uuint): Use them to lessen recursion depth.
|
||
|
||
factor: print_uuint accepts uuint
|
||
* src/factor.c (print_uuint): Rename from print_uintmaxes
|
||
and accept a uuint rather than two uintmax_t values.
|
||
Alll uses changed.
|
||
|
||
factor: simplify table count
|
||
* src/factor.c (PRIMES_PTAB_ENTRIES): Simplify.
|
||
|
||
factor: macro refactoring
|
||
* src/factor.c (W_TYPE_SIZE): Simplify by always defining
|
||
to UINTMAX_WIDTH.
|
||
(W): Remove. All uses replaced by W_TYPE_SIZE.
|
||
We no longer need one of its static_asserts.
|
||
|
||
factor: improve gmp-related buffering
|
||
Previously, the code used stdio buffers for gmp numbers,
|
||
and did its own buffering for smaller numbers. This meant
|
||
for more flushing than was needed. The code now uses its
|
||
own buffering for all standard output, which makes for
|
||
less flushing and fewer writes.
|
||
* src/factor.c (lbuf_half_flush): New function, taken from the
|
||
body of lbuf_putnl.
|
||
(lbuf_putnl): Use it.
|
||
(lbuf_putmpz): New function, to output an mpz without using stdio.
|
||
(print_factors): Output via functions instead of via stdio.
|
||
|
||
factor: buffer stdout like other progs do
|
||
* src/factor.c (lbuf_putnl): Don’t worry about whether
|
||
stdin is a tty when deciding whether to buffer stdout.
|
||
|
||
factor: improve fd buffering
|
||
* src/factor.c (struct lbuf_, lbuf, lbuf_alloc): Remove.
|
||
All uses removed.
|
||
(FACTOR_PIPE_BUF): Now a constant instead of a macro.
|
||
Increase to PIPE_BUF if available.
|
||
(lbuf_buf, lbuffered): New static vars, replacing lbuf.
|
||
All uses changed.
|
||
(lbuf_flush): Avoid unlikely recursion on write failure.
|
||
(lbuf_putc): Now simply adds a byte to the buffer.
|
||
(lbuf_putnl): Do the work of the old lbuf_putc ('\n').
|
||
Use changed. Use memrchr to find the newline.
|
||
(lbuf_putint): Widths are now int, not size_t.
|
||
|
||
factor: powm2 returns uuint
|
||
* src/factor.c (powm2): Return uuint rather than half via
|
||
pointer. All callers changed.
|
||
|
||
factor: factor_using_division returns uuint
|
||
* src/factor.c (factor_using_division): Return uuint rather than
|
||
half via pointer. All callers changed.
|
||
|
||
factor: gcd2_odd returns uuint
|
||
* src/factor.c (gcd2_odd): Return uuint rather than half via pointer.
|
||
All callers changed.
|
||
|
||
factor: mod2 now returns uuint
|
||
* src/factor.c (uuset): New function.
|
||
(mod2): Return uuint rather than having half the returned value
|
||
stored via a pointer. This makes the code a bit easier to read
|
||
and can help the compiler avoid aliasing issues. All callers changed.
|
||
|
||
factor: new type uuint
|
||
This refactors to add a new type, a uintmax_t pair, which
|
||
can simplify some code without slowing it down.
|
||
* src/factor.c (uuint): New type.
|
||
(lo, hi, hiset, make_uuint): New functions.
|
||
(struct factors.plarge): Use the new type. All uses changed.
|
||
|
||
factor: tweak prime_p zero counting
|
||
* src/factor.c (prime_p): Use stdc_trailing_zero here too.
|
||
This doesn’t make much of a performance difference but
|
||
we might as well be consistent.
|
||
|
||
factor: tweak gcd2_odd performance
|
||
* src/factor.c (gcd2_odd): Use stdc_trailing_zeros here too.
|
||
|
||
factor: tweak gcd_odd performance
|
||
* src/factor.c (gcd_odd): Use stdc_trailing_zeros instead of
|
||
counting zeros by hand.
|
||
|
||
factor: switch to stdc_leading_zeros etc
|
||
* bootstrap.conf (gnulib_modules): Add stdc_trailing_zeros.
|
||
* cfg.mk (_gl_TS_unmarked_extern_vars): Remove factor_clz_tab,
|
||
as it’s no longer present.
|
||
* src/factor.c: Include stdbit.h.
|
||
(__clz_tab, factor_clz_tab): Remove.
|
||
(ASSERT, UHWtype, __GMP_DECLSPEC): Use simpler way to pacify
|
||
-Wunused-macros.
|
||
(count_leading_zeros, count_trailing_zeros):
|
||
Remove. All uses replaced by stdc_leading_zeros, stdc_trailing_zeros.
|
||
(factor_using_division, prime2_p): Add a couple of ‘assume’s
|
||
so that GCC knows the stdc_* calls are nonzero and can
|
||
optimize accordingly.
|
||
|
||
factor: port to platforms
|
||
* src/factor.c (mod2): Work even if cntd <= cnta. The old version
|
||
of the code assumed that shifts by N had unspecified behavior
|
||
unless 0 <= N < wordsize. Although this assumption is portable to
|
||
all known practical platforms, the C standard says these shifts
|
||
have undefined behavior and some pedantic platforms check this.
|
||
* tests/factor/create-test.sh:
|
||
* tests/local.mk (factor_tests): New test t37.
|
||
|
||
2024-09-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove extraneous periods from option --help
|
||
* src/df.c (usage): Remove period from --help description.
|
||
* src/cksum.c (usage): Likewise.
|
||
* src/cp.c (usage): Likewise.
|
||
* src/mkdir.c (usage): Likewise.
|
||
* src/mv.c (usage): Likewise.
|
||
* src/tee.c (usage): Likewise.
|
||
|
||
doc: sort: be more descriptive than 'manual'
|
||
* src/sort.c (usage): Don't mention the ambiguous "manual",
|
||
rather "full documentation", echoing the language at the
|
||
bottom of each coreutils man page.
|
||
Fixes https://bugs.gnu.org/72914
|
||
|
||
doc: env: simplify extra info in the man page
|
||
* man/env.x: Avoid confusion in the [OPTIONS] section
|
||
by renaming to [SCRIPT OPTION HANDLING], and removing info
|
||
regarding default signal handling, which is best
|
||
restricted to the full info manual.
|
||
Addresses https://bugs.gnu.org/72914
|
||
|
||
doc: improve printf(1) reference in echo man page
|
||
* src/echo.c (usage): Use printf(1) rather than 'printf',
|
||
which is marked up more appropriately, and can be
|
||
referenced by some man page readers.
|
||
Fixes https://bugs.gnu.org/72914
|
||
|
||
doc: fix option markup in chgrp, chown, chmod man pages
|
||
* src/system.h (emit_symlink_recurse_options): Remove quotes
|
||
so that help2man markup is applied to the option.
|
||
Fixes https://bugs.gnu.org/72914
|
||
|
||
2024-09-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
printf: add indexed argument support
|
||
* src/printf.c (print_formatted): Add support for %i$ indexed args.
|
||
* tests/printf/printf-indexed.sh: Add a new file of test cases.
|
||
* tests/local.mk: Reference the new test file.
|
||
* doc/coreutils.texi (printf invocation): Mention how mixed
|
||
processing of indexed and sequential references are supported,
|
||
unlike the printf(2) library function.
|
||
* NEWS: Mention the new (POSIX:2024) feature.
|
||
Addresses https://bugs.gnu.org/73068
|
||
|
||
2024-09-04 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: assume C89 escape sequences
|
||
* src/ptx.c (unescape_string) [!__STDC__]: Assume compiler supports '\a'
|
||
and '\v' escape sequences.
|
||
|
||
2024-08-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2024-08-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
all: fix error checking in gl/lib/xdectoint.c
|
||
This issue was noticed with -flto on GCC 14.2.1
|
||
|
||
* gl/lib/xdectoint.c (__xnumtoint): Only inspect the
|
||
returned value if LONGINT_INVALID is not set,
|
||
as the returned value is uninitialized in that case.
|
||
Fixes https://bugs.gnu.org/72842
|
||
|
||
2024-08-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid a syntax check failure
|
||
* tests/df/no-mtab-status.sh: mntent.h is always provided now by gnulib.
|
||
* tests/df/skip-duplicates.sh: Likewise.
|
||
|
||
2024-08-25 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: adjust to Gnulib acl changes
|
||
* src/copy.c (copy_reg, copy_interal): Use xcopy_acl instead of
|
||
copy_acl. Use xset_acl instead of set_acl.
|
||
* src/cp.c (re_protect): Likewise.
|
||
|
||
build: update gnulib submodule to latest
|
||
* bootstrap: Update from Gnulib.
|
||
|
||
2024-08-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
install: dereference source symlinks when comparing
|
||
* NEWS: Mention the change in behavior.
|
||
* src/install.c (need_copy): s/lstat/stat/ for the source.
|
||
* tests/install/install-C.sh: Add test cases
|
||
(and improve existing test case which wan't valid
|
||
due to the existing non standard modes on test files).
|
||
Addresses https://bugs.gnu.org/72707
|
||
|
||
2024-08-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: adjust to recent removal of verror.c
|
||
* po/POTFILES.in: Remove lib/verror.c
|
||
|
||
build: update gnulib submodule to latest
|
||
* boostrap.conf (gnulib.modules): Add xvasprintf, which
|
||
had been omitted by mistake.
|
||
* src/copy.c, src/dd.c, src/test.c: Don't include verror.h,
|
||
as Gnulib removed it.
|
||
|
||
2024-08-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: add support for explicit file name sorting
|
||
Support overriding previous sorting options
|
||
with an explicit --sort=name option.
|
||
|
||
* doc/coreutils.texi (ls invocation): Document the new option.
|
||
* src/ls.c (usage): Likewise.
|
||
(sort_args): Add the "name" entry, and sort to be consistent
|
||
with the ordering presented in --help.
|
||
* tests/ls/ls-time.sh: Add test cases.
|
||
* NEWS: Mention the new feature.
|
||
Suggested by: Tzvetelin Katchov
|
||
|
||
2024-08-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: fix syntax-check failure
|
||
* gl/lib/xdectoint.h: Reinstate indentation enforced with cppi.
|
||
* src/head.c: Remove now redundant inclusion of "quote.h".
|
||
|
||
doc: printf %b: clarify octal processing
|
||
* src/printf.c: Remove redundant comment.
|
||
State explicitly that the leading 0 is the exception
|
||
from normal escape processing. Remove a full stop for consistency.
|
||
* doc/coreutils.texi (printf invocation): Add a reference
|
||
to C99 string escapes since these are not mentioned
|
||
in the referenced glibc printf info. Also explicitly state
|
||
the leading 0 exception. Also use NNN rather than OOO
|
||
to be consistent with the --help documentation.
|
||
Also remove and extraneous '\' and fix grammar in the info
|
||
regarding the ninth bit.
|
||
Addresses https://bugs.gnu.org/72657
|
||
|
||
2024-08-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: adjust to Gnulib safe_read etc. changes
|
||
Although these patches don’t affect user-visible behavior,
|
||
they do clean up the source code a bit, and the
|
||
machine code should be a tiny bit more efficient.
|
||
* src/cat.c (simple_cat, cat):
|
||
* src/csplit.c (read_input):
|
||
* src/head.c (copy_fd, elide_tail_bytes_pipe)
|
||
(elide_tail_lines_pipe, elide_tail_lines_seekable, head_bytes)
|
||
(head_lines):
|
||
* src/install.c (have_same_content):
|
||
* src/tac-pipe.c (buf_init_from_stdin):
|
||
* src/tac.c (tac_seekable, copy_to_temp):
|
||
* src/tail.c (dump_remainder, file_lines, pipe_lines)
|
||
(pipe_bytes, start_bytes, start_lines, tail_forever_inotify):
|
||
* src/tr.c (plain_read):
|
||
Adjust to recent Gnulib changes by using new types
|
||
for safe_read, safe_write, full_read, full_write.
|
||
|
||
maint: list Gnulib sys_types directly
|
||
* bootstrap.conf (gnulib_modules): Add sys_types.
|
||
Although it’s already brought in indirectly, coreutils
|
||
code includes <sys/types.h> directly.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
head: fix overflows in elide_tail_bytes_pipe
|
||
Not clear that the overflows could be exploited,
|
||
but they made the code confusing.
|
||
* src/head.c (elide_tail_bytes_pipe): Don’t convert uintmax_t
|
||
to size_t first thing; wait until it’s known the value will fit,
|
||
and then use idx_t rather than size_t to prefer signed types.
|
||
Prefer idx_t in nearby code, too.
|
||
Rename locals n_elide_0 to n_elide (for consistency elsewhere)
|
||
and n_elide to in_elide.
|
||
Remove bogus (SIZE_MAX < n_elide + READ_BUFSIZE) test;
|
||
in the typical case where n_elide’s type was the same as
|
||
that of SIZE_MAX, the test never succeeded, and in the
|
||
less-common case where n_elide was wider than size_t,
|
||
the addition could silently overflow, causing the test
|
||
to fail when it should succeed. The test is not needed anyway now.
|
||
Add static asserts to document code assumptions.
|
||
Redo the ! (n_elide <= HEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD) case
|
||
so that it works with enormous values of n_elide even on
|
||
32-bit platforms; for example, n_bufs is now uintmax_t not size_t.
|
||
Simplify by using xpalloc instead of by-hand code.
|
||
Remove bogus ‘if (rem)’ test, as rem is always nonzero.
|
||
|
||
head: new test for big count
|
||
* tests/head/head-c.sh: Also test head -c with a number
|
||
much bigger than UINTMAX_MAX.
|
||
|
||
tail: support counts > 2**64
|
||
* src/tail.c (tail_lines): If skipping all input, use lseek if
|
||
possible.
|
||
(parse_options): Allow counts to exceed 2**64.
|
||
(main): Don’t subtract 1 from UINTMAX_MAX, since it stands
|
||
for infinity in this context.
|
||
(main): Also don’t read anything when given infinite elisions.
|
||
* tests/tail/tail.pl: Adjust to match new behavior. Rename err-5
|
||
test to big-c and expect the invocation to succeed, since ‘tail
|
||
-c99999999999999999999’ now succeeds instead of (unnecessarily)
|
||
failing.
|
||
|
||
head: off_t not uintmax_t for file offset
|
||
* src/head.c (elide_tail_lines_pipe):
|
||
Use off_t, not uintmax_t, for a local var that is
|
||
a file offset.
|
||
|
||
nproc: support --ignore counts > 2**64
|
||
* src/nproc.c (main): Allow --ignore arg to exceed 2**64.
|
||
|
||
nl: support -l counts > 2**64
|
||
* src/nl.c (main): Allow -l arg to exceed 2**64.
|
||
|
||
head: support counts > 2**64
|
||
* src/head.c (head): Optimize for -n-HUGE, where HUGE exceeds
|
||
2**64 - 2.
|
||
(string_to_integer): Return UINTMAX_MAX for too-large numbers,
|
||
instead of failing.
|
||
(main): Omit no-lnger-necessary test for byte count overflow.
|
||
|
||
digest: improve -l overflow diagnostic
|
||
* src/digest.c (main): Use better diagnostic for -l overflow,
|
||
by using XTOINT_MAX_QUIET to suppress the worse diagnostic.
|
||
|
||
maint: distinguish EOVERFLOW vs ERANGE better
|
||
Also, prepare for allowing some arguments to overflow
|
||
without that being an error.
|
||
* gl/lib/xdectoint.c: Do not include stddef.h,
|
||
since we no longer use ‘unreachable’.
|
||
(xnumtoimax, xnumtoumax, __xnumtoint):
|
||
New arg FLAGS. All callers changed.
|
||
Stop using __xdectoint_signed. All definers removed.
|
||
* gl/lib/xdectoint.h (XTOINT_MIN_QUIET, XTOINT_MAX_QUIET)
|
||
(XTOINT_MIN_RANGE, XTOINT_MAX_RANGE): New flag constants.
|
||
* src/fmt.c (main):
|
||
* src/fold.c (main):
|
||
* src/nl.c (main):
|
||
* src/pr.c (getoptnum):
|
||
* src/split.c (main):
|
||
Use XTOINT_MIN_RANGE and XTOINT_MAX_RANGE if appropriate.
|
||
* src/pr.c (getoptnum): Return int rather than returning void
|
||
and storing through int *.
|
||
* src/stty.c (apply_settings):
|
||
Use ckd_add to check for overflow instead of doing it by hand.
|
||
(integer_arg): Accept and return uintmax_t, not unsigned long.
|
||
|
||
2024-08-08 Richard Purdie <richard.purdie@linuxfoundation.org>
|
||
|
||
tests: df-P.sh: fix intermittent false failure
|
||
The test writes to the disk and means the space used changes. If this
|
||
crosses a number boundary, the heading spacing can change:
|
||
|
||
-Filesystem 1024-blocks Used Available Capacity Mounted on
|
||
+Filesystem 1024-blocks Used Available Capacity Mounted on
|
||
|
||
* tests/df/df-P.sh: Squash spaces with tr to avoid alignment variations.
|
||
|
||
2024-08-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: modernize AC_CHECK_TYPE usage
|
||
* m4/jm-macros.m4 (gl_CHECK_ALL_TYPES):
|
||
Use current form of AC_CHECK_TYPE instead of the
|
||
no-longer-documented obsolescent form.
|
||
|
||
2024-08-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid warning on older GCC compilers
|
||
* src/shuf.c: Avoid -Werror=maybe-uninitialized on GCC 10.2.1 at least.
|
||
This issue does seem to be addressed on GCC 12.
|
||
|
||
tests: limit mem usage on potentially expensive test
|
||
* tests/misc/write-errors.sh: Limit mem usage if possible,
|
||
as some implementations may use unbounded memory for
|
||
the tests cases used here.
|
||
|
||
tests: ensure utils support writing to a closed pipe
|
||
* tests/misc/write-errors.sh: A closed pipe is a common scenario,
|
||
and should not induce an error. The general case is discussed at:
|
||
https://www.pixelbeat.org/programming/sigpipe_handling.html
|
||
|
||
doc: reference 'dircolors invocation' from ls --color info
|
||
* doc/coreutils.texi: Reference how to configure colors,
|
||
from the ls --color description.
|
||
|
||
doc: clarify which ls color attributes don't apply to dirs
|
||
* src/dircolors.hin: Clarify that SETUID, SETGID, CAPABILITY, and EXEC
|
||
coloring, only apply to regular files.
|
||
|
||
2024-08-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
shuf: tiny simplification
|
||
* src/shuf.c (main): Omit redundant assignment.
|
||
|
||
shuf: avoid integer overflow on huge inputs
|
||
* gl/lib/randperm.c: Include <stdckdint.h>.
|
||
(randperm_bound): Return SIZE_MAX if the multiplication overflows.
|
||
Do not overflow when converting bit count to byte count.
|
||
|
||
shuf: fix randomness bug
|
||
Problem reported by Daniel Carpenter <https://bugs.gnu.org/72445>.
|
||
* gl/lib/randread.c (randread_new): Fill the ISAAC buffer
|
||
instead of storing at most BYTES_BOUND bytes into it.
|
||
|
||
2024-07-30 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: remove unnecessary inttostr usage in printf
|
||
* src/cksum.c (output_crc): Use '%ju' instead of umaxtostr.
|
||
* src/shred.c (dopass): Likewise.
|
||
* src/csplit.c (handle_line_error, regexp_error, close_output_file)
|
||
(parse_patterns): Use '%jd' instead of offtostr.
|
||
* src/tail.c (xlseek): Likewise.
|
||
* src/head.c (elseek): Likewise.
|
||
* src/group-list.c (gidtostr_ptr): Remove function.
|
||
(gidtostr): Remove macro.
|
||
(print_group): Use '%ju' instead of umaxtostr.
|
||
* src/id.c (gidtostr_ptr, uidtostr_ptr): Remove functions.
|
||
(gidtostr, uidtostr): Remove macros.
|
||
(print_user, print_full_info): Use '%ju' instead of umaxtostr.
|
||
* src/sort.c (specify_nmerge): Use '%u' instead of uinttostr.
|
||
|
||
2024-07-22 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: support creating reproducible tarball contents
|
||
We already support reproducible builds since commit v8.24-99-gc1b3d6587,
|
||
and this adjusts that change to also support reproducible
|
||
tarball contents with subsequent runs of `make dist`.
|
||
|
||
* Makefile.am: Don't create a varying .timestamp file, instead ...
|
||
* man/local.mk: Rely on the timestamp of the .tarball-version file.
|
||
Fixes https://bugs.gnu.org/72232
|
||
|
||
2024-07-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
tests: port to noatime file systems
|
||
On these file systems the atime is always zero.
|
||
Problem found with ZFS on Ubuntu 24.04 LTS.
|
||
* tests/stat/stat-birthtime.sh (check_timestamps_updated):
|
||
* tests/stat/stat-nanoseconds.sh:
|
||
Work even if atimes are always zero.
|
||
* tests/stat/stat-nanoseconds.sh:
|
||
Fix typo: print_ver_ called before init.sh sourced.
|
||
|
||
maint: update bootstrap from Gnulib
|
||
|
||
maint: adjust to Gnulib -Wsystem-headers change
|
||
* configure.ac: Don’t suppress -Wsystem-headers since Gnulib no
|
||
longer enables it.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2024-07-10 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
tests: add fold(1) test for non-existent files
|
||
* tests/misc/fold.pl: Add 'enoent' test.
|
||
|
||
2024-07-04 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: import tests/init.sh from Gnulib during bootstrap
|
||
* bootstrap.conf (bootstrap_post_import_hook): Use gnulib-tool
|
||
--copy-file to import tests/init.sh.
|
||
* tests/init.sh: Remove file.
|
||
* .gitignore (/tests/init.sh): Add entry.
|
||
|
||
2024-07-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove 'proposed' in regard to $'' descriptions
|
||
$'' is POSIX standard syntax as of POSIX.1-2024, as per:
|
||
https://www.austingroupbugs.net/view.php?id=249
|
||
|
||
* doc/coreutils.texi (quotingStyles): Remove 'proposed'.
|
||
* src/printf.c: Likewwise.
|
||
Reported at https://bugs.debian.org/1074776
|
||
|
||
2024-07-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix improper use of grep -v
|
||
* tests/cksum/cksum-c.sh: Remove improper use of `grep -v`.
|
||
|
||
2024-07-02 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: cksum: check when several files are missing or incorrect
|
||
* tests/cksum/cksum-c.sh: Add test cases when several files with errors
|
||
|
||
2024-07-01 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: silence deprecated module warning
|
||
* bootstrap.conf (gnulib_modules): Use putenv-gnu instead of putenv.
|
||
|
||
2024-06-29 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: prefer endian.h for byte order conversions
|
||
* bootstrap.conf (gnulib_modules): Remove byteswap. Add endian.
|
||
* src/cksum.c: Include endian.h instead of byteswap.h.
|
||
(SWAP): Remove macro.
|
||
(cksum_slice8): Use htobe32 instead of SWAP.
|
||
(output_crc): Likewise.
|
||
* src/sum.c: Include endian.h instead of byteswap.h.
|
||
(SWAP): Remove macro.
|
||
(output_bsd): Use htobe16 instead of SWAP.
|
||
(output_sysv): Use htobe16 instead of SWAP.
|
||
* .gitignore: Add /lib/endian.h.
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest
|
||
|
||
2024-06-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: treat --time=mtime consistently with other time selectors
|
||
* src/ls.c: Track if --time=mtime is explicitly specified,
|
||
so that we can apply the GNU extension of sorting by the
|
||
specified time, when not displaying (-l not specified),
|
||
and not explicitly sorting (-t not specified).
|
||
* tests/ls/ls-time.sh: Add / Update test cases.
|
||
Fixes https://bugs.gnu.org/71803
|
||
|
||
2024-06-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: document the c-maybe quoting style
|
||
* doc/coreutils.texi (ls invocation): Document the "c-maybe"
|
||
--quoting-style, which was added as an option in 2008.
|
||
Reported at https://bugs.debian.org/1074334
|
||
|
||
2024-06-25 Bruno Haible <bruno@clisp.org>
|
||
|
||
stat: reactivate a translator comment (lost on 2012-01-09)
|
||
* src/stat.c (default_format): Move translator comment to immediately
|
||
precede the _() invocation.
|
||
|
||
2024-06-01 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: improve ERE in sc_tests_list_consistency
|
||
The ERE used lacks the grouping of the extensions and therefore would
|
||
also match files where the first two patterns are not at the end of
|
||
the line:
|
||
grep -E '\.sh|\.pl|\.xpl$'
|
||
|
||
* cfg.mk (sc_tests_list_consistency): Add grouping (...) around the
|
||
sub-patterns. While at it, also remove the redundant escaping, i.e.,
|
||
\$$ -> $$ to be consistent with the rest of this file.
|
||
|
||
2024-05-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
stat,tail: sync with latest Linux file systems
|
||
* src/stat.c (human_fstype): Rename "FUSEBLK" to "FUSE" to sync with
|
||
kernel adjustments. Add "bcachefs", and "pidfs". Both are local,
|
||
with the latter being similar to "proc" which is also local.
|
||
* NEWS: Mention the change in behavior, and the improvement.
|
||
|
||
2024-05-24 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: improve sorting doc
|
||
Problem reported by Dan Jaobson (Bug#71171).
|
||
* doc/coreutils.texi: Clarify that directory entries are sorted,
|
||
not command-line arguments.
|
||
* src/ls.c (usage): Be less chatty about -U and
|
||
about --group-directories-first.
|
||
|
||
2024-05-22 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: cksum: extend with --status, --ignore-missing and --warn
|
||
* tests/cksum/cksum-c.sh: Add test cases for these option combinations.
|
||
|
||
2024-05-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: fix build failure in --enable-single-binary mode
|
||
* src/local.mk: Avoid overriding automake generated DEPENDENCIES,
|
||
so that it applies its adjustments to LDADD to avoid propagating
|
||
flags (like -Wl,-rpath) into make targets. This was seen on FreeBSD
|
||
where LIBINTL is set to:
|
||
/usr/local/lib/libintl.so -Wl,-rpath -Wl,/usr/local/lib
|
||
Instead let automake generate a sanitized src_coreutils_DEPENDENCIES
|
||
(based on LDADD), which we then augment with the EXTRA_... variable.
|
||
|
||
maint: add lib/stdbit.h to .gitignore
|
||
Following recent gnulib update
|
||
|
||
2024-05-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
stty: port test to Alpine Linux
|
||
* tests/stty/stty.sh: Port to Alpine Linux 3.20.0_rc1, whose musl
|
||
implementation’s printf invokes ioctl on stdout, so --version
|
||
does an ioctl.
|
||
|
||
2024-05-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: skip some alloc tests on ZFS
|
||
* tests/dd/sparse.sh: Skip some tests on ZFS.
|
||
|
||
maint: prefer stdbit.h to count-leading-zeros.h
|
||
<stdbit.h> is in C23 and should be more portable in the long run,
|
||
now that Gnulib supports it.
|
||
* bootstrap.conf (gnulib_modules): Remove count-leading-zeros.
|
||
Add stdc_leading_zeros.
|
||
* gl/lib/randperm.c, src/ioblksize.h:
|
||
Include stdbit.h instead of count-leading-zeros.h.
|
||
* gl/lib/randperm.c (floor_lg): Remove; no longer needed.
|
||
(randperm_bound): Use stdc_bit_width instead of floor_lg;
|
||
* gl/modules/randperm (Depends-on): Remove count-leading-zeros.
|
||
Add stdc_bit_width.
|
||
* src/ioblksize.h (io_blksize): Use stdc_leading_zeros_ull
|
||
instead of count_leading_zeros_ll.
|
||
|
||
maint: port test warnings to GCC 14
|
||
* configure.ac: Disable GCC 14’s -Wmissing-variable-declarations
|
||
in the test directory, as it’s not worth the aggravation there.
|
||
Likewise for GCC's -Wsuggest-attribute=cold.
|
||
|
||
maint: update bootstrap from Gnulib
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
sort: better -Wmissing-variable-declarations
|
||
* src/sort.c: Ignore -Wmissing-variable-declarations only
|
||
with GCC 14 and newer, since it didn’t exist earlier.
|
||
Ignore the warning only when including md5.h, where it
|
||
needs to be ignored, as the warning might be useful elsewhere.
|
||
|
||
cksum: improve API consistency checking
|
||
* src/cksum.c (main) [CRCTAB]: Generate updated crctab.c (see below).
|
||
* src/crctab.c: Include cksum.h, to check consistency
|
||
between decl and defn. Include stdio.h since cksum.h needs it.
|
||
|
||
2024-05-15 Nikolaos Chatzikonstantinou <nchatz314@gmail.com>
|
||
|
||
doc: improve the man page for sleep
|
||
This patch is part of work done for a project from Google Summer of
|
||
Code, see the project details at
|
||
<https://summerofcode.withgoogle.com/programs/2024/projects/E9Jp7RUx>.
|
||
|
||
* src/sleep.c (usage): Directly mention the floating-point option,
|
||
which is typical for sleeping milliseconds.
|
||
Also reorganize the text to be 3 lines rather than 4.
|
||
|
||
2024-05-11 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: cksum: add incorrect data to verify --check & --strict
|
||
* tests/cksum/cksum-c.sh: Add test cases.
|
||
|
||
2024-05-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
wc: increase I/O size from 16 KiB to 256KiB
|
||
Similarly to commit v9.4-143-gfcfba90d0,
|
||
and enabled for AVX by commit v9.5-25-g0e4450103.
|
||
|
||
This was seen to improve AVX performance by about 10%
|
||
on an AMD 7800X3D (Ryzen 7 (2023)) CPU,
|
||
while having neutral AVX performance,
|
||
on an Intel i7-5600U (Broadwell-U (2015)) CPU.
|
||
With avx not enabled, this gives about a 3% performance boost,
|
||
on an Intel i7-5600U.
|
||
|
||
* src/wc.c: Use the centrally configured optimum buffer size.
|
||
* src/wc_avx2.c: Likewise.
|
||
* NEWS: Mention the change in performance.
|
||
|
||
2024-05-09 Evgeny Nizhibitsky <nizhibitsky@gmail.com>
|
||
|
||
wc: simplify and generalize AVX code
|
||
* src/wc_avx2.c (wc_lines_avx2): Change from
|
||
_mm256_sub_epi8() + _mm256_sad_epu8() to
|
||
_mm256_movemask_epi8() + __builtin_popcount().
|
||
This will allow adjusting the I/O size above 16KiB.
|
||
* configure.ac: Align check with routines used in wc_avx2.c.
|
||
|
||
2024-05-07 Bruce Jerrick <bmj001@gmail.com>
|
||
|
||
doc: pwd: improve the -P help description
|
||
* src/pwd.c (usage): Say that symlinks are resolved,
|
||
rather than the somewhat ambiguous "avoided".
|
||
|
||
2024-05-05 Nikolay Nechaev <Nikolay_Nechaev@mail.ru>
|
||
|
||
maint: rename octhexdigits macros
|
||
isodigit -> isoct; octtobin -> fromoct; hextobin -> fromhex.
|
||
* src/octhexdigits.h: Rename macros.
|
||
* src/stat.c, src/printf.c: Use new macros.
|
||
|
||
maint: factor out common macros of stat and printf
|
||
* src/octhexdigits.h: isodigit, hextobin, octtobin macros.
|
||
* src/stat.c, src/printf.c: Use octhexdigits.h.
|
||
* src/local.mk: Corresponding adjustments.
|
||
|
||
maint: factor out the common show_date functionality
|
||
* src/show-date.{h,c}: Declaration and definition of show_date.
|
||
* src/du.c: Wse the common show_date instead of the previous local
|
||
function.
|
||
* src/date.c: Wse the common show_date via a wrapper show_date_helper.
|
||
* src/local.mk: Corresponding adjustments.
|
||
|
||
2024-05-04 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
cksum: add tests to verify the presence of "*"
|
||
* tests/cksum/cksum-a.sh: Add a test case.
|
||
|
||
2024-05-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp: actually support --update=none-fail
|
||
* src/cp.c: Add the entries for the --update=none-fail option.
|
||
* tests/mv/update.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/70727
|
||
|
||
2024-05-01 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: pacify GCC 14 -Wmissing-variable-declarations
|
||
* src/local.mk: Include extern decl for 'Version'.
|
||
* src/crctab.c (crctab): Add an extern decl.
|
||
* src/cksum.c: Generate an extern decl.
|
||
|
||
2024-05-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: pacify GCC 14 -Wmissing-variable-declarations wrt md5.h
|
||
* src/sort.c: Use pragmas to avoid warnings with our
|
||
openssl adjustment and to minimize coupling with openssl.
|
||
|
||
maint: avoid syntax check failure with long lines
|
||
* cfk.mk: Exclude bootstrap from sc_long_lines
|
||
as it comes from gnulib.
|
||
|
||
2024-04-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: bootstrap with python gnulib-tool by default
|
||
* gnulib: Update to support bootstrapping with python by default.
|
||
* bootstrap: Sync with gnulib.
|
||
* cfg.mk: Don't force python implementation with `make world`,
|
||
rather rely on the auto selection of python if appropriate.
|
||
|
||
2024-04-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: sort: give example for sorting on the last field
|
||
* doc/coreutils.texi (sort invocation): Give a DSU example
|
||
for sorting names which may have a variable number of fields.
|
||
Addresses https://bugs.gnu.org/70532
|
||
|
||
build: provide way to bootstrap with python gnulib-tool
|
||
* cfg.mk: Add a new "world" default target so that one
|
||
can bootstrap (using the python implementation), configure,
|
||
and make, by using `make -f cfg.mk`.
|
||
* gnulib: Update to latest primarily to test the
|
||
bootstrap python implementation which is now in beta test.
|
||
* README-hacking: Document the `make -f cfg.mk` shortcut.
|
||
|
||
2024-04-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
tail: avoid infloop with -c on /dev/zero
|
||
Problem reported by Ionut Nicula in:
|
||
https://bugs.gnu.org/70477
|
||
* src/tail.c (tail_bytes): Do not loop forever on commands
|
||
like 'tail -c 4096 /dev/zero'.
|
||
* tests/tail/tail-c.sh: Test this fix.
|
||
|
||
2024-04-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: -f now means -a -U
|
||
Problem reported by Toby Kelsey <https://bugs.gnu.org/70418>.
|
||
* src/ls.c (decode_switches): -f now simply means -a -U.
|
||
(usage): Adjust to match.
|
||
|
||
2024-04-17 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: remove unnecessary stdbool.h include
|
||
* src/temp-stream.c: Don't include <stdbool.h> since it is defined in
|
||
config.h if the compiler does not support the C23 keyword.
|
||
|
||
2024-04-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
join: fix error message for -a and -v
|
||
* src/join.c (main): s/field/file/ in the error message
|
||
for -a and -v, introduced in TEXTUTILS-1_13-24-g6f63d53e1.
|
||
Reported at https://bugs.debian.org/1068864
|
||
|
||
2024-04-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: NEWS: mention sort being more efficient with /proc files
|
||
* NEWS: Mention the improvement in commit v9.5-6-g8ff390328
|
||
|
||
2024-04-06 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
split: don’t trust st_size on /proc files
|
||
* src/split.c (create): Don’t trust st_size == 0.
|
||
|
||
sort: don’t trust st_size on /proc files
|
||
Problem and fix reported by Takashi Kusumi in:
|
||
https://bugs.gnu.org/70231
|
||
* src/sort.c (sort_buffer_size): Don’t trust st_size == 0.
|
||
|
||
dd: don’t trust st_size on /proc/files
|
||
* src/dd.c (skip): Don’t trust st_size == 0.
|
||
|
||
cat: don’t trust st_size on /proc files
|
||
* src/cat.c (main):
|
||
Improve test for when copying will exhaust the output device.
|
||
Do not rely on st_size, which is unreliable in /proc.
|
||
Use lseek instead; this is good enough here.
|
||
* tests/cat/cat-self.sh: Test the relaxation of the heuristic
|
||
for self-copying.
|
||
|
||
2024-04-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest.
|
||
* NEWS: Document 2 bugs fixed.
|
||
|
||
2024-04-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: chown,chgrp: fix missing full stop in --help
|
||
* src/chown.c (usage): Add a missing full stop.
|
||
Fixes https://bugs.gnu.org/70126
|
||
|
||
2024-03-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 9.5
|
||
* NEWS: Record release date.
|
||
|
||
2024-03-27 Bruno Haible <bruno@clisp.org>
|
||
|
||
tests: od: avoid outputting undefined floating point values
|
||
od was seen to abort() on glibc on ia64 and m68k with the error:
|
||
Fatal glibc error: printf_fp.c:501 (__printf_fp_buffer_1):
|
||
assertion failed:
|
||
cy == 1 || (p.frac[p.fracsize - 2] == 0 && p.frac[0] == 0)
|
||
|
||
* tests/od/od-multiple-t.sh: Avoid outputting long double floats
|
||
to avoid undefined behavior. 'float' and 'double' are standardized
|
||
by IEEE 754 (except on Linux/m68k) and don't have undefined values.
|
||
|
||
2024-03-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update with gnulib fixes
|
||
* gnulib: Update to incorporate gnulib fixes
|
||
from Bruno Haible
|
||
|
||
tests: numfmt: fix false failures on some systems
|
||
* tests/misc/numfmt.pl: Verify that printf field width specs
|
||
count characters and not bytes before enabling locale tests.
|
||
This was seen on FreeBSD 14.0 and Solaris 11 OpenIndiana.
|
||
Reported by Bruno Haible
|
||
|
||
ls: avoid ENOENT from readdir() on FreeBSD 14
|
||
* src/ls.c (print_dir): readdir() on FreeBSD 14 was
|
||
seen to pass ENOENT through. ENOENT in this context
|
||
means "Directory unlinked but still open".
|
||
Reported by Bruno Haible with tests/ls/removed-directory.sh
|
||
|
||
2024-03-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure due to mismatched isblank()
|
||
There is a mismatch between isblank() used by tr and c32isblank() now
|
||
used by uniq on Solaris 11 OpenIndiana. isblank() was seen to return
|
||
true for non breaking space, while c32isblank() returned false.
|
||
Interestingly on Solaris, non breaking space is considered a blank
|
||
character, and isblank() and c32isblank() honor this in all locales.
|
||
|
||
* tests/uniq/uniq.pl: Adjust the blank check to use join(1) rather than
|
||
tr(1), as join uses the same blank determination routines as uniq(1).
|
||
|
||
2024-03-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp: with --no-preserve=mode ensure set-group-ID bits maintained on dirs
|
||
This issue was introduced in commit v8.19-145-g24ebca6
|
||
|
||
* src/copy.c (copy_internal): On systems that don't support ACLs,
|
||
the fallback default chmod done on directories should maintain
|
||
the set-group-ID, as that's generally auto-set by the system.
|
||
* NEWS: Mention the fix.
|
||
Reported by Bruno Haible on Alpine (with tests/cp/preserve-mode.sh)
|
||
|
||
2024-03-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure with partial locale info
|
||
* tests/misc/numfmt.pl: Some systems with the fr_FR.UTF-8
|
||
locale installed, do not have a thousands grouping character defined.
|
||
In this case we skip the locale tests which depend on a non empty
|
||
grouping character.
|
||
|
||
tests: avoid triggering obsolete tail option processing
|
||
* tests/ls/dired.sh: With 2 options, the latter is taken
|
||
as a file name on some systems. This avoids a false
|
||
failure on Solaris and FreeBSD at least.
|
||
|
||
tests: remove debugging from a test
|
||
* tests/ls/dired.sh: Remove temp debugging output.
|
||
|
||
tests: fix false failure on systems that can chmod symlinks
|
||
* tests/chmod/symlinks.sh: The count of adjusted modes was
|
||
one more on systems where symlink modes can be adjusted.
|
||
Therefore only include the non symlinks in the count.
|
||
|
||
2024-03-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix translation issue in chown/chgrp amalgamation
|
||
* src/chown-core.h (emit_from_option_description): The conditional
|
||
string composition here caused issues for translators.
|
||
Instead move to a more general description ...
|
||
(src/chown.c (usage): ... here.
|
||
Fixes https://bugs.gnu.org/69985
|
||
|
||
doc: fix various translation issues
|
||
src/chown.c (usage): Translate parameterized strings.
|
||
src/copy.c (copy_internal): Translate each part of ternary.
|
||
* src/cp.c (usage): Fix typo; s/exisiting/existing/.
|
||
|
||
test: avoid false failure with setgid directories
|
||
* tests/chmod/symlinks.sh: Ensure this new test is immune
|
||
to setgid directories by resetting modes with =777 rather than 777.
|
||
Also output more debugging in all failure cases.
|
||
|
||
tests: avoid false failure on new mv --exchange test
|
||
* tests/mv/mv-exchange.sh: Canonicalize different
|
||
"operation not supported" messages, so we can ignore correctly.
|
||
Reported by Bruno Haible on AIX, NetBSD, and OpenBSD.
|
||
|
||
doc: update THANKS related to env --argv0 option
|
||
* THANKS.in: Add Matheus who was central to the env --argv0
|
||
addition in commit v9.4-167-g193449b17.
|
||
|
||
2024-03-24 Stephane Chazelas <stephane@chazelas.org>
|
||
|
||
doc: ls: detail output format for device files
|
||
* doc/coreutils.texi (ls invocation): State that device numbers
|
||
are output, instead of file size.
|
||
|
||
2024-03-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove older ChangeLog items
|
||
* Makefile.am: Update the oldest documented version
|
||
to 8.31 which is now about 5 years old.
|
||
|
||
2024-03-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mv: treat --exchange more like non-exchange
|
||
Also, improve quality of diagnostics.
|
||
Problems/suggestions by Bernhard Voelker in
|
||
<https://bugs.gnu.org/69532#82>.
|
||
* src/copy.c (emit_verbose): New arg FORMAT. All uses changed,
|
||
to improve quality of diagnostics when --exchange is used.
|
||
(copy_internal): Don’t try to optimize --exchange so much; this
|
||
simplifies the code and keeps it closer to the non --exchange case.
|
||
|
||
cp,ln,mv: improve dir vs nondir diagnostics
|
||
* src/copy.c (copy_internal): Simplify logic for copying
|
||
from directory to non-directory or vice versa, and always
|
||
diagnose with both source and destination file names.
|
||
|
||
2024-03-22 Pádraig Brady <P@draigBrady.com>
|
||
|
||
env: add -a,--argv0 to set the first argument passed to exec
|
||
Using the shell's exec -a feature can be awkward
|
||
so add support for setting overriding argv[0].
|
||
This gives env full control over the arguments it passes.
|
||
|
||
* src/env.c: Accept -a,--argv0 and set argv[0] appropriately.
|
||
* tests/env/env.sh: Add test cases.
|
||
* doc/coreutils.texi (env invocation): Describe -a,--argv0.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2024-03-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: pr: give solution to expanding TABs in multicolumn output
|
||
* doc/coreutils.texi (pr invocation): Explicitly state that
|
||
multicolumn output will convert spaces to TABs, and show that
|
||
this can be undone with the `pr -t -e` or `expand` commands.
|
||
Suggested by Douglas McIlroy in https://bugs.gnu.org/69807
|
||
|
||
2024-03-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: clarify mv --exchange
|
||
In the manual, say it exchanges all data and metadata.
|
||
Suggested by Pádraig Brady in:
|
||
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69532#59
|
||
|
||
mv: new option --exchange
|
||
* src/copy.h (struct cp_options): New member 'exchange'.
|
||
* src/copy.c (copy_internal): Support the new member.
|
||
* src/mv.c (EXCHANGE_OPTION): New constant.
|
||
(long_options): Add --exchange.
|
||
(usage): Document --exchange.
|
||
(main): Support --exchange.
|
||
* tests/mv/mv-exchange.sh: New test case.
|
||
* tests/local.mk (all_tests): Add it.
|
||
|
||
2024-03-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
chmod: fix TOCTOU security issue with symlink replacement
|
||
This is an issue with -[H]R mode, where an attacker
|
||
may replace a traversed file with a symlink
|
||
between where we stat() the file and chmod() the file.
|
||
|
||
* src/chmod.c (process_file): Remove the first !S_ISLNK guard
|
||
as that's now just an optimization, and instead consistently
|
||
apply fchmodat() to files/symlinks. Ensure AT_SYMLINK_NOFOLLOW
|
||
is set when traversing in default (-H) mode.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/11108
|
||
|
||
2024-03-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
chmod: add support for -h, -H,-L,-P, --dereference options
|
||
There have been various requests to add -h to avoid following symlinks
|
||
for security reasons. This wasn't provided previously as chmod(1)
|
||
already ignored symlinks unless specified on the command line.
|
||
Note chmod defaults to -H mode rather than the chown default of -P,
|
||
as usually chown can work directly on symlinks and so defaults
|
||
to not traversing those specified on the command line.
|
||
Note FreeBSD chmod does default to -P mode, but we retain the -H mode
|
||
default also for compatibility with existing chmod behavior.
|
||
|
||
Adding -HLP will allow chmod to disable traversing CLI symlinks to dirs.
|
||
Adding -h will allow to disable following CLI symlinks to files/dirs,
|
||
also operating on all symlinks on systems that support that.
|
||
Adding --dereference will be significant with -H (the default). I.e.
|
||
symlinks to dirs not recursed, but symlinks are dereferenced.
|
||
Adding these options will also be consistent with chown(1), chgrp(1),
|
||
and chmod(1) on other systems.
|
||
|
||
Note since chmod(1) currently ignores symlinks by default,
|
||
and -h is primarily a mechanism to avoid following symlinks, rather than
|
||
for operating on the symlink itself, we make -h try to chmod a symlink,
|
||
but ignore ENOTSUP. In that way we're consistent with chown(1)
|
||
where it also ignores ENOTSUP for symlinks, and we don't fail when
|
||
trying to be extra secure with command line params.
|
||
|
||
* doc/coreutils.texi (chmod invocation): Reference the -H,-L,-P
|
||
descriptions, and adjust the corresponding macros to say
|
||
the default is -H or -P as appropriate.
|
||
Add --dereference and -h,--no-dereference descriptions.
|
||
* man/chmod.x: Adjust discussion of symlink handling.
|
||
* src/chmod.c (main): Accept new options and set
|
||
fts flags appropriately.
|
||
(process_file): Process / dereference symlinks as necessary.
|
||
* src/system.h (emit_symlink_recurse_options): A new function
|
||
refactored from chown.c and chmod.c usage().
|
||
* tests/chmod/symlinks.sh: New test for the new options.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2024-03-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: basenc: consistently check buffer bounds when encoding
|
||
* src/basenc.c (base16_encode, base2msbf_encode, base2lsbf_encode):
|
||
Ensure we don't overflow the output buffer, whose length is
|
||
passed in the OUTLEN parameter. This issue was flagged by clang
|
||
with -Wunused-but-set-parameter.
|
||
|
||
2024-03-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
pinky: disable location canonicalization by default
|
||
Behave like who(1) in requiring --lookup to enable this
|
||
often slow feature. pinky(1) is supposed to be lightweight after all.
|
||
|
||
* doc/coreutils.texi (who invocation): Adjust the description to no
|
||
longer reference dialup, and be more general about the still significant
|
||
delays.
|
||
(pinky invocation): Reference the same --lookup description.
|
||
* src/pinky.c (main): Accept --lookup to enable DNS lookups.
|
||
* NEWS: Mention the change in behavior.
|
||
Fixes https://bugs.debian.org/628815
|
||
|
||
2024-03-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix stale --dereference info for chown/chgrp
|
||
Following v5.2.1-679-g7e29ef8b8 symlinks specified on the command line
|
||
no longer induce an error if lchown() is not supported on the system.
|
||
|
||
* doc/coreutils.texi (chown invocation, chgrp invocation): Adjust
|
||
accordingly, and also use a macro to avoid duplication.
|
||
* src/chown-core.c: Use our more standard is_ENOTSUP() wrapper
|
||
in the code related to this.
|
||
|
||
2024-03-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2024-03-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: provide a cross-compiling default for 16 bit float checks
|
||
* configure.ac: Provide a conservative 16 bit float support default
|
||
when cross-compiling, to avoid configure failing in that case.
|
||
|
||
2024-03-13 Grisha Levit <grishalevit@gmail.com>
|
||
|
||
env,kill,timeout: support unnamed signals
|
||
Some signals with values less that the max signal number for the system
|
||
do not have defined names. For example, currently on amd64 Linux,
|
||
signals 32 and 33 do not have defined names, and Android has a wider
|
||
gap of undefined names where it reserves some realtime signals.
|
||
|
||
Previously the signal listing in env ended up reusing the name
|
||
of the last printed valid signal (the repeated HUP below):
|
||
|
||
$ env --list-signal-handling true
|
||
HUP ( 1): IGNORE
|
||
HUP (32): BLOCK
|
||
HUP (38): IGNORE
|
||
|
||
..and the corresponding signal numbers were rejected as operands for the
|
||
env, kill, and timeout commands.
|
||
|
||
This patch removes the requirement that sig2str returns 0 for a signal
|
||
number associated with an operand. This allows unnamed signals to be in
|
||
the sets `env' attempts to manipulate when a --*-signal option is used
|
||
with no argument, and kill(1) and timeout(1) to send such unnamed
|
||
signals.
|
||
|
||
* src/operand2sig.c (operand2sig): Drop signame argument, accept all
|
||
signal numbers <= SIGNUM_BOUND. All callers updated.
|
||
* src/env.c (parse_signal_action_params, reset_signal_handlers)
|
||
(parse_block_signal_params, set_signal_proc_mask)
|
||
(list_signal_handling): Accept all signal numbers <= SIGNUM_BOUND,
|
||
use SIG%d for printing if necessary.
|
||
* src/kill.c (list_signals, main): Likewise.
|
||
(send_signals): Check errno from kill(3) for bad signo.
|
||
* src/timeout.c (main): Update operand2sig call.
|
||
* tests/misc/kill.sh: Test listing all signal numbers.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2024-03-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: add caching for involved configure checks
|
||
* configure.ac: Wrap the following with AC_CACHE_VAL,
|
||
so that they can be cached / overridden. We use
|
||
the "utils_cv_" prefix as they're coreutils specific overrides.
|
||
utils_cv_avx2_intrinsic_exists,
|
||
utils_cv_brain_16_bit_supported,
|
||
utils_cv_ieee_16_bit_supported,
|
||
utils_cv_pclmul_intrinsic_exists,
|
||
utils_cv_stdbuf_supported.
|
||
|
||
2024-03-13 Grisha Levit <grishalevit@gmail.com>
|
||
|
||
build: strengthen 16 bit float support checks
|
||
Recent clang provides __bf16 on aarch64 but it is broken.
|
||
|
||
If built with -O0, the conversion is wrong:
|
||
|
||
$ printf '\x3F\x80' | od --end=big -An -tfB | tr -d ' '
|
||
1.875
|
||
|
||
If built with -O1 or higher, compilation fails:
|
||
|
||
fatal error: error in backend:
|
||
Cannot select: 0xb400007a58d29780: f32 = fp_extend 0xb40000...
|
||
0xb40000...: bf16,ch = CopyFromReg 0xb40000..., Register:bf16 %13
|
||
0xb40000...: bf16 = Register %13
|
||
In function: print_bfloat
|
||
|
||
The latter issue does not cause the existing configure test to fail
|
||
because the promotion is optimized out.
|
||
|
||
* configure.ac: Ensure 16 bit float promotion code does not get
|
||
optimized out, and produces an expected result.
|
||
|
||
2024-03-12 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
maint: prefer minmax.h instead of defining our own
|
||
* src/comm.c (min): Remove.
|
||
(compare_files): Use MIN which is referenced by system.h.
|
||
|
||
2024-03-12 Ville Skyttä <ville.skytta@iki.fi>
|
||
|
||
dircolors: add more archive extensions
|
||
* src/dircolors.hin: Add .apk (Alpine Linux/Android package); .drpm
|
||
(delta rpm); .egg, .pyz, and .whl (Python related); and .udeb (form of
|
||
.deb).
|
||
|
||
2024-03-12 Collin Funk <collin.funk1@gmail.com>
|
||
|
||
doc: add basic documentation for 'pinky'
|
||
* doc/coreutils.texi: Add 'pinky' under 'who'.
|
||
|
||
2024-03-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
timeout: fix narrow race in failing to kill processes
|
||
* src/timeout.c (main): Block cleanup signals earlier so that cleanup()
|
||
is not runnable until monitored_pid is in a deterministic state.
|
||
This ensures we always send a termination signal to the child
|
||
once it's forked.
|
||
* NEWS: Mention the bug fix.
|
||
Reported at https://github.com/coreutils/coreutils/issues/82
|
||
|
||
2024-03-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
timeout: fix race where we might kill arbitrary processes
|
||
* src/timeout.c (cleanup): Handle the case where monitored_pid
|
||
might be -1, which could happen if a signal was received
|
||
immediately after a failed fork() call. In that case it would
|
||
send the termination signal to all processes that the timeout
|
||
process has permission to send signals too.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2024-03-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: ensure appropriate "binary" mode with --untagged
|
||
* src/digest.c (main): If --binary was enabled with a previous --tag,
|
||
then reset the binary mode to auto select if --untagged then specified.
|
||
* tests/cksum/cksum-a.sh: Add a test case.
|
||
|
||
2024-03-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
mv: revert add --swap (-x) option
|
||
Since this functionality is recently available
|
||
in the exch(1) utility from util-linux,
|
||
it was thought best not to complicate mv with it.
|
||
|
||
This reverts commit 6cd2d5e5335b5c286ff39e154e9dd38ba6923775
|
||
|
||
2024-03-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: consistently validate --length attributes
|
||
* src/digest.c (main): Only validate the last used --length
|
||
for being a multiple of 8.
|
||
* tests/cksum/b2sum.sh: Add a test case.
|
||
Fixes https://bugs.gnu.org/69546
|
||
|
||
2024-03-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix spellings in NEWS
|
||
* NEWS: s/user/uses/; s/exisiting/existing/
|
||
|
||
2024-03-03 Petr Malat <oss@malat.biz>
|
||
|
||
mv: add --swap (-x) option to atomically swap 2 paths
|
||
renameat2() syscall allows atomically swapping 2 paths on one
|
||
file system. Expose this ability to the user with --swap.
|
||
|
||
* doc/coreutils.texi: Describe mv --swap option.
|
||
* src/mv.c (main): Support --swap.
|
||
* tests/mv/mv-swap.sh: Add test for mv -x.
|
||
* tests/local.mk: Reference new test.
|
||
* NEWS: Mention the new option.
|
||
|
||
2024-02-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cat,cp,mv,dd,install,split: set the default IO size to 256KiB
|
||
* src/ioblksize.h: Add updated test results and
|
||
increase value from 128KiB to 256KiB, which was last
|
||
updated 10 years ago.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2024-02-27 lvgenggeng <lvgenggeng@uniontech.com>
|
||
|
||
mktemp: fix template diagnostic with --suffix
|
||
* src/mktemp.c (main): When --suffix is specified, TEMPLATE
|
||
points to the meraged buffer DEST_NAME. As X's in the suffix are
|
||
not significant to the generated random characters, the diagnostic
|
||
for too few X's should only refer to the template portion.
|
||
* tests/misc/mktemp.pl: Adjust accordingly.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2024-02-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: move join tests to their own directory
|
||
* tests/misc/join-utf8.sh: Move to tests/join
|
||
since there are now multiple join tests.
|
||
* tests/misc/join.pl: Likewise.
|
||
|
||
tests: simplify treatment of the $LOCALE_FR_UTF8 variable
|
||
* tests/df/problematic-chars.sh: Rely on gnulib setting
|
||
this to "none" where not usable.
|
||
* tests/misc/sleep.sh: Likewise.
|
||
* tests/printf/printf-mb.sh: Likewise.
|
||
* tests/printf/printf-quote.sh: Likewise.
|
||
* tests/sort/sort-debug-keys.sh: Likewise.
|
||
|
||
2024-02-27 Bruno Haible <bruno@clisp.org>
|
||
|
||
join: avoid test failure on systems with no French UTF-8 locale
|
||
* tests/misc/join-utf8.sh: Test the value of LOCALE_FR_UTF8 against
|
||
'none', not against a missing value.
|
||
Fixes https://bugs.gnu.org/69418
|
||
|
||
sort: make the startup time optimization effective on glibc < 2.34
|
||
* configure.ac: Test where to find the dlopen function. Set LIB_DL.
|
||
Use it in the DLOPEN_LIBCRYPTO test.
|
||
* src/local.mk (src_sort_LDADD): Add $(LIB_DL).
|
||
|
||
2024-02-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: improve libcrypto library detection
|
||
* configure.ac: Match literal '.' in the file name
|
||
to avoid potential mismatches with similarly named libs.
|
||
Reported by Andreas Schwab
|
||
|
||
2024-02-26 Aearil <aearil@paranoici.org>
|
||
|
||
wc: fix -w with breaking space over UCHAR_MAX
|
||
* src/wc.c (wc): Fix regression introduced in commit v9.4-48-gf40c6b5cf.
|
||
* tests/wc/wc-nbsh.sh: Add test cases for "standard" spaces.
|
||
Fixes https://bugs.gnu.org/69369
|
||
|
||
2024-02-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp,mv: add --update=none-fail to fail if existing files
|
||
* src/cp.c (main): Add support for --update=none-fail to provide the
|
||
functionality of diagnosing files in the destination,
|
||
and exiting with failure status.
|
||
(usage): Mark -n as deprecated.
|
||
* src/mv.c: Likewise.
|
||
* src/copy.h: Add UPDATE_NONE_FAIL definition.
|
||
* src/system.h (emit_update_parameters_note): Add --update=none-fail
|
||
description.
|
||
* doc/coreutils.texi (cp invocation): Likewise.
|
||
Also mention why -n is deprecated.
|
||
* tests/mv/update.sh: Add a test case, including precedence
|
||
with -n and other --update options.
|
||
* tests/cp/cp-i.sh: Verify that --backup and --update=none{,-fail}
|
||
are mutually exclusive.
|
||
* tests/mv/mv-n.sh: Likewise.
|
||
* NEWS: Mention the new feature.
|
||
Addresses https://bugs.gnu.org/62572
|
||
|
||
cp,mv: reinstate that -n exits with success if files skipped
|
||
* src/cp.c (main): Adjust so that -n will exit success if skipped files.
|
||
* src/mv.c (main): Likewise.
|
||
* doc/coreutils.texi (cp invocation): Adjust the description of -n.
|
||
* src/system.h (emit_update_parameters_note): Adjust --update=none
|
||
comparison.
|
||
* tests/cp/cp-i.sh: Adjust -n exit status checks.
|
||
* tests/mv/mv-n.sh: Likewise.
|
||
* NEWS: Mention the change in behavior.
|
||
Fixes https://bugs.gnu.org/62572
|
||
|
||
2024-02-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: fix libcrypto version linked by sort at runtime
|
||
One should link the versioned lib at runtime,
|
||
and the unversioned lib at build time,
|
||
as the unversioned lib may not be installed,
|
||
and better couples the binary with the required version.
|
||
|
||
* configure.ac: Define LIBCRYPTO_SONAME, determined from
|
||
the test binary linked with -lcrypto. Also document
|
||
why we use SHA512() in the check, rather than MD5().
|
||
* src/sort.c (link_libcrypto): Use the versioned lib in dlopen().
|
||
|
||
2024-02-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid sc_tight_scope failure in sort.c
|
||
* cfg.mk: Exclude the ptr_MD5_* symbols added in
|
||
commit v9.4-130-g7f57ac2d2, as there is no way
|
||
to declare these static given they way they're defined.
|
||
|
||
2024-02-26 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: mention -lcrypto change in NEWS
|
||
|
||
sort: dynamically link -lcrypto if -R
|
||
This saves time in the usual case, which does not need -lcrypto.
|
||
* configure.ac (DLOPEN_LIBCRYPTO): New macro.
|
||
* src/sort.c [DLOPEN_LIBCRYPTO && HAVE_OPENSSL_MD5]: New macros
|
||
MD5_Init, MD5_Update, MD5_Final. Include "md5.h" after defining
|
||
them. Include <dlfcn.h>, and define new functions link_failure
|
||
and symbol_address.
|
||
(link_libcrypto): New function.
|
||
(random_md5_state_init): Call it before using crypto functions.
|
||
|
||
doc: de-“note” the documentation
|
||
* doc/coreutils.texi, man/readlink.x, man/runcon.x:
|
||
* src/comm.c (usage):
|
||
* src/digest.c (usage):
|
||
* src/echo.c (usage):
|
||
* src/join.c (usage):
|
||
* src/ln.c (usage):
|
||
* src/rm.c (usage):
|
||
* src/stat.c (usage):
|
||
* src/system.h (USAGE_BUILTIN_WARNING):
|
||
* src/test.c (usage):
|
||
* src/touch.c (usage):
|
||
* src/uniq.c (usage):
|
||
Rewrite to avoid most uses of “Note that” and similar wording.
|
||
These circumlocutions are rarely needed, and avoiding them
|
||
improves readability and lessens preaching.
|
||
|
||
2024-02-22 Daan De Meyer <daan.j.demeyer@gmail.com>
|
||
|
||
cp: add --keep-directory-symlink option
|
||
When recursively copying files into OS trees, it often happens that
|
||
some subdirectory of the source directory is a symlink in the target
|
||
directory. Currently, cp will fail in that scenario with the error:
|
||
|
||
"cannot overwrite non-directory %s with directory %s"
|
||
|
||
However, we'd like cp in this scenario to follow the destination
|
||
directory symlink and copy the files into the symlinked directory
|
||
instead. Let's support this by adding a new option
|
||
--keep-directory-symlink that makes cp follow destination directory
|
||
symlinks.
|
||
|
||
We name the option --keep-directory-symlink to keep consistent with
|
||
tar which has the same option with the same effect.
|
||
|
||
* doc/coreutils.texi (cp invocation): Describe the new option.
|
||
* src/copy.h: Add the new setting.
|
||
* src/copy.h: Adjust to follow symlinks if setting enabled.
|
||
* src/cp.c (usage): Describe the new option.
|
||
(main): Accept the new option.
|
||
* tests/cp/keep-directory-symlink.sh: A new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2024-02-19 Michel Lind <michel@michel-slm.name>
|
||
|
||
dircolors: update list of archive file extensions
|
||
* src/dircolors.hin: Sort archive section by extension.
|
||
Treat .crate (Rust archives) as archive files
|
||
(they're essentially tar.gz files).
|
||
|
||
2024-02-19 Collin Funk <collin.funk1@gmail.com> (tiny change)
|
||
|
||
maint: prefer #include <...> for gnulib substitute headers
|
||
* src/shuf.c: Change #include "getopt.h" to #include <getopt.h>.
|
||
* src/stat.c: Change #include "getopt.h" to #include <getopt.h>.
|
||
* src/system.h: Change #include "error.h" to #include <error.h>.
|
||
|
||
2024-02-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: add '[' to the info index
|
||
* doc/coreutils.texi (test invocation): Add '[' to the index.
|
||
|
||
2024-02-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
nohup: document GCC bug number
|
||
* src/nohup.c: Add GCC bug number to comment.
|
||
|
||
ls: remove unnecessary pragmas
|
||
* src/ls.c (decode_switches): Remove pragmas. They are no longer
|
||
needed to pacify GCC 13.2.1 with --enable-gcc-checking, and there’s
|
||
little point keeping them around for older GCC versions.
|
||
|
||
maint: update GCC version comment
|
||
* src/copy.c: Update comment.
|
||
|
||
maint: document fix for GCC bug 109628
|
||
* src/fmt.c [14 <= __GNUC__]: Stop using pragma workaround,
|
||
as the GCC folks say the bug is no longer present in GCC 14.
|
||
|
||
maint: remove unneeded suggest-attributes pragmas
|
||
* gl/lib/fadvise.c: Remove pragma that works around GCC bug 83559
|
||
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83559>.
|
||
This bug was fixed in GCC 9, and we needn’t worry about
|
||
--enable-gcc-warnings for compilers that old.
|
||
* src/test.c: Likewise.
|
||
|
||
2024-02-17 Greg Wooledge <greg@wooledge.org>
|
||
|
||
doc: fix typo in shred example
|
||
* doc/coreutils.texi (shred invocation): Fix the example
|
||
to correctly close file descriptor 3.
|
||
* THANKS.in: Remove old email since now recorded in repo history.
|
||
Reported at https://bugs.debian.org/1063837
|
||
|
||
2024-02-07 Collin Funk <collin.funk1@gmail.com> (tiny change)
|
||
|
||
maint: avoid -Wshadow warning under clang
|
||
* src/env.c (parse_signal_action_params, parse_signal_block_params):
|
||
Rename OPTARG to ARG so that it does not conflict with OPTARG used by
|
||
getopt.
|
||
|
||
2024-02-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: fix od build on clang < 17
|
||
* configure.ac: Ensure the compiler can promote 16 bit floating point
|
||
types to float, before enabling that code in od. This was an issue
|
||
with clang 16 at least.
|
||
* src/od.c: Adjust for the new defines.
|
||
* tests/od/od-float.sh: Likewise. Also port to the dash shell,
|
||
whose inbuilt printf doesn't support hex escapes.
|
||
|
||
2024-02-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
od: support half precision floating point
|
||
Rely on compiler support for _Float16 and __bf16
|
||
to support -fH and -fB formats respectively.
|
||
I.e. IEEE 16 bit, and brain 16 bit floats respectively.
|
||
Modern GCC and LLVM compilers support both types.
|
||
|
||
clang-sect=half-precision-floating-point
|
||
https://gcc.gnu.org/onlinedocs/gcc/Half-Precision.html
|
||
https://clang.llvm.org/docs/LanguageExtensions.html#$clang-sect
|
||
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0192r4.html
|
||
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1467r9.html
|
||
|
||
This was tested on:
|
||
gcc 13, clang 17 x86 (Both types supported)
|
||
gcc 7 aarch64 (Only -fH supported)
|
||
gcc 13 ppc(be) (Neither supported. Both will be with GCC 14)
|
||
|
||
* src/od.c: Support -tf2 or -tfH to print IEEE 16 bit floating point,
|
||
or -tfB to print Brain 16 bit floating point.
|
||
* configure.ac: Check for _Float16 and __bf16 types.
|
||
* doc/coreutils.texi (od invocation): Mention the new -f types.
|
||
* tests/od/od-float.sh: Add test cases.
|
||
* NEWS: Mention the new feature.
|
||
Addresses https://bugs.gnu.org/68871
|
||
|
||
2024-01-29 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
seq: say why not ‘x += step’
|
||
* src/seq.c (print_numbers): Add comment.
|
||
|
||
2024-01-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: split -C: test and document a heap overflow
|
||
This was introduced in coreutils 9.2 through commit v9.1-184-g40bf1591b,
|
||
and was fixed in coreutils 9.5 through commit v9.4-111-gc4c5ed8f4.
|
||
This issue has been assigned CVE-2024-0684.
|
||
|
||
* NEWS: Mention the bug fix.
|
||
* tests/split/line-bytes.sh: Add a test case.
|
||
Reported by Valentin Metz.
|
||
|
||
2024-01-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: make ulimit -v interact better with ASAN
|
||
ulimit -v is generally not supported with ASAN, giving errors like:
|
||
"ReserveShadowMemoryRange failed while trying to map 0x... bytes.
|
||
Perhaps you're using ulimit -v"
|
||
|
||
* tests/cp/link-heap.sh: Mention ASAN as a possible reason for skipping.
|
||
* tests/csplit/csplit-heap.sh: Likewise.
|
||
* tests/cut/cut-huge-range.sh: Likewise.
|
||
* tests/dd/no-allocate.sh: Likewise.
|
||
* tests/printf/printf-surprise.sh: Likewise.
|
||
* tests/rm/many-dir-entries-vs-OOM.sh: Likewise.
|
||
* tests/head/head-c.sh: Only skip the part of the test needing ulimit.
|
||
* tests/split/line-bytes.sh: Likewise.
|
||
|
||
2024-01-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
split: do not shrink hold buffer
|
||
* src/split.c (line_bytes_split): Do not shrink hold buffer.
|
||
If it’s large for this batch it’s likely to be large for the next
|
||
batch, and for ‘split’ it’s not worth the complexity/CPU hassle to
|
||
shrink it. Do not assume hold_size can be bufsize.
|
||
|
||
2024-01-10 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: ls: add a test to verify that '+' is added
|
||
* tests/ls/acl.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
|
||
2024-01-06 Samuel Tardieu <sam@rfc1149.net>
|
||
|
||
maint: add attributes to two functions without side effects
|
||
* src/date.c (res_width): This function computes its result solely
|
||
from the value of its parameter and qualifies for the const attribute.
|
||
* src/tee.c (get_next_out): This function has no side effect and
|
||
qualifies for the pure attribute.
|
||
* THANKS.in: Remove duplicate now that author has a commit in the repo.
|
||
|
||
Those two functions were flagged by GCC 12.3.0,
|
||
though not by GCC 13.2.1.
|
||
|
||
2024-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: update all copyright year number ranges
|
||
Update to latest gnulib with new copyright year.
|
||
Run "make update-copyright" and then...
|
||
|
||
* gnulib: Update included in this commit as copyright years
|
||
are the only change from the previous gnulib commit.
|
||
* tests/init.sh: Sync with gnulib to pick up copyright year.
|
||
* bootstrap: Manually update copyright year,
|
||
until we fully sync with gnulib at a later stage.
|
||
* tests/sample-test: Adjust to use the single most recent year.
|
||
|
||
2024-01-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: pacify recent clang better
|
||
* configure.ac: Clang now seems to have -Wformat-extra-args,
|
||
-Wimplicit-const-int-float-conversion, and
|
||
-Wtautological-constant-out-of-range-compare on by default,
|
||
so disable them even if --enable-gcc-warnings is not used.
|
||
Rely on Gnulib’s check for clang rather than rolling our own.
|
||
|
||
maint: pacify clang -Winclude-next-absolute-path
|
||
* gl/lib/xdectoint.c: Use #include <...> instead of #include "...".
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
ls: omit bad_cast
|
||
* src/ls.c (decode_switches): Declare some local vars to be
|
||
char const *, not char *, and omit unnecessary bad_cast calls.
|
||
|
||
split: omit bad_cast
|
||
* src/split.c (infile): Now char const *, not char *.
|
||
(main): Omit unnecessary bad_cast calls.
|
||
|
||
2023-12-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
sort: fix thousands grouping handling on single byte locales
|
||
* gl/lib/strnumcmp-in.h (numcompare): After commit v9.0-8-g6cafb122f,
|
||
we need to treat characters as signed to avoid invalid comparisons
|
||
between negative integers and unsigned characters.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
tests: numfmt: fix test related to lower case 'k' SI unit
|
||
* tests/misc/numfmt.pl: Following on from v9.4-86-g615167cc4,
|
||
adjust this test accordingly. This test was being skipped
|
||
on some systems, and so only noticed now.
|
||
Reported by Jim Meyering.
|
||
|
||
tests: run locale tests on more systems
|
||
* tests/misc/numfmt.pl: Determine the thousands grouping character
|
||
in use, rather than skipping locale tests when it's not a space.
|
||
For example fr_FR.UTF-8 uses "NARROW NO-BREAK SPACE" as the grouping
|
||
char on modern glibc systems at least.
|
||
* tests/sort/sort-h-thousands-sep.sh: Likewise.
|
||
|
||
maint: distribute new header from previous commit
|
||
* src/local.mk: Reference the new header, so it's distributed.
|
||
|
||
2023-12-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: merge chgrp and chown sources
|
||
chown is a close superset of chgrp functionality,
|
||
so merge sources to avoid unwanted divergence in future.
|
||
This removes about 300 lines in chgrp.c
|
||
|
||
* build-aux/gen-single-binary.sh: Generate new rules for chgrp.
|
||
* cfg.mk: Exclude new wrappers.
|
||
* po/POTFILES.in: Remove chgrp.c
|
||
* src/chgrp.c: Remove.
|
||
* src/chown-chgrp.c: New wrapper.
|
||
* src/chown-chown.c: Likewise.
|
||
* src/chown.c (main): Prepend ':' for chgrp(1).
|
||
* src/chown.h: Define both operating modes.
|
||
(usage): Adjust depending on utility being called.
|
||
* src/coreutils-chgrp.c: Likewise.
|
||
* src/local.mk: Reference new wrappers.
|
||
|
||
2023-12-19 Christian Göttsche <cgzones@googlemail.com>
|
||
|
||
copy,install: avoid unnecessary security context translations
|
||
Do not perform SELinux context translation for operations not involving
|
||
user input or output. Context translation converts MCS/MLS labels into
|
||
human readable form, which is useful for user facing applications like
|
||
ls(1) or the --context=CTX argument of cp(1).
|
||
|
||
* src/copy.c (set_process_security_ctx): Use raw selinux variants.
|
||
* src/install.c (need_copy): Likewise.
|
||
(setdefaultfilecon): Likewise.
|
||
* src/selinux.c (computecon): Likewise.
|
||
(defaultcon): Likewise.
|
||
* tests/cp/no-ctx.sh: Add raw variants to preload lib.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2023-12-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib to latest
|
||
* gnulib: Primarily to get raw selinux wrappers
|
||
|
||
2023-12-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid false positive warning with newer gcc
|
||
* src/pr.c (read_line): GCC 13.2.1 can't discern that CHARS
|
||
is not used with '\n', so avoid the -Werror=maybe-uninitialized
|
||
issue in dev builds.
|
||
|
||
doc: cp --no-clobber: improve documentation
|
||
* doc/coreutils.texi (cp invocation): Reference the related --update
|
||
option, like we had already done in mv invocation.
|
||
* src/cp.c (usage): State clearly what --no-clobber does,
|
||
indicating it's protection focused, rather than being update focused.
|
||
|
||
2023-12-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
chgrp: add --from parameter similar to chown
|
||
* doc/coreutils.texi (chown invocation): Convert --from option
|
||
description to a macro and call from ...
|
||
(chgrp description): ... here.
|
||
* src/chown-core.h (emit_from_option_description): A new function
|
||
refactored from ...
|
||
* src/chown.c (usage): ... here, and called from ...
|
||
* src/chgrp.c (usage): ... here.
|
||
(main): Accept the --from option as chown(1) does.
|
||
* po/POTFILES.in: Add chown-core.h as now translated.
|
||
* tests/chown/basic.sh: Decouple the root user from id 0.
|
||
* tests/chgrp/from.sh: A new test largely based on chown/basic.sh.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the new feature.
|
||
Suggested by Ed Neville.
|
||
|
||
2023-12-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: remove obsolete AC_PROG_GCC_TRADITIONAL
|
||
* configure.ac: Remove obsolete macro call.
|
||
Recent autoconf warns that it is obsolete.
|
||
AC_PROG_CPP sets up the -traditional-cpp option if required.
|
||
GCC ignores -traditional since commit f458d1d5 (2002).
|
||
Fixes https://bugs.gnu.org/67756
|
||
|
||
2023-12-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: ls: fix regression in -f description
|
||
The description of -f regressed in coreutils 9.0
|
||
|
||
* doc/coreutils.texi (ls invocation): Detail which options
|
||
are enabled/disabled with -f.
|
||
* src/ls.c (usage): Likewise.
|
||
(decode_switches): Update comments.
|
||
Fixes https://bugs.gnu.org/67765
|
||
|
||
2023-12-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: add list/obstack.h to .gitignore
|
||
Following recent gnulib update
|
||
|
||
2023-12-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* bootstrap: Copy from latest Gnulib,
|
||
to fix --bootstrap-sync with other options.
|
||
|
||
2023-12-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: touch: clarify --time description in man page
|
||
* src/touch.c (usage): Reorganise the description to be similar to
|
||
the format used for the ls --time description, which formats better
|
||
when converted to a man page. Also separate the description
|
||
to allow for more granular translations.
|
||
Fixes https://bugs.gnu.org/67656
|
||
|
||
2023-12-01 dann frazier <dann.frazier@canonical.com>
|
||
|
||
tail: fix tailing sysfs files where PAGE_SIZE > BUFSIZ
|
||
* src/tail.c (file_lines): Ensure we use a buffer size >= PAGE_SIZE when
|
||
searching backwards to avoid seeking within a file,
|
||
which on sysfs files is accepted but also returns no data.
|
||
* tests/tail/tail-sysfs.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/67490
|
||
|
||
2023-11-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
numfmt: support lowercase 'k' for Kilo and Kibi
|
||
For consistency with the "SI" standard, and with other coreutils
|
||
which output a lowercase 'k' in "SI" mode.
|
||
|
||
* src/numfmt.c (suffix_power): Treat 'k' like 'K' on input.
|
||
(double_to_human): Output lowercase 'k' in SI mode.
|
||
(usage): Adjust accordingly.
|
||
* doc/coreutils.texi: Mention 'k' accepted, and printed in SI mode.
|
||
* tests/misc/numfmt.pl: Adjust accordingly.
|
||
* NEWS: Mention the change in behavior.
|
||
Fixes https://bugs.gnu.org/47103
|
||
|
||
2023-11-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
uniq: fix bug with -w in multibyte locales
|
||
-w counted bytes not characters, which is wrong in multibyte locales.
|
||
This bug exists even in Fedora, which is why the recently-added
|
||
test cases from Fedora didn’t catch it.
|
||
* src/uniq.c (find_field): New arg PLEN. All callers changed.
|
||
Compute length of field correctly in multi-byte locales.
|
||
(different): Don’t worry about check_chars; find_field now does that.
|
||
* tests/uniq/uniq.pl: Test for this bug.
|
||
|
||
tests: omit inapplicable test code
|
||
* tests/misc/join.pl, tests/uniq/uniq.pl:
|
||
Remove test for "invalid byte, character or field list" message
|
||
that is not generated.
|
||
|
||
uniq: change macro to function
|
||
* src/uniq.c (swap_lines): New static function, replacing
|
||
the old SWAP_LINES macro. These days this is just as fast.
|
||
All uses changed.
|
||
|
||
uniq: prefer static init
|
||
* src/uniq.c (skip_fields, skip_chars, check_chars, count_occurrences)
|
||
(output_unique, output_first_repeated, output_later_repeated)
|
||
(delimit_groups): Initialize statically, rather than in ‘main’.
|
||
This shrinks the executable a bit.
|
||
|
||
uniq: simplify and fix unlikely bug by using bool
|
||
* src/uniq.c (enum countmode): Remove this type.
|
||
(count_occurrences): New static var, replacing the old countmode,
|
||
and of type boolean instead of a two-value enum type that was
|
||
confusing (and which caused a hard-to-test bug when the count
|
||
exceeded INTMAX_MAX - 1). All uses changed.
|
||
|
||
2023-11-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
uniq: prefer signed integers
|
||
* src/uniq.c (skip_fields, skip_chars, check_chars, size_opt)
|
||
(find_field, different, writeline, check_file, main):
|
||
Prefer signed to unsigned integer types, since this allows
|
||
for better runtime checking with -fsanitize=undefined.
|
||
|
||
maint: DECIMAL_DIGIT_ACCUMULATE uses stdckdint.h
|
||
* src/system.h: Include <stdckdint.h>, since the new
|
||
DECIMAL_DIGIT_ACCUMULATE uses it.
|
||
Do not include stdckdint.h from files that also include system.h.
|
||
(DECIMAL_DIGIT_ACCUMULATE): Omit last arg, which is no longer needed.
|
||
Reimplement by using C23-style stdckdint.h’s ckd_mul and ckd_add,
|
||
as that’s more standard and is more likely to generate better code.
|
||
|
||
2023-11-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
pinky: fix string size calculation
|
||
* src/pinky.c (count_ampersands): Simplify and return idx_t.
|
||
(create_fullname): Compute proper destination string size,
|
||
basically, by adding (ulen - 1) * ampersands rather than ulen *
|
||
(ampersands - 1). Problem found on CHERI-64.
|
||
|
||
maint: port randread to FreeBSD 14
|
||
* gl/lib/randread.c (POINTER_IS_ALIGNED): Rename from
|
||
ALIGNED_POINTER to avoid a collision with <machine/param.h>
|
||
on FreeBSD 14.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-11-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: fix recent regression in size alignment
|
||
* src/ls.c (print_long_format): Use correct column width,
|
||
introduced due to a copy/paste error in commit v9.4-2-gcbb6dfec5
|
||
* tests/ls/size-align.sh: Add a test.
|
||
* tests/local.mk: Reference the new test.
|
||
Fixes https://bugs.gnu.org/66919
|
||
|
||
2023-10-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
join: fix recently introduced NUL bug
|
||
* src/join.c (xfields): Simplify and fix bug with fields
|
||
that start with a NUL byte when -t is not used.
|
||
* tests/misc/join-utf8.sh: Also test when -t is not used,
|
||
and when a field starts with NUL.
|
||
|
||
maint: pacify ‘make syntax-check’
|
||
* tests/misc/join-utf8.sh: Omit fail=0.
|
||
Fix framework_failure_ typo.
|
||
* tests/misc/join.pl: Change ` to '.
|
||
|
||
maint: copy join, uniq tests from Fedora
|
||
* tests/misc/join.pl, tests/uniq/uniq.pl:
|
||
Copy from Fedora 39. This adds more multi-byte tests.
|
||
|
||
join,uniq: support multi-byte separators
|
||
* NEWS: Mention this.
|
||
* bootstrap.conf (gnulib_modules): Remove cu-ctype, as this module
|
||
is now more trouble than it’s worth. All uses removed.
|
||
Add skipchars.
|
||
* gl/lib/cu-ctype.c, gl/lib/cu-ctype.h, gl/modules/cu-ctype:
|
||
Remove.
|
||
* gl/lib/skipchars.c, gl/lib/skipchars.h, gl/modules/skipchars:
|
||
* tests/misc/join-utf8.sh:
|
||
New files.
|
||
* src/join.c: Include skipchars.h and mcel.h instead of cu-ctype.h.
|
||
(tab): Now mcel_t, not int. All uses changed.
|
||
(output_separator, output_seplen): New static vars.
|
||
(eq_tab, newline_or_blank, comma_or_blank): New functions.
|
||
(xfields, prfields, prjoin, add_field_list, main):
|
||
Support multi-byte characters.
|
||
* src/numfmt.c: Include ctype.h, skipchars.h.
|
||
Do not include cu-ctype.h.
|
||
(newline_or_blank): New function.
|
||
(next_field): Support multi-byte characters.
|
||
* src/sort.c: Include ctype.h instead of cu-ctype.h.
|
||
(inittables): Open-code field_sep since it no longer exists.
|
||
‘sort’ is not multi-byte safe yet, but when it is this code
|
||
will need revamping anyway.
|
||
* src/uniq.c: Include mcel.h and skipchars.h instead of cu-ctype.h.
|
||
(newline_or_blank): New function.
|
||
(find_field): Support multi-byte characters.
|
||
* tests/local.mk (all_tests): Add tests/misc/join-utf8.sh
|
||
|
||
test: allow non-blank white space in numbers
|
||
* src/test.c (find_int): Use isspace, not isblank,
|
||
for compatibility with how strtol works, which
|
||
is how most other shells do this.
|
||
|
||
stdbuf: port to oddball toupper
|
||
* src/stdbuf.c: Do not include ctype.h.
|
||
(set_libstdbuf_options): Use c_toupper, not toupper,
|
||
since the C locale is intended here.
|
||
|
||
dircolors: assume C-locale spaces
|
||
* src/dircolors.c: Include c-ctype.h, not ctype.h.
|
||
(parse_line): Use c_isspace, not isspace, as the .dircolors
|
||
file format (which does not seem to be documented!) appears
|
||
to be ASCII.
|
||
|
||
maint: port to oddball tolower
|
||
* src/digest.c (hex_equal): Work even in oddball locales
|
||
where tolower does not work as expected on ASCII letters.
|
||
|
||
2023-10-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: include ctype.h selectively
|
||
Include ctype.h only in files that need it. Many of its uses
|
||
are incorrect, as they assume single-byte locales. The idea is
|
||
to remove the incorrect uses later, when there is time.
|
||
* src/chroot.c, src/csplit.c, src/dd.c, src/digest.c, src/dircolors.c:
|
||
* src/expand-common.c, src/expand.c, src/fmt.c, src/fold.c, src/ls.c:
|
||
* src/od.c, src/pinky.c, src/pr.c, src/ptx.c, src/seq.c:
|
||
* src/set-fields.c, src/split.c, src/stdbuf.c, src/test.c:
|
||
* src/tr.c, src/truncate.c, src/unexpand.c, src/wc.c:
|
||
Include ctype.h.
|
||
* src/system.h: Do not include ctype.h.
|
||
|
||
include ctype.h.o
|
||
|
||
2023-10-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: move field_sep into separate module
|
||
This is so that we don’t need to have every source file
|
||
include ctype.h.
|
||
* bootstrap.conf (gnulib_modules): Add cu-ctype.
|
||
* gl/lib/cu-ctype.c, gl/lib/cu-ctype.h, gl/modules/cu-ctype:
|
||
New files.
|
||
* src/join.c, src/numfmt.c, src/sort.c, src/uniq.c:
|
||
Include cu-ctype.h, for field_sep.
|
||
* src/system.h (field_sep): Remove; now supplied by cu-ctype.
|
||
|
||
digest: omit unnecessary b2sum includes
|
||
* src/blake2/b2sum.c: Do not include string.h, errno.h,
|
||
ctype.h, unistd.h, getopt.h.
|
||
|
||
maint: prefer c_isxdigit when that is the intent
|
||
* src/digest.c (valid_digits, split_3):
|
||
* src/echo.c (main):
|
||
* src/printf.c (print_esc):
|
||
* src/ptx.c (unescape_string):
|
||
* src/stat.c (print_it):
|
||
When the code is supposed to support only POSIX-locale hex digits,
|
||
use c_isxdigit rather than isxdigit. Include c-ctype.h as needed.
|
||
This defends against oddball locales where isxdigit != c_isxdigit.
|
||
|
||
2023-10-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: fix syntax check issue
|
||
* src/basenc.c: Fix preprocessor indentation.
|
||
|
||
2023-10-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
base32,base64: disallow non-canonical encodings
|
||
This will make decoding more resilient to corruption
|
||
whether due to transmission errors or nefarious adjustment.
|
||
See https://eprint.iacr.org/2022/361.pdf
|
||
|
||
* gnulib: Update to commit 3f463202bd enforcing canonical encoding.
|
||
* tests/basenc/base64.pl: Add test cases, and adjust existing cases.
|
||
* NEWS: Mention the change in behavior.
|
||
|
||
2023-10-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
basenc: fix unlikely locale issue; tune
|
||
This sped up ‘basenc -d --base16’ by 60% on my old platform,
|
||
AMD Phenom II X4 910e, Fedora 38.
|
||
* src/basenc.c (struct base16_decode_context): Simplify by
|
||
omitting have_nibble. ‘nibble’ is now negative if it’s missing.
|
||
All uses changed.
|
||
(B16): New macro, inspired by ../lib/base64.c.
|
||
(base16_to_int): New static var, likewise.
|
||
(isubase16): Reimplement using base16_to_int, since isxdigit is
|
||
not guaranteed to succeed on the chars we want when the locale is
|
||
oddball.
|
||
(base16_decode_ctx): Tune by using base16_to_int and by
|
||
|
||
2023-10-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
basenc: tweak checks to use unsigned char
|
||
This tends to generate better code, at least on x86-64,
|
||
because callers are just as fast and callees can avoid a conversion.
|
||
* src/basenc.c: The following renamings also change the arg type
|
||
from char to unsigned char. All uses changed.
|
||
(isubase): Rename from isbase.
|
||
(isubase64url): Rename from isbase64url.
|
||
(isubase32hex): Rename from isbase32hex.
|
||
(isubase16): Rename from isbase16.
|
||
(isuz85): Rename from isz85.
|
||
(isubase2): Rename from isbase2.
|
||
|
||
2023-10-24 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
* src/basenc.c (struct base16_decode_context):
|
||
Simplify by storing -1 for missing nibbles. All uses changed.
|
||
|
||
2023-10-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-10-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
basenc: --base16: also allow lower case with --ignore-garbage
|
||
* src/basenc.c (isbase16): Also return true for lower case.
|
||
* tests/basenc/basenc.pl: Add a test case.
|
||
Reported by Paul Eggert.
|
||
|
||
2023-10-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
basenc: --base16: support lower case hex digits
|
||
* src/basenc.c (base16_decode_ctx): Convert to uppercase
|
||
before converting from hex.
|
||
* tests/basenc/basenc.pl: Add a test case.
|
||
* NEWS: Mention the change in behavior.
|
||
Addresses https://bugs.gnu.org/66698
|
||
|
||
doc: fix RFC references
|
||
* doc/coreutils.texi: Adjust RFC URLs as the original
|
||
now give 404 errors.
|
||
|
||
2023-10-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: move all basenc tests to their own directory
|
||
* tests/misc/base64.pl: Move to tests/basenc/base64.pl
|
||
* tests/misc/basenc.pl: Move to tests/basenc/basenc.pl
|
||
* tests/local.mk: Adjust accordingly
|
||
|
||
2023-10-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
basenc: auto pad base32 and base64 inputs when decoding
|
||
Padding of encoded data is useful in cases where
|
||
base64 encoded data is concatenated / streamed.
|
||
I.e. where there are padding chars _within_ the stream.
|
||
In other cases padding is optional and can be inferred.
|
||
Note we continue to treat partial padding as invalid,
|
||
as that would be indicative of truncation.
|
||
|
||
* src/basenc.c (do_decode): Auto pad the end of the input.
|
||
* NEWS: Mention the change in behavior.
|
||
* tests/misc/base64.pl: Adjust to not fail for missing padding.
|
||
Addresses https://bugs.gnu.org/66265
|
||
|
||
2023-09-29 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
sort: improve --help
|
||
Problem reported by Jorge Stolfi (bug#66253).
|
||
* src/sort.c (usage): Suggest looking at the manual for -n details.
|
||
|
||
2023-09-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: rm --help: mention that '.' or '..' are rejected
|
||
* src/rm.c (usage): State that '.' or '..' are rejected.
|
||
|
||
2023-09-24 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
wc: pacify ‘make syntax-check’
|
||
* src/wc_avx2.c (wc_lines_avx2): Explicitly make it ‘extern’.
|
||
Not sure why this is needed.
|
||
|
||
wc: distribute src/wc.h
|
||
* src/local.mk (noinst_HEADERS): Add src/wc.h.
|
||
|
||
wc: goto considered harmful
|
||
* src/wc.c: Do not include assure.h. Replace the only
|
||
use of ‘assure’ with ‘unreachable’ which is good enough.
|
||
(wc, main): Remove labels and gotos. This doesn’t affect
|
||
performance in any way I can measure, and makes the code
|
||
a bit easier to follow.
|
||
|
||
wc: prefer signed integers
|
||
Prefer signed to unsigned integers, to make it easier to catch
|
||
integer overflow errors.
|
||
* src/wc.c: Do not include safe-read.
|
||
(total_lines_overflow, total_words_overflow, total_chars_overflow)
|
||
(total_bytes_overflow): Now bool, not uintmax_t. All uses changed.
|
||
(max_line_length): Now intmax_t, not uintmax_t. All uses changed.
|
||
The total_... vars are still uintmax_t because overflow into them
|
||
is checked.
|
||
(page_size): Now idx_t, not size_t.
|
||
(wc_lines, wc, get_input_fstatus, compute_number_width, main):
|
||
Prefer signed to unsigned ints where either should do.
|
||
(wc_lines, wc): Use read rather than safe_read, since we don’t
|
||
need safe_read’s checks for huge buffers.
|
||
(wc): Redo call to mbrtoc32 to lessen the number of comparisons
|
||
against its returned value. Do this partly by keeping a pointer
|
||
to the end of the buffer rather than a count. Simplify
|
||
overflow-checking code.
|
||
(compute_number_width): Check for integer overflow.
|
||
Don’t assume size_t fits into unsigned long.
|
||
* src/wc.h (struct wc_lines): Prefer signed integers.
|
||
* src/wc_avx2.c: Do not include safe-read.h.
|
||
(wc_lines_avx2): Prefer signed integers. Use read, not safe_read.
|
||
|
||
wc: improve avx2 API
|
||
* src/wc.c: Use "#include <...>" for files not in the current dir.
|
||
Include "wc.h" instead of declaring wc_lines_avx2 by hand.
|
||
(wc_lines): New API, with no file name (no longer needed) and
|
||
with a return struct rather than arg pointers. All uses changed.
|
||
Use avx2_supported directly instead of using a function pointer.
|
||
Exploit C99-style declarations after statements.
|
||
Multiply by 15 rather than dividing; it’s faster and more accurate
|
||
and cannot overflow here.
|
||
(wc): Simplify based on wc_lines API change.
|
||
* src/wc.h: New file.
|
||
* src/wc_avx2.c: Include it, to check API better.
|
||
(wc_lines_avx2): Use new API. All uses changed. Exploit C99.
|
||
Make locals more local.
|
||
|
||
2023-09-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
factor,tail: avoid quadratic reallocation
|
||
* src/factor.c (struct mp_factors): New member nalloc.
|
||
(mp_factor_init): Initialize it.
|
||
* src/factor.c (mp_factor_insert):
|
||
* src/tail.c (parse_options): Use xpalloc to avoid quadratic
|
||
worst-case behavior on reallocation.
|
||
* src/tail.c (pids_alloc): New static var.
|
||
|
||
doc: mention Unicode exceptions for wc
|
||
|
||
wc: simplify by removing SUPPORT_OLD_MBRTOWC
|
||
* src/wc.c (SUPPORT_OLD_MBRTOWC): Remove. All uses removed.
|
||
(wc): Simplify by assuming C99-or-later behavior for mbrtoc32,
|
||
which after all is a C11 API. Fix the !SUPPORT_OLD_MBRTOWC
|
||
code, which evidently was never tested seriously.
|
||
|
||
wc: 3× speedup in C locale
|
||
The 3× speedup was measured by invoking 'wc $(find * -type f)'
|
||
on the coreutils sources etc. on an Ubuntu 23.04 x86-64.
|
||
These changes also speed up wc 20% in UTF-8 locales.
|
||
* src/wc.c (wc_isprint, wc_isspace): New static vars.
|
||
(wc): Use them for speed.
|
||
(main): Initialize them if needed.
|
||
(isnbspace): Remove; no longer used.
|
||
|
||
wc: treat encoding errors as non white space
|
||
* src/wc.c (wc): Treat encoding errors like non white space
|
||
characters.
|
||
|
||
wc: fix word count bug
|
||
* bootstrap.conf (gnulib_modules): Remove c32isprint.
|
||
* src/wc.c (wc): Consider all non-white-space characters
|
||
to be word constituents, even if they are not printable.
|
||
POSIX requires this, and it is what BSD does.
|
||
Partly do this by simplifying the check for a word,
|
||
by counting word starts rather than word ends.
|
||
* tests/wc/wc.pl: Test for the bug.
|
||
|
||
maint: omit some unused function tests
|
||
* m4/jm-macros.m4: Do not check for ftruncate, iswspace,
|
||
mkfifo, mbrlen, sysctl. Coreutils no longer uses the
|
||
corresponding HAVE_* macros, typically because Gnulib
|
||
handles them now.
|
||
* src/wc.c (iswspace): Remove; unused.
|
||
|
||
sort: not a special case for mbrtowc
|
||
* configure.ac (GNULIB_MBRTOWC_SINGLE_THREAD): Define.
|
||
|
||
maint: prefer char32_t to wchar_t
|
||
This should work better on non-glibc platforms that don’t
|
||
use Unicode for wchar_t. However, POSIX appears to prohibit
|
||
this for printf.c so leave that alone.
|
||
* bootstrap.conf (gnulib_modules): Add btoc32, c32iscntrl,
|
||
c32isprint, c32isspace, c32width, mbrtoc32. Remove btoc, wcwidth.
|
||
* src/df.c, src/ls.c, src/wc.c:
|
||
Include uchar.h instead of wchar.h and wctype.h.
|
||
* src/df.c (replace_invalid_chars):
|
||
* src/ls.c (quote_name_buf):
|
||
* src/wc.c (isnbspace, wc):
|
||
Use char32_t instead of wchar_t.
|
||
|
||
wc: simplify #if MB_LEN_MAX
|
||
* src/wc.c: Don’t have special #ifs for platforms where
|
||
MB_LEN_MAX is 1. On these platforms, MB_CUR_MAX is 1 as well,
|
||
so the compiler should optimize away all multi-byte code.
|
||
|
||
wc: avoid undefined conversion state
|
||
* src/wc.c (wc): When mbrtowc returns (size_t) -1, zero the
|
||
conversion state, since POSIX says it’s undefined.
|
||
|
||
maint: use mbszero
|
||
* bootstrap.conf (gnulib_modules): Add mbszero.
|
||
* src/df.c (replace_invalid_chars):
|
||
* src/ls.c (quote_name_buf):
|
||
* src/pathchk.c (portable_chars_only):
|
||
* src/printf.c (STRTOX):
|
||
* src/wc.c (wc):
|
||
Prefer mbszero to clearing an mbstate_t by hand.
|
||
|
||
maint: prefer mcel
|
||
This causes Gnulib code to also use mcel, which is more consistent.
|
||
* bootstrap.conf (avoided_gnulib_modules): Avoid mbuiter
|
||
and mbuiterf, since we can now just use mcel. This avoids
|
||
the need to ship and compile mbchar and these modules.
|
||
(gnulib_modules): Change mcel to mcel-prefer.
|
||
|
||
wc: stop worrying about EBCDIC, shift-JIS, etc
|
||
* src/wc.c: Do not include mbchar.h.
|
||
(wc): Check for ASCII characters instead of using is_basic.
|
||
Other parts of Gnulib and coreutils already assume the encoding
|
||
is upward compatible with ASCII, and the old code wouldn’t
|
||
have worked anyway with shift-JIS.
|
||
|
||
expr: use mcel
|
||
The mcel API is simpler and corresponds more closely to how
|
||
Emacs etc. behave when the input has encoding errors,
|
||
since it treats each encoding-error byte separately.
|
||
* bootstrap.conf (gnulib_modules): Add mcel.
|
||
* src/expr.c: Include mcel.h instead of mbuiter.h.
|
||
(mbs_logical_cspn, mbs_logical_substr, mbs_offset_to_chars):
|
||
Use mcel API.
|
||
(mbs_logical_substr): Use ximemdup0 so as not to waste memory in
|
||
the result, fixing a FIXME.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-09-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: avoid build failures on gcc <= 10, or clang
|
||
On gcc 10 the following build failure occurs:
|
||
"error: a label can only be part of a statement
|
||
and a declaration is not a statement"
|
||
This is because the current code is non standards conforming,
|
||
but GCC >= 11 will compile it (even with the -Wpedantic option).
|
||
This issue is tracked for GCC at:
|
||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111526
|
||
|
||
* src/tail.c (parse_options): Avoid a declaration after label,
|
||
by using a surrounding block.
|
||
|
||
2023-09-20 Stephen Kitt <skitt@redhat.com>
|
||
|
||
tail: allow multiple PIDs
|
||
tail can watch multiple files, but currently only a single writer. It
|
||
can be useful to watch files from multiple writers, or even processes
|
||
not directly related to the files (e.g. watch log files written by a
|
||
server process, for the duration of a test driven by a separate
|
||
client).
|
||
|
||
* src/tail.c (writers_are_dead): New function.
|
||
(tail_forever): Use it to wait for writers.
|
||
(tail_forever_inotify): As above.
|
||
(parse_options): Manage --pid options in an array.
|
||
* doc/coreutils.texi: Update documentation.
|
||
* tests/tail/pid.sh: Add a variant with two PIDs.
|
||
* News: Mention the new feature.
|
||
|
||
2023-09-17 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
ls: --dired now implies long format with hyperlinks disabled
|
||
Currently --dired is silently ignored
|
||
with conflicting output formats
|
||
|
||
* src/ls.c (decode_switches): Set default format and hyperlink mode
|
||
when the --dired option is specified.
|
||
* tests/ls/dired.sh: Check that formats are implied / overridden.
|
||
* NEWS: Mention the change in behavior.
|
||
* doc/coreutils.texi (ls invocation): Adjust --dired description.
|
||
|
||
2023-09-15 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: improve ls --dired testing
|
||
* tests/ls/dired.sh: Verify ls --dired output against varying offsets.
|
||
|
||
2023-09-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: use C99 int size specifiers rather than PRI.MAX defines
|
||
Following on from commit v9.3-128-gf31229ebd
|
||
replace all uses of the PRI.MAX portability defines
|
||
with C99 size specifiers %z, %j, and %t.
|
||
|
||
2023-09-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: add subsections for cksum nodes
|
||
* doc/coreutils.texi: Specify each of the cksum nodes as a subsection,
|
||
so that the docs are organised appropriately in the pdf and html manual.
|
||
|
||
2023-09-09 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp,mv,install: add copy_internal comment
|
||
* src/copy.c (copy_internal): Add comment about
|
||
some particularly tricky logic.
|
||
|
||
cp: avoid needless unlinkat after fstatat ELOOP
|
||
* src/copy.c (copy_internal): When cp -f's fstatat fails on the
|
||
destination with ELOOP, report an error immediately when fstatat
|
||
used AT_SYMLINK_NOFOLLOW, as the later unlinkat would fail too.
|
||
|
||
cp,mv,install: minor copy_internal refactoring
|
||
* src/copy.c (copy_internal): Redo to avoid need for calculating
|
||
fstatat_flags when not needed. This is for clarity, not speed.
|
||
|
||
cp,mv,install: fix comment punctuation
|
||
* src/copy.h: Fix punctuation in comment.
|
||
|
||
cp,mv,install: simplify copy_internal
|
||
* src/copy.c (copy_internal): Simplify.
|
||
|
||
2023-09-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: prefer psame_inode, PSAME_INODE, STP_*
|
||
Prefer psame_inode, PSAME_INODE, STP_NBLOCKS, and STP_BLKSIZE,
|
||
which take addresses of objects, to their counterparts that
|
||
take the whole objects. In some cases the whole objects might
|
||
not be initialized, which would be undefined behavior strictly
|
||
speaking.
|
||
* gl/lib/root-dev-ino.h (ROOT_DEV_INO_CHECK):
|
||
* src/cp-hash.c (src_to_dest_compare):
|
||
* src/ls.c (dev_ino_compare):
|
||
* src/pwd.c (robust_getcwd):
|
||
Prefer PSAME_INODE to SAME_INODE.
|
||
* src/chown-core.c (restricted_chown):
|
||
* src/copy.c (copy_reg, same_file_ok, source_is_dst_backup)
|
||
(copy_internal):
|
||
* src/ln.c (do_link):
|
||
* src/pwd.c (logical_getcwd):
|
||
* src/sort.c (avoid_trashing_input):
|
||
* src/split.c (create):
|
||
* src/stat.c (find_bind_mount):
|
||
Prefer psame_inode to SAME_INODE.
|
||
* src/copy.c (infer_scantype):
|
||
* src/du.c (process_file):
|
||
* src/ls.c (gobble_file, print_long_format)
|
||
(print_file_name_and_frills, length_of_file_name_and_frills):
|
||
* src/stat.c (print_stat):
|
||
Prefer STP_NBLOCKS to ST_NBLOCKS.
|
||
* src/copy.c (copy_reg):
|
||
* src/head.c (elide_tail_bytes_file, elide_tail_lines_file):
|
||
* src/ioblksize.h (io_blksize):
|
||
* src/od.c (skip):
|
||
* src/shred.c (do_wipefd):
|
||
* src/stat.c (print_stat):
|
||
* src/tail.c (tail_bytes):
|
||
* src/truncate.c (do_ftruncate):
|
||
* src/wc.c (wc):
|
||
Prefer STP_BLKSIZE to ST_BLKSIZE.
|
||
* src/ioblksize.h (io_blksize):
|
||
Arg is now struct stat const *, not struct stat. All callers changed.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
cp,mv,install: a bit more up-to-date source stat
|
||
* src/copy.c (copy_reg): Replace caller’s source status
|
||
with the more recent version.
|
||
|
||
2023-09-02 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp,mv,install: fix chmod on Linux CIFS
|
||
This bug occurs only when temporarily setting the mode to the
|
||
intersection of old and new modes when changing ownership.
|
||
* src/copy.c (owner_failure_ok): Treat EACCES like EPERM.
|
||
|
||
2023-09-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp,mv,install: fix chown on Linux CIFS
|
||
* src/copy.c (chown_failure_ok): Also treat EACCES as OK.
|
||
|
||
maint: simplify set_owner
|
||
* src/copy.c (HAVE_FCHOWN, fchown): Remove.
|
||
(fchmod_or_lchmod): Move up.
|
||
(fchown_or_lchown): New function.
|
||
(set_owner): Use it to simplify.
|
||
|
||
chown: port to mingw and MSVC 14
|
||
* src/chown-core.c (restricted_chown): Don’t assume fchown exists.
|
||
The Gnulib doc says that nowadays this is needed only for
|
||
ports to mingw and MSVC 14, but it’s an easy port so let’s do it.
|
||
|
||
2023-08-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid syntax check failure
|
||
* tests/misc/numfmt.pl: Keep lines <= 80 chars.
|
||
|
||
2023-08-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: Gnulib module gc
|
||
Remove Gnulib modules that coreutils code no longer use directly.
|
||
Some of these are used indirectly, but gnulib-tool should do that.
|
||
* bootstrap.conf (gnulib_modules): Remove calloc-gnu, cloexec,
|
||
getgroups, getpass-gnu, getugroups, getusershell, gnu-mae,
|
||
group-member, lchown, mgetgroups, netinet_in, readlink,
|
||
realloc-gnu, rename, rpmatch, stpncpy, tzset, wchar-single,
|
||
wcswidth.
|
||
|
||
maint: assume non-rare encodings
|
||
* configure.ac (GNULIB_WCHAR_SINGLE_LOCALE): Define.
|
||
This can improve performance, while dropping support for
|
||
rare encodings on non-GNU platforms. Nowadays these encodings
|
||
are typically not worth the hassle.
|
||
|
||
maint: tune for single thread & locale
|
||
* configure.ac (GNULIB_EXCLUDE_SINGLE_THREAD)
|
||
(GNULIB_REGEX_SINGLE_THREAD, GNULIB_WCHAR_SINGLE_LOCALE):
|
||
Define.
|
||
|
||
maint: regularize struct initializers
|
||
* src/chmod.c (process_file):
|
||
* src/df.c (replace_invalid_chars):
|
||
* src/iopoll.c (iopoll_internal):
|
||
* src/ls.c (quote_name_buf):
|
||
* src/pathchk.c (portable_chars_only):
|
||
* src/printf.c (STRTOX):
|
||
* src/shred.c (main):
|
||
* src/stat.c (neg_to_zero, do_stat):
|
||
* src/timeout.c (settimeout):
|
||
* src/tr.c (card_of_complement):
|
||
* src/wc.c (wc):
|
||
Prefer ‘{0}’ to initialize everything to zero.
|
||
* src/stat.c (do_stat):
|
||
* src/timeout.c (settimeout):
|
||
Do not assume the usual order for struct members,
|
||
as POSIX does not guarantee this.
|
||
|
||
maint: rely on Gnulib fdatasync
|
||
* m4/jm-macros.m4: Remove fdatasync-related code,
|
||
as Gnulib now does this.
|
||
* src/dd.c (fdatasync) [!HAVE_FDATASYNC]:
|
||
* src/shred.c (dosync) [!HAVE_FDATASYNC]: Rely on Gnulib fdatasync.
|
||
|
||
maint: use modern Gnulib LIB_ macros
|
||
* src/local.mk (src_timeout_LDADD, src_dd_LDADD)
|
||
(src_shred_LDADD, src_sync_LDADD): Use TIMER_TIME_LIB
|
||
and FDATASYNC_LIB instead of LIB_TIMER_TIME and
|
||
LIB_FDATASYNC.
|
||
|
||
kill: rely on Gnulib strsignal
|
||
Omit checks no longer needed now that we use strsignal.
|
||
* configure.ac: Do not check for strsignal-related decls.
|
||
* src/kill.c (sys_siglist, strsignal): Remove.
|
||
|
||
2023-08-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: remove rename macro
|
||
* src/copy.h (rename) [RENAME_TRAILING_SLASH_BUG]:
|
||
Remove: unused, now that Gnulib takes care of this.
|
||
|
||
maint: remove need for mbsalign
|
||
This simplifies memory allocation a bit, and removes an arbitrary
|
||
limitation from numfmt, which formerly limited cell output to 127
|
||
bytes.
|
||
* bootstrap.conf (gnulib_modules): Remove mbsalign, strncat.
|
||
Add strnlen (the code already used strnlen directly, and we were
|
||
saved only because Gnulib used the module indirectly)
|
||
* gl/lib/mbsalign.c, gl/lib/mbsalign.h, gl/modules/mbsalign:
|
||
* gl/modules/mbsalign-tests, gl/tests/test-mbsalign.c: Remove.
|
||
* src/df.c, src/ls.c: Do not include mbsalign.h.
|
||
(MBSWIDTH_FLAGS): New constant, now used for all
|
||
mbswidth calls. All callers changed to check for -1 return.
|
||
* src/df.c (struct field_data_t): ‘width’ is now int not size_t,
|
||
since mbswidth can’t do widths greater than INT_MAX anyway.
|
||
Replace ‘align’ with ‘align_right’. All uses changed.
|
||
(print_table): Redo to avoid the need for ambsalign.
|
||
(get_header, get_dev): mbswidth returns int, not size_t.
|
||
* src/ls.c (MAX_MON_WIDTH): Remove; no longer used.
|
||
(abmon_init): Use strnlen to cheaply discard too-long month names.
|
||
Align by hand instead of using mbsalign.
|
||
* src/numfmt.c: Include stdckdint.h, mbswidth.h.
|
||
Do not include mbsalign.h.
|
||
(padding_buffer_size): Now idx_t. All uses changed.
|
||
(padding_width): Now intmax_t, since it’s no longer an object
|
||
size. Its sign now records alignment. All uses changed.
|
||
(zero_padding_width): Now int, since it’s given to sprintf.
|
||
All uses changed.
|
||
(padding_alignment): Remove; it’s now taken from padding_width’s sign.
|
||
(double_to_human): Return string length. BUF_SIZE arg is now idx_t.
|
||
Include suffix in output. All callers changed. Simplify by not
|
||
calling strncat or stpcpy. Calculate fmt size bound more carefully.
|
||
(setup_padding_buffer): Remove. All uses removed.
|
||
(parse_format_string): Use intmax_t, not long, for pad.
|
||
On overflow, set widths to large values that cause later code
|
||
to do the right thing, rather than separately checking for
|
||
overflow here.
|
||
(prepare_padded_number): Return bool, not int 0/1. New arg
|
||
PADDING. All uses changed. Do not limit padded output to 127
|
||
bytes; instead, use xpalloc to expand the output buffer.
|
||
(print_padded_number): New arg PADDING. All uses changed.
|
||
(process_suffixed_number): Simplify.
|
||
(main): Take extremum if xstrtoimax overflows, as this does
|
||
the right thing.
|
||
* tests/misc/numfmt.pl: New test suf-20 to test for truncation bug.
|
||
Remove tests pad-3.2, fmt-err-7, as they’re no longer invalid but
|
||
are quite expensive.
|
||
|
||
2023-08-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 9.4
|
||
* NEWS: Record release date.
|
||
|
||
2023-08-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: spelling fixes, including author names
|
||
Most of this just affects commentary and documentations. The only
|
||
significant behavior change is translating author names via
|
||
proper_name_lite rather than proper_name_utf8, or not translating
|
||
them at all. proper_name_lite is good enough for coreutils and
|
||
avoids the bloat that had coreutils not using Gnulib proper_name.
|
||
* bootstrap.conf (gnulib_modules): Use propername-lite instead
|
||
of propername.
|
||
(XGETTEXT_OPTIONS): Look for proper_name_lite instead of for
|
||
proper_name_utf8.
|
||
* cfg.mk (local-checks-to-skip): Remove
|
||
sc_proper_name_utf8_requires_ICONV, since we no longer use
|
||
proper_name_utf8.
|
||
(old_NEWS_hash): Update.
|
||
(sc_check-I18N-AUTHORS): Remove; no longer needed.
|
||
|
||
test: omit unreachable code
|
||
* src/test.c (unary_operator): Omit unreachable ‘return false;’.
|
||
Oracle Solaris Studio 12.6 warns about it.
|
||
|
||
2023-08-28 Bruno Haible <bruno@clisp.org>
|
||
|
||
tests: avoid test failure on Android
|
||
* gl/tests/test-mbsalign.c (main): Skip the unibyte truncation test
|
||
on Android, when the "C" locale in fact is multibyte.
|
||
|
||
2023-08-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
sort: port sort-merge-fdlimit test to Solaris 10
|
||
* tests/sort/sort-merge-fdlimit.sh: Give 'sort' fd 6 too.
|
||
Needed for the same reason sort-continue.sh needed a ulimit -n boost.
|
||
|
||
sort: port sort-continue test back to Solaris 10
|
||
* tests/sort/sort-continue.sh: Use ulimit -n 7 not -n 6. On
|
||
Solaris 10 'sort' uses Gnulib mkostemp, which calls Gnulib
|
||
getrandom, which opens /dev/urandom to calculate the temp file's
|
||
name, which means 'sort' needs one more file descriptor to work.
|
||
|
||
2023-08-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure on cygwin
|
||
* tests/cksum/md5sum-bsd.sh: Avoid part of test dealing with backslashes
|
||
in file names, on systems where backslash is a directory separator.
|
||
Issue reported by Bruno Haible on cygwin.
|
||
|
||
2023-08-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: adjust tests and docs to binary mode handling
|
||
Following commit v9.3-80-g5e1e0993b which makes cksum
|
||
match the output of the standalone utilities...
|
||
|
||
* doc/coreutils.texi (cksum output modes): Remove the mention
|
||
that cksum never outputs a binary indicator, as that's no longer the
|
||
case.
|
||
* tests/cksum/b2sum.sh: Avoid outputting a binary indicator.
|
||
* tests/cksum/sm3sum.pl: Likewise.
|
||
|
||
2023-08-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
all: avoid duplicated write errors on FreeBSD
|
||
* src/system.h (write_error): Also call fpurge(), which was seen to
|
||
be needed on FreeBSD 13.1 to avoid duplicated write errors.
|
||
* src/head.c (xwrite_stdout): Likewise.
|
||
* bootstrap.conf: Depend on fpurge.
|
||
Reported by Bruno Haible.
|
||
|
||
tests: avoid false failure where sleep is a shell builtin
|
||
* tests/misc/usage_vs_getopt.sh: Handle sleep as a shell builtin,
|
||
which was seen on Alpine Linux 3.18.
|
||
|
||
2023-08-27 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: fix link errors of sort, split on CentOS 5 and Solaris 10
|
||
* src/local.mk (src_sort_LDADD, src_split_LDADD): Add $(CLOCK_TIME_LIB).
|
||
|
||
build: fix compilation error on AIX 7.1
|
||
* src/copy.c (copy_internal): Don't test for ENOTEMPTY if it has the
|
||
same value as EEXIST.
|
||
|
||
2023-08-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update with gnulib fixes
|
||
* gnulib: Update to incorporate gnulib fixes
|
||
from Bruno Haible from his coreutils 9.4 pre-release testing.
|
||
|
||
2023-08-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove older ChangeLog items
|
||
* Makefile.am: Update the oldest documented version
|
||
to 8.30 which is now about 5 years old.
|
||
|
||
2023-08-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
shred: fix operation on Solaris with 64 bit builds
|
||
* NEWS: Mention the bug fix.
|
||
* gl/lib/randread.c (get_nonce): Limit getrandom() <= 1024 bytes.
|
||
|
||
2023-08-22 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest
|
||
|
||
doc: reorg texinfo for the checksumming utilities
|
||
* doc/coreutils.texi: Reorg so that 'cksum invocation' is the
|
||
main node listing all options and output formats, which is then
|
||
referenced by the descriptions of the standalone utilities.
|
||
Use macros in the description of the standalone utilities
|
||
rather than referencing 'md5sum invocation' to be more direct.
|
||
|
||
2023-08-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: cksum: remove -b description from texinfo
|
||
* doc/coreutils.texi (cksum invocation): Following commit 5e1e0993
|
||
also remove the desciption of the -b option for the cksum command.
|
||
|
||
cp: with --sparse=never, avoid COW and copy offload
|
||
* src/cp.c (main): Set default reflink mode appropriately
|
||
with --sparse=never.
|
||
* src/copy.c (infer_scantype): Add a comment to related code.
|
||
* tests/cp/sparse-2.sh: Add a test case.
|
||
* NEWS: Mention the bug.
|
||
|
||
2023-08-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: comment spelling fix
|
||
* tests/split/l-chunk-root.sh: Fix recently introduced typo.
|
||
|
||
2023-08-16 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: remove extraneous line in NEWS
|
||
* NEWS: Remove extraneous line.
|
||
|
||
2023-08-15 Bruno Haible <bruno@clisp.org>
|
||
|
||
uptime: simplify following gnulib changes
|
||
* build-aux/gen-lists-of-programs.sh (build_if_possible_progs):
|
||
Remove uptime.
|
||
(normal_progs): Add uptime.
|
||
* configure.ac: Remove GNULIB_BOOT_TIME invocation.
|
||
* m4/boottime.m4: Remove file.
|
||
* src/uptime.c: Don't include <sys/sysctl.h>, <OS.h>.
|
||
(print_uptime): Don't call sysctl, get_system_info, as Gnulib's
|
||
readutmp module now does this.
|
||
|
||
2023-08-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: update uptime NEWS
|
||
* NEWS: Update as per Bruno Haible <https://bugs.gnu.org/65255#14>.
|
||
|
||
2023-08-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix false failure due to locale on alpine
|
||
* tests/sort/sort-debug-keys.sh: Decimal point was seen to be '.'
|
||
on fr_FR.UTF-8 on Alpine Linux 3.18, so add an extra guard
|
||
to ensure we've a ',' as the decimal point on this locale.
|
||
Fixes https://bugs.gnu.org/65310
|
||
|
||
2023-08-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
uptime: be more generous about read_utmp failure
|
||
* src/uptime.c (print_uptime): Check for overflow
|
||
when computing uptime. Use C99-style decl after statements.
|
||
Do not let an idx_t value go negative.
|
||
(print_uptime, uptime): Be more generous about read_utmp failures,
|
||
or when read_utmp does not report the boot time. Instead of
|
||
failing, warn but keep going, printing the information that we did
|
||
get, and then exit with nonzero status.
|
||
(print_uptime): Return the desired exit status. Caller changed.
|
||
|
||
2023-08-15 Bruno Haible <bruno@clisp.org>
|
||
|
||
uptime: Include VM sleep time in the "up" duration
|
||
* src/uptime.c: Don't include c-strtod.h.
|
||
(print_uptime): Don't read /proc/uptime, because the value it provides
|
||
does not change when a date adjustment occurs.
|
||
* bootstrap.conf (gnulib_modules): Remove 'uptime'.
|
||
|
||
2023-08-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-08-15 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: fix typo in NEWS
|
||
* NEWS: s|/who/log/wtmp|/var/log/tmp|, introduced in commit 85edb4afbd1.
|
||
|
||
2023-08-15 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: reference install(1) and cp(1) from each other
|
||
* man/cp.x (SEE ALSO): Add install(1).
|
||
* man/install.x (SEE ALSO): Add cp(1).
|
||
|
||
Discussed at
|
||
https://lists.gnu.org/r/coreutils/2023-08/msg00026.html
|
||
|
||
2023-08-14 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: fix recent compilation error on GNU/Hurd
|
||
* src/copy.c (set_author): Revert change from MACH_PORT_NULL to
|
||
MACH_PORT_nullptr from commit 16b5ca6e (2023-06-29).
|
||
|
||
2023-08-14 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid syntax-check failure
|
||
* po/POTFILES.in: Cater to lib/file-type.c adjustments
|
||
as suggested by sc_po_check.
|
||
|
||
2023-08-14 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: fix link errors with gcc < 4.8
|
||
* configure.ac: Attempt to link, not only compile, the test programs
|
||
with __builtin_cpu_supports, to avoid link errors with cksum and wc.
|
||
|
||
2023-08-13 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: improve NEWS discussion of systemd
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-08-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: allow use of printf C99 integer size specifiers
|
||
Older systems that had issues with these like HP-UX and Solaris 8
|
||
are now obsolete, and can easily apply patches to provide support.
|
||
Also we've used %td since coreutils 9.1, with no reported issues.
|
||
|
||
* cfg.mk (sc_prohibit-c99-printf-format): Remove to allow use of
|
||
%[jtz] size specifiers, which allows for cleaner code
|
||
by avoiding the need to cast to PRI?MAX etc.
|
||
|
||
2023-08-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: separate out description of 2038 time stamp change
|
||
* NEWS: Separate out the description of the _existing_ issues
|
||
with outputting timestamps on 32 bit systems, from _future_ issues
|
||
outputting timestamps on all systems. Also move this to the
|
||
"improvement" section, since it's not really a coreutils
|
||
specific issue, and also is a build time configurable option.
|
||
|
||
2023-08-11 Bruno Haible <bruno@clisp.org>
|
||
|
||
pinky,users,who: optimize read_utmp invocation
|
||
When we are only interested in entries of type USER_PROCESS, tell
|
||
read_utmp that it does not need to determine the boot time.
|
||
|
||
* src/pinky.c (short_pinky): Pass option READ_UTMP_USER_PROCESS.
|
||
* src/users.c (users): Likewise.
|
||
* src/who.c (who): Likewise, if calling list_entries_who.
|
||
|
||
2023-08-09 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
who: simplify based on readutmp changes
|
||
* src/pinky.c (time_string, print_entry, scan_entries, short_pinky):
|
||
* src/uptime.c (print_uptime, uptime):
|
||
* src/users.c (list_entries_users, users):
|
||
* src/who.c (UT_TYPE_RUN_LVL, UT_TYPE_INIT_PROCESS)
|
||
(UT_TYPE_LOGIN_PROCESS, UT_TYPE_DEAD_PROCESS, UT_TYPE_NEW_TIME)
|
||
(time_string, print_user, print_boottime)
|
||
(make_id_equals_comment, print_deadprocs, print_login)
|
||
(print_initspawn, print_clockchange, print_runlevel)
|
||
(list_entries_who, scan_entries, who):
|
||
Simplify, partly by using plain -> rather than macros.
|
||
|
||
pinky,who: omit pragma
|
||
* src/pinky.c, src/who.c:
|
||
Omit no-longer-needed -Wstringop-overread pragma.
|
||
|
||
2023-08-09 Bruno Haible <bruno@clisp.org>
|
||
|
||
maint: Simplify after gnulib changed
|
||
Update gnulib submodule to latest.
|
||
All of UT_USER_SIZE, UT_ID_SIZE, UT_LINE_SIZE, UT_HOST_SIZE are now -1.
|
||
|
||
* src/pinky.c (print_entry): Remove code for bounded-length ut_line,
|
||
ut_user, ut_host.
|
||
(scan_entries): Remove code for bounded-length ut_user.
|
||
* src/who.c (print_line): Remove userlen, linelen arguments.
|
||
(print_user): Remove code for bounded-length ut_line, ut_user, ut_host.
|
||
(make_id_equals_comment): Remove code for bounded-length ut_id.
|
||
(print_boottime, print_deadprocs, print_login, print_initspawn,
|
||
print_clockchange, print_runlevel, print_heading): Update print_line
|
||
invocations.
|
||
(scan_entries): Remove code for bounded-length ut_line.
|
||
|
||
2023-08-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: Update after gnulib module 'readutmp' changed
|
||
(This patch is coauthored with Bruno Haible,
|
||
with original version at <https://bugs.gnu.org/64937#>.)
|
||
This updates the gnulib submodule to latest.
|
||
For year-2038 safety on Linux/{x86,arm},
|
||
this adds an --enable-systemd option to ‘configure’.
|
||
The idea is that this sort of thing will become the default
|
||
after it has been tested more.
|
||
* configure.ac: Don't test whether struct utmp and struct utmpx
|
||
have the ut_host field; this is now done in gnulib's readutmp module.
|
||
* src/local.mk: Link the programs 'pinky', 'uptime', 'users',
|
||
'who' with $(READUTMP_LIB).
|
||
* src/pinky.c, src/who.c:
|
||
Test HAVE_STRUCT_XTMP_UT_HOST instead of HAVE_UT_HOST.
|
||
* src/pinky.c (print_entry):
|
||
* src/who.c (print_user, print_deadprocs, print_login)
|
||
(print_initspawn, scan_entries):
|
||
Support the situation where ut_line is a 'char *' rather than a
|
||
'char[]' of fixed size. Likewise for ut_user and ut_host.
|
||
(make_id_equals_comment): Likewise for ut_id.
|
||
* src/pinky.c (print_entry):
|
||
* src/who.c (print_user):
|
||
Open /dev to simplify looking up its entries.
|
||
Don’t use printf if the output might in theory be longer than INT_MAX.
|
||
* src/pinky.c (scan_entries, short_pinky):
|
||
* src/uptime.c (print_uptime, uptime):
|
||
* src/users.c (list_entries_users, users):
|
||
* src/who.c (who):
|
||
Use idx_t where new read_utmp needs it.
|
||
* src/system.h (STREQ_LEN): Add comment that last arg can be -1.
|
||
|
||
2023-08-02 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
uptime: fix Y5881633 bug
|
||
* src/uptime.c (print_uptime): Prefer signed types.
|
||
Fix unlikely bug on platforms with 32-bit long and 64-bit time_t
|
||
if the idle time exceeds 2**31 days (about 6 million years...).
|
||
|
||
pinky: fix "d" typo
|
||
Problem reported by Bruno Haible (bug#65003).
|
||
* src/pinky.c (idle_string): Fix recently-introduced typo:
|
||
missing "d" for "days".
|
||
|
||
2023-08-01 Dragan Simic <dsimic@manjaro.org>
|
||
|
||
maint: minor comment cleanups
|
||
* src/cut.c: Adjust a few comments slightly, simply to have their
|
||
trailing whitespace the same as in the majority of the comments.
|
||
|
||
cut: promptly diagnose write errors, continued
|
||
* src/cut.c: Complete the error-handling improvements started in
|
||
commit e0a4a60af5, by adding a couple of remaining checks for putchar().
|
||
While there, sprinkle a few rather useful comments, and perform a few
|
||
small code cleanups, to make the code and the comments more uniform
|
||
and more conformant to the official coding style. Also make the help
|
||
message slightly more uniform.
|
||
|
||
maint: reformat text width in HACKING
|
||
* HACKING: Adjust line lengths.
|
||
|
||
2023-08-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
pinky: fix buffer size on 32 bit builds
|
||
* src/pinky.c (idle_string): Use the correct buffer size
|
||
following the recent int type adjustment.
|
||
|
||
od: fix issues with recent format string changes
|
||
* src/ioblksize.h: Avoid syntax check with redundant idx.h inclusion.
|
||
* src/od.c (FMT_BYTES_ALLOCATED): Increase by two to avoid:
|
||
error: '%s' directive writing between 1 and 2 bytes into a region
|
||
of size between 1 and 4 [-Werror=format-overflow=]
|
||
(maint): Use %td to print idx_t rather than invalid %jt format.
|
||
|
||
2023-08-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
pinky: prefer signed types
|
||
* src/pinky.c (idle_string): Prefer intmax_t to unsigned long int;
|
||
this avoids an overflow on platforms where unsigned long is 32
|
||
bits and time_t is 64 bits (the bug could occur on such a system
|
||
that was idle for more than 6 million years, so it’s a bit
|
||
hard to supply a test case...).
|
||
|
||
pathchk: prefer signed types
|
||
* src/pathchk.c (validate_file_name): Prefer signed types.
|
||
|
||
numfmt: prefer signed types
|
||
* src/numfmt.c (suffix_power_char, powerld, expld)
|
||
(simple_strtod_int, double_to_human, prepare_padded_number)
|
||
(process_suffixed_number): Prefer signed types.
|
||
(process_suffixed_number): Fix an unlikely bug if an
|
||
arg has exactly 2**32 spaces at the start.
|
||
|
||
mktemp,seq: prefer signed types
|
||
* src/mktemp.c (main):
|
||
* src/seq.c (main): Prefer signed types.
|
||
|
||
kill: prefer signed types
|
||
* src/kill.c (list_signals):
|
||
Prefer signed types. This avoids undefined behavior on
|
||
theoretical platforms where unsigned and signed int have
|
||
different representations.
|
||
|
||
groups,id: don’t assume gid_t fits in unsigned long
|
||
* src/group-list.c (print_group): Convert to intmax_t or
|
||
uintmax_t, not to unsigned long.
|
||
|
||
dircolors,du,expr: prefer signed types
|
||
* src/dircolors.c (dc_parse_stream):
|
||
* src/du.c (max_depth, main):
|
||
* src/expr.c (main):
|
||
Prefer signed types.
|
||
|
||
od: prefer signed types
|
||
* src/od.c: Include stdckdint.h.
|
||
(bytes_to_oct_digits, bytes_to_signed_dec_digits)
|
||
(bytes_to_unsigned_dec_digits, bytes_to_hex_digits):
|
||
Use ‘char’ for these small constants.
|
||
(simple_strtoi): Rename from simple_strtoul. Convert to int
|
||
instead of unsigned long; that’s good enough. All uses changed.
|
||
Simplify by using ckd_mul and ckd_add to check for overflow.
|
||
(main): Prefer signed types to unsigned.
|
||
|
||
cksum,df,digest: prefer signed types
|
||
* src/cksum.c (main):
|
||
* src/df.c (decode_output_arg):
|
||
* src/digest.c (valid_digits):
|
||
Prefer idx_t to unsigned types when the value is an index
|
||
into an array.
|
||
|
||
join: prefer signed types
|
||
* src/join.c (struct outlist, struct field, struct line)
|
||
(struct seq, autocount_1, autocount_2, join_field_1, join_field_2)
|
||
(extract_field, keycmp, check_order, init_linep, free_spareline)
|
||
(getseq, delseq, prfield, prfields, prjoin, join, add_field)
|
||
(string_to_join_field, decode_field_spec, add_field_list)
|
||
(set_join_field, main):
|
||
Prefer signed integers to unsigned.
|
||
|
||
factor: prefer signed types
|
||
When it’s easy, prefer signed types to unsigned, as
|
||
they are less confusing and allow overflow checking.
|
||
* src/factor.c (struct mp_factors, udiv_qrnnd)
|
||
(count_leading_zeros, count_trailing_zeros)
|
||
(factor_insert_multiplicity, mp_factor_clear, mp_factor_insert)
|
||
(factor_insert_refind, factor_using_division)
|
||
(mp_factor_using_division, powm2, millerrabin, millerrabin2)
|
||
(mp_millerrabin, prime_p, prime2_p, mp_prime_p, isqrt, isqrt2)
|
||
(invtab, q_freq, factor_using_squfof, strto2uintmax)
|
||
(print_factors_single, main):
|
||
Prefer signed integers to unsigned.
|
||
|
||
maint: include idx.h everywhere
|
||
* src/system.h: Include idx.h here, instead of in every file
|
||
that currently uses idx_t. This should make it easier to use
|
||
idx_t in the future.
|
||
|
||
2023-07-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
who: fix only-theoretical overflow
|
||
Change stzncpy’s implementation to match its comment, in the case
|
||
where SRC + LEN would overflow. This case never happens in coreutils.
|
||
* src/system.h (stzncpy): Work even if SRC + LEN would overflow.
|
||
|
||
2023-07-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tac: handle short reads on input
|
||
This can be reproduced by getting the read() above 2G,
|
||
which induces a short read, thus triggering the erroneous failure.
|
||
|
||
$ truncate -s 5G 5G
|
||
|
||
$ cat 5G | TMPDIR=$PWD tac | wc -c
|
||
tac: /tmp/tacFt7txA: read error: Illegal seek
|
||
0
|
||
|
||
With the fix in place we now get:
|
||
|
||
$ cat 5G | TMPDIR=$PWD src/tac | wc -c
|
||
5368709120
|
||
|
||
* src/tac.c (tac_seekable): Use full_read() to handle short reads.
|
||
* NEWS: Mention the bug fix.
|
||
Reported at https://bugs.debian.org/1042546
|
||
|
||
2023-07-31 Bruno Haible <bruno@clisp.org>
|
||
|
||
uptime: output correct user count on OpenBSD
|
||
* src/uptime.c (print_uptime, uptime): Always call read_utmp
|
||
and count the result.
|
||
* NEWS: Mention the fix (text by Bruno Haible).
|
||
|
||
2023-07-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-07-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
* NEWS: Mention a bug that this fixes.
|
||
|
||
2023-07-22 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mv: better diagnostic for 'mv dir x' failure
|
||
Problem reported by Nir Oren <https://bugs.gnu.org/64785>.
|
||
* src/copy.c (copy_internal): Use a more-specific diagnostic when
|
||
a rename fails due to a problem that must be due to the
|
||
destination, avoiding user confusion in cases like 'mv dir x'
|
||
where x is a nonempty directory.
|
||
* tests/mv/dir2dir.sh: Adjust to match.
|
||
|
||
2023-07-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: clarify tail -n/-c +NUM operation
|
||
tail -n/-c +NUM, is different from tail -n/-c NUM,
|
||
and head -n/-c NUM, and head -n/c -NUM, in that it
|
||
specifies a 1 based index rather than a count to skip/include.
|
||
So clarify this in tail --help and tail info manual.
|
||
Note we also mention this gotcha at:
|
||
https://www.pixelbeat.org/docs/coreutils-gotchas.html#tail
|
||
|
||
* doc/coreutils.texi (tail invocation): Give examples for -c/-n +NUM,
|
||
to make it clear one has to specify a number 1 larger than
|
||
might be expected.
|
||
* src/tail.c (usage): State the skip at start edge case more clearly
|
||
in the -n description. -c is not often used with tail so we leave
|
||
full explanation of that to the info manual. Also split the string
|
||
to simplify translation.
|
||
|
||
2023-07-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: add a syntax check to prevent use of NULL
|
||
* cfg.mk (sc_prohibit_NULL): Direct to use nullptr instead.
|
||
|
||
tests: split: provide more isolated /tmp handling
|
||
* tests/split/l-chunk.sh: Move the "expensive" portion to ...
|
||
* tests/split/l-chunk-root.sh: .. A new test split from l-chunk.sh
|
||
which uses an isolated TMPDIR, rather than exhausting /tmp,
|
||
as that gives false positive failures with some other coreutils tests
|
||
like tac-2-nonseekable.sh and shuf-reservoir.sh at least.
|
||
* tests/local.mk: Reference the new test.
|
||
|
||
split: honor $TMPDIR for temp files
|
||
* bootstrap.conf: Depend on tmpdir rather than tmpfile,
|
||
as the standard tmpfile() doesn't honor $TMPDIR.
|
||
* src/split.c (copy_to_tmpfile): Adjust to call temp_stream() rather
|
||
than tmpfile();
|
||
* NEWS: Mention the improvement.
|
||
|
||
2023-07-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tac: fall back to /tmp if $TMPDIR is unavailable
|
||
This also refactors temp_stream() to its own module,
|
||
in preparation for use by split.
|
||
|
||
* src/tac.c: Refactor temp_stream() out to ...
|
||
* src/temp-stream.c: ... A new module mostly refactored from tac,
|
||
but uses tmpdir to more robustly support $TMPDIR,
|
||
while falling back to /tmp if not available.
|
||
* src/temp-stream.h: The new module interface.
|
||
* src/local.mk: Reference the new module from tac.
|
||
* tests/tac/tac.pl: Adjust to non failing missing $TMPDIR.
|
||
* po/POTFILES.in: Reference the new module with translatable strings.
|
||
* NEWS: Mention the user visible improvements to tac TMPDIR handling.
|
||
|
||
2023-07-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: add syntax check to ensure safe mkstemp usage
|
||
One needs to include stdlib--.h if using mkstemp()
|
||
lest one hits esoteric bugs with closed stdin etc.
|
||
|
||
* cfg.mk (sc_require_stdlib_safer): Add a new syntax check.
|
||
(sc_require_stdio_safer): Fix this; broken since commit fa7ed969c3.
|
||
|
||
2023-07-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
join: promptly diagnose write errors
|
||
* src/join.c (prjoin): Check for write errors after each line.
|
||
* tests/misc/write-errors.sh: enable the test for join.
|
||
* NEWS: Mention the improvement.
|
||
|
||
comm: promptly diagnose write errors
|
||
* src/comm.c (writeline): Simplify by removing the unneeded STREAM
|
||
parameter. Call write_error() upon ferror().
|
||
(compare_files): Adjust to simplified writeline().
|
||
* tests/misc/write-errors.sh: Enable comm test.
|
||
* NEWS: Mention the improvement.
|
||
|
||
cut: promptly diagnose write errors
|
||
* src/cut.c (cut_bytes): Diagnose errors from fwrite() and putchar().
|
||
(cut_fields): Likewise.
|
||
* tests/misc/write-errors.sh: Enable the test for cut,
|
||
and augment to cover both cut_bytes() and cut_fields().
|
||
* NEWS: Mention the improvement.
|
||
|
||
uniq: promptly diagnose write errors
|
||
* src/uniq.c (write_line): Check the output from fwrite() immediately.
|
||
(check_file): Likewise.
|
||
* tests/misc/write-errors.sh: Enable the test case.
|
||
* NEWS: Mention the improvement.
|
||
|
||
od: promptly diagnose write errors
|
||
* src/od.c (dump): Check for write errors after each block written,
|
||
to exit early even with large / unbounded inputs.
|
||
* tests/misc/write-errors.sh: enable od check.
|
||
* NEWS: Mention the improvement.
|
||
Fixes https://bugs.gnu.org/64540
|
||
|
||
all: avoid repeated diagnostic upon write error
|
||
* cfg.mk (sc_some_programs_must_avoid_exit_failure): Adjust to
|
||
avoid false positive.
|
||
(sc_prohibit_exit_write_error): A new syntax check to prohibit
|
||
open coding error(..., "write error"); instead directing to use...
|
||
* src/system.h (write_error): ... a new function to clear stdout errors
|
||
before we explicitly diagnose a write error and exit.
|
||
* src/basenc.c: Use write_error() to ensure no repeated diagnostics.
|
||
* src/cat.c: Likewise.
|
||
* src/expand.c: Likewise.
|
||
* src/factor.c: Likewise.
|
||
* src/paste.c: Likewise.
|
||
* src/seq.c: Likewise.
|
||
* src/shuf.c: Likewise.
|
||
* src/split.c: Likewise.
|
||
* src/tail.c: Likewise.
|
||
* src/tr.c: Likewise.
|
||
* src/unexpand.c: Likewise.
|
||
* tests/misc/write-errors.sh: Remove TODOs for the fixed utilities:
|
||
expand, factor, paste, shuf, tr, unexpand.
|
||
|
||
tests: ensure utilties exit promptly upon write error
|
||
* tests/local.mk: Reference the new test.
|
||
* tests/misc/write-errors.sh: A new test to ensure utilities
|
||
exit promptly upon writing to /dev/full.
|
||
|
||
2023-07-14 Jim Meyering <meyering@meta.com>
|
||
|
||
cksum: improve problematic_chars function
|
||
* src/digest.c (problematic_chars): Implement using strcspn,
|
||
and traversing S only once, rather than once per escaped byte.
|
||
|
||
2023-07-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: give a new function the "pure" attribute
|
||
* src/digest.c (problematic_chars): This recently introduced
|
||
function does not modify state so is pure, even though GCC 13.1 at least
|
||
did not warn about that attribute being appropriate.
|
||
|
||
2023-07-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: escape filenames with a leading '\' in --check status
|
||
* src/digest.c (digest_check): Also escape in the case that the
|
||
file name contains '\'.
|
||
* tests/cksum/md5sum-bsd.sh: Add a test case.
|
||
* doc/coreutils.texi (md5um invocation): Clarify escaping operation.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/64392
|
||
|
||
2023-07-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: support transparent emulation of older utils
|
||
Support -b, --binary, and -t, --text
|
||
to allow full emulation of older utilities with:
|
||
exec cksum -a $algo --untagged "$@"
|
||
Note this would diverge from OpenBSD's support of cksum -b.
|
||
|
||
* src/digest.c: Change -b to mean --binary, not --base64 in all cases.
|
||
Accept -b and -t in all cases. Keep --binary and --text undocumented
|
||
for cksum.
|
||
* tests/cksum/cksum-base64.pl: s/-b/--base64/.
|
||
* tests/cksum/cksum-a.sh: Ensure cksum supports -b and -t appropriately.
|
||
* NEWS: Mention the change in behavior.
|
||
|
||
2023-07-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid static analysis failure for ignored dup2 return
|
||
* src/sort.c: We're ignoring failures from these calls,
|
||
so do so explicitly to avoid static analysis issues
|
||
as reported by coverity.
|
||
|
||
2023-07-04 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: mktemp -t: $TMPDIR has higher priority than -p
|
||
* tests/misc/mktemp.pl: Ensure that with -t,
|
||
$TMPDIR has precedence over -p.
|
||
|
||
2023-07-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: update .gitignore
|
||
Add some newly-created Gnulib files,
|
||
plus some bootstrap temporaries.
|
||
|
||
stty: fix untranslated diagnostics
|
||
* src/stty.c (set_speed): Translate diagnostics.
|
||
|
||
maint: sync bootstrap from Gnulib
|
||
* bootstrap: Copy from gnulib/build-aux/bootstrap.
|
||
|
||
maint: prefer ckd_add to INT_ADD_WRAPV etc
|
||
* bootstrap.conf (gnulib_modules): Add stdckdint.
|
||
Also, in C source code, prefer C23 macros like ckd_add
|
||
to their Gnulib near-equivalents like INT_ADD_WRAPV.
|
||
Include <stdckdint.h> as needed.
|
||
|
||
who: don’t crash if clock gyrates
|
||
* src/who.c (idle_string): Avoid signed integer overflow
|
||
if the superuser messes with the clock in bizarre ways.
|
||
Remove an ‘assume’ that wasn’t correct under this scenario.
|
||
|
||
df: omit GCC 5 ‘assume’s
|
||
* src/df.c (main):
|
||
* src/shred.c (dopass):
|
||
Omit ‘assumes’ needed to pacify GCC 5 but not needed with GCC 13.
|
||
|
||
maint: pacify GCC bug#109613 better
|
||
* src/cut.c (cut_file):
|
||
* src/nl.c (nl_file): Pacify GCC Bug#109613 in a better way, by
|
||
narrowing the coverage of the ‘assume’ so that bugs in the
|
||
no-longer-covered part are not masked.
|
||
|
||
maint: stop pacifying Parfait
|
||
* src/fmt.c (get_paragraph):
|
||
* src/stty.c (display_changed, display_all): Omit calls to
|
||
‘assume’ that are present only to pacify false positives by Parfait
|
||
<https://labs.oracle.com/pls/apex/f?p=94065:12:17236785746387:13>,
|
||
which went in-house in 2012 and never came back.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
maint: go back to using ‘error’
|
||
Now that Gnulib’s ‘error’ module does proper static checking
|
||
for not returning, we need no longer use the ‘die’ macro.
|
||
This makes code easier to read for people that are used to ‘error’.
|
||
* cfg.mk (error_fns, exclude_file_name_regexp): Remove ‘die’.
|
||
(sc_die_EXIT_FAILURE): Remove.
|
||
* src/die.h: Remove. All includes removed. All calls to ‘die’
|
||
changed back to calls to ‘error’.
|
||
* src/install.c (get_ids): Use quoteaf (problem found with
|
||
make syntax-check).
|
||
* src/system.h: Include error.h, since some of our macros call ‘error’.
|
||
Stop including error.h elsewhere.
|
||
|
||
maint: improve static and dynamic checking
|
||
This modernizes the source code somewhat, to take advantage
|
||
of advances in GCC over the years, and Gnulib’s ‘assure’ module.
|
||
Include assure.h in files that now need it.
|
||
Do not include assert.h directly; it’s no longer needed.
|
||
* bootstrap.conf (gnulib_modules): Add ‘assure’.
|
||
* gl/lib/randread.c (randread_error):
|
||
* src/chmod.c (describe_change):
|
||
* src/chown-core.c (describe_change):
|
||
* src/cp.c (decode_preserve_arg):
|
||
* src/head.c (diagnose_copy_fd_failure):
|
||
* src/ls.c (parse_ls_color):
|
||
* src/od.c (decode_one_format):
|
||
* src/split.c (main):
|
||
* src/test.c (binary_operator, posixtest):
|
||
Prefer affirm to abort, since it has better diagnostics in the
|
||
normal case and better performance with -DNDEBUG.
|
||
* gl/lib/xdectoint.c, src/die.h: Include stddef.h, for unreachable.
|
||
* gl/lib/xdectoint.c: Do not include verify.h; no longer needed.
|
||
* gl/lib/xdectoint.c (__xnumtoint):
|
||
* src/die.h (die):
|
||
Prefer C23 unreachable () to assume (false).
|
||
* gl/lib/xfts.c (xfts_open):
|
||
* src/basenc.c (base32hex_encode):
|
||
* src/copy.c (abandon_move, copy_internal, valid_options):
|
||
* src/cut.c (cut_fields):
|
||
* src/df.c (alloc_field, decode_output_arg, get_dev):
|
||
* src/du.c (process_file, main):
|
||
* src/echo.c (usage):
|
||
* src/factor.c (udiv_qrnnd, mod2, gcd2_odd, factor_insert_large)
|
||
(mulredc2, factor_using_pollard_rho, isqrt2, div_smallq)
|
||
(factor_using_squfof):
|
||
* src/iopoll.c (iopoll_internal, fwrite_wait):
|
||
* src/join.c (add_field):
|
||
* src/ls.c (dev_ino_pop, main, gobble_file, sort_files):
|
||
* src/mv.c (do_move):
|
||
* src/od.c (decode_format_string, read_block, dump, main):
|
||
* src/remove.c (rm):
|
||
* src/rm.c (main):
|
||
* src/sort.c (stream_open):
|
||
* src/split.c (next_file_name, lines_chunk_split):
|
||
* src/stdbuf.c (main):
|
||
* src/stty.c (set_speed):
|
||
* src/tac-pipe.c (line_ptr_decrement, line_ptr_increment):
|
||
* src/touch.c (touch):
|
||
* src/tr.c (find_bracketed_repeat, get_next)
|
||
(validate_case_classes, get_spec_stats, string2_extend, main):
|
||
* src/tsort.c (search_item, tsort):
|
||
* src/wc.c (main):
|
||
Prefer affirm to assert, as it allows for better static
|
||
checking when compiling with -DNDEBUG.
|
||
* src/chown-core.c (change_file_owner):
|
||
* src/df.c (get_field_list):
|
||
* src/expr.c (printv, null, tostring, toarith, eval2):
|
||
* src/ls.c (time_type_to_statx, calc_req_mask, get_funky_string)
|
||
(print_long_format):
|
||
* src/numfmt.c (simple_strtod_fatal):
|
||
* src/od.c (decode_one_format):
|
||
* src/stty.c (mode_type_flag):
|
||
* src/tail.c (xlseek):
|
||
* src/tr.c (is_char_class_member, get_next, get_spec_stats)
|
||
(string2_extend):
|
||
Prefer unreachable () to abort () or assert (false) when merely
|
||
pacifying the compiler, e.g., in a switch statement on an enum
|
||
where all cases are covered.
|
||
* src/copy.c (valid_options): Now returns void; the bool was useless.
|
||
Caller no longer needs to assert.
|
||
* src/csplit.c (find_line):
|
||
* src/expand-common.c (next_file):
|
||
* src/shred.c (incname):
|
||
* src/sort.c (main):
|
||
* src/tr.c (append_normal_char, append_range, append_char_class)
|
||
(append_repeated_char, append_equiv_class):
|
||
* src/tsort.c (search_item):
|
||
Omit assert, since the hardware will check for us.
|
||
* src/df.c (header_mode): Now the enum type it should have been.
|
||
* src/du.c (process_file):
|
||
* src/ls.c (assert_matching_dev_ino):
|
||
* src/tail.c (valid_file_spec):
|
||
* src/tr.c (validate_case_classes):
|
||
Mark defns with MAYBE_UNUSED if they’re not used when -DNDEBUG.
|
||
* src/factor.c (prime_p, prime2_p, mp_prime_p): Now ATTRIBUTE_PURE.
|
||
Prefer affirm to error+abort. No need to translate this diagnostic.
|
||
* src/fmt.c (get_paragraph):
|
||
* src/stty.c (display_changed, display_all, sane_mode):
|
||
* src/who.c (idle_string):
|
||
Prefer assume to assert, since the goal is merely pacification
|
||
and assert doesn’t pacify anyway if -DNDEBUG is used.
|
||
* src/join.c (decode_field_spec):
|
||
Omit unreachable abort.
|
||
* src/ls.c (assert_matching_dev_ino, main):
|
||
* src/tr.c (get_next):
|
||
Prefer assure to assert, since the check is relatively expensive
|
||
and won’t help static analysis.
|
||
* src/ls.c (main):
|
||
Prefer static_assert to assert of a constant expression.
|
||
(format_inode): Redo to make it clear that buflen doesn’t matter,
|
||
and that buf must have a certain number of bytes. All callers changed.
|
||
This pacifies -Wformat-overflow.
|
||
* src/od.c (decode_one_format):
|
||
Omit an assert that tested for obviously undefined behavior,
|
||
as the compiler could optimize it away anyway.
|
||
* src/od.c (decode_one_format, decode_format_string):
|
||
Prefer ATTRIBUTE_NONNULL to runtime checking.
|
||
* src/stat.c: Do not include <stddef.h> since system.h does that now.
|
||
* src/sync.c (sync_arg):
|
||
Prefer unreachable () to assert (true), which was a typo.
|
||
* src/system.h: Include stddef.h, for unreachable.
|
||
* src/tail.c (xlseek): Simplify by relying on ‘error’ to exit.
|
||
|
||
maint: fix indenting in previous change
|
||
* src/ptx.c: Adjust to fit into 80 columns.
|
||
|
||
2023-06-29 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: prefer C23-style nullptr
|
||
* bootstrap.conf (gnulib_modules): Add nullptr.
|
||
In code, prefer nullptr to NULL where either will do.
|
||
|
||
2023-06-22 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: ensure that makeinfo ≥ 6.8 checks the @menu structure
|
||
See <https://lists.gnu.org/r/bug-texinfo/2023-06/msg00015.html>.
|
||
|
||
* doc/local.mk (MAKEINFO): New variable.
|
||
* cfg.mk (_makefile_at_at_check_exceptions): Update.
|
||
|
||
2023-06-22 Pádraig Brady <P@draigBrady.com>
|
||
|
||
b2sum: fix UAR with --check with malformed checksum lines
|
||
* src/digest.c (split_3): Reinstate the check for whitespace after the
|
||
digest portion of the line, so that we exit early before inspecting
|
||
the file name which would be outside the passed buffer in the case
|
||
where the input does not contain a newline.
|
||
* tests/cksum/b2sum.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
* THANKS.in: Add Frank Busse who has reported multiple bugs using KLEE.
|
||
Fixes https://bugs.gnu.org/64229
|
||
|
||
2023-06-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: update GCC bug number in comment
|
||
|
||
2023-06-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: mention fix for bug#64123
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-06-19 Sylvestre Ledru <sylvestre@debian.org>
|
||
|
||
tests: move tests to a directory per utility
|
||
* cfg.mk: Adjust syntax check exclusion paths.
|
||
* tests/local.mk: Adjust for renamed tests.
|
||
|
||
2023-06-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: mention cksum error fix with cpu feature checks changes
|
||
* NEWS: Mention the error message to aid those searching
|
||
for solutions to the issue, and mention cksum also
|
||
as that was confirmed to fix the error with the adjusted
|
||
cpu feature detection, as discussed at https://bugs.debian.org/1037264
|
||
* src/cksum.c: Cleanup syntax-check failure from previous commit.
|
||
|
||
2023-06-14 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cksum,wc: clean up hw capability checking
|
||
* src/cksum.c (cksum_pclmul) [!CRCTAB && !USE_PCLMUL_CRC32]:
|
||
Remove macro.
|
||
(cksum_fp): No longer file-scope.
|
||
(pclmul_supported): Define only if USE_PCLMUL_CRC32.
|
||
This omits the debug output "using generic hardware support"
|
||
for simplicity and consistency with wc’s output.
|
||
(crc_sum_stream) [!USE_PCLMUL_32]: No need for static function pointer.
|
||
* src/wc.c (wc_lines_p) [USE_AVX2_WC_LINECOUNT]: No longer file-scope.
|
||
(wc) [USE_AVX2_WC_LINECOUNT]: Check for avx2 support at most once,
|
||
which was surely the code’s original intent.
|
||
(wc) [!USE_AVX2_WC_LINECOUNT]: No need for static function pointer.
|
||
|
||
cksum,wc: don’t include <cpuid.h>
|
||
* src/cksum.c [!CRCTAB && USE_PCLMUL_CRC32]:
|
||
* src/wc.c [USE_AVX2_WC_LINECOUNT]:
|
||
Don’t include <cpuid.h>; no longer needed.
|
||
|
||
cksum: fix bug in check for cksum_pclmul
|
||
This fixes a typo in the previous patch.
|
||
Problem reported by Pádraig Brady <https://bugs.gnu.org/64058#11>.
|
||
* src/cksum.c (pclmul_supported): Also require AVX support
|
||
to use cksum_pclmul.
|
||
|
||
wc: port to kernels that disable XSAVE YMM
|
||
Problem reported by Dave Hansen <https://bugs.gnu.org/64058>.
|
||
Apply similar change to cksum and pclmul, too.
|
||
* NEWS: Mention wc fix.
|
||
* configure.ac (cpuid_exists, get_cpuid_count_exists):
|
||
Remove. All uses removed, since we no longer use __get_cpuid or
|
||
__get_cpuid_count.
|
||
(pclmul_intrinsic_exists, avx2_intrinsic_exists): Set to no if
|
||
__builtin_cpu_supports calls cannot be compiled.
|
||
(HAVE_PCLMUL_INTRINSIC, HAVE_AVX2_INTRINSIC): Remove; unused.
|
||
Simplify surrounding code because of this.
|
||
* src/cksum.c (pclmul_supported):
|
||
* src/wc.c (avx2_supported):
|
||
Use __builtin_cpu_supports instead of doing it by hand.
|
||
Simplify surrounding code because of this.
|
||
|
||
2023-06-12 Ville Skyttä <ville.skytta@iki.fi>
|
||
|
||
dircolors: update list of backup file extensions
|
||
* src/dircolors.hin: Sort backup section by extension.
|
||
Treat .dpkg-new and .dpkg-tmp as backup files.
|
||
Treat .crdownload (Chromium based browsers' partial download)
|
||
as a backup file.
|
||
|
||
2023-06-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
dd: fix parsing of numbers with more than two multipliers
|
||
* src/dd.c (parse_integer): Use recursion to support more than two
|
||
multipliers. Also protect suffix[-1] access to ensure we don't
|
||
inspect before the passed string.
|
||
* tests/dd/bytes.sh: Add test cases.
|
||
* doc/coreutils.texi (dd invocation): Note the support for specifying
|
||
many multipliers in a number.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.debian.org/1037275
|
||
|
||
2023-06-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest.
|
||
* po/POTFILES.in: Remove recent sc_po_check workaround.
|
||
* tests/misc/date-debug.sh: Adjust as per spelling fix.
|
||
|
||
2023-06-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: od --strings: clarify operation
|
||
* doc/coreutils.texi (od invocation): Remove mention of ASCII,
|
||
as all printable characters in unibyte locales are output.
|
||
* src/od.c (usage): Clarify that only NUL terminated strings
|
||
are displayed, and that it's printable chars, not only graphic chars
|
||
that are output. I.e., spaces are output also if part of the string.
|
||
Reported at https://bugs.ddebian.org/1037217
|
||
|
||
2023-06-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: ls.c: update stale comment for previous commit
|
||
* src/ls.c (gobble_file): Update comment to correspond with
|
||
the changes in the previous commit.
|
||
|
||
ls: display command line symlinks that return ELOOP
|
||
* src/ls.c (gobble_file): Ensure we lstat() a symlink
|
||
specified on the command line, if we receive ELOOP from stat().
|
||
* tests/ls/symlink-loop.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/63931
|
||
|
||
ls: use more standard symlink traversal
|
||
* src/ls.c (gobble_file): stat() symlinks directly,
|
||
rather than their targets. This will be more consistent
|
||
with how symlinks are generally accessed.
|
||
(make_link_name): Remove no longer used function.
|
||
Addresses https://bugs.gnu.org/63931
|
||
|
||
doc: reference COPYING from README
|
||
* README: Reference COPYING as per the GNU coding standards,
|
||
and soon to be enforced with a syntax-check from gnulib.
|
||
|
||
2023-06-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid syntax-check failure
|
||
* po/POTFILES.in: Add lib/propername.h due to new comments
|
||
that trigger sc_po_check.
|
||
|
||
doc: NEWS: mention the more defensive copy_file_range avoidance
|
||
* NEWS: Mention the improvement in reinstating runtime avoidance
|
||
of copy_file_range(), that came with the last gnulib update,
|
||
picking up gnulib commit fb034b35.
|
||
|
||
2023-06-06 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-06-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: use consistent make variable interpolation syntax
|
||
* cfg.mk: Prefer $() interpolation over ${}
|
||
lest the reader is confused as to whether shell interpolation,
|
||
i.e. $${} was intended.
|
||
|
||
2023-05-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
split: --additional-suffix: disallow trailing '/'
|
||
Note mktemp --suffix has the same inconsistency,
|
||
but mktemp -d does support creating dirs
|
||
so probably best to leave that as is.
|
||
|
||
* src/split.c (main): Check for trailing /.
|
||
* tests/split/additional-suffix.sh: Augment the test.
|
||
Reported in https://bugs.debian.org/1036827
|
||
|
||
2023-05-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: adjust code to handle "error" syntax-check changes
|
||
* src/dd.c: Don't include no longer used error.h.
|
||
Use quoteaf() rather than quote() to quote appropriate for the shell
|
||
and to avoid the syntax-check failure,
|
||
* src/stty.c: Use quoteaf() rather than quotef()
|
||
to have more consistent quoting of the invalid arg.
|
||
|
||
maint: augment syntax checks to cater for more "error" functions
|
||
src/cfg.mk (sc_error_quotes, sc_error_shell_quotes,
|
||
sc_error_shell_always_quotes): Include "die" and "diagnose"
|
||
in the class of error functions to check arguments for.
|
||
|
||
2023-05-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: fix ‘error’ name issue without macros
|
||
* src/dd.c (_GL_NO_INLINE_ERROR): Remove; no longer needed.
|
||
(diagnose): Rename from nl_error and omit first arg since it is
|
||
always zero. All uses changed.
|
||
(error): Remove macro.
|
||
|
||
2023-05-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest.
|
||
* src/dd.c: Avoid error macro redefinition.
|
||
|
||
2023-05-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: modernize bootstrap prerequsite tools
|
||
Following on from commit v9.0-15-gaa31b919c
|
||
which updated README-prereq...
|
||
|
||
* bootstrap.conf: Add an explicit requirement on m4.
|
||
Add an explicit requirement on texi2pdf which is often
|
||
packaged separately to makeinfo and induces a failure
|
||
far down the distribution phase if not present.
|
||
Replace the rsync dependency with wget,
|
||
which gnulib changed to in 2018.
|
||
|
||
2023-05-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest.
|
||
* configure.ac: Remove gnulib reference, as that specific issue
|
||
is now explicitly avoided in gnulib itself.
|
||
|
||
build: pacify GCC 13 with -flto
|
||
* src/cut.c (cut_file): Explicitly mark STREAM as nonnull to avoid
|
||
-Werror=null-dereference.
|
||
* src/nl.c (nl_file): Likewise.
|
||
|
||
build: revert -Wmaybe-uninitialized warnings avoidance
|
||
This reverts commit 800c86d5, as that was deemed too invasive.
|
||
We do keep the change to tee.c to allow using -O3 without warnings.
|
||
For other optimization options like -O0, -Og, -O1, -Os,
|
||
one can use WERROR_CFLAGS= to stop warnings inducing a build failure.
|
||
|
||
2023-05-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: avoid false -Wmaybe-uninitialized warnings
|
||
Allow easily building a debug build for example with:
|
||
make CFLAGS='-O0 -ggdb'
|
||
|
||
False -Wmaybe-uninitialized warnings hit in different
|
||
places depending on the compiler passes used.
|
||
These changes were tested with gcc 10.2.1, 12.2.1, and 13.1.1 like:
|
||
for o in g s z fast 0 1 2 3; do
|
||
make clean && make -j$(nproc) CFLAGS="-O$o" || break
|
||
done
|
||
|
||
* src/digest.c: Disable -Wmaybe-uninitialized that gives
|
||
false positive here at -O0.
|
||
* src/ln.c: Avoid -Wmaybe-uninitialized that gives
|
||
false positive here at -O1.
|
||
* src/pr.c: Likewise.
|
||
* src/sort.c: Likewise.
|
||
* src/tee.c: Avoid -Wmaybe-uninitialized that gives
|
||
false positive here at -O3 on gcc 13.1.1 at least.
|
||
* src/cp.c: Avoid -Wmaybe-uninitialized that gives
|
||
false positive here at -Os on gcc 13.1.1 at least.
|
||
* src/copy.c: Avoid -Wmaybe-uninitialized that gives
|
||
false positive here at -Og on gcc 13.1.1 at least.
|
||
* src/head.c: Likewise.
|
||
* src/paste.c: Likewise.
|
||
|
||
2023-05-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: gnulib: avoid false -Wstringop-overflow warning
|
||
Tested on gcc 13.1.1 with: make CFLAGS='-O0 -ggdb'
|
||
|
||
* configure.ac: Disable -Wstringop-overflow for gnulib.
|
||
This warning is far too problematic in my experience:
|
||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88443
|
||
and triggers with gcc -O0 with versions 12,13 at least.
|
||
|
||
2023-05-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: cleanups to NEWS
|
||
* NEWS: Use more consistent wording, ordering, and formatting
|
||
for recent entries.
|
||
|
||
2023-05-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
split: advise the kernel of sequential access pattern
|
||
As split is often dealing with large files,
|
||
ensure we indicate to the kernel our sequential access pattern.
|
||
This was seen to operate 5% faster when reading from SSD,
|
||
as tested with:
|
||
|
||
dd bs=1M count=2K if=/dev/urandom of=big.in
|
||
|
||
for split in split.orig split; do
|
||
# Ensure big file is not cached
|
||
dd of=big.in oflag=nocache conv=notrunc,fdatasync count=0 status=none
|
||
# Test read efficiency
|
||
CWD=$PWD; (cd /dev/shm && time $CWD/src/$split -n2 $CWD/big.in)
|
||
done
|
||
|
||
real 0m9.039s
|
||
user 0m0.055s
|
||
sys 0m3.510s
|
||
|
||
real 0m8.568s
|
||
user 0m0.056s
|
||
sys 0m3.752s
|
||
|
||
* src/split.c (main): Use fdadvise to help the kernel
|
||
choose a more appropriate readahead buffer.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2023-05-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: adjust build instructions for disabling year 2038 support
|
||
* README-install: Adjust the instructions as per recent gnulib updates.
|
||
|
||
2023-05-07 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
build: update gnulib submodule to latest
|
||
This fixes failures in "very-expensive" tests on FTS with many
|
||
directory entries:
|
||
FAIL: tests/rm/ext3-perf
|
||
FAIL: tests/rm/many-dir-entries-vs-OOM
|
||
|
||
The following shows the problem in the former of the above tests:
|
||
$ mkdir d && seq 400000 | env -C d xargs touch )
|
||
$ rm -rf d
|
||
rm: traversal failed: d: Operation not supported
|
||
|
||
Gnulib commit 3f0950f65abb (2023-04-26) introduced this regression
|
||
which was fixed again with gnulib commit d4d8abb39eb0.
|
||
|
||
See discussion in
|
||
<https://lists.gnu.org/r/bug-gnulib/2023-05/msg00040.html>
|
||
|
||
* bootstrap.conf (gnulib_modules): Change "year2038-required" to
|
||
"year2038-recommended"; the module has been replaced.
|
||
* gnulib: Update to latest.
|
||
* tests/init.sh: Likewise.
|
||
|
||
2023-05-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: time zone conversion example
|
||
* doc/coreutils.texi (Examples of date):
|
||
Give time zone conversion example.
|
||
|
||
doc: new subsection for date format specs
|
||
* doc/coreutils.texi (Date format specifiers): New subsection,
|
||
which groups the date format specifiers without otherwise
|
||
changing contents.
|
||
|
||
2023-05-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
pr: fix parsing of empty arguments
|
||
Before:
|
||
$ pr --expand-tabs=
|
||
pr: '-e' extra characters or invalid number in the argument:
|
||
‘SHELL=/bin/bash’: Value too large for defined data type
|
||
|
||
After:
|
||
$ pr --expand-tabs=
|
||
pr: '-e': Invalid argument: ‘’
|
||
|
||
* src/pr.c (getoptarg): Ensure we don't parse beyond the
|
||
end of an empty argument, thus outputting arbitrary stack
|
||
info in subsequent error messages.
|
||
|
||
Addresses https://bugs.debian.org/1035596
|
||
|
||
2023-05-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: -p --parents: minor cleanup of previous patch
|
||
This doesn’t change behavior; it just clarifies the code a bit.
|
||
* src/cp.c (re_protect): New arg DST_SRC_NAME, for clarity, and so
|
||
that we need to skip '/'s only once. Caller changed.
|
||
Rename a couple of local variables to try to make things clearer.
|
||
|
||
2023-05-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp: -p --parents: fix failure to preserve permissions for absolute paths
|
||
* src/cp.c (re_protect): Ensure copy_acl() is passed an absolute path.
|
||
* tests/cp/cp-parents.sh: Add a test case.
|
||
* NEWS: Mention the bug.
|
||
Fixes https://bugs.gnu.org/63245
|
||
|
||
2023-05-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: provide more info on DEBUG=yes
|
||
* README: State that DEBUG=yes is particularly useful with perl tests.
|
||
* tests/split/l-chunk.sh: Use the more standard $DEBUG variable
|
||
rather than an internal $DEBUGGING variable.
|
||
|
||
2023-04-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: provide more info on the default 32-bit cksum digest
|
||
* doc/coreutils.texi (cksum invocation): Say that the default
|
||
digest format is 32-bit and based on the Ethernet standard CRC.
|
||
|
||
maint: remove redundant exit status handling
|
||
* src/numfmt.c: Remove redundant / confusing
|
||
use of TIMEOUT_FAILURE.
|
||
|
||
2023-04-27 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: simplify --enable-gcc-warnings='expensive'
|
||
* configure.ac (WERROR_CFLAGS): Omit mention of
|
||
-Wno-analyzer-double-free, -Wno-analyzer-null-dereference, and
|
||
-Wno-analyzer-use-after-free as manywarnings no longer uses them.
|
||
|
||
maint: suppress GCC 13 false alarms
|
||
* src/csplit.c, src/fmt.c, src/make-prime-list.c, src/nohup.c:
|
||
Add pragmas to pacify GCC 13 when coreutils is configured
|
||
with --enable-gcc-warnings='expensive'.
|
||
|
||
chmod: pacify GCC 13
|
||
* src/chmod.c (main): Use xpalloc instead of X2REALLOC,
|
||
and make the corresponding variables signed instead of unsigned.
|
||
When reallocating the buffer, this grows it by a factor of 1.5, not 2.
|
||
This also pacifies gcc -Wanalyzer-null-dereference.
|
||
|
||
csplit: pacify GCC 13
|
||
* src/csplit.c (load_buffer): Refactor for clarity.
|
||
This also xpacifies gcc -Wanalyzer-use-of-uninitialized-value.
|
||
When reallocating the buffer, grow it by a factor of 1.5, not 2.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-04-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: more cases for read input diagnostics
|
||
* tests/misc/read-errors.sh: Exercise more modes of
|
||
various utilities for better read error coverage.
|
||
* tests/split/fail.sh: Remove part refactored into the above test.
|
||
|
||
uniq: be more specific when diagnosing read errors
|
||
* src/uniq.c (check_file): Use the errno when diagnosing read errors.
|
||
|
||
2023-04-26 Jaroslav Skarvada <jskarvad@redhat.com>
|
||
|
||
build: fix build with -mno-ssse3
|
||
Avoid the following error with -mno-ssse3:
|
||
inlining failed in call to 'always_inline' '_mm_shuffle_epi8':
|
||
target specific option mismatch
|
||
|
||
* configure.ac: Ensure we use ssse3 specific code when
|
||
checking whether to enable the pclmul cksum implementation.
|
||
|
||
2023-04-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
pr: fix infinite loop when double spacing
|
||
* src/pr.c (init_parameters): Ensure we avoid a 0 lines_per_body
|
||
which was possible when adjusting for double spacing.
|
||
That caused print_page() to always return true,
|
||
causing an infinite loop.
|
||
* tests/pr/pr-tests.pl: Add a test case.
|
||
* NEWS: Mention the fix.
|
||
Fixes https://bugs.debian.org/1034808
|
||
|
||
2023-04-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: reduce verbosity of -i and -u with --verbose
|
||
Since skipping of files is central to the operation of -i and -u,
|
||
and with -u one may be updating few files out of many,
|
||
reinstate the verbosity of this functionality as it was before 9.3.
|
||
|
||
* src/copy.c (copy_internal): Only output "skipped" message
|
||
with --debug. Also adjust so message never changes with --debug.
|
||
* tests/cp/cp-i.sh: Adjust accordingly.
|
||
* tests/mv/mv-n.sh: Likewise.
|
||
* tests/cp/debug.sh: Add explicit test case for message.
|
||
* NEWS: Mention the change in behavior.
|
||
|
||
2023-04-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: ensure all utilities that read input diagnose errors
|
||
* tests/misc/read-errors.sh: Add a new test.
|
||
* tests/misc/date-f.sh: Remove unneeded test.
|
||
* tests/misc/dircolors.sh: Likewise.
|
||
* tests/local.mk: Reference new test, and dereference removed ones.
|
||
|
||
factor: diagnose errors reading the input
|
||
* src/factor.c (do_stdin): Exit with failure upon read errors.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
numfmt: diagnose errors reading the input
|
||
* src/numfmt.c (main): Exit with failure upon read errors.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
tsort: diagnose errors reading the input
|
||
* src/tsort.c (tsort): Check for errors after readtoken().
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2023-04-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: fix failure to diagnose read errors with crc32
|
||
The default crc32 mode fails to diagnose read errors.
|
||
|
||
* src/cksum.c (cksum_slice8): Fix the check for read errors.
|
||
(cksum_pclmul): Likewise.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2023-04-24 Andreas Schwab <schwab@linux-m68k.org>
|
||
|
||
tests: avoid failure when cp fails for proc files
|
||
When run under QEmu emulation emulated /proc files have
|
||
unstable inode numbers.
|
||
|
||
* tests/cp/proc-short-read.sh: Skip if unstable inode numbers detected.
|
||
|
||
2023-04-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
install: support stripping files with a leading hyphen
|
||
* src/install.c (strip): Prepend "./" to file names with a leading "-".
|
||
* tests/install/strip-program.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Reported in https://bugs.debian.org/1034429
|
||
|
||
2023-04-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 9.3
|
||
* NEWS: Record release date.
|
||
|
||
2023-04-16 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid allocation checks on ZFS
|
||
* tests/du/basic.sh: Allocation of files was seen to change
|
||
asynchronously on ZFS, so avoid allocation comparisons there.
|
||
|
||
2023-04-14 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: tty-eof: fix various issues
|
||
* tests/misc/tty-eof.pl: Ensure we don't erroneously
|
||
skip commands with parameters.
|
||
Comment as to why cut(1) is treated differently.
|
||
Adjust expect calls to not wait needlessly for cut output.
|
||
|
||
2023-04-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid dependence on file layout for cp sparse check
|
||
* tests/cp/sparse-2.sh: Don't depend on the copy taking
|
||
<= allocation of the source. Instead leverage --debug
|
||
to check that zero detection is being enabled.
|
||
|
||
copy: --debug: indicate if NUL detection is used with SEEK_HOLE
|
||
* src/copy.c (sparse_copy): With --sparse=always we also detect
|
||
NULs in extents we're copying, so indicate this with --debug.
|
||
|
||
2023-04-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: update re 32-bit builds
|
||
* README-install: Mention how to build on 32-bit-only hosts.
|
||
This builds on a previous patch by Pádraig Brady.
|
||
|
||
2023-04-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: fix _Noreturn compilation failure
|
||
Fix a build failure seen on gcc 3.4 on Solaris 10 at least.
|
||
|
||
* src/crctab.c: Ensure we include config.h for all compilation units.
|
||
This is now required for new _Noreturn usage in gnulib for stdint.h.
|
||
* src/cksum.c: Update generation code to ensure config.h included.
|
||
* cfg.mk: Remove crctab.c exclusion from the config.h check.
|
||
|
||
2023-04-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid non portable brace expansion
|
||
* tests/cp/backup-dir.sh: Avoid non portable brace expansion
|
||
which is not supported by FreeBSD or Solaris shells at least.
|
||
|
||
2023-04-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: require support for post-2038 timestamps
|
||
* bootstrap.conf (gnulib_modules): Replace year2038 with
|
||
year2038-required.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-04-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
wc: ensure we update file offset
|
||
* src/wc.c (wc): Update the offset when not reading,
|
||
and do read if we can't update the offset.
|
||
* tests/misc/wc-proc.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/61300
|
||
|
||
cp,mv: issue "skipped" messages when skipping files
|
||
* NEWS: Mention the change in behavior to issue a "not replaced"
|
||
error diagnostic with -n, and the "skipped" message with -v.
|
||
* src/copy.c (copy_internal): Adjust to output the "skipped" messages
|
||
depending on -i, -n, -u.
|
||
* tests/cp/cp-i.sh: Adjust accordingly.
|
||
* tests/mv/mv-n.sh: Likewise.
|
||
|
||
2023-04-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp,mv: add --update=none to always skip existing files
|
||
Add --update=none which is equivalent to the --no-clobber behavior
|
||
from before coreutils 9.2. I.e. existing files are unconditionally
|
||
skipped, and them not being replaced does not affect the exit status.
|
||
|
||
* src/copy.h [enum Update_type]: A new type to support parameters
|
||
to the --update command line option.
|
||
[enum Interactive]: Add I_ALWAYS_SKIP.
|
||
* src/copy.c: Treat I_ALWAYS_SKIP like I_ALWAYS_NO (-n),
|
||
except that we don't fail when skipping.
|
||
* src/system.h (emit_update_parameters_note): A new function
|
||
to output the description of the new --update parameters.
|
||
* src/cp.c (main): Parse --update arguments, ensuring that
|
||
-n takes precedence if specified.
|
||
(usage): Describe the new option. Also allude that
|
||
-u is related in the -n description.
|
||
* src/mv.c: Accept the new --update parameters and
|
||
update usage() accordingly.
|
||
* doc/coreutils.texi (cp invocation): Describe the new --update
|
||
parameters. Also reference --update from the --no-clobber description.
|
||
(mv invocation): Likewise.
|
||
* tests/mv/update.sh: Test the new parameters.
|
||
* NEWS: Mention the new feature.
|
||
Addresses https://bugs.gnu.org/62572
|
||
|
||
2023-04-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp: fix --backup with subdirectories
|
||
* gnulib: Reference the latest gnulib including the
|
||
fix to the backupfile module in commit 94496522.
|
||
* tests/cp/backup-dir.sh: Add a test to ensure
|
||
we rename appropriately when backing up through subdirs.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/62607
|
||
|
||
2023-03-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: tee: avoid false failure due to fifo usage
|
||
* tests/misc/tee.sh: Call cleanup_ in all cases to ensure
|
||
there are no overlapping interactions on the fifo that
|
||
might impact later parts of the test. This was seen to
|
||
cause issue with dash on musl libc.
|
||
Addresses https://bugs.gnu.org/62542
|
||
|
||
tests: adjust csplit VM limit
|
||
* tests/misc/csplit-heap.sh: More memory is required to avoid
|
||
a false failure on some systems. Noticed with musl libc
|
||
with bash as the shell. This is confirmed to still easily
|
||
trigger with the original memory leak being tested.
|
||
Addresses https://bugs.gnu.org/62542
|
||
|
||
wc: diagnose overflow of total counts
|
||
* src/wc.c (wc): Use INT_ADD_WRAPV() to detect overflow.
|
||
(main): Upon overflow, saturate the total, print a diagnostic,
|
||
and set exit status.
|
||
* tests/misc/wc-total.sh: Add a test case, which operates
|
||
on BTRFS and 64 bit systems at least.
|
||
Reported at https://bugs.debian.org/1027100
|
||
|
||
2023-03-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
dircolors: diagnose read errors
|
||
* NEWS: Mention the fix.
|
||
* src/dircolors.c: Fail upon read error from getline().
|
||
* tests/misc/dircolors.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
|
||
tests: add a test case for the previous date fix
|
||
* NEWS: Also mention this bug fix.
|
||
* tests/misc/date-f.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
|
||
2023-03-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
date: diagnose -f read errors
|
||
* src/date.c (batch_convert): Diagnose read errors, fixing Bug#62497.
|
||
|
||
2023-03-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: clarify commentary
|
||
* src/copy.c: Make comments a bit clearer.
|
||
|
||
2023-03-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: fix --reflink=auto to fallback in more cases
|
||
On restricted systems like android or some containers,
|
||
FICLONE could return EPERM, EACCES, or ENOTTY,
|
||
which would have induced the command to fail to copy
|
||
rather than falling back to a more standard copy.
|
||
|
||
* src/copy.c (is_terminal_failure): A new function refactored
|
||
from handle_clone_fail().
|
||
(is_CLONENOTSUP): Merge in the handling of EACCES, ENOTTY, EPERM
|
||
as they also pertain to determination of whether cloning is supported
|
||
if we ever use this function in that context.
|
||
(handle_clone_fail): Use is_terminal_failure() in all cases,
|
||
so that we assume a terminal failure in less errno cases.
|
||
* NEWS: Mention the bug fix.
|
||
Addresses https://bugs.gnu.org/62404
|
||
|
||
2023-03-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: add a NEWS entry for the previous fix
|
||
* NEWS: Mention the previous cksum --check fix.
|
||
|
||
2023-03-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: fix reporting of failed checks
|
||
This applies to all checksumming utilities,
|
||
where we incorrectly report all subsequent files as checking 'OK'
|
||
once any file has passed a digest check.
|
||
The exit status was not impacted, only the printed status.
|
||
|
||
* src/digest.c (digest_check): Use the correct state variable
|
||
to determine if the _current_ file has passed or not.
|
||
* tests/misc/md5sum.pl: Add a test case.
|
||
Fixes https://bugs.gnu.org/62403
|
||
|
||
2023-03-21 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
tests: skip some parts of tests/misc/tee.sh if run as root
|
||
Similarly to the fix to tests/rmdir/ignore.sh in c0e5f8c59,
|
||
tee should not be expected to fail when run with read-only outputs
|
||
when run as root.
|
||
|
||
* tests/misc/tee.sh: Add uid_is_privileged_ guard around test for
|
||
read-only outputs.
|
||
|
||
2023-03-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 9.2
|
||
* NEWS: Record release date.
|
||
|
||
2023-03-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure on systems without statx
|
||
* tests/ls/stat-free-symlinks.sh: Filter out syscalls that
|
||
return ENOSYS, as that was seen with statx() on Debian 10.13
|
||
on mips64, and resulted in overcounting of stat calls.
|
||
|
||
stty: ensure arbitrary data is not displayed
|
||
* src/stty.c (main): Use static structures to ensure
|
||
they're initialized (to zero), so that random data is
|
||
not displayed, or compared resulting in a inaccurate
|
||
failure reported to users. This was seen on musl libc
|
||
where some parts of the termios c_cc array were
|
||
not initialized by tcgetattr().
|
||
Reported by Bruno Haible.
|
||
|
||
tests: df: avoid false failure on systems with multiple roots
|
||
* tests/df/df-symlink.sh: Skip the test on systems
|
||
with multiple file system roots.
|
||
|
||
2023-03-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: uniq: revert previous man page adjustment
|
||
* src/uniq.c (usage): -D doesn't take an argument
|
||
so should be separated in the description.
|
||
|
||
doc: uniq: use more standard description of -D long option
|
||
* src/uniq.c: Describe -D and --all-repeated together,
|
||
as with all other long options.
|
||
Fixes https://bugs.gnu.org/62249
|
||
|
||
tests: aix: avoid unsupported functionality
|
||
* tests/misc/tee.sh: AIX doesn't support detecting
|
||
closed outputs either with poll() or select() so avoid
|
||
testing that functionality.
|
||
* tests/tail-2/pipe-f.sh: Likewise.
|
||
|
||
2023-03-16 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: avoid discarded-qualifiers warnings with SELinux 3.5
|
||
Since SELinux version 3.5, the return value of context_str(3) is
|
||
declared as const; see:
|
||
https://github.com/SELinuxProject/selinux/commit/dd98fa322766
|
||
Therefore, GCC complains (here with -Werror):
|
||
src/selinux.c: In function 'defaultcon':
|
||
src/selinux.c:152:16: error: assignment discards 'const' qualifier \
|
||
from pointer target type [-Werror=discarded-qualifiers]
|
||
152 | if (!(constr = context_str (tcontext)))
|
||
| ^
|
||
src/selinux.c: In function 'restorecon_private':
|
||
src/selinux.c:252:16: error: assignment discards 'const' qualifier \
|
||
from pointer target type [-Werror=discarded-qualifiers]
|
||
252 | if (!(constr = context_str (tcontext)))
|
||
| ^
|
||
|
||
* src/selinux.c (defaultcon): Define CONSTR as const.
|
||
(restorecon_private): Likewise.
|
||
|
||
2023-03-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
test: avoid a test hang on Hurd
|
||
* tests/cp/sparse-to-pipe.sh: Protect the cp call seen to
|
||
hang on Hurd/i686 with a timeout.
|
||
Reported By: Bruno Haible
|
||
|
||
cksum: fix --raw on 64 bit big endian systems
|
||
* src/sum.c (output_bsd): On sparc64 for example,
|
||
a crc of 0 was output due to casting an int variable
|
||
to uint16_t and thus operating on the wrong end of the variable.
|
||
Instead use explicit assignment to the narrower type
|
||
to ensure we get the appropriate data.
|
||
(output_sysv): Likewise.
|
||
Reported by Bruno Haible.
|
||
|
||
2023-03-15 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: avoid -Wsometimes-uninitialized on macOS 12
|
||
* src/pr.c (integer_overflow): Mark as _Noreturn.
|
||
* src/test.c (beyond): Likewise.
|
||
|
||
2023-03-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove older ChangeLog items
|
||
* Makefile.am: Update the oldest documented version
|
||
to 8.29 which is now about 5 years old.
|
||
|
||
tee: avoid undefined behavior after fclose()
|
||
* iopoll.c (fclose_wait): Rename from confusing fclose_nonblock name.
|
||
Also adjust to do no operations on the stream after fclose()
|
||
as this is undefined. Instead use fflush() to determine EAGAIN status.
|
||
(fwrite_wait): Renamed from confusing fwrite_nonblock name.
|
||
|
||
doc: dircolors: better separate the sections in the database
|
||
* src/dircolors.hin: Make the separate sections of the self
|
||
documenting dircolors database more apparent,
|
||
by adding heading comments, and appropriate separation.
|
||
|
||
2023-03-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: --color: honor separate sequences for extension cases
|
||
Following on from commit v8.29-45-g24053fbd8 which unconditionally
|
||
used case insensitive extension matching, support selective
|
||
case sensitive matching when there are separate extension cases
|
||
defined with different display sequences.
|
||
|
||
* src/dircolors.hin: Document how file name suffixes are matched.
|
||
Note this is displayed with `dircolors --print-database` which
|
||
the texi info recommends to use for details.
|
||
* src/ls.c (parse_ls_color): Postprocess the list to
|
||
mark entries for case sensitive matching,
|
||
and also adjust so that unmatchable entries are more quickly ignored.
|
||
(get_color_indicator): Use exact matching rather than
|
||
case insensitive matching if so marked.
|
||
* tests/ls/color-ext.sh: Add test cases.
|
||
* NEWS: Mention the change in behavior.
|
||
Addresses https://bugs.gnu.org/33123
|
||
|
||
2023-03-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: adjust du test for recent apparent size change
|
||
* tests/du/threshold.sh: Directories are assumed to be
|
||
of size 0 with --apparent since commit v9.1-187-g110bcd283
|
||
so remove --apparent cases from this test.
|
||
|
||
2023-03-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tee: support non blocking outputs
|
||
Non blocking outputs can be seen for example
|
||
when piping telnet through tee to a terminal.
|
||
In that case telnet sets its input to nonblocking mode,
|
||
which results in tee's output being nonblocking,
|
||
in which case in may receive an EAGAIN error upon write().
|
||
The same issue was seen with mpirun.
|
||
The following can be used to reproduce this
|
||
locally at a terminal (in most invocations):
|
||
|
||
$ { dd iflag=nonblock count=0 status=none;
|
||
dd bs=10K count=10 if=/dev/zero status=none; } |
|
||
tee || echo fail >/dev/tty
|
||
|
||
* src/iopoll.c (iopoll_internal): A new function refactored from
|
||
iopoll(), to also support a mode where we check the output
|
||
descriptor is writeable.
|
||
(iopoll): Now refactored to just call iopoll_internal().
|
||
(fwait_for_nonblocking_write): A new internal function which
|
||
uses iopoll_internal() to wait for writeable output
|
||
if an EAGAIN or EWOULDBLOCK was received.
|
||
(fwrite_nonblock): An fwrite() wrapper which uses
|
||
fwait_for_nonblocking_write() to handle EAGAIN.
|
||
(fclose_nonblock): Likewise.
|
||
src/iopoll.h: Add fclose_nonblock, fwrite_nonblock.
|
||
src/tee.c: Call fclose_nonblock() and fwrite_nonblock wrappers,
|
||
instead of the standard functions.
|
||
* tests/misc/tee.sh: Add a test case.
|
||
* NEWS: Mention the improvement.
|
||
|
||
The idea was suggested by Kamil Dudka in
|
||
https://bugzilla.redhat.com/1615467
|
||
|
||
2023-03-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove redundant NEWS entry
|
||
* NEWS: There was no bug on macOS,
|
||
and the split -n new feature is documented already.
|
||
|
||
2023-03-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
split: support split -n on larger pipe input
|
||
* bootstrap.conf (gnulib_modules): Add free-posix, tmpfile.
|
||
* src/split.c (copy_to_tmpfile): New function.
|
||
(input_file_size): Use it to split larger files when sizes cannot
|
||
easily be determined via fstat or lseek. See Bug#61386#235.
|
||
* tests/split/l-chunk.sh: Mark tests of /dev/zero as
|
||
very expensive since they exhaust /tmp.
|
||
|
||
2023-03-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tee: fix a crash with unwriteable files
|
||
This was introduced recently with commit v9.1-166-g6b12e62d9
|
||
|
||
* src/tee.c (tee_files): Check the return from fopen()
|
||
before passing to fileno() etc.
|
||
* tests/misc/tee.sh: Add a test case.
|
||
|
||
2023-03-06 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: pacify ‘make syntax-check’
|
||
Problem reported by Pádraig Brady (Bug#61386#226).
|
||
* src/split.c (parse_chunk): Use die instead of error.
|
||
(main): Quote a string.
|
||
* tests/local.mk (all_root_tests): Move du/apparent.sh from here ...
|
||
(all_tests): ... to here.
|
||
|
||
2023-03-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail,tee: avoid issues with many files on systems without poll
|
||
* src/iopoll.c (iopoll): Protect the call to select against
|
||
passing in a descriptor larger than FD_SETSIZE.
|
||
|
||
2023-03-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
du: --apparent counts only symlinks and regular
|
||
Problem reported by Christoph Anton Mitterer (Bug#61884).
|
||
* src/du.c (process_file): When counting apparent sizes, count
|
||
only usable st_size members.
|
||
* tests/du/apparent.sh: New file.
|
||
* tests/local.mk (all_root_tests): Add it.
|
||
|
||
2023-03-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
split: tune for when creating output files
|
||
* src/split.c (create): Avoid fstat + ftruncate in the usual case
|
||
where the output file does not already exist, by trying
|
||
to create it with O_EXCL first. This costs a failed open
|
||
in the unusual case where the output file already exists,
|
||
but that’s OK.
|
||
|
||
split: style fix
|
||
* src/split.c (ofile_open): Avoid ‘if (! (a = b))’ style.
|
||
|
||
split: prefer signed integers to size_t
|
||
This allows for better runtime checking with gcc
|
||
-fsanitize=undefined.
|
||
* src/split.c: Include idx.h.
|
||
(open_pipes_alloc, n_open_pipes, suffix_length)
|
||
(set_suffix_length, input_file_size, sufindex, outbase_length)
|
||
(outfile_length, addsuf_length, create, cwrite, bytes_split)
|
||
(lines_split, line_bytes_split, lines_chunk_split)
|
||
(bytes_chunk_extract, ofile_open, lines_rr, main):
|
||
Prefer signed integers (typically idx_t) to size_t.
|
||
|
||
split: handle large numbers better
|
||
Prefer signed types to uintmax_t, as this allows for better
|
||
runtime checking with gcc -fsanitize=undefined.
|
||
Also, when an integer overflows just use the maximal value
|
||
when the code will do the right thing anyway.
|
||
* src/split.c (set_suffix_length, bytes_split, lines_split)
|
||
(line_bytes_split, lines_chunk_split, bytes_chunk_extract)
|
||
(lines_rr, parse_chunk, main):
|
||
Prefer a signed type (typically intmax_t) to uintmax_t.
|
||
(strtoint_die): New function.
|
||
(OVERFLOW_OK): New macro. Use it elsewhere, where we now allow
|
||
LONGINT_OVERFLOW because the code then does the right thing on all
|
||
practical platforms (they have int wide enough so that it cannot
|
||
be practically exhausted). We can do this now that we can safely
|
||
assume intmax_t has at least 64 bits.
|
||
(parse_n_units): New function.
|
||
(parse_chunk, main): Use it.
|
||
(main): Do not worry about integer overflow when the code
|
||
will do the right thing anyway with the extreme value.
|
||
Just use the extreme value.
|
||
* tests/split/fail.sh: Adjust to match new behavior.
|
||
|
||
split: prefer ssize_t for read result
|
||
* src/split.c (bytes_split, lines_chunk_split)
|
||
(bytes_chunk_extract, main): Prefer ssize_t to size_t when
|
||
representing the return value of ‘read’. Use a negative value
|
||
instead of SIZE_MAX to indicate a missing value.
|
||
|
||
split: be more careful about buffer sizes
|
||
* src/split.c: Include sys-limits.h, not safe-read.h.
|
||
(input_file_size, bytes_split, lines_split, line_bytes_split)
|
||
(lines_chunk_split, bytes_chunk_extract, lines_rr): Call read, not
|
||
safe_read, since safe_read no longer buys us anything.
|
||
(main): Reject outlandish buffer sizes right away,
|
||
rather than allocating huge buffers and never using them.
|
||
|
||
split: minor -1 / 0 refactor
|
||
* src/split.c (create, bytes_split, ofile_open):
|
||
Prefer comparing to 0 to comparing to -1.
|
||
|
||
split: don’t worry about ECHILD
|
||
* src/split.c (closeout): There should be no need for a special
|
||
case for ECHILD, since we never wait for the same child twice.
|
||
Simplify with this in mind.
|
||
|
||
split: don’t assume pid_t fits in int
|
||
* src/split.c (filter_pid): Now pid_t, not int.
|
||
(of_t): opid member is now pid_t, not int.
|
||
|
||
split: simplify SIGPIPE handling
|
||
Ignore and default SIGPIPE, rather than blocking and unblocking it.
|
||
* src/split.c (default_SIGPIPE):
|
||
New static var, replacing oldblocked and newblocked.
|
||
(create): Use it.
|
||
(main): Set it.
|
||
|
||
split: port ‘split -n N /dev/null’ better to macOS
|
||
* src/split.c (input_file_size): Do not bother with lseek if the
|
||
initial read probe reaches EOF, since the file size is known then.
|
||
This works better on macOS, which doesn’t allow lseek on /dev/null.
|
||
Do not special-case size-zero files, as the issue can occur
|
||
with any size file (though /proc files are the most common).
|
||
If the current position is past end of file, treat this as
|
||
size zero regardless of whether the file has a usable st_size.
|
||
Pass through lseek -1 return values rather than using ‘return -1’;
|
||
this makes the code a bit easier to analyze (and a bit faster).
|
||
Avoid undefined behavior if the size calculation overflows.
|
||
(lines_chunk_split): Do not bother with lseek if it would have
|
||
no effect if successful. This works better on macOS, which
|
||
doesn’t allow lseek on /dev/null.
|
||
* tests/split/l-chunk.sh: Adjust to match fixed behavior.
|
||
|
||
maint: fix NEWS quoting
|
||
* NEWS: Use English-language quoting in recent news.
|
||
|
||
split: split more evenly with -n
|
||
* src/split.c (bytes_split): New arg REM_BYTES.
|
||
Use this to split more evenly. All callers changed.
|
||
(lines_chunk_split, bytes_chunk_extract):
|
||
Be consistent with new byte_split.
|
||
* tests/split/b-chunk.sh, tests/split/l-chunk.sh: Test new behavior.
|
||
|
||
split: small -n lines simplification
|
||
* src/split.c (lines_chunk_split):
|
||
Rewrite while as if-while for clarity.
|
||
|
||
split: refactor lines_chunk_split
|
||
* src/split.c (lines_chunk_split): Simplify by having chunk_end
|
||
point to the first byte after the chunk, rather than to the last
|
||
byte of the chunk. This will reduce confusion once we allow
|
||
chunks to be empty.
|
||
|
||
tee: tune when later -p overrides earlier
|
||
* src/tee.c (pipe_check): Make this a local var instead
|
||
of a static var. This suppresses a -Wmaybe-uninitialized
|
||
diagnostic with gcc 12.2.1 20221121 (Red Hat 12.2.1-4).
|
||
(main): Don’t set pipe_check unnecessarily if a later
|
||
-p option overrides an earlier one that wants pipe_check.
|
||
Problem discovered when I investigated the GCC warning.
|
||
|
||
2023-03-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: refactor tail.c to use iopoll
|
||
* src/tail.c (check_output_alive): Reuse iopoll()
|
||
rather than directly calling poll() or select().
|
||
* src/iopoll.c (iopoll): Refactor to support non blocking operation,
|
||
or ignoring descriptors by passing a negative value.
|
||
* src/iopoll.h (iopoll): Adjust to support a BLOCK parameter.
|
||
* src/tee.c (tee_files): Adjust iopoll() call to explicitly block.
|
||
* src/local.mk: Have tail depend on iopoll.c.
|
||
|
||
2023-02-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail: avoid undefined behavior when polling outputs
|
||
* src/tail.c (check_output_alive): Only check the returned
|
||
events from poll() when it indicates there are events to check.
|
||
|
||
doc: tee -p: clarify operation
|
||
* src/tee.c (usage): Change from describing one (non pipe) aspect
|
||
to the more general point of being the option to use if working with
|
||
pipes, and referencing the more detailed info below.
|
||
* doc/coreutils.texi (tee invocation): s/standard/appropriate/ since
|
||
the standard operation with pipes is to exit immediately upon write
|
||
error. s/early/immediately/ as it's ambiguous as to what "early"
|
||
is in relation to.
|
||
|
||
tests: tee -p: add test for early exit with closed pipes
|
||
* tests/misc/tee.sh: Add a test for the new iopoll logic
|
||
to detect closed outputs and exit early without needing
|
||
further input.
|
||
|
||
2023-02-28 Carl Edquist <edquist@cs.wisc.edu>
|
||
|
||
tee: enhance -p mode using iopoll() to detect broken pipe outputs
|
||
If input is intermittent (a tty, pipe, or socket), and all remaining
|
||
outputs are pipes (eg, >(cmd) process substitutions), exit early when
|
||
they have all become broken pipes (and thus future writes will fail),
|
||
without waiting for more input to become available, as future write
|
||
attempts to these outputs will fail (SIGPIPE/EPIPE).
|
||
|
||
Only provide this enhancement when pipe errors are ignored (-p mode).
|
||
|
||
Note that only one output needs to be monitored at a time with iopoll(),
|
||
as we only want to exit early if _all_ outputs have been removed.
|
||
|
||
* src/tee.c (pipe_check): New global for iopoll mode.
|
||
(main): enable pipe_check for -p, as long as output_error ignores EPIPE,
|
||
and input is suitable for iopoll().
|
||
(get_next_out): Helper function for finding next valid output.
|
||
(fail_output, tee_files): Break out write failure/output removal logic
|
||
to helper function.
|
||
(tee_files): Add out_pollable array to track which outputs are suitable
|
||
for iopoll() (ie, that are pipes); track first output index that is
|
||
still valid; add iopoll() broken pipe detection before calling read(),
|
||
removing an output that becomes a broken pipe.
|
||
* src/local.mk (src_tee_SOURCES): include src/iopoll.c.
|
||
* NEWS: Mention tee -p enhancement in Improvements.
|
||
* doc/coreutils.texi: Mention the new early exit behavior in the nopipe
|
||
modes for the tee -p option.
|
||
|
||
Suggested-by: Arsen Arsenović <arsen@aarsen.me>
|
||
|
||
2023-02-28 Carl Edquist <edquist@cs.wisc.edu>
|
||
|
||
all: add broken pipe detection while waiting for input
|
||
When a program's output becomes a broken pipe, future attempts to write
|
||
to that ouput will fail (SIGPIPE/EPIPE). Once it is known that all
|
||
future write attepts will fail (due to broken pipes), in many cases it
|
||
becomes pointless to wait for further input for slow devices like ttys.
|
||
Ideally, a program could use this information to exit early once it is
|
||
known that future writes will fail.
|
||
|
||
Introduce iopoll() to wait on a pair of fds (input & output) for input
|
||
to become ready or output to become a broken pipe.
|
||
|
||
This is relevant when input is intermittent (a tty, pipe, or socket);
|
||
but if input is always ready (a regular file or block device), then
|
||
a read() will not block, and write failures for a broken pipe will
|
||
happen normally.
|
||
|
||
Introduce iopoll_input_ok() to check whether an input fd is relevant
|
||
for iopoll().
|
||
|
||
Experimentally, broken pipes are only detectable immediately for pipes,
|
||
but not sockets. Errors for other file types will be detected in the
|
||
usual way, on write failure.
|
||
|
||
Introduce iopoll_output_ok() to check whether an output fd is suitable
|
||
for iopoll() -- namely, whether it is a pipe.
|
||
|
||
iopoll() is best implemented with a native poll(2) where possible, but
|
||
fall back to a select(2)-based implementation platforms where there are
|
||
portability issues. See also discussion in tail.c.
|
||
|
||
In general, adding a call to iopoll() before a read() in filter programs
|
||
also allows broken pipes to "propagate" backwards in a shell pipeline.
|
||
|
||
* src/iopoll.c, src/iopoll.h (iopoll): New function implementing broken
|
||
pipe detection on output while waiting for input.
|
||
(IOPOLL_BROKEN_OUTPUT, IOPOLL_ERROR): Return codes for iopoll().
|
||
(IOPOLL_USES_POLL): Macro for poll() vs select() implementation.
|
||
(iopoll_input_ok): New function to check whether an input fd is relevant
|
||
for iopoll().
|
||
(iopoll_output_ok): New function to check whether an input fd is
|
||
suitable for iopoll().
|
||
* src/local.mk (noinst_HEADERS): add src/iopoll.h.
|
||
|
||
2023-02-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update to latest gnulib
|
||
* NEWS: Mention the fts fix to avoid the following assert
|
||
in rm on mem pressure:
|
||
Program terminated with signal SIGSEGV, Segmentation fault.
|
||
at ../lib/cycle-check.c:60
|
||
assure (state->magic == CC_MAGIC);
|
||
* gnulib: Update to the latest to pick up fts commit f17d3977.
|
||
|
||
2023-02-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid hang in new test
|
||
* tests/rm/empty-inacc.sh: Ensure we're not reading from stdin
|
||
when we're relying on no prompt to proceed. Also change the
|
||
file being tested so that a failure in one test doesn't impact
|
||
following tests causing a framework failure.
|
||
|
||
2023-02-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid gdb on macOS
|
||
gdb was seen to hang intermittently on macOS 12.
|
||
Also gdb requires signing on newer macOS systems:
|
||
https://sourceware.org/gdb/wiki/PermissionsDarwin
|
||
So restrict its use on macOS systems for now.
|
||
|
||
* tests/rm/r-root.sh: Skip on darwin systems.
|
||
* tests/tail-2/inotify-race.sh: Restrict the test to
|
||
inotify capable systems to avoid the hang with some gdbs.
|
||
* tests/tail-2/inotify-race.sh: Likewise.
|
||
|
||
2023-02-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp,install,mv: --debug: output debug info when reflinking
|
||
* src/copy.c (copy_reg): Always check whether to output debug info.
|
||
(emit_debug): Restrict output with `cp --attributes-only`.
|
||
|
||
2023-02-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: determine if SEEK_HOLE is enabled
|
||
Upcomming gnulib changes may disable SEEK_HOLE
|
||
even if the system supports it, so dynamically
|
||
check if we've SEEK_HOLE enabled.
|
||
|
||
* init.cfg (seek_data_capable_): SEEK_DATA may be disabled in the build
|
||
if the system support is deemed insufficient, so also use `cp --debug`
|
||
to determine if it's enabled.
|
||
* tests/cp/sparse-2.sh: Adjust to a more general diagnostic.
|
||
* tests/cp/sparse-extents-2.sh: Likewise.
|
||
* tests/cp/sparse-extents.sh: Likewise.
|
||
* tests/cp/sparse-perf.sh: Likewise.
|
||
|
||
2023-02-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cp,install,mv: add --debug to explain how a file is copied
|
||
How a file is copied is dependent on the sparseness of the file,
|
||
what file system it is on, what file system the destination is on,
|
||
the attributes of the file, and whether they're being copied or not.
|
||
Also the --reflink and --sparse options directly impact the operation.
|
||
|
||
Given it's hard to reason about the combination of all of the above,
|
||
the --debug option is useful for users to directly identify if
|
||
copy offloading, reflinking, or sparse detection are being used.
|
||
|
||
It will also be useful for tests to directly query if
|
||
these operations are supported.
|
||
|
||
The new output looks as follows:
|
||
|
||
$ src/cp --debug src/cp file.sparse
|
||
'src/cp' -> 'file.sparse'
|
||
copy offload: yes, reflink: unsupported, sparse detection: no
|
||
|
||
$ truncate -s+1M file.sparse
|
||
|
||
$ src/cp --debug file.sparse file.sparse.cp
|
||
'file.sparse' -> 'file.sparse.cp'
|
||
copy offload: yes, reflink: unsupported, sparse detection: SEEK_HOLE
|
||
|
||
$ src/cp --reflink=never --debug file.sparse file.sparse.cp
|
||
'file.sparse' -> 'file.sparse.cp'
|
||
copy offload: avoided, reflink: no, sparse detection: SEEK_HOLE
|
||
|
||
* doc/coreutils.texi (cp invocation): Describe the --debug option.
|
||
(mv invocation): Likewise.
|
||
(install invocation): Likewise.
|
||
* src/copy.h: Add a new DEBUG member to cp_options, to control
|
||
whether to output debug info or not.
|
||
* src/copy.c (copy_debug): A new global structure to
|
||
unconditionally store debug into from the last copy_reg operations.
|
||
(copy_debug_string, emit_debug): New functions to print debug info.
|
||
* src/cp.c: if ("--debug") x->debug=true;
|
||
* src/install.c: Likewise.
|
||
* src/mv.c: Likewise.
|
||
* tests/cp/debug.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2023-02-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-02-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: chgrp,chmod,chown: state --reference always dereferences
|
||
* src/chgrp.c (usage): State that --reference always
|
||
dereferences symbolic links.
|
||
* src/chmod.c (usage): Likewise.
|
||
* src/chown.c (usage): Likewise.
|
||
Fixes https://bugs.gnu.org/61720
|
||
|
||
2023-02-21 ChuanGang Jiang <jiangchuanganghw@outlook.com>
|
||
|
||
doc: fix some spelling mistakes
|
||
* doc/coreutils.texi: s/functionalty/functionality/,
|
||
s/sychronize/synchronize/, s/millsecond/millisecond/
|
||
s/paramter/parameters/
|
||
* init.cfg: s/parmeters/parameters/
|
||
* scripts/build-older-versions/README.older-versions: s/vesion/version/
|
||
* tests/misc/env-S-script.sh: s/paramaters/parameters/
|
||
Fixes https://bugs.gnu.org/61681
|
||
|
||
2023-02-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid -Wmaybe-uninitialized warning from GCC13
|
||
* src/copy.c (infer_scantype): Always set scan_inference.ext_start,
|
||
as per commit 6c03e8fb which was inadvertently reverted by d374d32c.
|
||
|
||
2023-02-21 Jim Meyering <meyering@fb.com>
|
||
|
||
tests: initialize a variable
|
||
* tests/rm/interactive-once.sh (write_prot_msg1): Initialize it,
|
||
so an envvar setting cannot perturb the test.
|
||
|
||
2023-02-21 Jim Meyering <meyering@meta.com>
|
||
|
||
rm: --dir (-d): fix bugs in handling of empty, inaccessible directories
|
||
* src/remove.c (prompt, rm_fts): In the dir-handling code of both of
|
||
these functions, relax a "get_dir_status (...) == DS_EMPTY" condition
|
||
to instead test only "get_dir_status (...) != 0", enabling flow control
|
||
to reach the prompt function also for unreadable directories. However,
|
||
that function itself also needed special handling for this case:
|
||
(prompt): Handle empty, inaccessible directories properly,
|
||
deleting them with -d (--dir), and prompting about whether to delete
|
||
with -i (--interactive).
|
||
* tests/rm/empty-inacc.sh: Add tests for the new code.
|
||
Reported by наб <nabijaczleweli@nabijaczleweli.xyz> in
|
||
bugs.debian.org/1015273
|
||
* NEWS (Bug fixes): Mention this.
|
||
|
||
2023-02-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
tests: port chmod/setgid.sh to macOS 12
|
||
* tests/chmod/setgid.sh: Try all the groups you’re a member of,
|
||
in case id -g returns 4294967295 (nogroup) which is special
|
||
and does not let you chgrp a file to it.
|
||
|
||
tests: port better to macOS group numbers
|
||
* init.cfg (groups): Port better to macOS 12, where
|
||
group 4294967295 (nogroup) is special: you can be a member
|
||
without being able to chgrp files to the group.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-02-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: fclonefileat security fix + CLONE_ACL + fixups
|
||
* src/copy.c: Some changes if HAVE_FCLONEFILEAT && !USE_XATTR.
|
||
(fd_has_acl): New function.
|
||
(CLONE_ACL): Default to 0.
|
||
(copy_reg): Use CLONE_NOFOLLOW to avoid races like CVE-2021-30995
|
||
<https://www.trendmicro.com/en_us/research/22/a/
|
||
analyzing-an-old-bug-and-discovering-cve-2021-30995-.html>.
|
||
Use CLONE_ACL if available and working, falling back to cloning
|
||
without it if it fails due to EINVAL.
|
||
If the only problem with fclonefileat is that it would create the
|
||
file with the wrong timestamp, or with too few permissions,
|
||
do that but fix the timestamp and permissions afterwards,
|
||
rather than falling back on a traditional copy.
|
||
|
||
2023-02-10 ChuanGang Jiang <jiangchuanganghw@outlook.com>
|
||
|
||
maint: fix some typos in comments
|
||
* NEWS: s/commmand/command/
|
||
* cfg.mk: Adjust old_NEWS_hash with `make update-NEWS-hash`.
|
||
* src/expand-common.c: s/specifed/specified/
|
||
* src/pr.c: s/e.g/e.g./
|
||
* tests/misc/comm.pl: s/ouput/output/
|
||
Fixes https://bugs.gnu.org/61405
|
||
|
||
2023-02-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: simplify infer_scantype
|
||
* src/copy.c (infer_scantype): Do not set *SCAN_INFERENCE
|
||
when returning a value other than LSEEK_SCANTYPE.
|
||
This is just minor refactoring; it simplifies the code a bit.
|
||
Callers are uneffected.
|
||
|
||
doc: document --preserve=mode better
|
||
|
||
2023-02-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail: improve --follow=name with single non regular files
|
||
* src/tail (tail_forever): Attempt to read() from non blocking
|
||
single non regular file, which shouldn't block, but also
|
||
read data even when the mtime doesn't change.
|
||
* NEWS: Mention the improvement.
|
||
* THANKS.in: Thanks for detailed testing.
|
||
|
||
2023-02-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail: fix support for -F with non seekable files
|
||
This was seen to be an issue when following a
|
||
symlink that was being updated to point to
|
||
different underlying devices.
|
||
|
||
* src/tail.c (recheck): Guard the lseek() call to only
|
||
be performed for regular files.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2023-02-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: add --raw option to output a binary digest
|
||
--raw output is the most composable format, and also is a
|
||
robust way to discard the file name without parsing (escaped) output.
|
||
|
||
Examples:
|
||
|
||
$ cksum --raw -a crc "$afile" | basenc --base16
|
||
4ACFC4F0
|
||
|
||
$ cksum --raw -a crc "$afile" | basenc --base2msbf
|
||
01001010110011111100010011110000
|
||
|
||
$ cksum --raw -a sha256 "$bfile" | basenc --base32
|
||
AAAAAAAADHLGRHAILLQWLAY6SNH7OY5OI2RKNQLSWPY3MCUM4JXQ====
|
||
|
||
* doc/coreutils.texi (cksum invocation): Describe the new feature.
|
||
* src/digest.c (output_file): Inspect the new RAW_DIGEST global,
|
||
and output the bytes directly if set.
|
||
* src/cksum.c (output_crc): Likewise.
|
||
* src/sum.c (output_bsd, output_sysv): Likewise.
|
||
* tests/misc/cksum-raw.sh: A new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2023-02-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: uptime: avoid issues on systems without utmp.h
|
||
* src/uptime.c (print_uptime): Following gnulib commit 9041103
|
||
HAVE_UTMP_H will always be defined. Therefore key on whether
|
||
the utmp.ut_type member is present.
|
||
* boottime.m4 (GNULIB_BOOT_TIME): Assume utmp.h is present.
|
||
|
||
2023-02-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: use alignasof, not stdalign
|
||
* .gitignore: Update accordingly.
|
||
* bootstrap.conf (gnulib_modules): Replace obsolescent stdalign
|
||
with alignasof.
|
||
* gl/modules/randread (Depends-on): Depend on alignasof, not stdalign.
|
||
|
||
maint: prefer https: to git:
|
||
The idea is to defend against some adversary-in-the-middle attacks.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-02-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid line length syntax check failure
|
||
* src/cp.c: Adjust source line to be <= 80 chars.
|
||
|
||
tests: fix exit status check in cp -u test
|
||
* tests/cp/preserve-link.sh: This should have been part
|
||
of commit v9.1-134-g01503ce73.
|
||
|
||
2023-02-01 Jim Meyering <meyering@fb.com>
|
||
|
||
cksum: accept new option: --base64 (-b)
|
||
* src/digest.c [HASH_ALGO_CKSUM]: Include "base64.h"
|
||
[HASH_ALGO_CKSUM] (base64_digest): New global.
|
||
[HASH_ALGO_CKSUM] (enum BASE64_DIGEST_OPTION): New enum.
|
||
[HASH_ALGO_CKSUM] (long_options): Add "base64".
|
||
(valid_digits): Rename from hex_digits, now taking an input length argument.
|
||
Adjust callers.
|
||
(bsd_split_3): Rename arg from hex_digits to digest.
|
||
Add new *d_len parameter for length of extracted digest.
|
||
Move "i" declaration down to first use.
|
||
(split_3): Rename arg from hex_digits to digest.
|
||
Add new *d_len parameter for length of extracted digest.
|
||
Instead of relying on "known" length of digest to find the following
|
||
must-be-whitespace byte, search for the first whitespace byte.
|
||
[HASH_ALGO_CKSUM] (output_file): Handle base64_digest.
|
||
[HASH_ALGO_CKSUM] (main): Set base64_digest.
|
||
[HASH_ALGO_CKSUM] (b64_equal): New function.
|
||
(hex_equal): New function, factored out of digest_check.
|
||
(digest_check) Factored part into b64_equal and hex_equal.
|
||
Rename local hex_digest to digest.
|
||
* tests/misc/cksum-base64.pl: Add tests.
|
||
* tests/local.mk (all_tests): Add to the list.
|
||
* cfg.mk (_cksum): Define.
|
||
(exclude_file_name_regexp--sc_prohibit_test_backticks): Exempt new test.
|
||
(exclude_file_name_regexp--sc_long_lines): Likewise.
|
||
* doc/coreutils.texi (cksum invocation): Document it.
|
||
(md5sum invocation) [--check]: Mention digest encoding auto-detect.
|
||
* NEWS (New Features): Mention this.
|
||
|
||
2023-01-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: document --preserve=mode better
|
||
* doc/coreutils.texi: Spruce up cp --preserve=mode doc.
|
||
|
||
cp: improve --preserve usage doc
|
||
* src/cp.c (usage): Improve description of --preserve.
|
||
|
||
cp,mv: skipping due to -u is success, not failure
|
||
This reverts the previous change, so that when a file
|
||
is skipped due to -u, this is not considered a failure.
|
||
* doc/coreutils.texi: Document this.
|
||
* src/copy.c (copy_internal): If --update says to skip,
|
||
treat this as success instead of failure.
|
||
* tests/mv/update.sh, tests/cp/slink-2-slink.sh:
|
||
Revert previous change, to match reverted behavior.
|
||
|
||
cp,ln,mv: when skipping exit with nonzero status
|
||
* NEWS, doc/coreutils.texi: Document this.
|
||
* src/copy.c (copy_internal):
|
||
* src/ln.c (do_link): Return false when skipping action due to
|
||
--interactive or --no-clobber.
|
||
* tests/cp/cp-i.sh, tests/cp/preserve-link.sh:
|
||
* tests/cp/slink-2-slink.sh, tests/mv/i-1.pl, tests/mv/i-5.sh:
|
||
* tests/mv/mv-n.sh, tests/mv/update.sh:
|
||
Adjust expectations of exit status to match revised behavior.
|
||
|
||
2023-01-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: cksum: fix test to include more cases
|
||
* tests/misc/cksum-c.sh: Fix typo which caused part
|
||
of the test data to be ignored.
|
||
|
||
2023-01-30 Jim Meyering <meyering@fb.com>
|
||
|
||
digest.c: remove a duplicate variable
|
||
* src/digest.c (digest_check): Locals n_misformatted_lines and
|
||
n_improperly_formatted_lines were declared and set/incremented
|
||
identically. Remove declaration of the latter. Use the other instead.
|
||
|
||
build: avoid spurious failures due to lack of EGREP definition
|
||
* configure.ac: Use AC_PROG_EGREP, since many doc and test rules
|
||
use $EGREP.
|
||
* cfg.mk (sc_tests_list_consistency): Use grep -E, not $(EGREP) here.
|
||
|
||
2023-01-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: ensure we fail if mv --no-copy crashes
|
||
* tests/mv/no-copy.sh: Honor `make syntax` check
|
||
and use the `returns_ 1 ...` pattern.
|
||
|
||
2023-01-27 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mv: new option --no-copy
|
||
Wishlist item from Mike Frysinger (Bug#61050).
|
||
* src/copy.c (copy_internal):
|
||
Do not fall back on copying if x->no_copy.
|
||
* src/copy.h (struct cp_options): New member no_copy.
|
||
* src/mv.c (NO_COPY_OPTION): New constant.
|
||
(long_options, usage, main): Support --no-copy.
|
||
* tests/mv/no-copy.sh: New test.
|
||
* tests/local.mk (all_tests): Add it.
|
||
|
||
2023-01-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: add lib/error.h to .gitignore
|
||
* .gitignore: Add /lib/error.h as suggested by sc_gitignore_missing
|
||
as a result of gnulib change 2886cca8.
|
||
|
||
doc: csplit: more accurate --elide-empty-files help
|
||
* src/csplit.c (usage): Use "suppress" rather than "remove"
|
||
when describing -z so it's more apparent that the effect
|
||
is a particular numbered file is not created, rather than
|
||
being removed later. I.e., don't suggest -z may induce
|
||
gaps in file numbering.
|
||
Reported at https://bugs.debian.org/1029103
|
||
|
||
2023-01-14 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
* m4/xattr.m4: Remove. This file is now autogenerated by 'bootstrap',
|
||
since it's now in Gnulib. (I did this part by hand.)
|
||
|
||
2023-01-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: copy_file_range: handle ENOENT for CIFS
|
||
* src/copy.c (sparse_copy): Fallback to standard copy upon ENOENT,
|
||
which was seen intermittently across CIFS file systems.
|
||
* NEWS: Mention the bug fix, though qualify it as an "issue"
|
||
rather than a bug, as coreutils is likely only highlighting
|
||
a CIFS bug in this case.
|
||
Fixes https://bugs.gnu.org/60455
|
||
|
||
2023-01-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: update .gitignore
|
||
* .gitignore: Add confdefs*, conftest* (temporaries built
|
||
by ‘configure’).
|
||
|
||
maint: adjust to Gnulib macro renaming
|
||
* src/local.mk (LDADD, copy_ldadd, remove_ldadd, src_sort_LDADD)
|
||
(src_test_LDADD, copy_ldadd, src_date_LDADD, src_ginstall_LDADD)
|
||
(src_ln_LDADD, src_ls_LDADD, src_mktemp_LDADD, src_pr_LDADD)
|
||
(src_tac_LDADD, src_touch_LDADD, src_dd_LDADD, src_sleep_LDADD)
|
||
(src_sort_LDADD, src_tail_LDADD, src_sort_LDADD, LDADD):
|
||
Adjust to recent Gnulib changes.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-01-06 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: immediately fail with transient reflink errors
|
||
* src/copy.c (handle_clone_fail): A new function refactored
|
||
from copy_reg() to handle failures from FICLONE or fclonefileat().
|
||
Fail with all errors from FICLONE, unless they're from the set
|
||
indicating the file system or file do not support the clone operation.
|
||
Also fail with errors from fclonefileat() (dest_dest < 0)
|
||
if they're from the set indicating a transient failure for the file.
|
||
(copy_ref): Call handle_clone_fail() after fclonefileat() and FICLONE.
|
||
(sparse_copy): Call the refactored is_CLONENOTSUP()
|
||
which is now also used by the new handle_clone_fail() function.
|
||
* NEWS: Mention the bug fix. Also mention explicitly
|
||
the older --reflink=auto default change to aid searching.
|
||
* cfg.mk: Adjust old_NEWS_hash with `make update-NEWS-hash`.
|
||
Fixes https://bugs.gnu.org/60489
|
||
|
||
all: further adjustments for new Ronna, Quetta SI prefixes
|
||
* src/dd.c (parse_integer): Support Q,R suffixes.
|
||
* src/od.c (main): Likewise.
|
||
* src/split.c (main): Likewise.
|
||
* src/stdbuf.c (parse_size): Likewise.
|
||
* src/truncate.c (main): Likewise.
|
||
* src/sort.c (specify_size_size): Likewise.
|
||
Also line length syntax check fix.
|
||
* tests/misc/numfmt.pl: Adust top end large number checks
|
||
to the new largest values.
|
||
* doc/coreutils.texi (numfmt invocation): Add a numfmt example.
|
||
* NEWS: Tweak to aid searchability.
|
||
|
||
2023-01-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
numfmt: add support for new SI prefixes
|
||
* src/dd, src/head.c, src/od.c, src/sort.c, src/stdbuf.c, src/tail.c:
|
||
(usage):
|
||
* src/system.h (emit_size_note):
|
||
Mention new SI prefixes.
|
||
* src/du.c (main):
|
||
* src/head.c (head_file):
|
||
* src/numfmt.c (suffix_power, suffix_power_char, prepare_padded_number):
|
||
* src/shred.c (main):
|
||
* src/sort.c (unit_order):
|
||
* src/tail.c (parse_options):
|
||
Support new SI prefixes.
|
||
* src/numfmt.c (MAX_ACCEPTABLE_DIGITS): Increase to 33.
|
||
(zero_and_valid_suffixes, valid_suffixes): New constants,
|
||
with new SI prefixes.
|
||
(valid_suffix, unit_to_umax): Use them.
|
||
(prepare_padded_number): Diagnose "999Q" instead of "999Y".
|
||
* tests/misc/numfmt.pl, tests/misc/sort.pl:
|
||
Adjust tests to match new max.
|
||
|
||
ls: adjust to Gnulib renaming
|
||
* src/local.mk (src_ls_LDADD): In Gnulib,
|
||
LIB_HAS_ACL was renamed to FILE_HAS_ACL_LIB.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2023-01-03 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: avoid grep warning in sc_prohibit_test_minus_ao
|
||
Newer grep(1) complains:
|
||
$ make sc_prohibit_test_minus_ao
|
||
/usr/bin/grep: warning: * at start of expression
|
||
prohibit_test_minus_ao
|
||
|
||
* cfg.mk (exclude_file_name_regexp--sc_prohibit_test_minus_ao): Fix
|
||
expression inroduced in v8.24-120-g3205bb178, and narrow down the file
|
||
pattern to the 'doc/' directory.
|
||
|
||
2023-01-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: copy: mention the reinstated I/O size constraints
|
||
* NEWS: Mention the change in behavior re block size multiples
|
||
to support unusual devices with this constraint.
|
||
* src/copy.c (copy_reg): Likewise.
|
||
|
||
2023-01-02 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
copy: fix possible over allocation for regular files
|
||
* bootstrap.conf (gnulib_modules): Add count-leading-zeros,
|
||
which was already an indirect dependency, since ioblksize.h
|
||
now uses it directly.
|
||
* src/ioblksize.h: Include count-leading-zeros.h.
|
||
(io_blksize): Treat impossible blocksizes as IO_BUFSIZE.
|
||
When growing a blocksize to IO_BUFSIZE, keep it a multiple of the
|
||
stated blocksize. Work around the ZFS performance bug.
|
||
* NEWS: Mention the bug fix.
|
||
Problem reported by Korn Andras at https://bugs.gnu.org/59382
|
||
|
||
2023-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: update all copyright year number ranges
|
||
Update to latest gnulib with new copyright year.
|
||
Run "make update-copyright" and then...
|
||
|
||
* tests/init.sh: Sync with gnulib to pick up copyright year.
|
||
* bootstrap: Manually update copyright year,
|
||
until we fully sync with gnulib at a later stage.
|
||
* tests/sample-test: Adjust to use the single most recent year.
|
||
|
||
2023-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
mainly to get updated copyright year
|
||
|
||
* tests/init.sh: Sync with gnulib
|
||
|
||
2022-12-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
stty: fix off by one column wrapping on output
|
||
* src/stty.c (wrapf): Adjust the comparison by 1,
|
||
to account for the space we're adding.
|
||
* tests/misc/stty.sh: Add a test case.
|
||
* NEWS: Mention the fix.
|
||
Reported in https://bugs.debian.org/1027442
|
||
|
||
2022-12-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: attempt copy offload with sparse files by default
|
||
This was seen to vastly improve performance
|
||
on NFS 4.2 systems by allowing server side copies,
|
||
with partially sparse files (avidemux generated mp4 files).
|
||
|
||
* src/copy.c (lseek_copy): Also set hole_size to 0,
|
||
i.e. enable copy_file_range(), with --sparse=auto (the default),
|
||
to enable copy offload in this case, as we've strong signal
|
||
from SEEK_DATA that we're operating on actual data and not holes here.
|
||
* NEWS: Mention the improvement.
|
||
Fixes https://bugs.gnu.org/60416
|
||
|
||
2022-12-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
wc: fix regression determining file size
|
||
* src/wc.c (wc): Use off_t rather than size_t
|
||
when calculating where to seek to, so that
|
||
we don't seek to a too low offset on systems
|
||
where size_t < off_t, which would result in
|
||
many read() calls to determine the file size.
|
||
* tests/misc/wc-proc.sh: Add a test case
|
||
sufficient for 32 bit systems at least.
|
||
* NEWS: Mention the bug fix.
|
||
Reported at https://bugs.debian.org/1027101
|
||
|
||
maint: avoid recent syntax check failure
|
||
* tests/cp/proc-short-read.sh: Adjust so shorter lines.
|
||
|
||
2022-12-26 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: improve doc of du with CoW etc
|
||
Problem reported by Krzysztof Żelechowski (Bug#60335).
|
||
* doc/coreutils.texi (du invocation): Reword.
|
||
|
||
doc: improve du --threshold wording
|
||
* doc/coreutils.texi (du invocation): Reword.
|
||
|
||
tests: accommodate bogomips capitalizations
|
||
* tests/cp/proc-short-read.sh: Kernel on ARMv7 Processor rev 3 (v7l)
|
||
spells it "BogoMIPS", so allow any capitalization. Patch from
|
||
Zach van Rijn in <https://bugs.gnu.org/60339>.
|
||
|
||
2022-12-06 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
doc: timezone -> time zone
|
||
|
||
doc: improve date -I doc
|
||
Suggested by Marc Chantreux (bug#59827).
|
||
* doc/coreutils.texi (Options for date):
|
||
Give formats for -I, like we already do for --rfc-3339.
|
||
|
||
2022-12-05 Dennis Williamson <dennis@netstrata.com>
|
||
|
||
build: fix missing inclusion of poll.h on macOS
|
||
* src/tail.c: Following on from commit v9.1-55-g324c188cf
|
||
also include poll.h for __APPLE__, which was seen to be required
|
||
on macOS 11.6
|
||
|
||
2022-11-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: tee: make -p decription more complete
|
||
* doc/coreutils.texi (tee invocation): Give a more
|
||
cohesive description of the -p option, and how
|
||
it differs from the default operation.
|
||
|
||
2022-11-20 Arsen Arsenović <arsen@aarsen.me>
|
||
|
||
scripts: commit-msg: recognize Git cut_lines
|
||
This prevents spurious failures from happening when someone sets
|
||
commit.verbose or passes -v to commit.
|
||
|
||
2022-11-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: more dash fixes
|
||
* doc/coreutils.texi, doc/sort-version.texi: Prefer on "x -- y" to
|
||
"x---y" in prose, as the result is more readable in Emacs.
|
||
Fix some instances of unescaped ‘-’ that should be minus, not
|
||
hyphen. Fix some other instances that should be en dash. No
|
||
spaces around en dash when it’s a range.
|
||
|
||
maint: fix cfg.mk comment
|
||
* cfg.mk (sc_texi_long_option_escaped): Fix comment.
|
||
|
||
2022-11-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: make SIGPIPE trap checking more robust
|
||
* init.cfg (trap_sigpipe_or_skip_): A subshell with ignored SIGPIPE
|
||
was seen to not terminate, on Solaris 11 at least.
|
||
So protect with a timeout(1).
|
||
|
||
maint: avoid new grep -q syntax-check failures
|
||
* cfg.mk: Exclude NEWS from the check.
|
||
* init.cfg: s/grep -q/grep >/dev/null/.
|
||
* tests/ls/hyperlink.sh: Likewise.
|
||
* tests/ls/symlink-quote.sh: Likewise.
|
||
|
||
maint: avoid misquoting of some --long-options in texi
|
||
* cfg.mk (sc_texi_long_option_escaped): A new check to
|
||
avoid future instances of this.
|
||
* doc/coreutils.texi (Common options): Rearrange this menu
|
||
to be less repetitive in each description, and avoid long lines.
|
||
Addresses https://bugs.gnu.org/59262
|
||
|
||
2022-11-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: fix markup
|
||
Problem reported by Antonio Diaz Diaz (bug#59262).
|
||
* doc/coreutils.texi: Use markup in menus to prevent
|
||
‘--’ from turning into an em dash, and to be more
|
||
consistent.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-10-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: printf: make "java" encoding example more standard
|
||
Note using iconv(1) rather than recode(1) is not appropriate
|
||
for this example, as the required functionality is only
|
||
available on libiconv's iconv implementation, which is
|
||
not installed on most systems.
|
||
|
||
* doc/coreutils.texi (printf invocation): Use env rather than
|
||
/usr/local/bin for the printf command. Escape '%' so more robust.
|
||
Also use a locale that exists on modern systems.
|
||
|
||
2022-10-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: move description of printf options to better location
|
||
* doc/coreutils.texi (printf invocation): Move the description
|
||
of accepted options from the middle of the unicode discussion.
|
||
|
||
2022-10-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
printf: with \U, support all valid unicode points
|
||
Previously this was restricted to the C99 universal character subset,
|
||
which restricted most values <= 0x9F, as that simplifies the C lexer.
|
||
However printf(1) doesn't need this restriction.
|
||
Note also the bash builtin printf already supports all values <= 0x9F.
|
||
|
||
* src/printf.c (main): Relax the restriction on points <= 0x9F.
|
||
* doc/coreutils.texi (printf invocation): Adjust description.
|
||
* tests/misc/printf-cov.pl: Adjust accordingly. Add new cases.
|
||
* NEWS: Mention the change in behavior.
|
||
Reported at https://bugs.debian.org/1022857
|
||
|
||
2022-10-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: basenc: reference from base{32,64} docs
|
||
* doc/coreutils.texi (base32 invocation): Reference basenc
|
||
to improve discoverability.
|
||
(base64 invocation): Likewise.
|
||
* man/base32.x: Likewise.
|
||
* man/base64.x: Likewise.
|
||
|
||
2022-09-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: sort: mention --version useful for IPv4 addresses
|
||
* doc/coreutils.texi (sort invocation): Mention in the
|
||
multi invocation sort example that the -V GNU extension
|
||
could be used to sort IPv4 addresses, and thus simplify
|
||
to a single invocation.
|
||
|
||
2022-09-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: NEWS: use consistent quoting
|
||
* NEWS: Change unmatched curly quote to more consistent single quote.
|
||
|
||
doc: be more consistent when documenting exit status
|
||
* src/system.h (emit_exec_status): A new function to
|
||
output standard "Exit status:" info for commands that exec others.
|
||
* doc/coreutils.texi (Exit status): Add "ls" and "runcon"
|
||
to the list of commands with non standard exit status.
|
||
* src/numfmt.c (main): Call initialize_exit_failure() explicitly
|
||
to better indicate this utility may exit with something other than
|
||
EXIT_FAILURE.
|
||
* src/timeout.c (usage): Use more consistent capitalization.
|
||
* src/chroot.c: Call emit_exec_status().
|
||
* src/env.c: Likewise.
|
||
* src/nice.c: Likewise.
|
||
* src/nohup.c: Likewise.
|
||
* src/runcon.c: Likewise.
|
||
* src/stdbuf.c: Likewise.
|
||
|
||
runcon: fix inconsistent exit status upon write error
|
||
* src/runcon.c (main): Call initialize_exit_failure(),
|
||
so we use an appropriate exit status upon failure to close stdout.
|
||
This should have been part of recent commit ea3ee6df.
|
||
* tests/misc/help-version.sh: Adjust test case accordingly.
|
||
|
||
maint: getlimits: diagnose invalid options
|
||
* src/getlimits.c: Don't call initialize_exit_failure()
|
||
as it's not needed for standard EXIT_FAILURE returns.
|
||
Also use the function variant that diagnoses invalid options.
|
||
|
||
maint: rmdir: also use DS_... constants here
|
||
* src/rmdir.c: As with commit 627c9a97,
|
||
use DS_NONEMPTY constant to improve readability.
|
||
|
||
2022-09-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
wc: add --total={auto,never,always,only} option
|
||
without this option, control of when the total is output
|
||
is quite awkward. Consider trying to suppress the total line,
|
||
which could be achieved with something like:
|
||
|
||
wc-no-total() { wc "$@" /dev/null | head -n-2; }
|
||
|
||
As well as being non obvious, it's also non general.
|
||
It would give a non failure, but zero count if passed a file on stdin.
|
||
Also it doesn't work in conjunction with the --files0-from option,
|
||
which would need to be handled differently with something like:
|
||
|
||
{ find files -print0; printf '%s\0' /dev/null; } |
|
||
wc --files0-from=- |
|
||
head -n2
|
||
|
||
Also getting just the total can be awkward as file names
|
||
are only suppressed when processing stdin, and
|
||
also a total line is only printed if processing more than one file.
|
||
For completness this might be achieved currently with:
|
||
|
||
wc-only-total() {
|
||
wc "$@" |
|
||
tail -n1 |
|
||
sed 's/^ *//; s/ [^ 0-9]*$//'
|
||
}
|
||
|
||
* src/wc.c: Add new --total option.
|
||
* tests/misc/wc-total.sh: New test suite for the new option.
|
||
* tests/local.mk: Reference the new test.
|
||
* doc/coreutils.texi (wc invocation): Document the new option.
|
||
* THANKS.in: Add suggestor.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2022-09-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: use enums to make dir_status code easier to read
|
||
* src/system.h: Add DS_EMPTY, and DS_NONEMPTY enums.
|
||
* src/remove.c: Use the new enums to make code easier to understand.
|
||
|
||
doc: mention the recent rm improvement
|
||
* NEWS: Mention the improvement re handling of directory errnos.
|
||
|
||
maint: fix recent syntax-check failures
|
||
* .gitignore: Add new headers from gnulib.
|
||
* src/basenc.c: Adjust line length due to replacement
|
||
of 'verify' with 'static_assert'.
|
||
* src/od.c: Likewise.
|
||
|
||
2022-09-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
rm: fix diagnostics on I/O error
|
||
I ran into this problem when attempting to recursively
|
||
remove a directory in a filesystem on flaky hardware.
|
||
Although the underlying readdir syscall failed with errno == EIO,
|
||
rm issued no diagnostic about the I/O error.
|
||
|
||
Without this patch I see this behavior:
|
||
|
||
$ rm -fr baddir
|
||
rm: cannot remove 'baddir': Directory not empty
|
||
$ rm -ir baddir
|
||
rm: descend into directory 'baddir'? y
|
||
rm: remove directory 'baddir'? y
|
||
rm: cannot remove 'baddir': Directory not empty
|
||
|
||
With this patch I see the following behavior, which
|
||
lets the user know about the I/O error when rm tries
|
||
to read baddir's directory entries:
|
||
|
||
$ rm -fr baddir
|
||
rm: cannot remove 'baddir': Input/output error
|
||
$ rm -ir baddir
|
||
rm: cannot remove 'baddir': Input/output error
|
||
|
||
* src/remove.c (Ternary): Remove. All uses removed.
|
||
(get_dir_status): New static function.
|
||
(prompt): Last arg is now directory status, not ternary.
|
||
Return RM_USER_ACCEPTED if user explicitly accepted.
|
||
All uses changed.
|
||
Report any significant error in directory status right away.
|
||
(prompt, rm_fts): Use get_dir_status to get directory status lazily.
|
||
(excise): Treat any FTS_DNR errno as being more descriptive, not
|
||
just EPERM and EACCESS. For example, EIO is more descriptive.
|
||
(rm_fts): Distinguish more clearly between explicit and implied
|
||
user OK.
|
||
* src/remove.h (RM_USER_ACCEPTED): New constant.
|
||
(VALID_STATUS): Treat it as valid.
|
||
* src/system.h (is_empty_dir): Remove, replacing with ...
|
||
(directory_status): ... this more-general function.
|
||
All uses changed. Avoid undefined behavior of looking at
|
||
a non-null readdir pointer after corresponding closedir.
|
||
* tests/rm/rm-readdir-fail.sh: Adjust test of internals
|
||
to match current behavior.
|
||
|
||
2022-09-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
rm: fix readdir test
|
||
* tests/rm/rm-readdir-fail.sh [_DIRENT_HAVE_D_NAMELEN]:
|
||
Fix off-by-1 bug in directory entry length.
|
||
|
||
2022-09-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: fix typo in previous change
|
||
|
||
doc: warn about tabs command (bug#57946)
|
||
|
||
2022-09-18 Stefan Kangas <stefankangas@gmail.com> (tiny change)
|
||
|
||
all: prefer HTTPS to HTTP
|
||
* README-hacking:
|
||
* README-prereq:
|
||
* THANKS.in:
|
||
* doc/sort-version.texi (Other version/natural sort implementations):
|
||
* gl/lib/rand-isaac.c:
|
||
* gl/tests/test-rand-isaac.c:
|
||
* src/operand2sig.c (operand2sig):
|
||
* src/remove.c (nonexistent_file_errno):
|
||
* tests/misc/env-signal-handler.sh:
|
||
* tests/misc/sort-debug-warn.sh (LC_ALL): Prefer HTTPS to HTTP.
|
||
Addresses https://bugs.gnu.org/56512
|
||
|
||
2022-09-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
kill: port to picky-conversion hosts
|
||
* src/kill.c (send_signals): Don’t rely on conversion overflow
|
||
being silent.
|
||
|
||
2022-09-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: fix bootstrap module lists for alignof
|
||
* bootstrap.conf (gnulib_modules): Remove alignof, which isn’t
|
||
needed since coreutils source modules don’t include alignof.h.
|
||
Add stdalign, since they depend on alignof working without
|
||
stdalign.h.
|
||
|
||
maint: prefer static_assert to verify
|
||
* bootstrap.conf: Add assert-h.
|
||
* gl/lib/randperm.c: Do not include verify.h.
|
||
* gl/lib/randperm.c, src/basenc.c, src/dd.c, src/digest.c:
|
||
* src/dircolors.c, src/expr.c, src/factor.c, src/ls.c, src/numfmt.c:
|
||
* src/od.c, src/seq.c, src/shred.c, src/sort.c, src/stat.c:
|
||
Prefer C23’s static_assert to nonstandard verify.
|
||
* gl/modules/randperm (Depends-on): Add assert-h.
|
||
|
||
maint: assume C23 alignof
|
||
* gl/lib/randread.c, src/stat.c (print_statfs):
|
||
No need to include stdalign.h, now that alignof is a keyword
|
||
in C23 and Gnulib arranges for this.
|
||
|
||
maint: don’t include config.h twice
|
||
* gl/lib/fadvise.h, gl/lib/smack.h, src/blake2/blake2-impl.h:
|
||
Do not include config.h from a .h file. config.h is supposed
|
||
to be included once, at the start of compilation and before
|
||
any other file.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-09-13 Álvar Ibeas <a.ibeas@gmx.com> (tiny change)
|
||
|
||
doc: shred: minor fix
|
||
* doc/coreutils.texi: Fix wording.
|
||
|
||
2022-09-13 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: adjust to Gnulib stdbool C23 change
|
||
* gl/lib/mbsalign.c, gl/lib/randread.c, gl/lib/targetdir.h:
|
||
* gl/lib/xdectoint.c, gl/lib/xfts.c, gl/lib/xfts.h:
|
||
* src/blake2/b2sum.c, src/copy.h, src/die.h, src/system.h:
|
||
Don’t include <stdbool.h>, since Gnulib now emulates C23.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-09-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
stty: give explicit error for unsupported asymmetric speeds
|
||
* src/stty.c (check_speed): If difference input and output speeds
|
||
are specified, then validate the system supports that, before
|
||
interacting with the device.
|
||
|
||
stty: fix false warnings from [io]speed settings
|
||
* src/stty.c (eq_mode): A new function to compare
|
||
equivalence of two modes.
|
||
(main): Use eq_mode() rather than memcmp() to compare
|
||
two modes. Also use stack variables rather than implicitly
|
||
initialized static variables. Also remove all uses of
|
||
the SPEED_WAS_SET hack since we now more robustly compare modes.
|
||
* NEWS: Update the [io]speed fix entry.
|
||
Reported at https://bugs.debian.org/1019468
|
||
|
||
2022-09-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: add lib/gmp.h to .gitignore
|
||
* .gitignore: Add generated file. Tested with:
|
||
./configure --without-libgmp && make && git status
|
||
|
||
2022-08-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
stty: add an undocumented ---debug option for more info
|
||
* src/stty.c (main): Move internal TESTING code that showed
|
||
the new and old mode, upon failure to apply the new mode,
|
||
to being runtime controlled with the ---debug option.
|
||
Also augment the display to show which items were not
|
||
set as expected.
|
||
|
||
doc: stty: clarify that [-]drain is treated as an option
|
||
* doc/coreutils.texi (stty invocation): Say that "drain"
|
||
is treated as an option, rather than a line setting,
|
||
and so option processing rules apply to it.
|
||
Reported in https://bugs.debian.org/1018803
|
||
|
||
stty: validate ispeed and ospeed arguments
|
||
* src/stty.c (apply_settings): Validate [io]speed arguments
|
||
against the internal accepted set.
|
||
(set_speed): Check the cfset[io]speed() return value so
|
||
that we validate against the system supported set.
|
||
* tests/misc/stty-invalid.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
Reported in https://bugs.debian.org/1018790
|
||
|
||
2022-08-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: be defensive in avoiding gnulib's poll module
|
||
* src/tail.c (check_output_alive): Add a guard that would
|
||
trigger on most platforms, to detect if we're using the
|
||
gnulib poll module. That's currently problematic in the
|
||
way it emulates poll() using select() and would cause
|
||
issues on macOS and AIX at least as poll() is replaced there.
|
||
|
||
tail: use poll() on macOS
|
||
* src/tail.c (check_output_alive): poll() is the most commonly used
|
||
interface, so use this on macOS also to minimize divergence.
|
||
|
||
2022-08-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: runcon: fix new test to skip on non SELinux systems
|
||
* tests/misc/runcon-compute.sh: Use our new internal error
|
||
125 status to detect SELinux errors, and skip in this case.
|
||
|
||
doc: NEWS: document recent comm fix, and runcon change
|
||
* NEWS: Mention comm bug fix, and runcon change in behavior.
|
||
|
||
2022-08-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix tests after recent runcon change
|
||
Following commit v9.1-49-gea3ee6df2
|
||
|
||
* tests/misc/invalid-opt.pl: Map runcon failure status to 125.
|
||
* tests/misc/usage_vs_getopt.sh: Likewise.
|
||
|
||
2022-08-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
comm: fix NUL --output-delimiter with --total
|
||
* src/comm.c (compare_files): Handle the single character
|
||
--output-delimeter case separately so that NUL is appropriately
|
||
handled.
|
||
* doc/coreutils.texi (comm invocation): Fix the description
|
||
of --output-delimiter to say an empty delimeter is treated
|
||
as a NUL separator, rather than being disallowed.
|
||
* tests/misc/comm.pl: Add a test case.
|
||
Reported at https://bugs.debian.org/1014008
|
||
|
||
maint: remove FIXME comment from timeout.c
|
||
* src/timeout.c: We shouldn't hardcode `sh -c` as users
|
||
can specify that if needed, so remove the comment.
|
||
|
||
runcon: distinguish runcon specific errors in exit status
|
||
* src/runcon.c: Use EXIT_CANCELED (125) instead of EXIT_FAILURE (1),
|
||
so that errors specific to runcon can be distinguished,
|
||
from those of the invoked program.
|
||
* doc/coreutils.texi (runcon invocation): Fix the Exit status
|
||
description to say we return 125 (not 127) for internal errors.
|
||
* tests/misc/runcon-no-reorder.sh: Add a test case.
|
||
|
||
2022-08-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: README: split out ancillary information
|
||
The README was becoming too long and contained
|
||
quite a bit of info only pertaining to rarely used systems, so...
|
||
|
||
* README: Split out install specific info to README-install.
|
||
Also remove a few stale lines, and reorder a few items.
|
||
* README-install: A new file split from README.
|
||
* Makefile.am [EXTRA_DIST]: Explicitly reference new README-install
|
||
file for distribution, since automake only auto adds README.
|
||
* TODO: Reference the HPUX info now in README-install.
|
||
|
||
2022-08-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: support explicit --time=modification selection
|
||
* src/ls.c [time_args]: Add support for explicit
|
||
'mtime' or 'modification' arguments to --time.
|
||
* tests/misc/ls-time.sh: Add explicit --time=mtime usage.
|
||
* doc/coreutils.texi (ls invocation): Describe --time=mtime.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2022-08-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: ls: clarify description of timestamps
|
||
* src/ls.c (usage): Don't mention "modification" in the
|
||
description of ctime (-c), as it's confusing with mtime.
|
||
Mention "metadata" when discussing "change" time to
|
||
disambiguate from data change time.
|
||
* doc/coreutils.texi (ls invocation): State that --time=creation
|
||
falls back to using mtime where not available.
|
||
|
||
2022-08-01 Pierre Marsais <pierre.marsais@lse.epita.fr>
|
||
|
||
doc: cp: fix --reflink=when typo in texinfo
|
||
This behaviour is correctly documented when doing `cp --help`.
|
||
There is no `--reflink=when` option.
|
||
|
||
* doc/coreutils.texi (cp invocation): Fix document stating
|
||
that `--reflink` is equivalent to `--reflink=always`.
|
||
|
||
2022-08-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: uniq: clarify -f operation
|
||
* doc/coreutils.texi (uniq invocation): State that leading blanks
|
||
are part of the field, and also that -f is one based.
|
||
|
||
2022-07-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: reference fmt(1) from fold(1)
|
||
* man/fold.x: fold and fmt have overlapping functionality,
|
||
so reference fmt(1) from the lower level fold(1) utility.
|
||
|
||
2022-07-27 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
touch: fix aliasing bug
|
||
Problem reported by Tim Lange in:
|
||
https://lists.gnu.org/r/coreutils/2022-07/msg00008.html
|
||
* src/touch.c (date_relative): Rename from get_reldate,
|
||
and use a functional style to fix the aliasing bug.
|
||
|
||
2022-07-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-07-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: date: clarify which options are mutually exclusive
|
||
* src/date.c (usage): Specify that --date, --file, --reference,
|
||
and --resolution are mutually exclusive. This is also useful
|
||
documentation to group similar options.
|
||
* doc/coreutils.texi (Options for date): Likewise.
|
||
Addresses https://bugs.gnu.org/55401
|
||
|
||
date: --debug: diagnose discarded -d or -s options
|
||
* src/date.c: (main): Track and diagnose whether any
|
||
-d or -s options are dropped, as users may think
|
||
multiple options are supported, given they can be relative.
|
||
* tests/misc/date-debug.sh: Add a test case.
|
||
* NEWS: Mention the improvement.
|
||
|
||
runcon: ensure --compute runs the file it inspects
|
||
* src/runcon.c (main): With -c avoid searching the path
|
||
to ensure the file specified to --compute is executed.
|
||
* tests/misc/runcon-compute.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the bug fix.
|
||
Reported in https://bugs.debian.org/1013924
|
||
|
||
doc: tr: clarify that -t is ignored unless translating
|
||
* src/tr.c (usage): Don't say that -t is disallowed unless translating.
|
||
Reported in https://bugs.debian.org/1012447
|
||
|
||
2022-07-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
rm: don’t assume st_size is nonnegative
|
||
* src/remove.c: Include stat-time.h.
|
||
(cache_fstatat, cache_stat_init): Use negative st->st_atim.tv_sec to
|
||
determine whether the stat is cached, not negative st->st_size.
|
||
On non-POSIX platforms that lack st_atim.tv_sec, don’t bother to cache.
|
||
|
||
2022-07-22 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
stat: -c %s now prints unsigned
|
||
* src/stat.c (unsigned_file_size): New static function,
|
||
copied from src/ls.c.
|
||
(print_stat): %s prints an unsigned value now (Bug#56710).
|
||
|
||
2022-07-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: doc improvement (Bug#54586)
|
||
* doc/coreutils.texi (dd invocation): Explain
|
||
fdatasync and fsync better.
|
||
|
||
2022-07-06 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: don’t remove nonempty cloned dest
|
||
This follows up on comments by Pádraig Brady (bug#56391).
|
||
* src/copy.c (copy_reg): When --reflink=always removes a file
|
||
due to an FICLONE failure, do not remove a nonempty file.
|
||
|
||
2022-07-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: don’t create empty file if cannot clone
|
||
* src/copy.c (copy_reg): With --reflink=always, if FICLONE fails
|
||
on a file we just created, clean up by removing the file (Bug#56391).
|
||
|
||
2022-07-04 Ivan Radić <ivan-radic@users.noreply.github.com>
|
||
|
||
maint: fix comment typo
|
||
* src/uniq.c: s/preceges/precedes/
|
||
|
||
2022-06-24 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
shuf: better diagnostic for ‘shuf -i -10-10’
|
||
* src/shuf.c: Do not include xdectoint.h.
|
||
(main): Improve diagnostic for ‘shuf -i -10-10’. Without this
|
||
patch, the diagnostic was “shuf: invalid input range: ‘’” which is
|
||
not helpful. Now it is “shuf: invalid input range: ‘-10-10’”.
|
||
|
||
2022-06-23 Jim Meyering <meyering@fb.com>
|
||
|
||
cp: avoid -Wmaybe-uninitialized warning from GCC13
|
||
* src/copy.c (infer_scantype): Always set scan_inference.ext_start,
|
||
to make the code match the comment.
|
||
|
||
maint: remove unnecessary inclusion of hash.h
|
||
* src/cut.c: Don't include hash.h. The implementation was
|
||
changed not to need that in v8.21-43-g3e466ad05.
|
||
|
||
2022-06-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: prefer POSIX-compatible EREs
|
||
* cfg.mk (begword, endword): New macros.
|
||
(sc_prohibit_stat_macro_address, sc_prohibit_fail_0)
|
||
(sc_prohibit_short_facl_mode_spec, sc_require_stdio_safer)
|
||
(sc_prohibit_sleep, sc_prohibit_framework_failure)
|
||
(sc_marked_devdiagnostics):
|
||
* build-aux/gen-single-binary.sh:
|
||
Prefer POSIX-compatible EREs to GNU extensions like \w and \<.
|
||
|
||
2022-06-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: fix ‘cp -rx / /mnt’
|
||
Problem reported by pkoraou@gmail.com (Bug#55910).
|
||
* src/copy.c (copy_internal): Treat a relative destination name ""
|
||
as if it were "." for the purpose of directory-relative syscalls
|
||
like fstatat that might might refer to the destination directory.
|
||
|
||
2022-06-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: avoid \] in REs
|
||
* cfg.mk (sc_dd_max_sym_length, sc_prohibit_man_see_also_period):
|
||
Do not rely on undefined interpretation of \] in regular expressions.
|
||
|
||
build: update gnulib submodule to latest
|
||
* bootstrap: Copy from latest Gnulib.
|
||
* tests/misc/ls-misc.pl (v_files): Adjust to new Gnulib behavior.
|
||
|
||
2022-05-26 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: fix spelling in NEWS entry
|
||
* NEWS: s/x86-64/x86_64/
|
||
|
||
2022-05-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: spelling fix
|
||
|
||
sort: tune diff_reversed
|
||
* src/sort.c (diff_reversed): Tune. On x86-64 with GCC, this
|
||
saves a conditional branch and shortens the generated machine code.
|
||
|
||
sort: refactor tricky diff reversal
|
||
* src/sort.c (diff_reversed): New function, to make the intent clearer.
|
||
(keycompare, compare): Use it.
|
||
|
||
2022-05-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: sort.c: fix syntax-check issue in recent commit
|
||
* src/sort.c (keycompare): Avoid useless if before free()
|
||
as detected with sc_avoid_if_before_free.
|
||
|
||
sort: fix issue with -rk in previous commit
|
||
* src/sort.c (keycompare): Fix typo causing -r to be
|
||
effectively ignored with -k.
|
||
Fixes https://bugs.gnu.org/55622
|
||
|
||
2022-05-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
sort: fix unlikely int overflow with -r
|
||
* src/sort.c (keycompare, compare): Don’t overflow if -r is
|
||
specified and a comparison function returns INT_MIN, as this
|
||
causes the comparison to have undefined behavior (typically the
|
||
reverse of correct). glibc memcmp on s390x reportedly returns
|
||
INT_MIN in some cases, so this is not a purely academic issue.
|
||
|
||
maint: simplify comparisons
|
||
* src/comm.c (compare_files):
|
||
* src/join.c (keycmp):
|
||
* src/ls.c (off_cmp):
|
||
* src/ptx.c (compare_words, compare_occurs):
|
||
* src/set-fields.c (compare_ranges):
|
||
Prefer ((a > b) - (a < b)) to variants like (a < b ? -1 : a > b)
|
||
as it’s typically faster these days.
|
||
|
||
sort: remove some gotos
|
||
* src/sort.c (keycompare): Rework to avoid gotos.
|
||
This also shrinks the machine code a bit (112 bytes)
|
||
with GCC 12 x86-64 -O2. Nowadays compilers are smart
|
||
enough to coalesce jumps so we need not do it by hand.
|
||
|
||
sort: pacify GCC 12 false positive
|
||
* src/sort.c (keycompare): Rework to pacify a GCC 12
|
||
-Wmaybe-uninitialized false positive, by coalescing some minor
|
||
duplicate code and eliminating a branch. This should execute an
|
||
insn or two less in the usual case.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-05-09 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
|
||
|
||
factor: --exponents: new option for printing in p^e format
|
||
When factoring numbers that have a large 2^n factor, it can be hard to
|
||
eyeball just how many 2's there are. Add an option to print each prime
|
||
power factor in the p^e format (omitting the exponent when it is 1).
|
||
|
||
* src/factor.c: Add -h, --exponents option for printing in p^e format.
|
||
* doc/coreutils.texi (factor invocation): Document the new option.
|
||
* tests/misc/factor.pl: Add test case.
|
||
* THANKS.in: Add previous suggester
|
||
(https://lists.gnu.org/r/coreutils/2017-11/msg00015.html).
|
||
|
||
Suggested-by: Emanuel Landeholm <emanuel.landeholm@gmail.com>
|
||
|
||
2022-05-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: sort-NaN-infloop: augment testing for recent fix
|
||
* tests/misc/sort-NaN-infloop.sh: Add test case from
|
||
https://unix.stackexchange.com/a/700967/37127
|
||
* src/sort.c: Avoid syntax-check failure.
|
||
|
||
2022-05-02 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
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.
|
||
|
||
2022-04-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mv: test Bug#55029
|
||
* tests/mv/backup-dir.sh: New test for Bug#55029,
|
||
reported by Steve Ward.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-04-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
2022-04-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
doc: fix footnote formats
|
||
* doc/coreutils.texi: Reword footnote, or put it right next
|
||
to previous punctuation.
|
||
|
||
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.
|
||
|
||
2022-04-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-04-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 9.1
|
||
* NEWS: Record release date.
|
||
|
||
2022-04-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-04-14 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-04-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
maint: syntax-check: fix preprocessor indentation
|
||
* gl/lib/targetdir.h: Keep '#' at start of line.
|
||
|
||
2022-04-13 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp,mv,install: omit an ‘inline’
|
||
* gl/lib/targetdir.c (target_directory_operand):
|
||
Omit unnecessary ‘inline’.
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
2022-04-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
tests: env-S.pl: unset cygwin hardwired env vars
|
||
* tests/misc/env-S.pl: Unset SYSTEMROOT and WINDIR.
|
||
|
||
2022-04-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-04-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: b2sum.sh: fix false failure on cygwin
|
||
* tests/misc/b2sum.sh: Avoid binary '*' tags when comparing checksums.
|
||
Reported by Bruno Haible
|
||
|
||
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.
|
||
|
||
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
|
||
|
||
2022-04-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-04-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-04-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-04-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove older ChangeLog items
|
||
* Makefile.am: Update the oldest documented version
|
||
to 8.27 which is now about 5 years old.
|
||
|
||
2022-04-08 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: remove obsolete statat gnulib module
|
||
* bootstrap.conf (gnulib_modules): Remove statat.
|
||
|
||
2022-04-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-04-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-04-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: describe `dd iseek` as a feature not a change
|
||
* NEWS: Move description from "Changes in behavior"
|
||
to "New features".
|
||
|
||
2022-04-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-04-03 Ville Skyttä <ville.skytta@iki.fi>
|
||
|
||
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
|
||
|
||
2022-03-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-03-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: sync latest bootstrap from gnulib
|
||
* bootstrap: Should have updated this with the last gnulib update.
|
||
|
||
2022-03-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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().
|
||
|
||
2022-03-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-03-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: move build-related NEWS item to its own section
|
||
* NEWS: Follow other Build-related patterns in NEWS.
|
||
|
||
2022-03-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-03-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-03-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-03-07 Rohan Sable <rsable@redhat.com>
|
||
|
||
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
|
||
|
||
2022-03-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: ensure AT_NO_AUTOMOUNT is defined
|
||
update gnulib submodule to latest,
|
||
where this is the only change
|
||
|
||
2022-03-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
date: fix newly-introduced %%-N bug
|
||
* src/date.c (adjust_resolution): Don’t mishandle %%-N.
|
||
* tests/misc/date.pl (pct-pct): New test.
|
||
|
||
2022-02-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-02-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-02-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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).
|
||
|
||
2022-02-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
2022-02-22 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: improve doc relative to POSIX
|
||
* doc/coreutils.texi (dd invocation): Improve documentation,
|
||
clarifying whether features are extensions to POSIX.
|
||
|
||
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.
|
||
|
||
2022-02-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
2022-02-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-02-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: env: fix man page reference of exec(2) to exec(3p)
|
||
* man/env.x: Change exec() reference from section 2 to 3p.
|
||
|
||
2022-02-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
2022-02-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-02-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-02-14 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
tr: mention multibyte problem in man page
|
||
* man/tr.x: Document tr problem.
|
||
|
||
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.
|
||
|
||
2022-02-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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.
|
||
|
||
2022-02-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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().
|
||
|
||
2022-02-13 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-02-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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
|
||
|
||
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.
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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
|
||
|
||
2022-02-08 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
2022-02-07 Christian Hesse <mail@eworm.de>
|
||
|
||
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.
|
||
|
||
2022-02-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
date: test against bug#50115
|
||
* tests/misc/date.pl: Add test.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-02-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
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{}.
|
||
|
||
2022-02-05 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-02-04 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
2022-02-01 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: add NEWS entry for recent cksum change
|
||
* NEWS (Changes in behavior): Add entry for commit v9.0-92-ga42a03913.
|
||
|
||
2022-02-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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
|
||
|
||
tr: pacify -fsanitizer=leak
|
||
* src/tr.c (main): Use main_exit, not return, in a couple of
|
||
places missed last time.
|
||
|
||
chgrp: fix typo in previous change
|
||
* src/chgrp.c (main): Use main_exit, not exit.
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
2022-01-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: cut: avoid exporting recently added variable
|
||
* src/cut.c: Make output_delimiter_default static,
|
||
as identified by `make syntax-check`.
|
||
|
||
2022-01-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
uptime: simplify -fsanitize=leak pacification
|
||
* src/uptime.c (uptime): Exit here ...
|
||
(main): ... instead of here.
|
||
|
||
uniq: remove IF_LINT
|
||
* src/uniq.c (check_file): Remove a no-longer-needed IF_LINT.
|
||
|
||
unexpand: remove IF_LINT
|
||
* src/unexpand.c (unexpand): Remove a no-longer-needed IF_LINT.
|
||
|
||
pr: remove IF_LINT
|
||
* src/pr.c (read_line): Remove a no-longer-needed IF_LINT.
|
||
|
||
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.
|
||
|
||
2022-01-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
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.
|
||
|
||
2022-01-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
pr: simplify -fsanitize=leak pacification
|
||
* src/pr.c (main): Remove an IF_LINT.
|
||
Use main_exit rather than return.
|
||
|
||
pinky: simplify -fsanitize=leak pacification
|
||
* src/pinky.c (short_pinky): exit instead of freeing.
|
||
|
||
paste: remove IF_LINT
|
||
* src/paste.c (paste_parallel): Remove no-longer-needed IF_LINT.
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
expand: remove IF_LINT
|
||
* src/expand.c (expand): Remove no-longer-needed IF_LINT.
|
||
|
||
env: simplify -fsanitize=leak pacification
|
||
* src/env.c (unset_envvars): Remove IF_LINT code.
|
||
(main): Use main_exit, not return.
|
||
|
||
md5sum: remove IF_LINTs
|
||
* src/digest.c (digest_check): Remove IF_LINTs that are no longer
|
||
needed, as GCC has gotten smarter since 2008.
|
||
|
||
df: simplify -fsanitize=leak pacification
|
||
* src/df.c (print_table, main) [lint]: Omit unnecessary cleanup.
|
||
(main): Use main_exit, not return.
|
||
|
||
date: simplify -fsanitize=leak pacification
|
||
* src/date.c (main) [lint]: Omit unnecessary cleanup.
|
||
Use main_exit, not return.
|
||
|
||
cut: simplify and remove an IF_LINT
|
||
* src/cut.c (enum operating_mode, operating_mode)
|
||
(output_delimiter_specified, cut_stream):
|
||
Remove; no longer needed.
|
||
(output_delimiter_default): New static var. Code can now
|
||
use ‘output_delimiter_string != output_delimiter_default’
|
||
instead of ‘output_delimiter_specified’.
|
||
(cut_file): New arg CUT_STREAM. Caller changed.
|
||
(main): Simplify. Coalesce duplicate code. Redo to avoid need
|
||
for IF_LINT, or for the static var. No need to xstrdup optarg.
|
||
|
||
cut: simplify -fsanitize=leak pacification
|
||
* src/set-fields.c (reset_fields): Remove, as it’s not needed for
|
||
-fsanitize=leak even when ‘lint’ is defined. All uses removed.
|
||
|
||
cp: simplify GCC pacification
|
||
* src/cp.c (make_dir_parents_private): Remove IF_LINT code that is
|
||
no longer needed, as GCC has apparently gotten smarter since 2008.
|
||
|
||
chown: simplify -fsanitize=leak pacification
|
||
* src/chgrp.c, src/chown.c (main) [lint]: Omit unnecessary cleanup.
|
||
Use main_exit, not return.
|
||
|
||
basenc: simplify -fsanitize=leak pacification
|
||
* src/basenc.c (finish_and_exit): New function.
|
||
(do_encode, do_decode): Use it. Accept new INFILE arg. Remove
|
||
no-longer-needed IF_LINT code. Exit when done. Caller changed.
|
||
|
||
test: simplify gcc pacification
|
||
* src/test.c (get_mtime) [lint]: Omit ifdef lint code that is no
|
||
longer needed, as GCC has gotten smarter since 2005.
|
||
|
||
tail: simplify -fsanitize=leak pacification
|
||
Also, close a no-longer-needed file descriptor when falling
|
||
back from inotify.
|
||
* src/tail.c (tail_forever_inotify): Return void, not bool. Exit
|
||
on fatal error, or on successful completion. Accept an extra
|
||
argument pointing to a hash table that the caller should free on
|
||
non-fatal error; this simplifies cleanup. Don’t bother setting
|
||
errno when returning. Caller changed.
|
||
(main): Omit no-longer-needed IF_LINT code. Close inotify
|
||
descriptor if inotify fails; this fixes a file descriptor leak and
|
||
means we needn’t call inotify_rm_watch. Use main_exit, not return.
|
||
|
||
tac: simplify -fsanitize=leak pacification
|
||
* src/tac.c (main) [lint]: Omit unnecessary cleanup.
|
||
Use main_exit, not return.
|
||
|
||
shuf: simplify -fsanitize=leak pacification
|
||
* src/shuf.c (main) [lint]: Omit unnecessary cleanup.
|
||
Use main_exit, not return.
|
||
|
||
numfmt: simplify -fsanitize=leak pacification
|
||
* src/numfmt.c (main) [lint]: Omit unnecessary cleanup.
|
||
Use main_exit, not return.
|
||
|
||
mktemp: simplify -fsanitize=leak pacification
|
||
* src/mktemp.c (main) [lint]: Omit unnecessary cleanup.
|
||
Use main_exit, not return.
|
||
|
||
dd: simplify -fsanitize=leak pacification
|
||
* src/dd.c (cleanup) [lint]: Omit unnecessary cleanup.
|
||
(main): Use main_exit, not return.
|
||
|
||
cp: simplify cp/install/ln/mv pacification
|
||
* src/copy.c (dest_info_free, src_info_free) [lint]:
|
||
Remove. All uses removed.
|
||
(copy_internal): Pacify only Clang and Coverity; GCC doesn’t need it.
|
||
* src/cp-hash.c (forget_all) [lint]: Remove. All uses removed.
|
||
* src/cp.c, src/install.c, src/ln.c, src/mv.c (main):
|
||
Use main_exit, not return.
|
||
|
||
chmod: pacify -fsanitizer=leak
|
||
* src/chmod.c (main): Use main_exit, not return.
|
||
|
||
yes: pacify -fsanitizer=leak
|
||
* src/yes.c (main): Use main_exit, not return.
|
||
|
||
tsort: pacify -fsanitizer=leak
|
||
* src/tsort.c (detect_loop): Free removed successor.
|
||
|
||
sort: pacify -fsanitizer=leak
|
||
* src/sort.c (pipe_fork, keycompare, sort, main):
|
||
Remove lint code that no longer seems to be needed.
|
||
(sort): Unconditionally compile ifdef lint code that is needed
|
||
to free storage even when not linting.
|
||
(main): Use main_exit, not return.
|
||
|
||
split: pacify -fsanitizer=leak
|
||
* src/split.c (lines_rr): New arg FILESP. All uses changed.
|
||
(main): Use main_exit, not return. Omit unnecessary alignfree.
|
||
|
||
ptx: pacify -fsanitizer=leak
|
||
* src/ptx.c (unescape_string): Rename from copy_unescaped_string,
|
||
and unescape the string in place. Callers changed. This way,
|
||
we needn’t allocate storage and thus needn’t worry about
|
||
-fsanitizer=leak.
|
||
|
||
seq: pacify -fsanitizer=leak
|
||
* src/seq.c (seq_fast): If successful, exit rather than returning true.
|
||
Callers changed.
|
||
(main): Use main_exit, not return.
|
||
|
||
tsort: pacify -fsanitizer=leak
|
||
* src/tsort.c (struct item.balance): Now signed char to save space.
|
||
(struct item.printed): New member.
|
||
(new_item): Initialize k->printed to false. Simplify via xzalloc.
|
||
(scan_zeros): Use k->printed rather than nulling out string.
|
||
(tsort): Move exiting code here ...
|
||
(main): ... from here.
|
||
(tsort) [lint]: Omit no-longer-needed code. Instead, set head->printed.
|
||
|
||
tr: pacify -fsanitizer=leak
|
||
* src/tr.c (main): Use main_exit, not return.
|
||
|
||
stat: pacify -fsanitizer=leak
|
||
* src/stat.c (main): Use main_exit, not return.
|
||
|
||
comm: pacify -fsanitizer=leak
|
||
* src/comm.c (compare_files): Move exiting code here ...
|
||
(main): ... from here, to pacify gcc -fsanitize=leak.
|
||
|
||
expr: lint cleanup, and introducing main_exit
|
||
This introduces a new macro main_exit, which is useful
|
||
for pacifying gcc -fsanitizer=lint and in some cases
|
||
means we can remove some ‘IF_LINT’ and ‘ifdef lint’ code.
|
||
* src/expr.c (main): Use main_exit, not return.
|
||
(docolon): Omit an IF_LINT that GCC no longer needs.
|
||
* src/system.h (main_exit): New macro.
|
||
|
||
2022-01-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: use more exact selection of digest algorithms
|
||
Use more constrained argument matching
|
||
to improve forward compatibility and robustness.
|
||
|
||
For example it's better that `cksum -a sha3` is _not_
|
||
equivalent to `cksum -a sha386`, so that a user
|
||
specifying `-a sha3` on an older cksum would not be surprised.
|
||
|
||
Also argmatch() is used when parsing tags from lines like:
|
||
SHA3 (filename) = abcedf....
|
||
so it's more robust that older cksum instances to fail
|
||
earlier in the parsing process, when parsing output from
|
||
possible future cksum implementations that might support SHA3.
|
||
|
||
* src/digest.c (algorithm_from_tag): Use argmatch_exact()
|
||
to ensure we don't match abbreviated algorithms.
|
||
(main): Likewise.
|
||
* tests/misc/cksum-a.sh: Add a test case.
|
||
|
||
2022-01-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
To provide argmatch_exact() that does not
|
||
use abbreviated matching, to be used by cksum.
|
||
|
||
2022-01-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mv: when installing to dir use dir-relative names
|
||
When the destination for mv is a directory, use functions like openat
|
||
to access the destination files, when such functions are available.
|
||
This should be more efficient and should avoid some race conditions.
|
||
Likewise for 'install'.
|
||
* src/cp.c (must_be_working_directory, target_directory_operand)
|
||
(target_dirfd_valid): Move from here ...
|
||
* src/system.h: ... to here, so that install and mv can use them.
|
||
Make them inline so GCC doesn’t complain.
|
||
* src/install.c (lchown) [HAVE_LCHOWN]: Remove; no longer needed.
|
||
(need_copy, copy_file, change_attributes, change_timestamps)
|
||
(install_file_in_file, install_file_in_dir):
|
||
New args for directory-relative names. All uses changed.
|
||
Continue to pass full names as needed, for diagnostics and for
|
||
lower-level functions that do not support directory-relative names.
|
||
(install_file_in_dir): Update *TARGET_DIRFD as needed.
|
||
(main): Handle target-directory in the new, cp-like way.
|
||
* src/mv.c (remove_trailing_slashes): Remove static var; now local.
|
||
(do_move): New args for directory-relative names. All uses changed.
|
||
Continue to pass full names as needed, for diagnostics and for
|
||
lower-level functions that do not support directory-relative names.
|
||
(movefile): Remove; no longer needed.
|
||
(main): Handle target-directory in the new, cp-like way.
|
||
* tests/install/basic-1.sh:
|
||
* tests/mv/diag.sh: Adjust to match new diagnostic wording.
|
||
|
||
cp: fix comment typo
|
||
|
||
2022-01-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: NEWS: explain _why_ copy_file_range() is used
|
||
* NEWS: Mention why we're making the change in behavior in cat(1).
|
||
|
||
build: update gnulib submodule to latest
|
||
To fix a syntax-check false failure
|
||
|
||
2022-01-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: synchronize output after write errors
|
||
Problem reported by Sworddragon (Bug#51345).
|
||
* src/dd.c (cleanup): Synchronize output unless dd has been interrupted.
|
||
(synchronize_output): New function, split out from dd_copy.
|
||
Update conversions_mask so synchronization is done at most once.
|
||
(main): Do not die with the output file open, since we want to be
|
||
able to synchronize it before exiting. Synchronize output before
|
||
exiting.
|
||
|
||
dd: output final progress before syncing
|
||
Problem reported by Sworddragon (Bug#51482).
|
||
* src/dd.c (reported_w_bytes): New var.
|
||
(print_xfer_stats): Set it.
|
||
(dd_copy): Print a final progress report if useful before
|
||
synchronizing output data.
|
||
|
||
2022-01-27 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cat: prefer copy_file_range to read+write
|
||
* src/cat.c (copy_cat): New function.
|
||
(main): Use it.
|
||
|
||
csplit: improve integer overflow checking
|
||
* src/csplit.c: Prefer signed integers to unsigned for sizes
|
||
when either will do. Check for some unlikely overflows.
|
||
(INCR_SIZE): Remove; no longer used.
|
||
(free_buffer): Also free the arg, simplifying callers.
|
||
(get_new_buffer): Use xpalloc instead of computing new
|
||
size by hand. Add ATTRIBUTE_DEALLOC.
|
||
(delete_all_files, close_output_file):
|
||
If unlink fails with ENOENT, treat it as success.
|
||
(close_output_file): If unlink fails, decrement count anyway.
|
||
(parse_repeat_count, parse_patterns): Check for int overflow.
|
||
(check_format_conv_type): Use signed format.
|
||
|
||
maint: simplify memory alignment
|
||
Use the new Gnulib modules alignalloc and xalignalloc
|
||
to simplify some memory allocation.
|
||
Also, fix some unlikely integer overflow problems.
|
||
* bootstrap.conf (gnulib_modules): Add alignalloc, xalignalloc.
|
||
* src/cat.c, src/copy.c, src/dd.c, src/shred.c, src/split.c:
|
||
Include alignalloc.h.
|
||
* src/cat.c (main):
|
||
* src/copy.c (copy_reg):
|
||
* src/dd.c (alloc_ibuf, alloc_obuf):
|
||
* src/shred.c (dopass):
|
||
* src/split.c (main):
|
||
Use alignalloc/xalignalloc/alignfree instead of doing page
|
||
alignment by hand.
|
||
* src/cat.c (main):
|
||
Check for integer overflow in page size calculations.
|
||
* src/dd.c (INPUT_BLOCK_SLOP, OUTPUT_BLOCK_SLOP, MAX_BLOCKSIZE):
|
||
(real_ibuf, real_obuf) [lint]:
|
||
Remove; no longer needed.
|
||
(cleanup) [lint]:
|
||
(scanargs): Simplify.
|
||
* src/ioblksize.h (io_blksize): Do not allow blocksizes largest
|
||
than the largest power of two that fits in idx_t and size_t.
|
||
* src/shred.c (PAGE_ALIGN_SLOP, PATTERNBUF_SIZE): Remove.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
copy: remove unnecessary ‘free’
|
||
* src/copy.c (copy_reg): Remove a ‘free’ call that does nothing
|
||
because its argument is always a null pointer, starting with
|
||
2007-11-1608:31:15Z!jim@meyering.net.
|
||
|
||
dd: simplify conv=swab code
|
||
Simplify byte-swapping, so that the code no longer needs to
|
||
allocate a page before the input buffer.
|
||
* src/dd.c (SWAB_ALIGN_OFFSET, char_is_saved, saved_char): Remove.
|
||
All uses removed.
|
||
(INPUT_BLOCK_SLOP): Simplify to just page_size.
|
||
(alloc_ibuf, dd_copy): Adjust to new swab_buffer API.
|
||
(swab_buffer): New arg SAVED_BYTE, taking the place of the old
|
||
global variables. Do not access BUF[-1].
|
||
|
||
dd: improve integer overflow checking
|
||
* src/dd.c: Prefer signed to unsigned types where either will do,
|
||
as this helps improve checking with gcc -fsanitize=undefined.
|
||
Limit the signed types to their intended ranges.
|
||
(MAX_BLOCKSIZE): Don’t exceed IDX_MAX - slop either.
|
||
(input_offset_overflow): Remove; overflow now denoted by negative.
|
||
(parse_integer): Return INTMAX_MAX on overflow, instead of unspecified.
|
||
Do not falsely report overflow for ‘00x99999999999999999999999999999’.
|
||
* tests/dd/misc.sh: New test for 00xBIG.
|
||
* tests/dd/skip-seek-past-file.sh: Adjust to new diagnostic wording.
|
||
New test for BIGxBIG.
|
||
|
||
shred: fix declaration typo
|
||
* gl/lib/randint.h (randint_all_new):
|
||
Do not declare with _GL_ATTRIBUTE_NONNULL (), as
|
||
the arg can be a null pointer. This fixes a typo added in
|
||
2021-11-01T05:30:28Z!eggert@cs.ucla.edu.
|
||
|
||
cat: prefer signed to unsigned
|
||
* src/cat.c: Prefer signed to unsigned types
|
||
where either will do, as they allow for better
|
||
overflow checking at runtime.
|
||
|
||
cat: improve style
|
||
* cat.c: Improve style a bit, mostly by assuming C99-style
|
||
declarations after statements
|
||
|
||
2022-01-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: csplit: clarify [OFFSET] syntax
|
||
* src/csplit.c (usage): Clarify that '+' prefix is optional on OFFSET.
|
||
* doc/coreutils.texi (csplit invocation): Likewise.
|
||
Fixes https://bugs.gnu.org/53574
|
||
|
||
2022-01-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: allow readlinkat calls
|
||
Problem reported by Bernhard Voelker in:
|
||
https://lists.gnu.org/r/coreutils/2022-01/msg00026.html
|
||
* cfg.mk (sc_prohibit_readlink): Remove. It’s OK to call
|
||
readlinkat to determine whether a file is a symbolic link.
|
||
|
||
cp: rely on Gnulib for copy_file_range workaround
|
||
Gnulib now replaces copy_file_range on buggy hosts
|
||
so there is no need for Coreutils to worry about the bug.
|
||
* src/copy.c: Do not include sys/utsname.h, xstrtol.h.
|
||
(functional_copy_file_range): Remove. All uses now
|
||
simply call copy_file_range.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2022-01-14 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: fix pluralization typo
|
||
|
||
cp: fix two typos in previous change
|
||
Somehow ‘make check’ didn’t catch these the first few times.
|
||
* src/copy.c (copy_dir): Don’t pass null pointer to
|
||
copy_internal where it now expects non-null if move mode.
|
||
* src/cp.c (make_dir_parents_private): Initialize *attr_list
|
||
before recentely-added quick return.
|
||
|
||
cp: omit unnecessary stat of destination
|
||
'cp A B' attempts to open B as a directory, to see whether to
|
||
write to B/A instead of to B. In the common case where the
|
||
open fails with ENOENT, do not bother to stat B afterwards
|
||
since the stat should also fail with ENOENT.
|
||
* src/copy.c (copy_internal, copy): Change bool arg about
|
||
nonexistent destination to a 3-way int argument. All callers changed.
|
||
(copy_internal): Do not bother to stat a destination already known
|
||
to not exist when following symlinks.
|
||
|
||
2022-01-13 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
cp: when copying to dir use dir-relative names
|
||
When copying to a directory, use functions like openat to access
|
||
the destination files, when such functions are available. This
|
||
should be more efficient and should avoid some race conditions.
|
||
* bootstrap.conf (gnulib_modules): Add areadlinkat-with-size,
|
||
fchmodat, fchownat, mkdirat, mkfifoat, utimensat.
|
||
* src/copy.c (lchown) [!HAVE_LCHOWN]:
|
||
* src/copy.c, src/system.h (rpl_mkfifo, mkfifo) [!HAVE_MKFIFO]:
|
||
Remove. All uses removed.
|
||
(utimens_symlink): Remove; we shouldn’t have to worry about
|
||
those obsolete systems any more. All uses replaced by utimensat.
|
||
* src/copy.c (copy_dir, set_owner, fchmod_or_lchmod, copy_reg)
|
||
(same_file_ok, writable_destination, overwrite_ok, abandon_move)
|
||
(create_hard_link, src_is_dst_backup, copy_internal, copy):
|
||
* src/cp.c (make_dir_parents_private, re_protect):
|
||
New args for directory-relative names. All uses changed.
|
||
Continue to pass full names as needed, for diagnostics and for
|
||
lower-level functions like qset_acl that do not support
|
||
directory-relative names.
|
||
* src/copy.c (copy_reg): Prefer readlinkat to lstatat for merely
|
||
checking whether a file is a symlink, to avoid EOVERFLOW issues.
|
||
(subst_suffix): New function.
|
||
(create_hard_link): Accept a null SRC_NAME as meaning that if it
|
||
is needed it needs to be constructed from SRC_RELNAME, DST_NAME,
|
||
and DST_RELNAME.
|
||
(source_is_dst_backup): Use subst_suffix instead of doing it by hand.
|
||
(copy_internal): Remember and use directory-relative names instead
|
||
of full names.
|
||
* src/cp.c (lchown) [!HAVE_LCHOWN]: Remove. All uses removed.
|
||
(must_be_working_directory): New function.
|
||
(target_directory_operand): Simply take file name as arg,
|
||
and return a file descriptor or negative number on failure;
|
||
open with O_DIRECTORY to obtain any file descriptor.
|
||
All uses changed.
|
||
(target_dirfd_valid): New function.
|
||
(do_copy): Use these new functions to obtain a file descriptor
|
||
for any target directory, and use directory-relative names
|
||
for that directory.
|
||
(main): Omit no-longer-needed stat when --target-directory,
|
||
as do_copy now does this.
|
||
* src/ln.c (O_PATHSEARCH): Move from here ...
|
||
* src/system.h: ... to here.
|
||
* tests/cp/fail-perm.sh: Adjust to change in diagnostic wording,
|
||
and add a test for --no-target-directory.
|
||
|
||
cp: tweak internal name
|
||
* src/cp.c (do_copy): Omit confusingly-named local new_dest, since
|
||
there’s another var new_dst that means something quite different.
|
||
|
||
2022-01-12 Daniel Knittl-Frank <knittl89@googlemail.com>
|
||
|
||
scripts: fix typo in commit-msg git-hook script
|
||
Commit 2f438fa9f53250fb3c8b39a95eedd627b5569ca4 (basenc: A new program
|
||
complementary to base64/base32) introduced a typo in the list of allowed
|
||
commit message prefixes, accidentally changing "basename" to
|
||
"nbasename". Revert it back to the correct "basename".
|
||
|
||
2022-01-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
df: tiny simplification
|
||
* src/df.c (LOG_EQ): Remove. All callers replaced by ==.
|
||
|
||
2022-01-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: update all copyright year number ranges
|
||
Run "make update-copyright" and then...
|
||
|
||
* gnulib: Update to latest with copyright year adjusted.
|
||
* tests/init.sh: Sync with gnulib to pick up copyright year.
|
||
* bootstrap: Likewise.
|
||
* tests/sample-test: Adjust to use the single most recent year.
|
||
|
||
2022-01-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
mainly to get updated copyright year
|
||
|
||
* doc/fdl.texi: Sync from gnulib.
|
||
* .gitignore: Add lib/unictype, as bitmap.h therein is depended on
|
||
since gnulib commit f698ea71
|
||
|
||
2021-12-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
date: new option --resolution
|
||
* NEWS, doc/coreutils.texi (Options for date): Mention this.
|
||
* src/date.c (RESOLUTION_OPTION): New constant.
|
||
(DEBUG_DATE_PARSING_OPTION): Rename from DEBUG_DATE_PARSING.
|
||
All uses changed.
|
||
(long_options, usage, main): Support --resolution.
|
||
|
||
date: %-N now means suppress extra digits
|
||
* NEWS, doc/coreutils.texi: Mention this.
|
||
* bootstrap.conf (gnulib_modules): Add gettime-res.
|
||
* src/date.c (res_width, adjust_resolution): New functions.
|
||
(main): Adjust %-N to be %9N, or whatever, before using it.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
doc: Document , vs . in date --rfc-3339=ns
|
||
|
||
build: port to AIX 7.1
|
||
This fixes a porting bug introduced in
|
||
2019-08-12T03:29:00Z!bruno@clisp.org.
|
||
Problem discovered on AIX 7.1.
|
||
* src/local.mk (LDADD): Add $(LIB_MBRTOWC), since pretty much
|
||
every command uses quotearg or mbrtowc or whatever.
|
||
(src_sort_LDADD): Add $(LIBPMULTITHREAD) and
|
||
$(LIB_PTHREAD_SIGMASK) instead of $(LIBTHREAD).
|
||
|
||
2021-12-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: be more careful about Perl
|
||
Problem reported by Serge Belyshev (Bug#52844).
|
||
* configure.ac (HAVE_PERL): Rely on latest Gnulib gl_PERL, which
|
||
sets gl_cv_prog_perl.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2021-12-27 Max Filippov <jcmvbkbc@gmail.com>
|
||
|
||
all: fix adjustment of /proc/$pid/cmdline by single binary
|
||
When configured with --enable-single-binary tools issue incorrect prctl:
|
||
|
||
prctl(PR_SET_KEEPCAPS, ...) = -1 EINVAL (Invalid argument)
|
||
|
||
PR_SET_MM_ARG_START is not a prctl 'option' parameter, it's 'arg2'
|
||
parameter for the option PR_SET_MM. It also has to have 'arg4' and
|
||
'arg5' set to 0 explicitly, otherwise the kernel also returns -EINVAL.
|
||
|
||
* src/coreutils.c (launch_program): Fix prctl arguments.
|
||
* NEWS: Mention the improvement.
|
||
Fixes https://bugs.gnu.org/52800
|
||
|
||
2021-12-24 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: improve doc for =WHEN
|
||
* src/ls.c (usage): Improve clarity of =WHEN args (Bug#52782).
|
||
|
||
doc: colorize -> color
|
||
Living so close to Hollywood I know that "colorize"
|
||
means adding color to something that was already monochrome,
|
||
whereas "color" means to give color to something.
|
||
Coreutils apps color text instead of colorizing it.
|
||
|
||
2021-12-20 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: update tests/init.sh from gnulib
|
||
* tests/init.sh: Sync from gnulib/tests/init.sh.
|
||
A recent gnulib update (4f497bf3c) missed this.
|
||
|
||
2021-12-20 Jim Meyering <meyering@fb.com>
|
||
|
||
maint: syntax-check requires "char const *", not "const char *"
|
||
* gl/lib/mbsalign.c (mbs_align_pad): Adjust.
|
||
* src/chroot.c (is_root): Adjust.
|
||
* src/digest.c (main): Adjust.
|
||
* src/relpath.c (buffer_or_output) Adjust.
|
||
* src/ls.c (print_name_with_quoting, get_color_indicator): Adjust.
|
||
|
||
maint: split a long line
|
||
* src/test.c (three_arguments): Split long line.
|
||
|
||
maint: commit-msg: compute UTF-8-aware line-length
|
||
* scripts/git-hooks/commit-msg: Count UTF-8 characters rather
|
||
than bytes to avoid erroneously rejecting as "longer than 72" a
|
||
log message line like the UTF-8 one for id.c just prior. It has
|
||
77 bytes but only 67 characters.
|
||
(check_msg): Read in "utf8" mode. Also include actual length
|
||
in the diagnostic.
|
||
(main): Don't loop when stdout is redirected, as it is when
|
||
invoked via vc-dwim.
|
||
Paul Eggert reported privately both the error of counting bytes
|
||
rather than chars and the re_edit loop when failing via vc-dwim.
|
||
|
||
2021-12-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
id: improve doc for when USER is omitted
|
||
* src/id.c (usage): “current user” → “current process” (Bug#52656).
|
||
|
||
2021-12-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: use GNU style for spacing
|
||
|
||
2021-12-16 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: non-recursive Automake in a less hacky way
|
||
* bootstrap.conf (gnulib_modules): Remove
|
||
non-recursive-gnulib-prefix-hack.
|
||
(gnulib_tool_option_extras): Add --automake-subdir.
|
||
(bootstrap_post_import_hook): No need to massage lib/gnulib.mk.
|
||
|
||
2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update bootstrap to latest
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2021-12-15 Jim Meyering <meyering@fb.com>
|
||
|
||
maint: factor.c: avoid new GCC 12 warning
|
||
* src/factor.c (millerrabin2): Mark as ATTRIBUTE_PURE,
|
||
per advice from GCC 12.
|
||
|
||
2021-12-14 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
* NEWS: Mention the bugfix.
|
||
|
||
2021-12-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mv: Bug#52410 fix
|
||
The recent Gnulib update fixed this bug reported by Vincent Vermilya.
|
||
* tests/mv/backup-dir.sh: Test for Bug#52410.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2021-12-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
uname: port to recent macOS
|
||
Problem reported by Jakub Sokołowski (bug #52330).
|
||
* src/uname.c [__APPLE__]: Don’t include sys/syctl.h,
|
||
mach/machine.h, mach-o/arch.h.
|
||
(print_element_env): New function. With __APPLE__, it defers to the
|
||
env var UNAME_MACHINE (if given) for uname -m, and similarly for -nrsv.
|
||
(main): Use it. For -p with __APPLE__, rely on predefined macros
|
||
and omit any 64-bit indication, for compatibility with macOS uname.
|
||
|
||
2021-11-22 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: clone on macOS
|
||
* configure.ac: Check for fclonefileat.
|
||
* src/copy.c [HAVE_FCLONEFILEAT && !USE_XATTR]:
|
||
Include <sys/clonefile.h>.
|
||
(copy_reg): If possible, use fclonefileat to clone.
|
||
|
||
2021-11-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: streamline cloning by skipping fstat
|
||
* src/copy.c (copy_reg): Attempt clone_file before fstat of dest,
|
||
so that if clone_file succeeds we can skip the fstat.
|
||
|
||
2021-11-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: fix --preserve=ownership permissions bug
|
||
This fixes a bug that I introduced in
|
||
2006-12-06T19:44:08Z!eggert@cs.ucla.edu.
|
||
* src/copy.c (USE_XATTR): New macro.
|
||
(copy_reg): Use it to help the compiler. Prefer open u+w to a
|
||
later chmod u=rw; u+r isn’t needed for xattr. For the later u-r,
|
||
do only one (or zero) chmod calls instead of two (or one).
|
||
In the last chmod, respect the umask instead of ignoring it.
|
||
* tests/cp/preserve-mode.sh: Test for the bug.
|
||
|
||
2021-11-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: prefer MAYBE_UNUSED
|
||
Prefer MAYBE_UNUSED to _GL_UNUSED, since the C2x syntax
|
||
will be [[maybe_unused]] at the start of the declaration,
|
||
and we want to look forward to that. All uses of _GL_UNUSED
|
||
either changed to MAYBE_UNUSED, or (when not needed) removed.
|
||
|
||
2021-11-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: fix security context race
|
||
This fixes an issue introduced in the fix for Bug#11100.
|
||
* NEWS: Mention this.
|
||
* src/copy.c (copy_reg): Fix obscure bug where open-without-CREAT
|
||
failed with ENOENT and we forget to call set_process_security_ctx
|
||
before calling open-with-CREAT. Also, don’t bother to unlink
|
||
DST_NAME if open failed with ENOENT; and if unlink fails with
|
||
ENOENT, don’t consider that to be an error (someone else could
|
||
have removed the file for us, and that’s OK). Also, don’t worry
|
||
about move mode, since we use O_EXCL|O_CREAT and so won’t open
|
||
an existing file.
|
||
|
||
2021-11-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: update NEWS for macOS fix
|
||
|
||
cp: minor clarity tweak
|
||
* src/copy.c (copy_reg): Use cached data_copy_required.
|
||
|
||
cp: fix ptrdiff_t/ssize_t theoretical glitches
|
||
* src/copy.c (sparse_copy): Use system.h’s SSIZE_MAX.
|
||
Don’t assume SSIZE_MAX <= PTRDIFF_MAX.
|
||
|
||
2021-11-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
maint: fix nonnull decl
|
||
* gl/lib/randread.h (randread_new): Do not mark with
|
||
_GL_ATTRIBUTE_RETURNS_NONNULL, since it can return NULL.
|
||
|
||
2021-11-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2021-11-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failure in env-signal-handler.sh
|
||
* tests/misc/env-signal-handler.sh: Use retry_delay_ to
|
||
avoid a false failure under load, where env hasn't setup
|
||
the SIGINT handling before timeout(1) sends the SIGINT.
|
||
Fixes https://bugs.gnu.org/51793
|
||
|
||
2021-11-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: fix recent syntax-check failures
|
||
* cfg.mk (exclude_file_name_regexp--sc_system_h_headers):
|
||
Add chown-core.h to the regexp, to better decouple from system.h.
|
||
* src/env.c: Remove minmax.h include already included in system.h.
|
||
* src/libstdbuf.c: Likewise.
|
||
* src/prog-fprintf.h: Remove doubled semicolon.
|
||
|
||
2021-11-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: use minmax.h instead of rolling our own
|
||
* gl/lib/mbsalign.c, gl/lib/randread.c, src/system.h (MAX, MIN):
|
||
Remove; include minmax.h instead.
|
||
* gl/modules/mbsalign, gl/modules/randread (Depends-on): Add minmax.
|
||
* src/factor.c (MIN): Remove.
|
||
|
||
maint: add function attributes to .h files
|
||
Add _GL_ATTRIBUTE_NONNULL, _GL_ATTRIBUTE_MALLOC,
|
||
_GL_ATTRIBUTE_DEALLOC, _GL_ATTRIBUTE_DALLOC_FREE,
|
||
_GL_ATTRIBUTE_RETURNS_NONNULL to .h files when appropriate.
|
||
* gl/lib/mbsalign.h, gl/lib/randperm.h, src/chown-core.h:
|
||
Include stdlib.h, for the benefit of _GL_ATTRIBUTE_DALLOC_FREE.
|
||
* gl/lib/randread.c (randread_free_body): New static function.
|
||
(randread_new, randread_free): Use it.
|
||
* src/copy.c (valid_options): Remove assert that is no longer
|
||
needed because it is now checked statically.
|
||
|
||
maint: enable -Wsuggest-attribute=format
|
||
* configure.ac (WERROR_CFLAGS): Enable -Wsuggest-attribute=format
|
||
for lib/ and src/.
|
||
* src/copy.c (copy_attr_error, copy_attr_allerror):
|
||
Add ATTRIBUTE_FORMAT.
|
||
(copy_attr): Ignore -Wsuggest-attribute=format in the
|
||
small section of code that needs it ignored.
|
||
* src/test.c (test_syntax_error): Mark with ATTRIBUTE_FORMAT.
|
||
(binary_operator): Omit unnecessary NULL args, pacifying
|
||
-Wsuggest-attribute=format.
|
||
|
||
maint: modernize attribute usage
|
||
* src/system.h (__attribute__): Remove. Replace all uses that
|
||
rely on this by _GL_ATTRIBUTE_xxx or ATTRIBUTE_xxx.
|
||
(ATTRIBUTE_WARN_UNUSED_RESULT): Remove. Replace all uses by
|
||
NODISCARD.
|
||
|
||
maint: remove unused __attribute__ defn
|
||
* gl/lib/randread.c (__attribute__): Remove; no longer
|
||
used after the recent _Noreturn change.
|
||
|
||
b2sum: simplify attribute usage
|
||
* src/blake2/blake2.h (BLAKE2_PACKED): Simplify, and port better
|
||
to older GCC, by using _GL_ATTRIBUTE_PACKED.
|
||
|
||
maint: prefer attribute.h in .c files
|
||
This will help us make the transition to C2x, where some
|
||
attributes must come at the start of function decls.
|
||
Leave the attributes alone in .h files for now,
|
||
as the Gnulib tradition is to not expose attribute.h to users.
|
||
* bootstrap.conf (gnulib_modules): Add ‘attribute’.
|
||
* gl/lib/randperm.c, src/make-prime-list.c, src/system.h:
|
||
Include attribute.h.
|
||
* gl/lib/strnumcmp.c (strnumcmp): Remove _GL_ATTRIBUTE_PURE here,
|
||
as this belongs in the .h file.
|
||
* gl/lib/strnumcmp.h (strnumcmp): Add _GL_ATTRIBUTE_PURE here.
|
||
* src/sort.c (human_numcompare, numcompare): Now ATTRIBUTE_PURE;
|
||
discovered due to strnumcmp.h change.
|
||
* gl/lib/randperm.c, src/copy.c, src/dd.c, src/df.c, src/digest.c:
|
||
* src/env.c, src/expr.c, src/factor.c, src/ls.c:
|
||
* src/make-prime-list.c, src/numfmt.c, src/od.c, src/pathchk.c:
|
||
* src/pinky.c, src/pr.c, src/ptx.c, src/realpath.c, src/relpath.c:
|
||
* src/seq.c, src/sort.c, src/stat.c, src/stty.c, src/system.h:
|
||
* src/tr.c, src/uniq.c, src/wc.c:
|
||
In .c files, crefer ATTRIBUTE_CONST to _GL_ATTRIBUTE_CONST, and
|
||
similarly for ATTRIBUTE_FORMAT and ATTRIBUTE_PURE.
|
||
* src/system.h (FALLTHROUGH): Remove; attribute.h defines it.
|
||
|
||
2021-10-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
sort: --debug: add warnings about sign, radix, and grouping chars
|
||
New warnings are added related to the handling
|
||
of thousands grouping characters, decimal points, and sign characters.
|
||
Examples now diagnosed are:
|
||
|
||
$ printf '0,9\n1,a\n' | sort -nk1 --debug -t, -s
|
||
sort: key 1 is numeric and spans multiple fields
|
||
sort: field separator ‘,’ is treated as a group separator in numbers
|
||
1,a
|
||
_
|
||
0,9
|
||
___
|
||
|
||
$ printf '1,a\n0,9\n' | LC_ALL=fr_FR.utf8 sort -gk1 --debug -t, -s
|
||
sort: key 1 is numeric and spans multiple fields
|
||
sort: field separator ‘,’ is treated as a decimal point in numbers
|
||
0,9
|
||
___
|
||
1,a
|
||
__
|
||
|
||
$ printf '1.0\n0.9\n' | LC_ALL=fr_FR.utf8 sort -s -k1,1g --debug
|
||
sort: note numbers use ‘,’ as a decimal point in this locale
|
||
0.9
|
||
_
|
||
1.0
|
||
_
|
||
|
||
$ LC_ALL=fr_FR.utf8 sort -n --debug /dev/null
|
||
sort: text ordering performed using ‘fr_FR.utf8’ sorting rules
|
||
sort: note numbers use ‘,’ as a decimal point in this locale
|
||
sort: the multi-byte number group separator in this locale \
|
||
is not supported
|
||
|
||
$ sort --debug -t- -k1n /dev/null
|
||
sort: key 1 is numeric and spans multiple fields
|
||
sort: field separator ‘-’ is treated as a minus sign in numbers
|
||
sort: note numbers use ‘.’ as a decimal point in this locale
|
||
|
||
$ sort --debug -t+ -k1g /dev/null
|
||
sort: key 1 is numeric and spans multiple fields
|
||
sort: field separator ‘+’ is treated as a plus sign in numbers
|
||
sort: note numbers use ‘.’ as a decimal point in this locale
|
||
|
||
* src/sort.c (key_warnings): Add the warnings above.
|
||
* tests/misc/sort-debug-warn.sh: Add test cases.
|
||
Also check that all sort invocations succeed.
|
||
* NEWS: Mention the improvement.
|
||
Addresses https://bugs.gnu.org/51011
|
||
|
||
2021-10-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: modernize README-{hacking,prereq}
|
||
|
||
2021-10-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: revert unnecessary FreeBSD workaround
|
||
That was a false alarm due to a bug in FreeBSD 9.1 truss;
|
||
see Pádraig Brady’s report (Bug#51433#29).
|
||
* src/copy.c (lseek_copy, infer_scantype): Don’t bother checking
|
||
whether lseek returned -1. This doesn’t entirely revert the
|
||
previous change, as it keeps the code simplification of the
|
||
previous change while reverting the check for -1.
|
||
|
||
cp: defend better against FreeBSD 9.1 zfs bug
|
||
Problem reported by Pádraig Brady (Bug#51433#14).
|
||
* src/copy.c (lseek_copy, infer_scantype): Report an error if
|
||
lseek with SEEK_DATA or SEEK_HOLE returns less than -1,
|
||
as this is an lseek bug.
|
||
|
||
2021-10-22 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: say that printf(1) is preferred over echo(1)
|
||
* src/echo.c (usage): Say printf(1) is preferred
|
||
due to being more standard and robust.
|
||
* man/echo.x [SEE ALSO]: Reference printf(1).
|
||
* doc/coreutils.texi (echo invocation): Mention in the
|
||
summary that echo is not robust when outputting
|
||
any string, and that printf is preferred.
|
||
Also expand on the examples showing how to
|
||
output a single '-n' string.
|
||
Addresses https://bugs.gnu.org/51311
|
||
|
||
2021-10-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: timeout --kill-after: clarify disabled timeouts
|
||
* doc/coreutils.texi (timeout invocation): Clarify
|
||
that -k is ignored if either its duration or the
|
||
main timeout duration is 0.
|
||
Addresses https://bugs.gnu.org/51128
|
||
|
||
timeout: ensure --foreground -k exits with status 137
|
||
* src/timeout.c (main): Propagate the killed status from the child.
|
||
* doc/coreutils.texi (timeout invocation): Remove the
|
||
description of the --foreground specific handling of SIGKILL,
|
||
now that it's consistent with the default mode of operation.
|
||
* tests/misc/timeout.sh: Add a test case.
|
||
* NEWS: Mention the change in behavior.
|
||
Fixes https://bugs.gnu.org/51135
|
||
|
||
2021-10-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: timeout --foreground: add clarification on exit status
|
||
* doc/coreutils.texi (timeout invocation): Add detail on
|
||
how --foreground allows timeout(1) to use more standard
|
||
exit status as the uncatchable SIGKILL is not sent to itself.
|
||
Fixes https://bugs.gnu.org/51135
|
||
|
||
2021-10-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
sort: fix unlikely bug when '\377' < 0
|
||
* gl/lib/strintcmp.c (strintcmp): Don’t assume that the input
|
||
cannot contain ((char) -1), as this equals '\377' when char is
|
||
signed (assuming 8-bit char).
|
||
* src/sort.c (decimal_point): Now char, to make it clear
|
||
that it’s always in char range now.
|
||
(NON_CHAR): New constant.
|
||
(traverse_raw_number): Return char not unsigned char;
|
||
this is simpler and could be faster. All callers changed.
|
||
(main): Do not convert decimal_point and thousands_sep to
|
||
unsigned char, as this can mishandle comparisons on
|
||
machines where char is signed and the input data contains
|
||
((char) -1). Use NON_CHAR, not -1, as an out-of-range value for
|
||
thousands_sep.
|
||
|
||
2021-10-03 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
maint: switch to C11-style _Noreturn
|
||
Use C11-style _Noreturn instead of the old ATTRIBUTE_NORETURN
|
||
macro. This pacifies clang on OpenBSD 6.9, which otherwise
|
||
complains "'noreturn' function does return" in some places.
|
||
* gl/lib/randread.c, src/system.h (ATTRIBUTE_NORETURN):
|
||
Remove. All uses either removed as GCC no longer needs them, or
|
||
changed to C11-style _Noreturn since Gnulib arranges for _Noreturn
|
||
globally nowadays.
|
||
|
||
ls: port to OpenBSD
|
||
Problem reported by Brian Callahan (Bug#50972).
|
||
* src/ls.c (decode_switches): Don’t assume __GNUC_PREREQ.
|
||
|
||
2021-09-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: adjust ls --zero option order in texinfo
|
||
* doc/coreutils.texi (ls invocation - general output formatting):
|
||
The option ordering was not changed when the option was renamed
|
||
from --null to --zero.
|
||
|
||
2021-09-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: cp/sparse-perf: make more robust and add zfs comments
|
||
* init.cfg (seek_data_capable_): Add a timeout to ensure failure for
|
||
slow lseek(...SEEK_DATA) calls (even if that syscall isn't interrupted).
|
||
* tests/cp/sparse-perf.sh: Run the SEEK_DATA check on the
|
||
1TiB empty file to exclude both FreeBSD 9.1 which takes 35s,
|
||
and ZFS which requires a delay of about 5s between file creation
|
||
and use of SEEK_DATA to correctly determine it's empty (return ENXIO).
|
||
Also remove the stat size checks as they invalidate the test
|
||
due to cp never writing data due to it being always zeros,
|
||
and thus converted to holes in the output.
|
||
|
||
2021-09-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
chmod: fix exit status when ignoring symlinks
|
||
* src/chmod.c: Reorder enum so CH_NOT_APPLIED
|
||
can be treated as a non error.
|
||
* tests/chmod/ignore-symlink.sh: A new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/50784
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 9.0
|
||
* NEWS: Record release date.
|
||
|
||
tests: sparse-perf: avoid false failure
|
||
* tests/cp/sparse-perf.sh: Avoid the case where
|
||
we saw SEEK_DATA take 35s to return a result
|
||
against a 1TB sparse file. This happened on
|
||
a FreeBSD 9.1 VM at least.
|
||
Reported by Nelson H. F. Beebe.
|
||
|
||
cksum: fix -a crc on 64 bit big endian systems
|
||
* src/cksum.c (crc_sum_stream): On sparc64 for example,
|
||
a crc of 0 was printed due to mismatch in size of
|
||
variable copied between generator and output functions.
|
||
uint_fast32_t is generally 64 bits on 64 bit systems,
|
||
so we copy through an int to ensure we don't use the wrong
|
||
end of a 64 bit variable.
|
||
Reported by Nelson H. F. Beebe
|
||
|
||
2021-09-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tail: fix detection of closed stdout on macOS
|
||
* bootstrap.conf: We only need poll on Linux and AIX
|
||
where poll is not replaced. Also resinstate dependence
|
||
on select so we can use it unconditionally.
|
||
* src/tail.c (check_output_alive): Reinstate use of select()
|
||
by default as poll was seen to be ineffective for this
|
||
application on macOS.
|
||
Fixes https://bugs.gnu.org/50714
|
||
|
||
maint: clean up c++ style comments
|
||
* src/expand-common.h: Remove commented variables.
|
||
* src/remove.h: Change to C style comment.
|
||
* src/tail.c: Likewise.
|
||
|
||
2021-09-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: date-debug: avoid a false failure on solaris
|
||
* tests/misc/date-debug.sh: Use a dynamic time format,
|
||
as the C locale on solaris uses %T rather than %H:%M:%S
|
||
for the time component.
|
||
|
||
2021-09-20 Jim Meyering <meyering@fb.com>
|
||
|
||
doc: drop extraneous single quotes in help
|
||
* src/digest.c (usage) [cksum --help]: Drop single quotes
|
||
around each checksum name.
|
||
* src/tee.c (usage) [tee --help]: Likewise.
|
||
|
||
cksum: list Pádraig as coauthor
|
||
* src/digest.c (AUTHORS) [HASH_ALGO_CKSUM]: Add Pádraig as
|
||
cksum coauthor.
|
||
* AUTHORS: Likewise.
|
||
|
||
tests: env-s.pl: avoid spurious failure on OS X
|
||
* tests/misc/env-S.pl: The __CF_USER_TEXT_ENCODING envvar
|
||
would cause many of these sub-tests to fail. Ignore it.
|
||
|
||
2021-09-20 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest.
|
||
Fixes "extern inline" and "rpl_free" issues.
|
||
|
||
doc: fix --help formatting for checksum utils
|
||
* src/digest.c (usage): Indicate that --length and --algorithm
|
||
require arguments. Emit corresponding emit_mandatory_arg_note().
|
||
Use consistent alignment.
|
||
|
||
cksum: support more transparent emulation of older utils
|
||
* src/digest.c: Allow using the --untagged option with --check,
|
||
so that `cksum -a md5 --untagged` used to emulate md5sum for example,
|
||
may be augmented with the --check option. Also support the --tag
|
||
option with cksum, to allow overriding a previous --untagged setting.
|
||
* doc/coreutils.texi: Adjust accordingly.
|
||
* tests/misc/cksum-a.sh: Likewise.
|
||
|
||
tests: avoid rare race in tail-2/F-vs-rename.sh
|
||
* tests/tail-2/F-vs-rename.sh: Keep stdout and stderr separate,
|
||
so that interspersion doesn't impact regex checks. Also wait
|
||
for each file's data to be printed to avoid multiple writes
|
||
to a file to be printed in a single iteration, which would
|
||
impact the regex checks. Also we refactor the check function,
|
||
rather than repeatedly redefining variations.
|
||
|
||
2021-09-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: remove duplicate from THANKS.in
|
||
* THANKS.in: Now that Tianjia Zhang has a commit in the repo.
|
||
|
||
2021-09-17 Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
|
||
|
||
tests: fix typo in cksum-a.sh
|
||
* tests/misc/cksum-a.sh: fix typo md5um to md5sum.
|
||
|
||
2021-09-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix rare false failure in tail-2/F-vs-rename
|
||
This is wrong fix really, as only introducing delay I think.
|
||
|
||
* tests/tail-2/F-vs-rename.sh: Avoid a rare false failure
|
||
due to a race in the test. Now wait until tail has noticed
|
||
that b is replaced before writing to a, so that the subsequent
|
||
write of "y" to b will be displayed independently from
|
||
current contents of b ("x").
|
||
|
||
2021-09-17 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: port removed-directory test to FreeBSD
|
||
* tests/ls/removed-directory.sh: On FreeBSD 9.1 at least,
|
||
one gets ENOENT when trying to traverse the current removed dir
|
||
with ../, so instead reference the parent dir directly.
|
||
|
||
2021-09-16 Pádraig Brady <P@draigBrady.com>
|
||
|
||
rmdir: fix uninitialized memory causing incorrect error
|
||
* src/rmdir.c (main): Only inspect the returned stat structure,
|
||
when stat(2) returns success.
|
||
|
||
2021-09-16 Jim Meyering <meyering@fb.com>
|
||
|
||
build: avoid new chmod.c warnings from upcoming GCC12
|
||
Here are the warnings:
|
||
src/chmod.c:175:3: error: 'ch.new_mode' may be used uninitialized in\
|
||
this function [-Werror=maybe-uninitialized]
|
||
175 | strmode (ch->new_mode, perms);
|
||
src/chmod.c:178:3: error: 'ch.old_mode' may be used uninitialized in\
|
||
this function [-Werror=maybe-uninitialized]
|
||
178 | strmode (ch->old_mode, old_perms);
|
||
|
||
* src/chmod.c (process_file): Initialize ch. Its new_mode and
|
||
old_mode fields could indeed be used uninitialized to form mode
|
||
strings, but those are used only when built from initialized members.
|
||
|
||
2021-09-16 Pádraig Brady <P@draigBrady.com>
|
||
|
||
digest: ignore empty lines when checking
|
||
* src/digest.c (digest_check): Treat empty lines like comments,
|
||
as commented checksum files very often have empty lines.
|
||
* tests/misc/md5sum.pl: Adjust accordingly.
|
||
|
||
factor: sync longlong.h adjustments from upstream
|
||
* src/longlong.h: Sync changes from:
|
||
https://gmplib.org/repo/gmp/log/tip/longlong.h
|
||
|
||
stat,tail: add support for the secretmem file system
|
||
* src/stat.c (human_fstype): Add case for the 'secretmem'
|
||
file system type.
|
||
* NEWS: Mention the Improvement.
|
||
|
||
maint: sync help2man to latest version
|
||
* man/help2man: sync to changes from version 1.48.5.
|
||
Note this doesn't materially change the generated man pages.
|
||
|
||
doc: remove older ChangeLog items
|
||
* Makefile.am: Update the oldest documented version
|
||
to 8.25 which is now about 5 years old.
|
||
|
||
tests: ensure returns_ check failures are propagated
|
||
* tests/misc/cksum-a.sh: Set fail=1 if returns_ check fails.
|
||
* tests/misc/sync.sh: Likewise.
|
||
* tests/misc/yes.sh: Likewise.
|
||
|
||
cksum: fix --check with non tagged format checksums
|
||
* src/digest.c: Always set the digest_length, so that
|
||
we check the correct number of hex digits when parsing
|
||
non tagged format checksums.
|
||
* tests/misc/cksum-a.sh: Add a test case. Also fix
|
||
up this test which was ineffective due to fail=1
|
||
being set in a subshell and ignored.
|
||
|
||
2021-09-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cksum: fix off-by-1 bug with \r stripping
|
||
Problem reported by Jim Meyering (Bug#50611).
|
||
* src/digest.c (digest_check): When stripping trailing \r,
|
||
avoid subscript error before start of line.
|
||
|
||
2021-09-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: prefer rawmemchr to memchr when easy
|
||
* bootstrap.conf (gnulib_modules): Add rawmemchr.
|
||
* src/csplit.c: Include idx.h.
|
||
* src/csplit.c (record_line_starts):
|
||
* src/head.c (elide_tail_lines_pipe):
|
||
* src/shuf.c (next_line):
|
||
* src/split.c (lines_split):
|
||
* src/tail.c (pipe_lines):
|
||
* src/wc.c (wc_lines):
|
||
Prefer rawmemchr to memchr when rawmemchr is easy.
|
||
* src/csplit.c (load_buffer):
|
||
* src/head.c (struct linebuffer):
|
||
Make room for a 1-byte sentinel.
|
||
|
||
split: avoid NULL + 1
|
||
* src/split.c (lines_chunk_split): Don’t add to a null pointer.
|
||
It’s undefined behavior, and it’s unnecessarily confusing
|
||
regardless.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
digest: support windows format checksum files
|
||
Support checksum files with CRLF line endings,
|
||
which is a common gotcha for using --check on windows,
|
||
or with checksum files generated on windows.
|
||
Note we escape \r here to support the original coreutils format
|
||
(with file name at EOL), and file names with literal
|
||
\r characters as the last character of their name.
|
||
|
||
* src/digest.c (filename_unescape): Convert \\r -> \r.
|
||
(print_filename): Escape \r -> \\r.
|
||
(output_file): Detect \r chars in file names.
|
||
(digest_check): Ignore literal \r char at EOL.
|
||
* tests/misc/md5sum.pl: Add a test case.
|
||
* tests/misc/sha1sum.pl: Likewise.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: improve --help indenting in checksum utils
|
||
* src/digest.c (usage): Indent multi-line descriptions for clarity.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: operate in binary mode only
|
||
This only practically matters on windows.
|
||
But given there are separate text handling options in cygwin,
|
||
keep the interface simple, and avoid exposing the
|
||
confusing binary/text difference here.
|
||
|
||
* doc/coreutils.texi (md5sum invocation): Mention that
|
||
--binary and --text are not supported by the cksum command.
|
||
* src/digest.c: Set flag to use binary mode by default.
|
||
(output_file): Don't distinguish text and binary modes with
|
||
' ' and '*', and just use ' ' always.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: use --tag format by default
|
||
This format is a better default, since it results in simpler usage,
|
||
as you don't need to specify --tag on generation or -a on
|
||
checking invocations. Also it's a more general format supporting
|
||
mixed and length adjusted digests.
|
||
|
||
* doc/coreutils.texi (cksum invocation): Document a new --untagged
|
||
option, to use the older coreutils format.
|
||
(md5sum invocation): Mention that cksum doesn't support --tag.
|
||
* src/digest.c: Adjust cksum(1) to default to --tag,
|
||
and accept the new --untagged option.
|
||
* tests/misc/b2sum.sh: Adjust accordingly.
|
||
* tests/misc/cksum-a.sh: Likewise.
|
||
* tests/misc/cksum-c.sh: Likewise.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: support --zero in default mode
|
||
* src/cksum.h: Thread DELIM through the output functions.
|
||
* src/digest.c: Likewise.
|
||
* src/sum.c: Likewise.
|
||
* src/sum.h: Likewise.
|
||
* src/cksum.c: Likewise. Also adjust check to allow -z
|
||
with traditional output modes. Also ajust the global variable
|
||
name to avoid shadowing warnings.
|
||
* tests/misc/cksum-a.sh: Adjust accordingly.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
digest: support -length specifiers on all digest tags
|
||
This will be generally useful going forward, for sha3-256 etc.
|
||
|
||
* src/digest.c: Rename b2_length to digest_length, and
|
||
adjust/simplify the code to operate on this for both
|
||
b2sum and cksum -a blake2b.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: support digest detection for tagged format
|
||
Support `cksum --check FILE` without having to specify a digest
|
||
algorithm, allowing for more generic file check instructions.
|
||
This also supports mixed digest checksum files, supporting
|
||
more robust multi digest checks.
|
||
|
||
* src/digest.c (algorithm_from_tag): A new function to
|
||
identify the digest algorithm from a tagged format line.
|
||
(split3): Set the algorithm depending on tag, and update
|
||
the expected digest length accordingly.
|
||
* tests/misc/cksum-c.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* tests/misc/md5sum.pl: Adjust to more generic error.
|
||
* tests/misc/sha1sum.pl: Likewise.
|
||
* doc/coreutils.texi (md5sum invocation): Mention the new -c feature.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: simplify b2sum to only handle BLAKE2b
|
||
Any further variants will use the cksum -a table driven mechanism.
|
||
|
||
* src/digest.c: Remove BLAKE2 specific table driven code.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
digest: add support for sm3
|
||
Add message digest sm3, which uses the OSCCA SM3 secure
|
||
hash (OSCCA GM/T 0004-2012 SM3) generic hash transformation.
|
||
|
||
* bootstrap.conf: Add the sm3 module.
|
||
* doc/coreutils.texi: Mention the cksum -a option.
|
||
* src/digest.c: Provide support for --algorithm='sm3'.
|
||
* tests/misc/sm3sum.pl: Add a new test (from Tianjia Zhang)
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
Tested-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: add --algorithm option to select digest mode
|
||
* src/digest.c: Organize HASH_ALGO_CKSUM to be table driven,
|
||
and amalgamate all digest algorithms.
|
||
(main): Parse all options if HASH_ALGO_CKSUM, and disallow
|
||
--tag, --zero, and --check with the traditional bsd, sysv, and crc
|
||
checksums for now.
|
||
* src/local.mk: Reorganize to include all digest modules in cksum.
|
||
* tests/misc/cksum-a.sh: Add a new test.
|
||
* tests/misc/b2sum.sh: Update to default to checking with cksum,
|
||
as b2sum's implementation diverges a bit from the others.
|
||
* tests/local.mk: Reference the new test.
|
||
* doc/coreutils.texi (cksum invocation): Adjust the summary to
|
||
identify the new mode, and document the new --algorithm option.
|
||
* man/cksum.x: Adjust description to be more general.
|
||
* man/*sum.x: Add [See Also] section referencing cksum(1).
|
||
* NEWS: Mention the new feature.
|
||
|
||
digest: refactor cksum(1) into digest.c
|
||
* cfg.mk: Adjust cksum.c to not require config.h
|
||
and support a main (for crctab) without calling bindtextdomain().
|
||
* po/POTFILES.in: Remove cksum_pclmul.c since it no longer
|
||
concerns itself with diagnostics.
|
||
* src/cksum.c: Refactor to just providing stream digest,
|
||
and digest printing functionality.
|
||
* src/cksum.h: Adjust to the new interface.
|
||
* src/cksum_pclmul.c: Remove diagnostics, and determine errors
|
||
internally.
|
||
* src/crctab.c: Separate from cksum.h since that's now included
|
||
multiple times.
|
||
* src/digest.c: Provide cksum(1) functionality if -DHASH_ALGO_CKSUM
|
||
* src/local.mk: Adjust to new crctab.c and HASH_ALGO_CKSUM define.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: document the --debug option
|
||
This should have been part of commit v8.32-113-gb73b9fcb1
|
||
|
||
* doc/coreutils.texi (cksum invocation): Add the --debug description.
|
||
* src/cksum.c (usage): Likewise.
|
||
(main): Also give explicit indication when using generic hardware.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
sum: handle EOVERFLOW for too large inputs
|
||
* src/sum.c (bsd_sum_stream): Detect overflow when updating length.
|
||
(sysv_sum_stream): Likewise.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
digest: refactor sum(1) into digest.c
|
||
Since digest will be providing all digest functionality,
|
||
refactor sum.c into it.
|
||
|
||
* po/POTFILES.in: sum.c no longer has translatable strings so remove.
|
||
* src/digest.c: Call out to new stream interfaces in sum.c
|
||
* src/local.mk: Adjust sources for the sum binary.
|
||
* src/sum.c: Provide a stream interface for BSD and SYSV digests.
|
||
* src/sum.h: A new file to declare the exported functions in sum.c
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
digest: add LENGTH parameter to digest to support cksum
|
||
* src/digest.c (digest_file): Add a LENGTH param,
|
||
to support cksum(1), and sum(1) which output the
|
||
length as part of their output.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: rename md5sum.c to more general digest.c
|
||
md5sum.c will be the base for all digest functions,
|
||
so rename accordingly.
|
||
|
||
* src/md5sum.c: Rename to ...
|
||
* src/digest.c: ... renamed from md5sum.c
|
||
* scripts/git-hooks/commit-msg: Allow digest: commit prefix.
|
||
* po.POTFILES.in: Adjust to new name.
|
||
* src/local.mk: Likewise.
|
||
|
||
2021-09-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix ambiguities in logname(1) and whoami(1)
|
||
* doc/coreutils.texi (whoami invocation): Clarify it prints names,
|
||
not numeric IDs.
|
||
* man/whoami.x: Likewise.
|
||
* man/logname.x: Reference getlogin(3).
|
||
* src/logname.c: Clarify that it prints the login name,
|
||
rather than the name of the effective user ID.
|
||
|
||
Fixes https://bugs.gnu.org/48894
|
||
|
||
2021-09-15 nl6720 <nl6720@gmail.com>
|
||
|
||
dircolors: add *direct* to TERM matching
|
||
Search for "direct color" at:
|
||
https://invisible-island.net/xterm/terminfo.html
|
||
|
||
* src/dircolors.hin: Add *direct* to match terminals that
|
||
support direct colors (24-bit color / TrueColor).
|
||
The trailing * will match entries like xterm-direct2.
|
||
|
||
Addresses https://bugs.gnu.org/39827
|
||
|
||
2021-09-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: stat-vs-dirent.sh: avoid a false failure
|
||
* tests/ls/stat-vs-dirent.sh: Skip the test if we can't stat(1),
|
||
as the file may have been removed, or have a malformed name
|
||
due to '\n' etc. in the file name.
|
||
|
||
2021-09-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: add new stdin reading programs to tty-eof test
|
||
* tests/misc/tty-eof.pl: Add b2sum and basenc.
|
||
|
||
build: update gnulib submodule to latest
|
||
* gnulib: Update to latest. This fixes a gnulib test failure in base64,
|
||
among other fixes.
|
||
* cfg.mk: Disable sc_indent as auto indent is too invasive for now.
|
||
|
||
2021-09-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix repeated word
|
||
A proposed change to gnulib's sc_prohibit_doubled_word
|
||
was made to detect this in future.
|
||
|
||
* README: s/can can/can/.
|
||
Fixes https://bugs.gnu.org/50484
|
||
|
||
2021-09-09 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: can “can can”
|
||
Problem reported by Akbarkhon Variskhanov (Bug#50484).
|
||
|
||
2021-09-08 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: add missing "as" (thanks to Nelson H.F. Beebe)
|
||
|
||
2021-09-05 Justin Tracey <j2tracey@gmail.com>
|
||
|
||
tests: narrow scope of faulty join args
|
||
* tests/misc/join.pl: Only test invalid-j with an invalid -j field,
|
||
not with missing operands as well.
|
||
|
||
2021-08-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: indicate the default algorithm in the sum(1) man page
|
||
* src/sum.c (usage): Indicate that -r (BSD algorithm) is the default.
|
||
|
||
2021-08-31 Pádraig Brady <P@draigBrady.com>
|
||
|
||
sum: always output a file name if one passed
|
||
Adjust to output the file name if any name parameter is passed.
|
||
This is consistent with sum -s, cksum, and sum implementations
|
||
on other platforms. This should not cause significant compat
|
||
issues, as multiple fields are already output, and so already
|
||
need to be parsed.
|
||
|
||
* src/sum.c (bsd_sum_file): Output the file name
|
||
if any name parameter is passed.
|
||
* tests/misc/sum.pl: Adjust accordingly.
|
||
* doc/coreutils.texi (sum invocation): Likewise.
|
||
* NEWS: Mention the change in behavior.
|
||
|
||
2021-08-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
tests: port better to NetBSD
|
||
* tests/misc/help-version.sh: Test that /dev/full causes
|
||
shell printf to fail. This ports better to NetBSD 9.88.46,
|
||
where it doesn’t. Problem reported by Nelson H. F. Beebe.
|
||
|
||
tests: merge help-version changes back from gzip
|
||
* tests/misc/help-version.sh: Merge gzip-related changes
|
||
back from gzip/tests/help-version. This fixes problems
|
||
when TERM is not 'dumb', and should simplify maintenance.
|
||
|
||
2021-08-30 Assaf Gordon <assafgordon@gmail.com>
|
||
|
||
basenc: fix bug49741: using wrong decoding buffer length
|
||
Emil Lundberg <lundberg.emil@gmail.com> reports in
|
||
https://bugs.gnu.org/49741 about a 'basenc --base64 -d' decoding bug.
|
||
The input buffer length was not divisible by 3, resulting in
|
||
decoding errors.
|
||
|
||
* NEWS: Mention fix.
|
||
* src/basenc.c (DEC_BLOCKSIZE): Change from 1024*5 to 4200 (35*3*5*8)
|
||
which is divisible by 3,4,5,8 - satisfying both base32 and base64;
|
||
Use compile-time verify() macro to enforce the above.
|
||
* tests/misc/basenc.pl: Add test.
|
||
|
||
2021-08-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
basenc: prefer signed to unsigned integers
|
||
This patch modifies basenc to prefer signed integers to
|
||
unsigned, as signed are less error-prone.
|
||
This patch also updates Gnulib to to latest, which updates Gnulib’s
|
||
base32 and base64 modules to prefer signed to unsigned integers.
|
||
* src/basenc.c: Include idx.h.
|
||
(struct base2_decode_context): Use unsigned char, not unsigned
|
||
for an octet that must fit in an unsigned char.
|
||
(base_encode, struct base_decode_context)
|
||
(base64_decode_ctx_wrapper, prepare_inbuf, base64url_encode)
|
||
(base64url_decode_ctx_wrapper, base32_decode_ctx_wrapper)
|
||
(base32hex_encode, base32hex_decode_ctx_wrapper, base16_encode)
|
||
(base16_decode_ctx, z85_encode, Z85_HI_CTX_TO_32BIT_VAL)
|
||
(z85_decoding, z85_decode_ctx, base2msbf_encode)
|
||
(base2lsbf_encode, base2lsbf_decode_ctx, base2msbf_decode_ctx)
|
||
(wrap_write, do_encode, do_decode, main):
|
||
Prefer signed integers to unsigned.
|
||
(main): Treat extremely large wrap columns as if they were
|
||
infinite; that’s good enough. Since we’re now using xstrtoimax,
|
||
this allows ‘-w -0’ (same as ‘-w 0’).
|
||
* tests/misc/base64.pl (gen_tests): -w-0 is no longer an error.
|
||
|
||
2021-08-25 Jim Meyering <meyering@fb.com>
|
||
|
||
maint: avoid new syntax-check failure
|
||
find-mount-point.h rightly includes <stdlib.h> for its use
|
||
of _GL_ATTRIBUTE_DEALLOC_FREE, which uses free, yet that new
|
||
inclusion provoked a syntax-check failure. Exempt this header
|
||
file as we've done for others.
|
||
* cfg.mk (exclude_file_name_regexp--sc_system_h_headers):
|
||
Add find-mount-point.h to the regexp.
|
||
(sc_system_h_headers): Use grep -E, for a more readable regexp.
|
||
|
||
2021-08-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid reflinks when testing SEEK_DATA logic
|
||
This better tests the SEEK_HOLE logic which
|
||
replaced the original fiemap hole identification logic.
|
||
Also it avoids a false failure in sparse-2.sh
|
||
on reflink supporting file systems, where we
|
||
try to correlate the file sizes produced by cp and dd.
|
||
|
||
* tests/cp/sparse-2.sh: s/cp/cp --reflink=never/
|
||
* tests/cp/sparse-extents-2.sh: Likewise.
|
||
* tests/cp/sparse-extents.sh: Likewise.
|
||
* tests/cp/sparse-perf.sh: Likewise.
|
||
* tests/cp/sparse.sh: Likewise.
|
||
|
||
Fixes https://github.com/coreutils/coreutils/issues/54
|
||
|
||
2021-08-22 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
df: pacify -Wsuggest-attribute=malloc
|
||
Problem found with latest Gnulib and GCC 11.2.1.
|
||
* src/find-mount-point.h (find_mount_point):
|
||
Add _GL_ATTRIBUTE_MALLOC and _GL_ATTRIBUTE_DEALLOC_FREE.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
maint: use clearerr on stdin when appropriate
|
||
This is so that commands like ‘fmt - -’ read from stdin
|
||
both times, even when it is a tty. Fix some other minor
|
||
issues that are related.
|
||
* src/blake2/b2sum.c (main):
|
||
* src/cksum.c (cksum):
|
||
* src/cut.c (cut_file):
|
||
* src/expand-common.c (next_file):
|
||
* src/fmt.c (fmt):
|
||
* src/fold.c (fold_file):
|
||
* src/md5sum.c (digest_file, digest_check):
|
||
* src/nl.c (nl_file):
|
||
* src/od.c (check_and_close):
|
||
* src/paste.c (paste_parallel, paste_serial):
|
||
* src/pr.c (close_file):
|
||
* src/sum.c (bsd_sum_file):
|
||
Use clearerr on stdin so that stdin can be read multiple times
|
||
even if it is a tty. Do not assume that ferror preserves errno as
|
||
POSIX does not guarantee this. Coalesce duplicate diagnostic
|
||
calls.
|
||
* src/blake2/b2sum.c (main):
|
||
* src/fmt.c (main, fmt):
|
||
Report read error, even if it's merely fclose failure.
|
||
* src/fmt.c: Include die.h.
|
||
(fmt): New arg FILE. Close input (reporting error) if not stdin.
|
||
All callers changed.
|
||
* src/ptx.c (swallow_file_in_memory): Clear stdin's EOF flag.
|
||
* src/sort.c (xfclose): Remove unnecessary feof call.
|
||
|
||
doc: spell out stdin, stdout, stderr
|
||
* doc/coreutils.texi: Spell out words like “stdin” in
|
||
English prose.
|
||
|
||
2021-08-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
chmod: fix use of uninitialized var if -v
|
||
Problem reported by Michael Debertol (Bug#50070).
|
||
* NEWS: Mention the fix.
|
||
* src/chmod.c (struct change_status): New struct, replacing the
|
||
old enum Change_status. All uses changed.
|
||
(describe_change): Distinguish between cases depending on
|
||
whether 'stat' or its equivalent succeeded. Report a line
|
||
of output even if 'stat' failed, as that matches the documentation.
|
||
Rework to avoid casts.
|
||
(process_file): Do not output nonsense modes computed from
|
||
uninitialized storage, removing a couple of IF_LINTs. Simplify by
|
||
defaulting to CH_NO_STAT.
|
||
|
||
2021-08-14 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: update .gitignore
|
||
* .gitignore: ignore new lib/malloc gnulib directory.
|
||
|
||
maint: allow hook script accept "Signed-off-by:"
|
||
* scripts/git-hooks/commit-msg: Relax this constraint.
|
||
|
||
2021-08-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
df: fix bug with automounted
|
||
If the command-line argument is automounted, df would use
|
||
stat info that became wrong after the following open.
|
||
* NEWS: Mention the fix (bug#50012).
|
||
* src/df.c (automount_stat_err): New function.
|
||
This fixes the hang on fifos in a better way, by using O_NONBLOCK.
|
||
(main): Use it.
|
||
|
||
2021-08-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cat: with -E fix handling of \r\n spanning buffers
|
||
We must delay handling when \r is the last character
|
||
of the buffer being processed, as the next character
|
||
may or may not be \n.
|
||
|
||
* src/cat.c (pending_cr): A new global to record whether
|
||
the last character processed (in -E mode) is '\r'.
|
||
(cat): Honor pending_cr when processing the start of the buffer.
|
||
(main): Honor pending_cr if no more files to process.
|
||
* tests/misc/cat-E.sh: Add test cases.
|
||
Fixes https://bugs.gnu.org/49925
|
||
|
||
2021-07-31 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: update .gitignore
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
uniq: pacify GCC -fanalyzer
|
||
Pacify GCC 11.1 -fanalyzer.
|
||
* src/uniq.c (check_file): Use simpler test to check whether this
|
||
is the first time through the loop. Although the old test was
|
||
correct, the new one is easier to understand and perhaps a tiny
|
||
bit more efficient.
|
||
|
||
numfmt: omit unnecessary pointer test
|
||
Caught by GCC 11.1 -fanalyzer.
|
||
* src/numfmt.c (simple_strtod_int): Remove unnecessary test of
|
||
*endptr vs NULL. Presumably this was a typo and **endptr was
|
||
intended instead of *endptr, but an **endptr test is also
|
||
unnecessary since c_isdigit (0) returns false.
|
||
|
||
2021-07-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: add options summary list to tr texinfo
|
||
* doc/coreutils.texi (tr invocation): Provide a summary
|
||
list of the available options, which is useful to
|
||
provide a quick reminder for those already familiar
|
||
with the functionality of tr.
|
||
Fixes https://bugs.gnu.org/49764
|
||
|
||
2021-07-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: augment new ls --zero test cases
|
||
* tests/ls/zero-option.sh: Check for the disabled, disallowed,
|
||
and allowed option combinations.
|
||
|
||
maint: avoid syntax-check failures in recent ls changes
|
||
* src/ls.c: Fix ifdef indenting and long line.
|
||
|
||
2021-07-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: modernize usage of “disk” and “core”
|
||
In documentation and comments, don’t assume that secondary storage
|
||
devices are disk devices. Similarly, don’t assume that main memory
|
||
uses magnetic cores, which became obsolete in the 1970s.
|
||
* src/du.c (usage):
|
||
* src/ls.c (usage):
|
||
* src/shred.c (usage): Reword to avoid “disk” in usage messages.
|
||
|
||
doc: improve ls documentation
|
||
* doc/coreutils.texi (ls invocation): Document implementation more
|
||
closely. Be more consistent about style. Omit some needless words.
|
||
* src/ls.c (usage): Don’t overdocument -f, as the details were wrong.
|
||
Omit -1 advice as it’s a bit obsolete now that we have --zero and
|
||
is a bit much for --usage output anyway.
|
||
|
||
ls: rename --null to --zero (Bug#49716)
|
||
* NEWS, doc/coreutils.texi (General output formatting):
|
||
* src/ls.c (usage):
|
||
Document this.
|
||
* src/ls.c (ZERO_OPTION): Rename from NULL_OPTION.
|
||
All uses changed.
|
||
(long_options): Rename --null to --zero.
|
||
(dired_dump_obstack, main, print_dir): Use '\n' instead of
|
||
eolbyte where eolbyte must equal '\n'.
|
||
(decode_switches): Decode --zero instead of --null.
|
||
--zero also implies -1, -N, --color=none, --show-control-chars.
|
||
Use easier-to-decipher code to set ‘format’ and ‘dired’.
|
||
Reject attempts to combine --dired and --zero.
|
||
* tests/local.mk: Adjust to test script renaming.
|
||
* tests/ls/zero-option.sh: Rename from tests/ls/null-option.sh,
|
||
and test --zero instead of --null.
|
||
|
||
ls: compute defaults more lazily
|
||
* src/ls.c (enum time_type, enum sort_type, enum indicator_style)
|
||
(enum Dereference_symlink, ignore_mode):
|
||
Put ‘= 0’ after default values, since the code relies
|
||
on static storage defaulting to zero.
|
||
(enum sort_type): Reorder so that -1 can be used to represent unset.
|
||
(main): Test print_with_color after parse_ls_color may have reset it.
|
||
(decode_line_length): Return the line length instead of setting
|
||
static storage. All uses changed. Treat line lengths exceeding
|
||
PTRDIFF_MAX as infinite, to avoid pointer-subtraction glitches.
|
||
(stdout_isatty): New function, to avoid calling isatty twice.
|
||
(decode_switches): Calculate defaults more lazily, to avoid using
|
||
syscalls or getenv during startup unless the results are more
|
||
likely to be needed. Use -1 to indicate options that haven’t been
|
||
set on the command line yet. Move print_with_color test from
|
||
here to ‘main’. Suppress bogus GCC warning.
|
||
(getenv_quoting_style): Return the quoting style instead of
|
||
setting static storage.
|
||
(init_column_info): New arg MAX_COLS, to avoid recalculating it.
|
||
Caller changed.
|
||
|
||
2021-07-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid recent syntax-check issues
|
||
* .gitignore: Cater for recently added poll module.
|
||
* src/stdbuf.c: Avoid false positive from sc_prohibit_readlink.
|
||
|
||
2021-07-26 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: add --null option (Bug#49716)
|
||
* NEWS, doc/coreutils.texi (General output formatting):
|
||
* src/ls.c (usage): Document this.
|
||
* src/ls.c (NULL_OPTION): New constant.
|
||
(long_options): Add --null.
|
||
(eolbyte): New static var.
|
||
(dired_dump_obstack, main, print_dir, print_current_files)
|
||
(print_many_per_line, print_horizontal, print_with_separator):
|
||
Output eolbyte instead of '\n'.
|
||
(decode_switches): Decode --null.
|
||
* tests/ls/null-option.sh: New file.
|
||
* tests/local.mk (all_tests): Add it.
|
||
|
||
ls: port to wider off_t, uid_t, gid_t
|
||
* src/ls.c (dired_pos): Now off_t, not size_t, since it counts
|
||
output file offsets.
|
||
(dired_dump_obstack): This obstack's file offsets are now
|
||
off_t, not size_t.
|
||
(format_user_or_group, format_user_or_group_width):
|
||
ID arg is now uintmax_t, not unsigned long, since uid_t and
|
||
gid_t values might exceed ULONG_MAX.
|
||
(format_user_or_group_width): Use snprintf with NULL instead of
|
||
sprintf with a discarded buffer. This avoids a stack buffer,
|
||
and so should be safer.
|
||
|
||
ls: demacroize
|
||
Prefer functions or constants to macros where either will do.
|
||
That’s cleaner, and nowadays there’s no performance reason to
|
||
prefer macros. All uses changed.
|
||
* src/ls.c (INITIAL_TABLE_SIZE, MIN_COLUMN_WIDTH):
|
||
Now constants instead of macros.
|
||
(file_or_link_mode): New function, replacing the old macro
|
||
FILE_OR_LINK_MODE.
|
||
(dired_outbyte): New function, replacing the old macro DIRED_PUTCHAR.
|
||
(dired_outbuf): New function, replacing the old macro DIRED_FPUTS.
|
||
(dired_outstring): New function, replacing the old macro
|
||
DIRED_FPUTS_LITERAL.
|
||
(dired_indent): New function, replacing the old macro DIRED_INDENT.
|
||
(push_current_dired_pos): New function, replacing the old macro
|
||
PUSH_CURRENT_DIRED_POS.
|
||
(assert_matching_dev_ino): New function, replacing the old macro
|
||
ASSERT_MATCHING_DEV_INO.
|
||
(do_stat, do_lstat, stat_for_mode, stat_for_ino, fstat_for_ino)
|
||
(signal_init, signal_restore, cmp_ctime, cmp_mtime, cmp_atime)
|
||
(cmp_btime, cmp_size, cmp_name, cmp_extension)
|
||
(fileinfo_name_width, cmp_width, cmp_version):
|
||
No longer inline; compilers can deduce this well enough nowadays.
|
||
(main): Protect unused assert with ‘if (false)’ rather than
|
||
commenting it out, so that the compiler checks the code.
|
||
(print_dir): Output the space and newline in the same buffer
|
||
as the human-readable number they surround.
|
||
(dirfirst_check): New function, replacing the old macro
|
||
DIRFIRST_CHECK. Simplify by using subtraction.
|
||
(off_cmp): New function, replacing the old macro longdiff.
|
||
(print_long_format): No need to null-terminate the string now.
|
||
(format_user_or_group): Let printf count the bytes.
|
||
|
||
ls: simplify sprintf usage
|
||
* src/ls.c (format_user_or_group_width, print_long_format):
|
||
Use return value from sprintf instead of calling strlen on
|
||
the resulting buffer, or inferring the length some other way.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
maint: fix white space
|
||
|
||
env: fix usage typo
|
||
* src/env.c (usage): Fix pluralization typo.
|
||
|
||
2021-07-02 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
df: fix duplicated remote entries due to bind mounts
|
||
As originally reported in <https://bugzilla.redhat.com/1962515>,
|
||
df invoked without -a printed duplicated entries for NFS mounts
|
||
of bind mounts. This is a regression from commit v8.25-54-g1c17f61ef99,
|
||
which introduced the use of a hash table.
|
||
|
||
The proposed patch makes sure that the devlist entry seen the last time
|
||
is used for comparison when eliminating duplicated mount entries. This
|
||
way it worked before introducing the hash table.
|
||
|
||
Patch co-authored by Roberto Bergantinos.
|
||
|
||
* src/ls.c (struct devlist): Introduce the seen_last pointer.
|
||
(devlist_for_dev): Return the devlist entry seen the last time if found.
|
||
(filter_mount_list): Remember the devlist entry seen the last time for
|
||
each hashed item.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/49298
|
||
|
||
2021-06-27 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
tail: use poll, not select
|
||
This fixes an unlikely stack out-of-bounds write reported by
|
||
Stepan Broz via Kamil Dudka (Bug#49209).
|
||
* bootstrap.conf (gnulib_modules): Replace select with poll.
|
||
* src/tail.c: Do not include <sys/select.h>.
|
||
[!_AIX]: Include poll.h.
|
||
(check_output_alive) [!_AIX]: Use poll instead of select.
|
||
(tail_forever_inotify): Likewise. Simplify logic, as there is no
|
||
need for a ‘while (len <= evbuf_off)’ loop.
|
||
|
||
tail: fix abuse2 test race
|
||
* tests/tail-2/inotify-hash-abuse2.sh (fastpoll):
|
||
Fix race where tailed file ‘f’ temporarily did not exist.
|
||
|
||
maint: while (1) → while (true)
|
||
|
||
2021-06-21 Nikolay Nechaev <Nikolay_Nechaev@mail.ru>
|
||
|
||
maint: remove redundant checks on buffer sizes in tail
|
||
* src/tail.c: remove redundant size checks before calls to
|
||
`xwrite_stdout`
|
||
|
||
2021-06-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
stat: use decomposed decimal device numbers by default
|
||
* src/stat.c (default_format): Use decomposed decimal
|
||
representation (major,minor) in the default format.
|
||
This is least ambiguous for human interpretation,
|
||
and more consistent with ls for example.
|
||
Fixes https://bugs.gnu.org/48960
|
||
|
||
2021-06-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
stat: support more device number representations
|
||
In preparation for changing the default device number
|
||
representation (to decomposed decimal), provide more
|
||
formatting options for device numbers.
|
||
|
||
These new (FreeBSD compat) formatting options are added:
|
||
|
||
%Hd major device number in decimal (st_dev)
|
||
%Ld minor device number in decimal (st_dev)
|
||
%Hr major device type in decimal (st_rdev)
|
||
%Lr minor device type in decimal (st_rdev)
|
||
%r (composed) device type in decimal (st_rdev)
|
||
%R (composed) device type in hex (st_rdev)
|
||
|
||
* doc/coreutils.texi (stat invocation): Document new formats.
|
||
* src/stat.c (print_it): Handle the new %H and %L modifiers.
|
||
(print_statfs): Adjust to passing the format as two chars
|
||
rather than an int. Using an int was introduced in commit db42ae78,
|
||
but using separate chars is cleaner and more extensible.
|
||
(print_stat): Likewise. Handle any modifiers and the new 'r' format.
|
||
(usage): Document the new formats.
|
||
* tests/misc/stat-fmt.sh: Add a test case for new modifiers.
|
||
Addresses https://bugs.gnu.org/48960
|
||
|
||
2021-06-12 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
Coreutils mistakenly did not list xstrndup as a module
|
||
that it depends on directly. When the latest Gnulib removed
|
||
the dirname module's dependency on xstrndup, this mistake
|
||
caused coreutils to not build. Since all of Coreutils's
|
||
uses of xstrndup know the string length, xmemdup0 is a better
|
||
match for what's needed. Since the size args are typically
|
||
signed or derived from subtracting pointers, the new Gnulib
|
||
ximemdup0 function is a better match yet.
|
||
So, use ximemdup0 instead of xstrndup.
|
||
* src/cut.c, src/dircolors.c, src/expand-common.c, src/expand.c:
|
||
* src/numfmt.c, src/set-fields.c, src/unexpand.c:
|
||
Do not include xstrndup.h; no longer needed.
|
||
* src/dircolors.c (parse_line):
|
||
* src/expand-common.c (parse_tab_stops):
|
||
* src/numfmt.c (parse_format_string):
|
||
* src/set-fields.c (set_fields):
|
||
Use ximemdup0 instead of xstrndup.
|
||
|
||
2021-05-28 Jim Meyering <meyering@fb.com>
|
||
|
||
maint: bootstrap: remove reference to unused hash-pjw module
|
||
* bootstrap.conf (gnulib_modules): Remove hash-pjw. No longer used.
|
||
|
||
2021-05-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
Fixes a false test failure with MALLOC_CHECK_ set.
|
||
|
||
* gnulib: Update to latest.
|
||
|
||
2021-05-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: remove fiemap logic
|
||
This is now only used on 10 year old linux kernels,
|
||
and performs a sync before each copy.
|
||
|
||
* src/copy.c (extent_copy): Remove function and all callers.
|
||
* src/extent-scan.c: Remove.
|
||
* src/extent-scan.h: Remove.
|
||
* src/fiemap.h: Remove.
|
||
* src/local.mk: Adjust for removed files.
|
||
* NEWS: Adjust to say fiemap is removed.
|
||
|
||
2021-05-13 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: disallow copy_file_range() on Linux kernels before 5.3
|
||
copy_file_range() before Linux kernel release 5.3 had many issues,
|
||
as described at https://lwn.net/Articles/789527/, which was
|
||
referenced from https://lwn.net/Articles/846403/; a more general
|
||
article discussing the generality of copy_file_range().
|
||
Linux kernel 5.3 was released in September 2019, which is new enough
|
||
that we need to actively avoid older kernels.
|
||
|
||
* src/copy.c (functional_copy_file_range): A new function
|
||
that returns false for Linux kernels before version 5.3.
|
||
(sparse_copy): Call this new function to gate use of
|
||
copy_file_range().
|
||
|
||
2021-05-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix tests/cp/sparse-2.sh false failure on some systems
|
||
* tests/cp/sparse-2.sh: Double check cp --sparse=always,
|
||
with dd conv=sparse, in the case where the former didn't
|
||
create a sparse file. Now that this test is being newly run
|
||
on macos, we're seeing a failure due to seek() not creating
|
||
holes on apfs unless the size is >= 16MiB.
|
||
|
||
2021-05-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: ensure we test SEEK_DATA where used
|
||
fiemap is no longer the default copy implementation,
|
||
so check for SEEK_DATA support instead as that's preferred.
|
||
This will ensure better test coverage on systems without fiemap.
|
||
|
||
* init.cfg: Replace fiemap_capable_ with seek_data_capable_.
|
||
This is best supported with python 3 so prefer that.
|
||
* tests/seek-data-capable: A new test script checking for
|
||
SEEK_DATA support on the passed file name,
|
||
called from seek_data_capable_.
|
||
* tests/fiemap-capable: Remove no longer used probing script.
|
||
* tests/cp/fiemap-perf.sh: Renamed to tests/cp/sparse-perf.sh
|
||
* tests/cp/fiemap-2.sh: Renamed to tests/cp/sparse-2.sh
|
||
* tests/cp/fiemap-extents.sh: Renamed to tests/cp/sparse-extents.sh
|
||
* tests/cp/sparse-fiemap.sh: Renamed to tests/cp/sparse-extents-2.sh
|
||
* tests/cp/fiemap-FMR.sh: Renamed to tests/cp/copy-FMR.sh
|
||
* tests/local.mk: Reference the renamed tests.
|
||
|
||
2021-05-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: handle system security config issues with copy_file_range()
|
||
* src/copy.c (sparse_copy): Upon EPERM from copy_file_range(),
|
||
fall back to a standard copy, which will give a more accurate
|
||
error as to whether the issue is with the source or destination.
|
||
Also this will avoid the issue where seccomp or apparmor are
|
||
not configured to handle copy_file_range(), in which case
|
||
the fall back standard copy would succeed without issue.
|
||
This specific issue with seccomp was noticed for example in:
|
||
https://github.com/golang/go/issues/40900
|
||
|
||
copy: handle EOPNOTSUPP from SEEK_DATA
|
||
* src/copy.c (infer_scantype): Ensure we don't error out
|
||
if SEEK_DATA returns EOPNOTSUPP, on systems where this value
|
||
is distinct from ENOTSUP. Generally both of these should be checked.
|
||
|
||
copy: handle ENOTSUP from copy_file_range()
|
||
* src/copy.c (sparse_copy): Ensure we fall back to
|
||
a standard copy if copy_file_range() returns ENOTSUP.
|
||
This generally is best checked when checking ENOSYS,
|
||
but it also seems to be a practical concern on Centos 7,
|
||
as a quick search gave https://bugzilla.redhat.com/1840284
|
||
|
||
2021-05-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update gnulib submodule to latest
|
||
Fixes a bits/long-double.h include build issue on some systems.
|
||
|
||
* bootstrap: Sync new --version option from gnulib.
|
||
* gnulib: Update to lastest.
|
||
Reported by Carl Edquist
|
||
|
||
2021-05-10 Carl Edquist <edquist@cs.wisc.edu>
|
||
|
||
build: fix __get_cpuid_count check to catch link failure
|
||
The test program will compile successfully even if __get_cpuid_count
|
||
is not declared. The error for the missing symbol will only show up
|
||
at link time. Thus, use AC_LINK_IFELSE instead of AC_COMPILE_IFELSE.
|
||
|
||
* configure.ac (__get_cpuid_count check): Use C_LINK_IFELSE instead
|
||
of AC_COMPILE_IFELSE.
|
||
(__get_cpuid check): Likewise.
|
||
|
||
2021-05-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: consistently free hash structures in dev mode
|
||
Ensure we call hash_free() to avoid valgrind and leak_sanitizer
|
||
"definitely lost" warnings. These were not real leaks as
|
||
we terminate immediately after, but we should avoid these
|
||
"definitely lost" warnings where possible.
|
||
|
||
* src/copy.c: Add dest_info_free() and src_info_free().
|
||
* src/copy.h: Declare the above.
|
||
* src/cp-hash.c: Don't define unless "lint" is defined.
|
||
* src/install.c: Call dest_info_free() in dev mode.
|
||
* src/mv.c: Likewise.
|
||
* src/cp.c: Likewise. Also call src_info_free().
|
||
* src/ln.c: Call hash_free() in dev mode.
|
||
* src/tail.c: Call hash_free() even if about to exit, in dev mode.
|
||
|
||
Fixes https://bugs.gnu.org/48189
|
||
|
||
2021-05-06 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: fix sc_space_before_open_paren failure
|
||
* src/copy.c (dest_info_init): Add space before parens.
|
||
(src_info_init): Likewise.
|
||
Syntax-check failure introduced in the previous commit.
|
||
|
||
2021-05-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: exit immediately upon failure to allocate hash memory
|
||
* src/copy.c (dest_info_init, src_info_init): Terminate immediately
|
||
upon memory exhaustion.
|
||
|
||
2021-05-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
copy: ensure we enforce --reflink=never
|
||
* src/copy.c (sparse_copy): Don't use copy_file_range()
|
||
with --reflink=never as copy_file_range() may implicitly
|
||
use acceleration techniques like reflinking.
|
||
(extent_copy): Pass through whether we allow reflinking.
|
||
(lseek_copy): Likewise.
|
||
Fixes https://bugs.gnu.org/48164
|
||
|
||
wc: add --debug to diagnose which implementation used
|
||
* src/wc.c: (main): Handle the new --debug option.
|
||
Only call avx2_supported if needed.
|
||
(avx2_supported): Diagnose various failures and attempts.
|
||
* NEWS: Mention the new wc improvement and --debug option.
|
||
|
||
2021-05-02 Kristoffer Brånemyr <ztion1@yahoo.se>
|
||
|
||
wc: use avx2 optimization when counting only lines
|
||
Use cpuid to detect CPU support for avx2 instructions.
|
||
Performance was seen to improve by 5x for a file with only newlines,
|
||
while the performance for a file with no such characters is unchanged.
|
||
|
||
* configure.ac [USE_AVX2_WC_LINECOUNT]: A new conditional,
|
||
set when __get_cpuid_count() and avx2 compiler intrinsics are supported.
|
||
* src/wc.c (avx2_supported): A new function using __get_cpuid_count()
|
||
to determine if avx2 instructions are supported.
|
||
(wc_lines): A new function refactored from wc(),
|
||
which implements the standard line counting logic,
|
||
and provides the fallback implementation for when avx2 is not supported.
|
||
* src/wc_avx2.c: A new module to implement using avx2 intrinsics.
|
||
* src/local.mk: Reference the new module. Note we build as a separate
|
||
lib so that it can be portably built with separate -mavx2 etc. flags.
|
||
|
||
2021-05-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
touch: fix wrong diagnostic (Bug#48106)
|
||
Problem reported by Roland (Bug#48106).
|
||
* src/touch.c (touch): Take more care when deciding whether
|
||
to use open_errno or utime_errno in the diagnostic.
|
||
Stop worrying about SunOS 4 (which as part of the problem),
|
||
as it’s long obsolete. For Solaris 10, verify that EINVAL
|
||
really means the file was a directory.
|
||
|
||
2021-04-27 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: port to Autoconf 2.71
|
||
* configure.ac: Use AC_PROG_CC, not AC_PROG_CC_STDC.
|
||
* gl/modules/smack (configure.ac):
|
||
* m4/jm-macros.m4 (coreutils_MACROS):
|
||
* m4/xattr.m4 (gl_FUNC_XATTR):
|
||
Use AS_HELP_STRING, not AC_HELP_STRING.
|
||
* m4/check-decl.m4 (gl_CHECK_DECLS):
|
||
Do not require AC_HEADER_TIME; we no longer care about it directly.
|
||
* m4/jm-macros.m4 (coreutils_MACROS):
|
||
Do not require AC_ISC_POSIX, which became obsolete in 2006.
|
||
Use AC_LINK_IFELSE instead of AC_TRY_LINK.
|
||
|
||
csplit: size_t overflow check
|
||
* src/csplit.c (get_new_buffer): Fix unlikely size_t overflow.
|
||
|
||
build: update gnulib submodule to latest
|
||
* src/csplit.c (load_buffer):
|
||
* src/pinky.c (create_fullname):
|
||
Use intprops-based checks rather than xalloc_oversized,
|
||
since Gnulib xalloc.h no longer includes xalloc-oversized.h.
|
||
|
||
2021-04-27 Zorro Lang <zlang@redhat.com>
|
||
|
||
copy: do not refuse to copy a swap file
|
||
* src/copy.c (sparse_copy): Fallback to read() if copy_file_range()
|
||
fails with ETXTBSY. Otherwise it would be impossible to copy files
|
||
that are being used as swap. This used to work before introducing
|
||
the support for copy_file_range() in coreutils. (Bug#48036)
|
||
|
||
2021-04-22 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
tests: fix FP in ls/stat-free-color.sh
|
||
On newer systems like Fedora 34 and openSUSE Tumbleweed, ls(1) calls
|
||
newfstatat(STDOUT_FILENO, ...), but only when there is something to
|
||
output.
|
||
|
||
* tests/ls/stat-free-color.sh: Add -a option to the reference invocation
|
||
of ls, thus enforcing something gets output.
|
||
|
||
2021-04-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: clarify that ln --relative requires --symbolic to be specified
|
||
* doc/coreutils.texi (ln invocation): State --symbolic is required.
|
||
* src/ln.c (usage): Explicitly state -s is not implied.
|
||
Fixes https://bugs.gnu.org/47703
|
||
|
||
doc: clarify what's counted by wc
|
||
* src/wc.c (usage): State that only printable characters are considered
|
||
when counting words. This also disambiguates wether we're talking
|
||
about bytes or characters in this context.
|
||
* doc/coreutils.texi (wc invocation): Likewise. Also clarify
|
||
that --characters counts valid locale aware characters,
|
||
and that --lines does not count a trailing "line" unless
|
||
it ends with a newline character.
|
||
Fixes https://bugs.gnu.org/47702
|
||
|
||
maint: use "char const *" rather than "const char *"
|
||
* cfg.mk (sc_prohibit-const-char): Add a new syntax-check to
|
||
enforce this style.
|
||
* *.[ch]: sed -i 's/const char \*/char const */g'
|
||
|
||
2021-04-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: cache name width determination
|
||
This is especially important now for --sort=width,
|
||
as that can greatly increase how often this
|
||
expensive quote_name_width() function is called per file.
|
||
|
||
This also helps the default invocation of ls,
|
||
or specifically the --format={across,vertical} cases
|
||
(when --width is not set to 0),
|
||
to avoid two calls to this function per file.
|
||
|
||
Note the only case where we later compute the width,
|
||
is for --format=commas. That's only done once though,
|
||
so we leave the computation close to use to
|
||
maximize hardware caching.
|
||
|
||
* src/ls.c (struct fileinfo): Add a WIDTH member to cache
|
||
the screen width of the file name.
|
||
(update_current_files_info): Set the WIDTH members for cases
|
||
they're needed multiple times. Note we do this explicitly here,
|
||
rather than caching at use, so that the fileinfo
|
||
structures can remain const in the sorting and presentation functions.
|
||
(sort_files): Call the new update_current_files_info() in this
|
||
initialization function.
|
||
(fileinfo_name_width): Renamed from fileinfo_width,
|
||
and adjusted to return the cached value if available.
|
||
|
||
2021-04-11 Carl Edquist <edquist@cs.wisc.edu>
|
||
|
||
ls: add --sort=width option to sort by file name width
|
||
This helps identify the outliers for long filenames, and also produces
|
||
a more compact display of columns when listing a directory with many
|
||
entries of various widths.
|
||
|
||
* src/ls.c (sort_type, sort_types, sort_width): New sort_width sort
|
||
type.
|
||
(sort_args): Add "width" sort arg.
|
||
(cmp_width, fileinfo_width): New sort function and helper for file name
|
||
width.
|
||
(quote_name_width): Add function prototype declaration.
|
||
(usage): Document --sort=width option.
|
||
* doc/coreutils.texi: Document --sort=width option.
|
||
* tests/ls/sort-width-option.sh: New test for --sort=width option.
|
||
* tests/local.mk: Reference new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2021-03-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
env: simplify --split-string memory management
|
||
* bootstrap.conf (gnulib_modules): Add idx.
|
||
* src/env.c: Include idx.h, minmax.h.
|
||
Prefer idx_t to ptrdiff_t when values are nonnegative.
|
||
(valid_escape_sequence, escape_char, validate_split_str)
|
||
(CHECK_START_NEW_ARG):
|
||
Remove; no longer needed now that we validate as we go.
|
||
(struct splitbuf): New type.
|
||
(splitbuf_grow, splitbuf_append_byte, check_start_new_arg)
|
||
(splitbuf_finishup): New functions.
|
||
(build_argv): New arg ARGC. Validate and process in one go, using
|
||
the new functions; this is simpler and more reliable than the old
|
||
approach (as witness the recent bug). Avoid integer overflow in
|
||
the unlikely case where the string contains more than INT_MAX
|
||
arguments.
|
||
(parse_split_string): Simplify by exploiting the new build_argv.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2021-03-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: add a test case for recent env fix
|
||
* tests/misc/env-S.pl: Add a test case for recent commit ec6904f0.
|
||
|
||
maint: ignore all .a files in .gitignore
|
||
* .gitignore: Rather than add the new src/libcksum_pclmul.a,
|
||
just ignore any such libs.
|
||
* src/.gitignore: Likewise.
|
||
Reported by Kristoffer Brånemyr.
|
||
|
||
2021-03-26 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
env: prefer ptrdiff_t
|
||
* src/env.c (usvars_used, vnlen, unset_envvars, expansion)
|
||
(build_argv): Prefer ptrdiff_t to size_t when either will do.
|
||
|
||
env: improve whitespace warning
|
||
* src/env.c (main): Issue -S warning for any whitespace,
|
||
not just space.
|
||
|
||
env: use GNU coding style
|
||
* src/env.c: Use GNU coding style for recentish changes.
|
||
|
||
env: remove asserts
|
||
The assertions didn’t help catch the most recent bug which
|
||
was in their area, and kind of get in the way.
|
||
* src/env.c: Do not include <assert.h>, and remove all assertions.
|
||
These seem to have been put in to pacify gcov, but surely there’s
|
||
a better way.
|
||
(escape_char): Pacify GCC with 'assume' instead.
|
||
|
||
doc: document env fix
|
||
* NEWS, doc/coreutils.texi (env invocation): Document recent change.
|
||
|
||
env: fix address violation with '\v' in -S
|
||
Problem reported by Frank Busse (Bug#47412).
|
||
* src/env.c (C_ISSPACE_CHARS): New macro.
|
||
(shortopts, build_argv, main): Treate all C-locale space
|
||
characters like space and tab, for compatibility with FreeBSD.
|
||
(validate_split_str, build_argv, parse_split_string):
|
||
Use the C locale, not the current locale, to determine whether a
|
||
byte is a space character.
|
||
|
||
2021-03-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
hostname: pacify valgrind
|
||
* src/hostname.c (main) [IF_LINT]: Free hostname (Bug#47384).
|
||
|
||
hostname: use puts
|
||
* src/hostname.c (main): Prefer puts to printf "%s\n".
|
||
|
||
maint: indenting
|
||
* src/ln.c: Fix indenting.
|
||
|
||
2021-03-25 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
ln: fix memory leaks in do_link
|
||
* src/ln.c (do_link): Free memory allocated by convert_abs_rel
|
||
on all code paths (Bug#47373).
|
||
|
||
2021-03-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
stdbuf: port lib to macOS
|
||
* src/libstdbuf.c (fprintf, free, strtoumax): Undef these too,
|
||
since Gnulib might replace them.
|
||
|
||
2021-03-24 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cksum: port recent changes to macOS
|
||
* src/cksum.c (cksum_slice8): Fix bug on little-endian
|
||
platforms lacking __bswap_32: the SWAP macro evaluates
|
||
its argument multiple times, but the macro has a side effect.
|
||
|
||
2021-03-22 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: update bootstrap from gnulib
|
||
* bootstrap: Sync from gnulib/build-aux/bootstrap; the previous gnulib
|
||
update (commit 1a3eb6c30) missed to update that file.
|
||
|
||
2021-03-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ptx: remove use of diacrit module
|
||
The diacrit module is obsolete, and ptx’s use of it is obsolete
|
||
too; it assumes an 8-bit locale (not that common these days) and
|
||
that TeX cannot process the 8-bit characters (nowadays, it can).
|
||
* NEWS, doc/coreutils.texi (Charset selection in ptx): Document this.
|
||
* bootstrap.conf (gnulib_modules): Remove diacrit.
|
||
* src/ptx.c: Do not include diacrit.h.
|
||
(print_field, fix_output_parameters): Remove obsolete support
|
||
for 8-bit diacritics.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2021-03-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: don't exit immediately if a single file overflows
|
||
This behavior was introduced in commit FILEUTILS-4_0_44-4-g519b707b4.
|
||
|
||
* src/cksum.c (cksum_slice8): Only report the overflow, and continue.
|
||
* src/cksum_pclmul.c (cksum_pclmul): Likewise.
|
||
|
||
2021-03-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cksum: add --debug to diagnose which implementation used
|
||
* src/cksum.c: (main): Use getopt_long to parse options,
|
||
and handle the new --debug option.
|
||
(pclmul_supported): Diagnose various failures and attempts.
|
||
* NEWS: Mention the new option.
|
||
|
||
2021-03-15 Kristoffer Brånemyr <ztion1@yahoo.se>
|
||
|
||
cksum: use pclmul hardware instruction for CRC32 calculation
|
||
Use cpuid to detect CPU support for hardware instruction.
|
||
Fall back to slice by 8 algorithm if not supported.
|
||
A 500MiB file improves from 1.40s to 0.67s on an i3-2310M
|
||
|
||
* configure.ac [USE_PCLMUL_CRC32]: A new conditional,
|
||
set when __get_cpuid() and clmul compiler intrinsics are supported.
|
||
* src/cksum.c (pclmul_supported): A new function using __get_cpuid()
|
||
to determine if pclmul instructions are supported.
|
||
(cksum): A new function refactored from cksum_slice8(),
|
||
which calls pclmul_supported() and then cksum_slice8()
|
||
or cksum_pclmul() as appropriate.
|
||
* src/cksum.h: Export the crctab array for use in the new module.
|
||
* src/cksum_pclmul.c: A new module to implement using pclmul intrinsics.
|
||
* po/POTFILES.in: Reference the new cksum_pclmul module.
|
||
* src/local.mk: Likewise. Note we build it as a separate library
|
||
so that it can be portably built with separate -mavx etc. flags.
|
||
* tests/misc/cksum.sh: Add new test modes for pertinent buffer sizes.
|
||
|
||
2021-03-14 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: propagate DEPENDENCIES to libs in single binary mode
|
||
build-aux/gen-single-binary.sh (override_single): A new function
|
||
to refactor the existing mappings for dir, vdir, and arch.
|
||
This function now also sets the DEPENDENCIES variable so that these
|
||
dependencies can be maintained later in the script, where
|
||
we now propagate the automake generated $(src_$cmd_DEPENDENCIES)
|
||
to our equivalent src_libsinglebin_$cmd_a_DEPENDENCIES.
|
||
This will ensure that any required libs are built,
|
||
which we require in a following change to cksum that
|
||
builds part of it as a separate library.
|
||
|
||
2021-02-19 Pádraig Brady <P@draigBrady.com>
|
||
|
||
rmdir: diagnose non following of symlinks with trailing slash
|
||
GNU/Linux is unusual here in that rmdir("symlink/") returns ENOTDIR,
|
||
whereas Solaris and FreeBSD at least, will follow the symlink
|
||
and remove the target directory. We don't make the behavior
|
||
on Linux kernels consistent, but at least clarify
|
||
the confusing error message.
|
||
|
||
* src/rmdir (main): Output a specific error message for the above case.
|
||
(remove_parents): In the error message, don't assume intermediate paths
|
||
are directories, as they could be symlinks.
|
||
* tests/rmdir/symlink-errors.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2021-02-18 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
stat,tail: add support for the exfat file system
|
||
Bug: https://bugzilla.redhat.com/1921427
|
||
|
||
* src/stat.c (human_fstype): Add case for the 'exfat' file system type.
|
||
* NEWS: Mention the Improvement.
|
||
Fixes https://bugs.gnu.org/46613
|
||
|
||
2021-02-15 Erik Auerswald <auerswal@unix-ag.uni-kl.de>
|
||
|
||
pr: fix alignment of input tabs to multiple columns
|
||
This regression was introduced in commit COREUTILS-6_8-58-g553d347d3
|
||
|
||
* src/pr.c (init_parameters): Process tabs for multiple columns.
|
||
* tests/pr/pr-tests.pl: Add test cases.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/46422
|
||
|
||
2021-02-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
cat: extend --show-ends to show \r\n as ^M$
|
||
- \r\n is common a line end combination
|
||
- catting such a file without options causes it to display normally
|
||
- overwriting the first char with $, loses info
|
||
|
||
* src/cat.c (cat): Convert \r preceeding a \n to ^M.
|
||
* tests/misc/cat-E.sh: New test.
|
||
* tests/local.mk: Reference new test.
|
||
* tests/misc/cat-proc.sh: Fix typo.
|
||
* doc/coreutils.texi (cat invocation): Mention the new behavior.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2021-01-26 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
expr: fix bug with unmatched \(...\)
|
||
Problem reported by Qiuhao Li.
|
||
* NEWS: Mention this.
|
||
* doc/coreutils.texi (String expressions):
|
||
Document the correct behavior, which POSIX requires.
|
||
* src/expr.c (docolon): Treat unmatched \(...\) as empty.
|
||
* tests/misc/expr.pl: New test.
|
||
|
||
2021-01-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
split: fix --number=K/N to output correct part of file
|
||
This functionality regressed with the adjustments
|
||
in commit v8.25-4-g62e7af032
|
||
|
||
* src/split.c (bytes_chunk_extract): Account for already read data
|
||
when seeking into the file.
|
||
* tests/split/b-chunk.sh: Use the hidden ---io-blksize option,
|
||
to test this functionality.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/46048
|
||
|
||
2021-01-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: rmdir --recursive substitutes
|
||
* doc/coreutils.texi (rmdir invocation): Add note on how to remove
|
||
empty subdirectories recursively.
|
||
|
||
2021-01-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
mkdir: fix bug when -m's more generous than umask
|
||
Problem reported by David McCall (Bug#45886).
|
||
I introduced this problem when fixing Bug#14371.
|
||
* NEWS: Mention the fix.
|
||
* src/mkdir.c (struct mkdir_options): New members umask_ancestor,
|
||
umask_self, replacing umask_value.
|
||
(make_ancestor): Use them when temporarily adjusting umask.
|
||
(main): Set them, and set the umask to umask_self instead
|
||
of leaving it alone.
|
||
* tests/mkdir/perm.sh (tests): Add test case for bug.
|
||
|
||
2021-01-09 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: modernize and fix regexp xref
|
||
* doc/coreutils.texi: Fix regexp cross-reference that had become
|
||
out-of-date (Bug#45749). Also, fix some obsolete references to
|
||
SunOS and to /usr/dict/words, and change “Linux” to “GNU/Linux”
|
||
where appropriate. Unfortunately the pipeline example gets more
|
||
complicated since /usr/share/dict/words is not sorted the way that
|
||
‘comm’ wants.
|
||
|
||
2021-01-03 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: make formatting of SEE ALSO in cat.1 and tac.1 consistent
|
||
None of the coreutils man pages - but the two above - are using bold
|
||
setting for the references to other man pages in the SEE ALSO section.
|
||
|
||
* man/cat.x (SEE ALSO): Remove '\fB...\fP' setting.
|
||
* man/tac.x: Likewise, and add a reference to cat(1).
|
||
|
||
2021-01-02 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: exempt 'doc/fdl.texi' from 'make update-copyright'
|
||
This file is a copy from gnulib and therefore should not get changed
|
||
by the yearly update.
|
||
|
||
* .x-update-copyright: Add pattern for the above file.
|
||
* doc/fdl.texi: Revert the previous change.
|
||
|
||
2021-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: update all copyright year number ranges
|
||
Run "make update-copyright" and then...
|
||
|
||
* gnulib: Update to latest with copyright year adjusted.
|
||
* tests/init.sh: Sync with gnulib to pick up copyright year.
|
||
* bootstrap: Likewise.
|
||
* tests/sample-test: Adjust to use the single most recent year.
|
||
|
||
2020-12-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: add a test for cksum
|
||
* tests/misc/cksum.sh: Test basic operation.
|
||
* tests/local.mk: Reference the new test.
|
||
|
||
2020-12-28 Kristoffer Brånemyr <ztion1@yahoo.se>
|
||
|
||
cksum: use more efficient slice by 8 algorithm
|
||
A 100MB file improves from 2.50s to 1.80s on a Sparc T5220
|
||
A 100MB file improves from 0.54s to 0.13s on an i3-2310M
|
||
|
||
* bootstrap.conf: Explicitly depend on byteswap,
|
||
since now used directly by coreutils.
|
||
* src/cksum.c (cksum): Process in multiples of 8 bytes.
|
||
(main): Adjust for generation of expanded crctab.
|
||
* src/cksum.h: Split now larger crctab to separate header.
|
||
* src/local.mk: Reference the new header.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2020-12-25 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
* src/make-prime-list.c (free): Undef, since Gnulib's free-posix
|
||
module now defines this to rpl_free on some platforms.
|
||
|
||
2020-12-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: remove extraneous ./src/ prefix from examples
|
||
* doc/coreutils.texi (numfmt invocation): s|./src/numfmt|numfmt|
|
||
|
||
doc: add `seq inf` and `sleep inf` examples to texinfo
|
||
* doc/coreutils.texi (seq invocation): Mention "inf" is supported,
|
||
and describe that it's handled specially to generate infinite
|
||
whole integer sequences. Also mention that such infinite generation
|
||
is supported for integer steps up to 200.
|
||
(sleep invocation): Give `sleep inf` as an example to sleep forever.
|
||
* src/seq.c: Add a comment on SEQ_FAST_STEP_LIMIT, to say it's
|
||
reflected in the texinfo description.
|
||
|
||
2020-12-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: document mkdir -m -p better
|
||
Chris Colohan wrote that the man page did not do enough to dispel
|
||
a common misunderstanding that “contributed to one of the scariest
|
||
outages Google has ever seen” (Bug#45258).
|
||
* doc/coreutils.texi (mkdir invocation):
|
||
* src/mkdir.c (usage): Document -m vs -p better.
|
||
|
||
2020-12-15 KOBAYASHI Takashi <a1415tk@aiit.ac.jp>
|
||
|
||
nl: fix --section-delimiter handling of single characters
|
||
* src/nl.c (main): Enforce the POSIX specified
|
||
behavior of assuming ':' is specified after a single
|
||
character argument to -d.
|
||
* tests/misc/nl.sh: Add a test case.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2020-12-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: mention the GNU extensions to nl --section-delimiter
|
||
* doc/coreutils.texi (nl invocation): Mention the GNU extensions
|
||
of allowing arbitrary length and empty delimiter strings.
|
||
* src/nl.c (usage): Likewise.
|
||
* tests/misc/nl.sh: Add test cases for the GNU extensions.
|
||
|
||
maint: refactor nl section delimiter handling
|
||
* src/nl.c (main): Update the default delimiter characters
|
||
when passed two characters with --section-delimiter.
|
||
Avoid redundant copies for the body and footer delimiter strings,
|
||
and instead, just offset into the header string.
|
||
(check_section): Avoid redundant comparing of 2 bytes of memory
|
||
for an empty delimiter.
|
||
|
||
2020-12-12 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2020-12-08 Arman Absalan <armanaxh@gmail.com>
|
||
|
||
chroot,comm,join: fix usage options style
|
||
* src/chroot.c (usage): Fix indentation of options.
|
||
* src/comm.c: Likewise.
|
||
* src/join.c: Likewise.
|
||
|
||
2020-12-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
date: with --debug, show the output format
|
||
The format can be determined from --options or the locale,
|
||
so it's useful to output the format string being used.
|
||
|
||
* src/date.c (show_date): Show the output format
|
||
along with the date being shown.
|
||
* tests/misc/date-debug.sh: Adjust accordingly.
|
||
Addresses https://bugs.gnu.org/44960
|
||
|
||
2020-11-27 Tim Gates <tim.gates@iress.com>
|
||
|
||
maint: fix typo, characteres -> characters
|
||
* src/expr.c: Fix typo in comment.
|
||
|
||
2020-11-26 Nishant Nayan <nishant.nayan@oracle.com>
|
||
|
||
rm: do not skip files upon failure to remove an empty dir
|
||
When removing a directory fails for some reason, and that directory
|
||
is empty, the rm_fts code gets the return value of the excise call
|
||
confused with the return value of its earlier call to prompt,
|
||
causing fts_skip_tree to be called again and the next file
|
||
that rm would otherwise have deleted to survive.
|
||
|
||
* src/remove.c (rm_fts): Ensure we only skip a single fts entry,
|
||
when processing empty dirs. I.e. only skip the entry
|
||
having successfully removed it.
|
||
* tests/rm/empty-immutable-skip.sh: New root-only test.
|
||
* tests/local.mk: Add it.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/44883
|
||
|
||
2020-11-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: mention in NEWS about new df remote fs types
|
||
* NEWS: Mention new remote file system types
|
||
recognized since gnulib commit dd1fc46b.
|
||
|
||
2020-11-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: remove no longer needed se_const helper
|
||
This was needed before libselinux-2.3 (May 2014),
|
||
but modern releases have the correct const declarations.
|
||
|
||
* src/chcon.c: Remove se_const() wrapper.
|
||
* src/cp.c: Likewise.
|
||
* src/install.c: Likewise.
|
||
* src/mkdir.c: Likewise.
|
||
* src/mkfifo.c: Likewise.
|
||
* src/mknod.c: Likewise.
|
||
* src/system.h: Likewise.
|
||
* gnulib: update to pick up const correctness fixes in selinux stubs.
|
||
|
||
2020-11-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: fix syntax-check failure
|
||
* po/POTFILES.in (src/selinux.c): Remove entry as this source doesn't
|
||
contain any translatable strings anymore; avoids a sc_po_check failure.
|
||
|
||
2020-11-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
install: suppress "Operation not supported" false alarms
|
||
At least, I *think* they are false alarms. An SELinux expert eye
|
||
would be welcome.
|
||
* src/install.c (setdefaultfilecon): If selabel_lookup fails
|
||
due to either ENOTSUP or ENODATA, don’t diagnose the issue.
|
||
Problem reported by Kamil Dudka in:
|
||
https://lists.gnu.org/r/coreutils/2020-11/msg00050.html
|
||
|
||
maint: propagate errno better in selinux.c
|
||
* src/selinux.c: Don’t include die.h; no longer needed.
|
||
(computecon, defaultcon, restorecon): Propagate errno.
|
||
(defaultcon, restorecon): Don’t diagnose errors or exit, as that’s
|
||
the caller’s responsibility.
|
||
|
||
2020-11-23 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: use absolute paths with selabel_lookup
|
||
* src/selinux.c: selabel_lookup requires absolute paths
|
||
(while only older matchpathcon before libselinux < 2.1.5 2011-0826 did).
|
||
* po/POTFILES.in: Readd src/selinux.c since we now have
|
||
a translatable error message.
|
||
|
||
2020-11-22 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: minor cleanup
|
||
The previous commit introduced a couple of syntax-check failures.
|
||
|
||
* .gitignore (/lib/se-label.h): Add entry to silence the
|
||
sc_gitignore_missing check. Sort entries in C locale.
|
||
* po/POTFILES.in (src/selinux.c): Remove entry as this source doesn't
|
||
contain any translatable strings anymore; avoids a sc_po_check failure.
|
||
* src/mv.c: Replace tabs by spaces to avoid complaints by
|
||
sc_prohibit_tab_based_indentation.
|
||
|
||
2020-11-22 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
maint: port from matchpathcon to selabel_lookup
|
||
Ubuntu 20.10 is using a newer version of libselinux that
|
||
complains that matchpathcon is obsolete. Rewrite the code
|
||
that it uses the recommended selabel_lookup instead.
|
||
* m4/jm-macros.m4 (coreutils_MACROS): Do not check for
|
||
matchpathcon_init_prefix, as it is no longer used.
|
||
* src/copy.c (set_file_security_ctx): Omit process_local arg,
|
||
as it is equivalent to !x->set_security_context. All callers changed.
|
||
* src/copy.h (struct cp_options): set_security_context is now of
|
||
type struct selabel_handle *, not bool. All uses changed.
|
||
* src/cp.c, src/install.c, src/mkdir.c, src/mkfifo.c, src/mknod.c:
|
||
* src/mv.c: Include selinux/label.h.
|
||
(main): Use selabel_open for set_security context.
|
||
* src/install.c (matchpathcon_init_prefix): Remove; now unused.
|
||
(get_labeling_handle): New static function.
|
||
(setdefaultfilecon, main): Use it.
|
||
(setdefaultfilecon): Do something regardless of
|
||
ENABLE_MATCHPATHCON, which seems to be a revenant macro.
|
||
(setdefaultfilecon): Use selabel_lookup instead of the obsolescent
|
||
matchpathcon. Report an error unless it fails due to ENOENT.
|
||
* src/local.mk (src_ginstall_CPPFLAGS): Remove.
|
||
* src/selinux.c: Include selinux/label.h
|
||
Do not include die.h, error.h, canonicalize.h.
|
||
(defaultcon, restorecon_private, restorecon):
|
||
New arg HANDLE. All callers changed.
|
||
Use selabel_lookup rather than matchpathcon.
|
||
(restorecon_private, restorecon): Don’t lose track of errno.
|
||
* src/selinux.c, src/selinux.h:
|
||
(restorecon): Don’t call ‘error’; that’s the caller’s job.
|
||
Use HAVE_SELINUX_LABEL_H, not HAVE_SELINUX_SELINUX_H,
|
||
in case there is some weird system with the former but not the latter.
|
||
* src/selinux.h (struct selinux_handle): Add forward decl.
|
||
|
||
build: port to Solaris 10
|
||
* src/local.mk (src_ln_LDADD, src_mktemp_LDADD, src_tac_LDADD):
|
||
Add $(LIB_CLOCK_GETTIME), since these use tempname which uses
|
||
clock_gettime if getrandom fails. On platforms like Solaris 10,
|
||
clock_gettime is not in the standard C library.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2020-11-18 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: mention that sort -g supports hex numbers
|
||
* doc/coreutils.texi (sort invocation): Mention explicitly
|
||
that --general-numeric-sort supports arbitrary format hex numbers,
|
||
but also mention that consistent case/width hex numbers can
|
||
be sorted faster with a standard sort.
|
||
|
||
2020-11-14 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tr: fix crash validating -c with some case char classes
|
||
This crash was identified by Cyber Independent Testing Lab:
|
||
https://cyber-itl.org/2020/10/28/citl-7000-defects.html
|
||
and was introduced with commit v8.5-163-g3f48829c2
|
||
|
||
* src/tr.c (validate_case_classes): Don't apply these
|
||
extra case alignment checks in the --complement case,
|
||
which is even more restrictive as to the contents of SET2.
|
||
* tests/misc/tr-case-class.sh: Add a test case,
|
||
for a large SET1, which caused the length adjustment
|
||
in validate_case_classes to underflow and trigger the assert.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2020-11-12 Ben Pfaff <blp@cs.stanford.edu>
|
||
|
||
doc: clarify in texinfo that `test == ...` is non portable
|
||
* doc/coreutils.texi (test invocation): Mention non portability
|
||
of the double equals form.
|
||
|
||
2020-11-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
ls: fix crash printing SELinux context for unstatable files
|
||
This crash was identified by Cyber Independent Testing Lab:
|
||
https://cyber-itl.org/2020/10/28/citl-7000-defects.html
|
||
and was introduced with commit v6.9.90-11-g4245876e2
|
||
|
||
* src/ls.c (gobble_file): Ensure scontext is initialized
|
||
in the case where files are not statable.
|
||
* tests/ls/selinux-segfault.sh: Renamed from proc-selinux-segfault.sh,
|
||
and added test case for broken symlinks.
|
||
* tests/local.mk: Adjust for the renamed test.
|
||
* NEWS: Mention the bug fix.
|
||
|
||
2020-11-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
timeout: support sub-second timeouts on macOS
|
||
* m4/jm-macros.m4: Check for setitimer.
|
||
* src/timeout.c: Use setitimer if timer_settime is not available.
|
||
* NEWS: Mention the improvement.
|
||
|
||
2020-11-07 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid strncat warning on GCC
|
||
GCC 10.1.1 without optimization gives:
|
||
|
||
error: ‘strncat’ argument 2 declared attribute ‘nonstring’
|
||
[-Werror=stringop-overflow=]
|
||
strncat (comment, UT_ID (utmp_ent), utmpsize);
|
||
|
||
Note the strncat man page says that:
|
||
"src does not need to be null-terminated
|
||
if it contains n or more bytes."
|
||
And the POSIX spec says that the second (source) parameter
|
||
is an array not a string.
|
||
So I think it's incorrect for strncat to require src be a string type.
|
||
This constraint seems to be being added to the gcc builtin strncat,
|
||
as specifiying -fno-builtin also avoids the warning.
|
||
Note specifying any optimization level also avoids the warning.
|
||
|
||
* src/who.c (make_id_equals_comment): Avoid the issue by using
|
||
stpcpy + stzncpy, instead of strcpy + strncat.
|
||
This pattern is used elsewhere in who.c
|
||
|
||
2020-10-28 Pádraig Brady <P@draigBrady.com>
|
||
|
||
stat,tail: sync file system constants from the linux kernel
|
||
* src/stat.c: Add magic constants for "devmem", and
|
||
"zonefs" file systems.
|
||
* NEWS: Mention the improvement.
|
||
|
||
maint: cleanup operation of fs-magic-compare
|
||
* src/local.mk: Ensure we map 2 hex digits to 4,
|
||
so that we don't output already handled Z3FOLD file system (0x33).
|
||
Also hide the generation command for src/fs.h.
|
||
|
||
2020-10-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: make blank lines before --help consistent
|
||
* src/basenc.c (usage): Remove extraneous blank line,
|
||
to be consistent with other utilities that have options.
|
||
* src/realpath.c: Likewise.
|
||
* src/runcon.c: Likewise.
|
||
Addresses https://bugs.gnu.org/44248
|
||
|
||
2020-10-26 Jim Meyering <meyering@fb.com>
|
||
|
||
maint: avoid new sort.c warning from upcoming GCC11
|
||
gcc version 11.0.0 20201025 (experimental) warns that
|
||
src/sort.c:1655:1: warning: function might be candidate for attribute \
|
||
'pure' if it is known to return normally [-Wsuggest-attribute=pure]
|
||
* src/sort.c (limfield): Mark as pure.
|
||
|
||
2020-10-26 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
dd: drop old workaround for lseek() bug in Linux kernel
|
||
The workaround triggers warnings from newer kernel versions in case
|
||
a user does not have sufficient privileges for the MTIOCGET ioctl.
|
||
|
||
* src/dd.c (skip_via_lseek): Drop wrapper function no longer needed.
|
||
(skip): Use lseek() directly.
|
||
(advance_input_after_read_error): Likewise.
|
||
|
||
Reported-by: Nir Soffer at https://bugzilla.redhat.com/1876840
|
||
Fixes https://bugs.gnu.org/44235
|
||
|
||
2020-10-26 KOBAYASHI Takashi <a1415tk@aiit.ac.jp>
|
||
|
||
nl: support a negative --line-increment
|
||
* src/nl.c (main): Allow -i to accept down to INTMAX_MIN.
|
||
* tests/misc/nl.sh: Add test cases.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2020-10-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
nl: only fail if need to output overflowed numbers
|
||
Previously we would have failed immediately upon internal overflow,
|
||
which didn't output the full line being processed, and assumed
|
||
there would be another numbered line.
|
||
|
||
* src/nl.c (line_no_overflow): A new global to track overflow.
|
||
(print_lineno): Only fail if about to output an overflowed number.
|
||
(reset_lineno): A new function to refactor resetting of the number,
|
||
and which also clears line_no_overflow.
|
||
* tests/misc/nl.sh: Add a test case.
|
||
|
||
2020-10-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: add lib/parse-datetime-gen.h to .gitignore
|
||
* .gitignore: update to ignore new file
|
||
generated by the latest gnulib update.
|
||
|
||
maint: sync help2man to latest version
|
||
* man/help2man: sync to changes from version 1.47.16.
|
||
Note this doesn't materially change the generated man pages.
|
||
Addresses https://bugs.gnu.org/44105
|
||
|
||
2020-10-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
* gl/lib/randperm.c, src/cp-hash.c, src/ls.c, src/sort.c, src/tail.c:
|
||
Change all instaces of hash_delete to hash_remove to accommodate
|
||
change to Gnulib API.
|
||
|
||
2020-10-17 Grigorii Sokolik <g.sokol99@g-sokol.info>
|
||
|
||
maint: remove already handled FIXME in tail.c
|
||
* src/tail.c: Remove FIXME to follow a file name in a recreated
|
||
directory. The comment was added in commit v8.5-191-g61b77891c
|
||
while the fix (albeit not using inotify) was added in
|
||
commit v8.27-21-gba5fe2d4b
|
||
|
||
maint: update docs for build prerequisites
|
||
* README-prereq: Explicitly pull tags,
|
||
and update the xz git repo url.
|
||
|
||
2020-09-29 Benno Schulenberg <bensberg@telfort.nl>
|
||
|
||
doc: fix punctuation in stat --help
|
||
* src/stat.c (usage): Replace a mistaken semicolon with a colon,
|
||
and replace mistaken backticks with single quotes. Also reorder
|
||
some words, for clarity.
|
||
Fixes https://bugs.gnu.org/43707
|
||
|
||
2020-08-12 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: clarify timeout --foreground description
|
||
* doc/coreutils.texi (timeout invocation): Avoid any implication
|
||
that `timeout --foreground` could be used to retroactively
|
||
timeout commands not already invoked by timeout(1).
|
||
Fixes bug https://bugs.gnu.org/42831
|
||
|
||
2020-08-08 Emanuele Giacomelli <vpooldyn-linux@yahoo.it>
|
||
|
||
csplit: fix regex suppression with specific match count
|
||
* src/csplit.c (process_regexp): Process the line suppression
|
||
in all invocations so that the last match is suppressed.
|
||
Previously with a non infinite match count,
|
||
the last regex pattern was not suppressed.
|
||
* NEWS: Mention the bug fix.
|
||
* tests/misc/csplit-suppress-matched.pl: Add a test case.
|
||
Fixes https://bugs.gnu.org/42764
|
||
|
||
2020-07-31 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
tests: skip some parts of 'tests/rmdir/ignore.sh' if run as root
|
||
Parts of this test expect that the rmdir syscall returns with EPERM,
|
||
but the root user does not see that.
|
||
|
||
* tests/rmdir/ignore.sh: Add uid_is_privileged_ guards around parts
|
||
of the test which expect rmdir() to fail with EPERM.
|
||
|
||
Reported by Nick Alcock <nix@esperi.org.uk> in
|
||
https://bugs.gnu.org/42633
|
||
|
||
2020-07-28 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: show version in title of HTML manual
|
||
* doc/coreutils.texi (@include version.texi): Move before ...
|
||
(@settitle): ... this. Add the version after the package name.
|
||
|
||
Suggested by Jonny Grant <jg@jguk.org> in
|
||
https://lists.gnu.org/r/bug-coreutils/2020-07/msg00021.html
|
||
|
||
2020-07-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
* src/local.mk (src_expr_LDADD, src_factor_LDADD):
|
||
Adjust to Gnulib renaming of LIB_GMP to LIBGMP.
|
||
|
||
2020-07-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix typo in env --split-string documentation
|
||
* doc/coreutils.texi: Fix grammar.
|
||
|
||
2020-07-24 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
date: clarify the Epoch
|
||
* src/date.c (usage): Mention the Epoch under %s for clarity,
|
||
and capitalize.
|
||
|
||
doc: modernize date examples
|
||
* doc/coreutils.texi: Use more-modern date examples.
|
||
Capitalize “Epoch” to be consistent with POSIX.
|
||
|
||
build: update gnulib submodule to latest
|
||
* bootstrap.conf (gnulib_modules): Add hash-triple.
|
||
|
||
2020-07-20 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: clarify 'timeout -k' behavior
|
||
* doc/coreutils.texi (timeout invocation): Document that the the
|
||
duration of --kill-after=DURATION begins when sending the initial
|
||
signal. Also mention that -k does not have any effect if timeout's
|
||
duration is 0.
|
||
|
||
Suggested by Jonny Grant <jg@jguk.org>.
|
||
|
||
2020-07-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
factor: port to --without-libgmp
|
||
* src/factor.c (mp_factor_using_division): Use mpz_fdiv_q_2exp
|
||
instead of its no-longer-documented mpz_div_2exp alias.
|
||
(print_factors): Use mpz_out_str instead of gmp_printf.
|
||
|
||
2020-07-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: be less aggressive about -fanalyzer
|
||
* configure.ac: Don’t enable -fanalyzer unless configured with the
|
||
new --enable-gcc-warnings=expensive option. See thread at:
|
||
https://lists.gnu.org/r/coreutils/2020-07/msg00011.html
|
||
|
||
2020-07-09 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
factor: explain why non-GMP code (Bug#42269)
|
||
* doc/coreutils.texi (factor invocation):
|
||
* src/factor.c: Explain why the two-word algorithm is useful.
|
||
|
||
2020-07-08 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: mention expr and factor bignums
|
||
* NEWS:
|
||
* doc/coreutils.texi (expr invocation, factor invocation):
|
||
Mention bignum support on all platforms. Modernize timings.
|
||
|
||
factor: treat ' +bignum' like non-bignum
|
||
* src/factor.c (strto2uintmax): Instead of here ...
|
||
(print_factors): ... skip spaces and '+' here, so that
|
||
bignums are treated like non-bignums.
|
||
* tests/misc/factor.pl (bug-gmp-plus_2_sup_128_plus_1): New test.
|
||
|
||
tests: simplify since expr now works on bignums
|
||
* cfg.mk (sc_prohibit_expr_unsigned): Remove.
|
||
* tests/dd/skip-seek-past-dev.sh (DEV_OFLOW):
|
||
* tests/id/setgid.sh (gp1):
|
||
* tests/misc/cut-huge-range.sh (CUT_MAX):
|
||
* tests/misc/expr.pl:
|
||
* tests/misc/sort-discrim.sh:
|
||
Assume expr works on bignums.
|
||
* tests/misc/cut-huge-range.sh (subtract_one):
|
||
Remove; no longer needed.
|
||
|
||
factor: simplify tests by assuming libgmp
|
||
* tests/misc/factor.pl: Test bignums even if !HAVE_GMP.
|
||
|
||
2020-07-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: use Gnulib libgmp module
|
||
This lets use assume multiple-precision arithmetic on all
|
||
platforms, simplifying the code.
|
||
* bootstrap.conf (gnulib_modules): Add libgmp.
|
||
* configure.ac: Don’t call cu_GMP, as this is now done by Gnulib.
|
||
* m4/gmp.m4: Remove.
|
||
* src/expr.c, src/factor.c: Use gmp.h unconditionally.
|
||
* src/factor.c: Use the simpler ‘#ifndef mpz_inits’ to
|
||
determine whether there is an mpz_inits macro.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2020-07-03 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: add timeout examples
|
||
* doc/coreutils.texi (timeout invocation): Add examples.
|
||
|
||
Suggested by Jonny Grant <jg@jguk.org> in
|
||
https://lists.gnu.org/r/bug-coreutils/2020-06/msg00018.html
|
||
|
||
2020-06-30 Andreas Schwab <schwab@linux-m68k.org>
|
||
|
||
tests: avoid spurious testsuite failure
|
||
* tests/dd/stats.sh: Increase timeout.
|
||
Fixes https://bugs.gnu.org/42135
|
||
|
||
2020-06-26 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix false failure with valgrind and reflink
|
||
* tests/cp/fiemap-FMR.sh: Avoid FICLONE ioctl,
|
||
which would avoid the point of the test (fiemap testing).
|
||
Also it avoids a valgrind bug with this ioctl:
|
||
https://bugs.kde.org/show_bug.cgi?id=397605
|
||
|
||
2020-06-26 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: use copy_file_range if available
|
||
* NEWS: Mention this.
|
||
* bootstrap.conf (gnulib_modules): Add copy-file-range.
|
||
* src/copy.c (sparse_copy): Try copy_file_range if not
|
||
looking for holes.
|
||
|
||
cp: use SEEK_DATA/SEEK_HOLE if available
|
||
If it works, prefer lseek with SEEK_DATA and SEEK_HOLE to FIEMAP,
|
||
as lseek is simpler and more portable (will be in next POSIX).
|
||
Problem reported in 2011 by Jeff Liu (Bug#8061).
|
||
* NEWS: Mention this.
|
||
* src/copy.c (lseek_copy) [SEEK_HOLE]: New function.
|
||
(enum scantype): New constants ERROR_SCANTYPE, LSEEK_SCANTYPE.
|
||
(union scan_inference): New type.
|
||
(infer_scantype): Last arg is now union scan_inference *,
|
||
not struct extent_scan *. All callers changed.
|
||
Prefer SEEK_HOLE to FIEMAP if both work, since
|
||
SEEK_HOLE is simpler and more portable.
|
||
(copy_reg): Do the fdadvise after initial scan, in case the scan
|
||
fails. Report an error if the initial scan fails.
|
||
(copy_reg) [SEEK_HOLE]: Use lseek_copy if scantype says so.
|
||
|
||
cp: avoid copy_reg goto
|
||
* src/copy.c (copy_reg): Redo to avoid label and goto.
|
||
|
||
cp: refactor extent_copy
|
||
* src/copy.c (extent_copy): New arg SCAN, replacing
|
||
REQUIRE_NORMAL_COPY. All callers changed.
|
||
(enum scantype): New type.
|
||
(infer_scantype): Rename from is_probably_sparse and return
|
||
the new type. Add args FD and SCAN. All callers changed.
|
||
|
||
maint: typo fix
|
||
* NEWS: Fix typo.
|
||
|
||
2020-06-23 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
chmod: man page fixes
|
||
* man/chmod.x: Mention -6000 too. Use .BR to fix trailing period.
|
||
|
||
2020-06-21 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix punctuation in man pages
|
||
* man/chmod.x: Add missing punctuation.
|
||
* src/expand-common.c: Likewise.
|
||
* src/numfmt.c: Likewise.
|
||
* src/rm.c: Likewise.
|
||
|
||
Fixes https://bugs.gnu.org/41962
|
||
|
||
2020-06-20 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
stat,tail: add support for the VBOXSF file system
|
||
* src/stat.c (human_fstype): Add case for the 'vboxsf' file system type
|
||
which is used for VirtualBox Shared Folders mounted in VirtualBox guest
|
||
VMs.
|
||
* NEWS: Mention the Improvement.
|
||
Fixes https://bugs.gnu.org/41935
|
||
|
||
2020-06-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: default to COW
|
||
Likewise for ‘install’. Proposed in Bug#24400, and long past due.
|
||
* NEWS:
|
||
* doc/coreutils.texi (cp invocation):
|
||
* src/copy.h (enum Reflink_type): Document this.
|
||
* src/cp.c (cp_option_init):
|
||
* src/install.c (cp_option_init): Implement this.
|
||
|
||
2020-06-15 Tobias Stoeckmann <tobias@stoeckmann.org>
|
||
|
||
maint: avoid signed integer overflows
|
||
Since -LONG_MIN results in LONG_MIN again, the operation itself is
|
||
a signed integer overflow.
|
||
|
||
This can be observed with the following calls (best if compiled
|
||
with -ftrapv or -fsanitize=undefined):
|
||
|
||
$ numfmt --padding=-9223372036854775808
|
||
$ seq 1e-9223372036854775808
|
||
|
||
Technically, the change in seq "reduces" the precision, but a double
|
||
or long double that small would be represented as 0 anyway.
|
||
|
||
* src/numfmt.c: Explicitly disallow --padding=LONG_MIN.
|
||
* src/seq.c: Treat 1e$LONG_MIN as 1e-$LONG_MAX.
|
||
* tests/misc/numfmt.pl: Add a test case.
|
||
* tests/misc/seq-precision.sh: Likewise.
|
||
|
||
Fixes https://bugs.gnu.org/41850
|
||
|
||
2020-06-07 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: timeout: improve documentation of the exit status
|
||
* doc/coreutils.texi (timeout invocation): Document that the exit
|
||
status is 137 when the KILL signal is used, regardless of whether that
|
||
signal is sent to COMMAND or timeout.
|
||
* src/timeout.c (usage): Likewise. Also split out and expand
|
||
on the possible exit status values to a separate table.
|
||
|
||
Discussed at https://bugs.gnu.org/41634
|
||
|
||
2020-06-01 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
maint: use getrandom, not getentropy
|
||
This makes for one Gnulib module less, and at runtime there’s
|
||
typically just one getrandom syscall instead of several for large
|
||
nonces.
|
||
* gl/lib/randread.c: Include sys/random.h instead of sys/time.h
|
||
and unistd.h.
|
||
(get_nonce): Use getrandom, not getentropy.
|
||
* gl/modules/randread (Depends-on):
|
||
Depend on getrandom, not getentropy.
|
||
* src/shred.c (main):
|
||
* src/shuf.c (main):
|
||
* src/sort.c (random_md5_state_init):
|
||
Say "getrandom" rather than "getentropy" in (unlikely) diagnostic.
|
||
|
||
maint: use getentropy and new tempname modules
|
||
Update gnulib submodule to latest and use its new features.
|
||
Gnulib’s new getentropy module means coreutils can now assume
|
||
getentropy instead of approximating it, badly in some cases.
|
||
Gnulib’s improvements to the tempname module mean coreutils no
|
||
longer needs to maintain private patches.
|
||
* bootstrap.conf (gnulib_modules): Remove gettimeofday.
|
||
* gl/lib/randread.c (NAME_OF_NONCE_DEVICE): Remove.
|
||
(get_nonce): Return success indicator. Remove bytes_bound arg.
|
||
All callers changed. Rewrite by using getentropy instead of
|
||
reading the nonce device and falling back on gettimeofday.
|
||
Fail if getentropy fails.
|
||
(randread_new): Return NULL (setting errno) if get_nonce fails.
|
||
All callers changed.
|
||
* gl/lib/tempname.c.diff, gl/lib/tempname.h.diff:
|
||
* gl/modules/tempname.diff: Remove.
|
||
* gl/modules/randread (Depends-on):
|
||
Depend on getentropy, not gettimeofday.
|
||
* src/ptx.c (swallow_file_in_memory):
|
||
* src/shuf.c (read_input):
|
||
Adjust to read_file changes in Gnulib.
|
||
* src/shred.c (main):
|
||
* src/shuf.c (main):
|
||
* src/sort.c (random_md5_state_init):
|
||
Diagnose the new form of randread_new failures: randread_new can
|
||
fail now when !random_source, meaning getentropy failed.
|
||
|
||
echo: pacify Oracle Studio 12.6
|
||
* src/echo.c (main): Don’t assign pointer to bool.
|
||
This is well-defined in C99, but is arguably bad style
|
||
and Oracle Studio 12.6 complains.
|
||
|
||
2020-05-25 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: copy FDL from gnulib instead of using it as module
|
||
Since the previous gnulib update, bootstrap outputs this warning:
|
||
|
||
Notice from module fdl:
|
||
Don't use this module! Instead, copy the referenced license file \
|
||
into your version control repository.
|
||
|
||
See gnulib commit:
|
||
https://git.sv.gnu.org/cgit/gnulib.git/commit/?id=88fc5afbccc9
|
||
|
||
* bootstrap.conf (gnulib_modules): Remove 'fdl'.
|
||
* doc/fdl.texi: Add file as a copy of 'gnulib/doc/fdl.texi'.
|
||
* doc/.gitignore (/fdl.texi): Remove entry.
|
||
* cfg.mk (FILTER_LONG_LINES): Add pattern for the 'fdl.texi' file.
|
||
|
||
2020-05-23 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: fix syntax-check failure from recent adjustment
|
||
* cfg.mk (old_NEWS_hash): Regenerate after commit v8.32-15-g6d0107a37
|
||
|
||
2020-05-23 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
tests: fix removed-directory test
|
||
The previous attempt to skip that test on NFS (commit 4181fc518362)
|
||
made the test fail; it introduced two problems:
|
||
a) In the good case, i.e., when the subshell returns with exit status 0,
|
||
the test ran into framework_failure_.
|
||
b) As the subshell also runs with 'set -x', the later comparison of
|
||
/dev/null with 'err' would fail.
|
||
|
||
* tests/ls/removed-directory.sh: Revert to the style without subshell,
|
||
and add 'test -d .' to verify that 'ls' can read the removed dir.
|
||
|
||
2020-05-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
date: document +%-N change
|
||
Suggested by Kamil Dudka in:
|
||
https://lists.gnu.org/r/bug-gnulib/2020-05/msg00205.html
|
||
* NEWS: Mention the change for coreutils 8.23.
|
||
* doc/coreutils.texi (Padding and other flags):
|
||
Document it.
|
||
|
||
ls: port removed-directory test to NFS
|
||
* tests/ls/removed-directory.sh:
|
||
Port test to NFS, where one gets a stale file handle
|
||
when looking at a removed directory.
|
||
|
||
dd: omit unnecessary vars when !lint
|
||
* src/dd.c (real_ibuf, real_obuf) [!lint]:
|
||
Remove, as they're needed only when lint checking.
|
||
All uses removed when 'lint' is not defined.
|
||
|
||
maint: omit unnecessary pragmas and fix tsort.c
|
||
* src/chown-core.c, src/comm.c:
|
||
* src/tsort.c (record_relation):
|
||
Remove GCC 10 pragmas that are not needed in GCC 10.1.0 (the first
|
||
public GCC 10 release) and that in some cases cause diagnostics
|
||
with GCC 10.1.0. The tsort.c change fixes a bug that was
|
||
inadvertantly introduced when these pragmas were added.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2020-05-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid warnings from GCC's -fanalyzer
|
||
* src/env.c (build_argv): Add an assert() to avoid:
|
||
warning: use of NULL 'n' where non-null expected
|
||
[CWE-690] [-Wanalyzer-null-argument]
|
||
note: argument 1 of 'getenv' must be non-null
|
||
* src/dd.c (alloc_ibuf): Don't discard the allocated pointer, to avoid:
|
||
[CWE-401] [-Wanalyzer-malloc-leak]
|
||
(alloc_obuf): Likewise.
|
||
(cleanup): Deallocate the now tracked buffers which
|
||
also avoids "possibly lost" warnings from valgrind.
|
||
* src/tsort.c (search_item): Add asserts to avoid:
|
||
[CWE-690] [-Wanalyzer-null-dereference]
|
||
(record_relation): An assert doesn't suffice here,
|
||
so disable the warning for this function.
|
||
* src/comm.c: Suppress the following false positive for the whole file:
|
||
[CWE-457] [-Wanalyzer-use-of-uninitialized-value]
|
||
* src/chown-core.c: Suppress the following false positive for the file:
|
||
[CWE-415] [-Wanalyzer-double-free]
|
||
|
||
2020-04-27 Jason Kim <git@jasonk.me>
|
||
|
||
ls: allow --classify to be ignored for non tty output
|
||
Have the `ls` `--classify` option take an optional argument for when to
|
||
classify ("always", "auto", "never"), just like the optional argument
|
||
for `--color`. When the optional argument is not specified, default to
|
||
"always" for backwards compatibility.
|
||
|
||
* src/ls.c (usage): Update help text.
|
||
(decode_switches): Support an optional argument for --classify.
|
||
* tests/ls/classify.sh: Add a new test.
|
||
* tests/local.mk: Reference the new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2020-04-22 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
build: update gnulib to latest - to avoid du(1) crash on XFS
|
||
Pull in a fix for FTS to avoid a crash when traversing a heavily
|
||
changed XFS file system:
|
||
|
||
> fts: remove NOSTAT_LEAF_OPTIMIZATION
|
||
|
||
* NEWS (Bug fixes): Mention the fix.
|
||
* gnulib: Update to latest.
|
||
* bootstrap: Sync from gnulib/build-aux/bootstrap.
|
||
|
||
Discussed at:
|
||
<https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html>
|
||
|
||
2020-04-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: clean up recently added test
|
||
* tests/misc/uniq-collate.sh: Remove logic that
|
||
was already refactored into gen_input().
|
||
|
||
cp: ensure --attributes-only doesn't remove files
|
||
* src/copy.c (copy_internal): Ensure we don't unlink the destination
|
||
unless explicitly requested.
|
||
* tests/cp/attr-existing.sh: Add test cases.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/40352
|
||
|
||
2020-03-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
* src/selinux.c: Do not include dosname.h; not needed, since
|
||
system.h does that for us via dirname.h.
|
||
|
||
2020-03-15 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: add texi2dvi build directory to doc/.gitignore
|
||
* doc/.gitignore (/coreutils.t2p/): Add entry for the build directory
|
||
left behind after 'make pdf'.
|
||
While at it, sort the file.
|
||
|
||
2020-03-07 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ls: improve removed-directory test
|
||
* tests/ls/removed-directory.sh: Remove host_triplet test.
|
||
Skip this test if one cannot remove the working directory.
|
||
From a suggestion by Bernhard Voelker (Bug#39929).
|
||
|
||
ls: restore 8.31 behavior on removed directories
|
||
* NEWS: Mention this.
|
||
* src/ls.c: Do not include <sys/sycall.h>
|
||
(print_dir): Don't worry about whether the directory is removed.
|
||
* tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
|
||
behavior.
|
||
|
||
2020-03-05 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
version 8.32
|
||
* NEWS: Record release date.
|
||
|
||
2020-03-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: don't rely on system env(1) being present
|
||
* tests/misc/env-S.pl: `env -i env` will call the system env
|
||
due to the path being cleared, so pass the absolute path
|
||
of our env binary under test to avoid that. This was seen
|
||
to be an issue on Guix where /usr/bin/env was not available.
|
||
|
||
basenc: avoid undefined behaviour in z85 processing
|
||
* src/basenc.c (z85_decode_ctx_init): Ensure we're working
|
||
with unsigned, as otherwise ubsan triggers with:
|
||
src/basenc.c:767:18: runtime error: signed integer overflow:
|
||
43 * 52200625 cannot be represented in type 'int'
|
||
(z85_encode): Likewise to avoid the usban error:
|
||
src/basenc.c:630:26: runtime error:
|
||
left shift of 134 by 24 places cannot be represented in type 'int'
|
||
|
||
2020-03-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid a false failure on OpenIndiana 11
|
||
* tests/misc/timeout-parameters.sh: Split the large timeout
|
||
handling to ...
|
||
* tests/misc/timeout-large-parameters.sh: ... here, so that
|
||
the 3 second delay is contained in its own test, and if
|
||
the test is skipped due invalid handling within timeout(1),
|
||
it will be more apparent.
|
||
Also adjust the check so we skip whenever the kernel timer
|
||
fires immediately, to handle the buggy OpenIndiana 11 kernel also.
|
||
Reported by Bruno Haible.
|
||
|
||
tests: avoid a hang on GNU/Hurd from 2019
|
||
* tests/du/8gb.sh: Add a timeout around:
|
||
`dd bs=1 seek=8G of=big < /dev/null`
|
||
|
||
tests: use bash in some scripts to avoid false failures
|
||
* init.cfg (require_bash_as_SHELL_): A new function to replace
|
||
SHELL for the current test, with bash if available.
|
||
This is useful on OpenIndiana 11 where /bin/sh was seen
|
||
to have races in handling of SIGPIPE.
|
||
* tests/misc/seq-epipe.sh: Use the new function to enforce bash.
|
||
* tests/misc/env-signal-handler.sh: Likewise.
|
||
Reported by Bruno Haible
|
||
|
||
tests: improve test coverage for ls stat checks
|
||
* tests/ls/stat-free-color.sh: Check for the availability
|
||
of various stat calls individually, and add statx() and fstatat64()
|
||
to the list to check. Fix the stat counting logic to
|
||
ignore lines like "+++ exited with 0 +++".
|
||
* tests/ls/stat-free-symlinks.sh: Check syscalls other than stat().
|
||
|
||
2020-03-01 Bruno Haible <bruno@clisp.org>
|
||
|
||
tests: enable 4 more tests to be executed on FreeBSD
|
||
* init.cfg (gcc_shared_libs_): New variable.
|
||
(gcc_shared_): Use it, instead of hardcoding -ldl.
|
||
(require_gcc_shared_): Determine the suitable value
|
||
for gcc_shared_libs_.
|
||
|
||
2020-02-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix incorrect `|| fail` pattern in tests
|
||
* tests/ls/stat-free-symlinks.sh: s/|| fail/|| fail=1/.
|
||
* tests/misc/tee.sh: Likewise.
|
||
* tests/touch/relative.sh: Likewise.
|
||
* cfg.mk (sc_prohibit_or_fail): A new syntax-check to avoid this.
|
||
|
||
2020-02-29 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: avoid false failures on darwin 19.2.0
|
||
With these adjustments, all tests pass on macOS Catalina.
|
||
|
||
* tests/dd/sparse.sh: Adjust so that systems like apfs that
|
||
don't create holes < 16 MiB do not fail erroneously.
|
||
* tests/touch/trailing-slash.sh: Darwin was seen to dereference
|
||
symlinks to files when given a trailing slash, so avoid
|
||
that particular case.
|
||
|
||
2020-02-29 Bruno Haible <bruno@clisp.org>
|
||
|
||
tests: fix test failure on FreeBSD 12
|
||
* tests/misc/csplit-io-err.sh: Limit the effect of the fwrite
|
||
override to streams != stderr, as fwrite is in the error() path there.
|
||
|
||
2020-02-27 Jan Nieuwenhuizen <janneke@gnu.org>
|
||
|
||
build: once again distribute .tar.gz files
|
||
* configure.ac: Reenable distribution of gzip-compressed
|
||
tarballs, for Guix bootstrapping reasons as discussed at:
|
||
https://lists.gnu.org/r/coreutils/2020-02/msg00042.html
|
||
* THANKS.in: Remove me, as now a committer.
|
||
* NEWS (Build-related): Mention this.
|
||
|
||
2020-02-27 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: ensure .deps/ in the project root is ignored by git
|
||
* .gitignore: s|*/.deps/|.deps|
|
||
|
||
doc: remove older ChangeLog items
|
||
* Makefile.am: Update the oldest documented version
|
||
to 8.23 which is now about 5 years old.
|
||
|
||
2020-02-27 Colin Watson <cjwatson@debian.org>
|
||
|
||
ls: issue error message on removed directory
|
||
If the current directory has been removed, then "ls" confusingly
|
||
produced no output and no error message, indistinguishable from
|
||
running on an empty directory.
|
||
|
||
* src/ls.c (print_dir): Report ENOENT on GNU/Linux if readdir
|
||
finds no directory entries at all, not even "." or "..",
|
||
and a recheck with the getdents syscall returns ENOENT.
|
||
We recheck with getdents() as POSIX states that
|
||
"The directory entries for dot and dot-dot are optional".
|
||
* tests/ls/removed-directory.sh: New file.
|
||
* tests/local.mk (all_tests): Add new test.
|
||
* NEWS: Mention the change in behavior.
|
||
Reported by Owen Thomas.
|
||
|
||
2020-02-25 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update to latest gnulib
|
||
* bootstrap.conf: Adjust for changes to fchmodat and fchownat,
|
||
which are now separated from chmodat and chownat respectively.
|
||
|
||
b2sum: sync better with upstream
|
||
* src/blake2/blake2-impl.h: Sync load16() implementation,
|
||
which doesn't change code generation.
|
||
Also leverage (builtin) memcpy to more efficiently
|
||
move data on little endian systems,
|
||
giving a 2% win with GCC 9.2.1 on an i3-2310M.
|
||
|
||
factor: sync longlong.h adjustments from upstream
|
||
* src/longlong.h: Sync changes from:
|
||
https://gmplib.org/repo/gmp/log/tip/longlong.h
|
||
mips64: Provide r6 asm code as default expression yields.
|
||
arm32: Define sub_ddmmss separately for non-thumb (no rsc instruction).
|
||
powerpc: Add "CLOBBER" descriptions for some registers.
|
||
x86: Fix criterion for when to use mulx in umul_ppmm.
|
||
|
||
stat,tail: sync file system constants from the linux kernel
|
||
* src/stat.c: Add magic constants for "binderfs", "dma-buf-fs",
|
||
"erofs", "ppc-cmm-fs", and "z3fold".
|
||
* NEWS: Mention the improvement.
|
||
|
||
2020-02-24 Pádraig Brady <P@draigBrady.com>
|
||
|
||
uniq: avoid strcoll() to improve performance and consistency
|
||
strcoll() is only significant to uniq(1) if it returns 0,
|
||
and it generally only does so with buggy locales or mismatched
|
||
locales and data. Some systems may have strcoll()
|
||
return 0 for equivalent normalized unicode forms,
|
||
but for consistency across platforms strcoll() is avoided.
|
||
The various cases are defined in the new test.
|
||
This is consistent with newer POSIX standards as discussed at:
|
||
https://www.austingroupbugs.net/view.php?id=963
|
||
|
||
* src/uniq.c: s/xstrcoll/memcmp/.
|
||
* tests/local.mk: Reference the new test.
|
||
* tests/misc/uniq-collate.sh: Add a new test.
|
||
* NEWS: Mention the change in behavior.
|
||
Fixes https://bugs.gnu.org/38627
|
||
|
||
2020-02-15 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: clarify that '%a' stat format outputs mode bits
|
||
* src/stat.c (usage): Mention permission bits rather than
|
||
"access" so there is no confusion with ACLs etc.
|
||
Also indicate we output the file type with '%A'.
|
||
* doc/coreutils.texi (stat invocation): Likewise.
|
||
Also indicate '%A' is similar to `ls -ld` output.
|
||
Addresses https://bugs.gnu.org/39613
|
||
|
||
2020-02-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
tests: fix test for symlink
|
||
* tests/cp/preserve-gid.sh: s/-l/-L/.
|
||
Reported by Kamil Dudka
|
||
|
||
2020-02-09 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
tests: ensure tests/cp/preserve-gid.sh works with single binary
|
||
* tests/cp/preserve-gid.sh: If configured with --enable-single-binary
|
||
copy the coreutils single binary, instead of the cp one-line launcher.
|
||
|
||
Discussed at https://bugzilla.redhat.com/1800597
|
||
Fixes https://bugs.gnu.org/39485
|
||
|
||
2020-02-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: avoid syntax-check failure in previous commit
|
||
* configure.ac: Restrict lines to 80 chars.
|
||
|
||
2020-02-09 Jim Meyering <meyering@fb.com>
|
||
|
||
build: suppress new FP warning from gcc-10.0.1
|
||
* configure.ac (GNULIB_WARN_CFLAGS): Add -Wno-return-local-addr
|
||
to avoid FP warning about careadlinkat.c. Discussed starting in
|
||
https://lists.gnu.org/r/coreutils/2020-02/msg00006.html
|
||
|
||
2020-02-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: update to latest gnulib
|
||
Pick up recent build fixes to avoid sysctl.h inclusion on glibc systems,
|
||
restrict the max file size supported by read-file to PTRDIFF_MAX,
|
||
and to avoid a -Werror=unused failure in test-canonicalize.
|
||
|
||
tests: avoid false failure due to varying /proc/kallsyms
|
||
* tests/cp/proc-short-read.sh: Switch to using /proc/cpuinfo,
|
||
rather than /proc/kallsyms which was seen to vary in some cases.
|
||
Fixes https://bugs.gnu.org/39357
|
||
|
||
2020-02-04 Pádraig Brady <P@draigBrady.com>
|
||
|
||
rmdir: fix --ignore-fail-on-non-empty with permissions errors
|
||
Since v6.10-21-ged5c4e7 `rmdir --ignore-fail-on-non-empty`
|
||
had reversed the failure status for directories that failed
|
||
to be removed for permissions reasons. I.E. it would have
|
||
returned a failure status for such non empty dirs, and vice versa.
|
||
|
||
* src/rmdir.c (errno_may_be_non_empty): Rename from the
|
||
more confusing errno_may_be_empty(), and remove the EEXIST
|
||
case (specific to Solaris), which is moot here since
|
||
handled in errno_rmdir_non_empty().
|
||
(ignorable_failure): Fix the logic error so that
|
||
_non_ empty dirs are deemed to have ignorable failures.
|
||
(main): Fix clobbering of errno by is_empty_dir().
|
||
(remove_parents): Likewise.
|
||
* tests/rmdir/ignore.sh: Add a test case.
|
||
* THANKS.in: Add reporter who fixed the errno handling.
|
||
* NEWS: Mention the bug fix.
|
||
Fixes https://bugs.gnu.org/39364
|
||
|
||
2020-02-03 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: avoid vector performance warnings in randperm
|
||
* configure.ac: Add -Wno-vector-operation-performance to suppress the
|
||
following gcc-9.2 error in gl/lib/randperm.c:
|
||
error: vector operation will be expanded piecewise
|
||
|
||
build: avoid including sysctl.h on glibc
|
||
* src/uname.c: Avoid unneeded header with GLIBC,
|
||
which has been deprecated since glibc-2.30.
|
||
* src/uptime.c: Likewise.
|
||
|
||
ls: support --time=creation to show/sort birth time
|
||
* src/ls.c (usage): Reorganize help for --time,
|
||
and add description for --time=birth.
|
||
(do_statx): Store btime in mtime if available.
|
||
(get_stat_btime): A new function to read the creation time
|
||
from the appropriate stat structure member.
|
||
(cmp_btime): A new function to compare birth time.
|
||
(print_long_format): Output '?' when birth time unavailable.
|
||
* doc/coreutils.texi: Document --time={birth,creation}.
|
||
* tests/local.mk: Reference the new test.
|
||
* tests/ls/birthtime.sh: Add a new test.
|
||
* NEWS: Mention the new feature.
|
||
|
||
2020-01-30 Chris Meyering <christophe.meyering@gmail.com>
|
||
|
||
build: rearrange yes(1) code to prevent GCC 10 warning
|
||
* src/yes.c (main): Convert for loop to do-while in order to indicate
|
||
that the loop will be run at least once.
|
||
This avoids the following warning after the second loop:
|
||
src/yes.c:110:20: error: writing 1 byte into a region of size 0
|
||
|
||
2020-01-01 Emil Engler <me@emilengler.com>
|
||
|
||
maint: add lib/iconv_open-zos.h to .gitignore
|
||
* .gitignore: Add file newly generated by gnulib commit 49e78fc
|
||
|
||
2020-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
build: auto enable use of openssl with >= version 3
|
||
* configure.ac: Set --with-openssl=auto-gpl-compat as the default,
|
||
so that openssl is used for md5sum etc., with openssl >= 3,
|
||
which is newly licensed under ASL v2.
|
||
* gnulib: Update to include "auto-gpl-compat" support.
|
||
|
||
maint: adjust to split out xstrtol-error gnulib module
|
||
* bootstrap.conf: Depend on the new module split from xstrtol.
|
||
* src/df.c: Include "xstrtol-error.h" for xstrtol_fatal.
|
||
* src/du.c: Likewise.
|
||
* src/ls.c: Likewise.
|
||
* src/od.c: Likewise.
|
||
* src/pr.c: Likewise.
|
||
* src/sort.c: Likewise.
|
||
|
||
2020-01-01 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: update all copyright year number ranges
|
||
Run "make update-copyright" and then...
|
||
|
||
* gnulib: Update to latest with copyright year adjusted.
|
||
* tests/init.sh: Sync with gnulib to pick up copyright year.
|
||
* bootstrap: Likewise.
|
||
* tests/sample-test: Adjust to use the single most recent year.
|
||
|
||
2019-12-08 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: add example to demonstrate sub-second sleep times
|
||
* doc/coreutils.texi (sleep invocation): Add an example to demonstrate
|
||
how to use the floating-point and the scientific notation to sleep
|
||
for sub-second times, e.g. milli-, micro- and nanoseconds.
|
||
|
||
Inspired by Stephane Chazelas in:
|
||
https://lists.gnu.org/r/coreutils/2019-12/msg00005.html
|
||
|
||
2019-12-02 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: fix syntax-check failure from recent adjustment
|
||
* cfg.mk (old_NEWS_hash): Regenerate after commit v8.31-56-gc1e1965.
|
||
|
||
2019-12-02 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
chcon: do not validate security context if SELinux is disabled
|
||
* src/chcon.c (main): Skip call of security_check_context()
|
||
in case SELinux is disabled to avoid unnecessary failure.
|
||
|
||
Bug: https://bugzilla.redhat.com/1777831
|
||
|
||
2019-11-12 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: remove colon from node name
|
||
* doc/sort-version.texi (Minus/Hyphen and Colon characters):
|
||
Rename from “Minus/Hyphen @samp{-} and Colon @samp{:} characters”,
|
||
as texi2any 6.6 complains about colons in node names.
|
||
|
||
shred: modernize documentation
|
||
* doc/coreutils.texi (shred invocation):
|
||
Modernize discussion to today’s technology (Bug#38168).
|
||
* src/shred.c (usage): Omit lengthy duplication of the manual’s
|
||
discussion of file systems and storage devices, as that became out
|
||
of sync with the manual. Instead, just cite the manual.
|
||
|
||
2019-10-22 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
all: improve parsing of numeric arguments
|
||
This addresses a longstanding "update all callers" FIXME in
|
||
lib/xstrtol.c, by having programs check that numbers do not
|
||
have unknown suffixes. The problem was also reported for
|
||
'shuf' by my student Maggie Huang while reimplementing a shuf
|
||
subset in Python as an exercise in UCLA Computer Science 35L:
|
||
https://web.cs.ucla.edu/classes/fall19/cs35L/assign/assign3.html
|
||
This patch also improves the portability of the code to unusual
|
||
platforms where ULONG_MAX < SIZE_MAX.
|
||
* NEWS: Mention user-visible changes.
|
||
* src/chgrp.c (parse_group):
|
||
* src/chroot.c (parse_additional_groups):
|
||
* src/du.c (main):
|
||
* src/install.c (get_ids):
|
||
* src/join.c (string_to_join_field):
|
||
* src/ls.c (decode_switches):
|
||
* src/md5sum.c (split_3):
|
||
* src/shuf.c (main):
|
||
* src/sort.c (specify_nthreads):
|
||
* src/uniq.c (size_opt, main):
|
||
Use uintmax_t instead of unsigned long, for portability
|
||
to oddball platforms where unsigned long is not wide enough.
|
||
* src/du.c (main):
|
||
* src/expr.c (mpz_init_set_str) [!HAVE_GMP]:
|
||
* src/install.c (get_ids):
|
||
* src/ls.c (decode_switches):
|
||
* src/mknod.c (main):
|
||
* src/ptx.c (main):
|
||
* src/shuf.c (main):
|
||
* src/sort.c (specify_nmerge, specify_nthreads):
|
||
Reject numbers with suffixes.
|
||
* src/md5sum.c (split_3): Simplify.
|
||
|
||
stdbuf: improve size checking
|
||
* bootstrap.conf (gnulib_modules): Add minmax.
|
||
* src/libstdbuf.c: Include stdint.h, minmax.h.
|
||
(apply_mode): Don’t assume SIZE_MAX <= ULONG_MAX.
|
||
Improve checking for invalid sizes.
|
||
|
||
shuf: improve randperm overflow checking
|
||
* gl/lib/randperm.c: Include randperm.h first, since it’s the API.
|
||
Include stdint.h, count-leading-zeros.h, verify.h.
|
||
(floor_lg): Rename from ceil_log (which was not actually
|
||
implementing the ceiling!) and implement the floor using
|
||
count_leading_zeros.
|
||
(randperm_bound): Use floor_lg, not ceil_log. Use uintmax_t
|
||
instead of size_t in case the size gets large on a 32-bit host.
|
||
* gl/modules/randperm (Depends-on): Add count-leading-zeros, stdint.
|
||
|
||
build: don’t worry about logical-op checking
|
||
* configure.ac: Remove code tailoring --enable-gcc-warnings
|
||
to GCC 4.7 and earlier, as developers no longer need to worry
|
||
about GCCs that old.
|
||
|
||
build: re-enable type-limits checking
|
||
* configure.ac: When --enable-gcc-warnings is used, omit
|
||
-Wno-type-limits. The need for -Wno-type-limits has passed, now
|
||
that intprops.h uses builtin primitives for GCC 5 and later, given
|
||
that recent GCCs issue type-limits warnings only for non-constant
|
||
expressions. --enable-gcc-warnings is not intended for use with
|
||
old compilers, so we can drop -Wno-type-limits now.
|
||
|
||
2019-10-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
shuf: fix bug with ‘-r -n 0’
|
||
‘shuf -r -n 0 file’ would mistakenly read from standard input.
|
||
Problem reported by my student Jingnong Qu while reimplementing a
|
||
shuf subset in Python as an exercise in UCLA Computer Science 35L:
|
||
https://web.cs.ucla.edu/classes/fall19/cs35L/assign/assign3.html
|
||
* NEWS: Mention the fix. Also, ASCIIfy a previous item.
|
||
* src/shuf.c (main): Fix bug.
|
||
* tests/misc/shuf.sh: Add a test case for the bug.
|
||
|
||
2019-10-09 Jeff Layton <jlayton@kernel.org>
|
||
|
||
ls: use statx instead of stat when available
|
||
statx allows ls to indicate interest in only certain inode metadata.
|
||
This is potentially a win on networked/clustered/distributed
|
||
file systems. In cases where we'd have to do a full, heavyweight stat()
|
||
call we can now do a much lighter statx() call.
|
||
|
||
As a real-world example, consider a file system like CephFS where one
|
||
client is actively writing to a file and another client does an
|
||
ls --color in the same directory. --color means that we need to fetch
|
||
the mode of the file.
|
||
|
||
Doing that with a stat() call means that we have to fetch the size and
|
||
mtime in addition to the mode. The MDS in that situation will have to
|
||
revoke caps in order to ensure that it has up-to-date values to report,
|
||
which disrupts the writer.
|
||
|
||
This has a measurable affect on performance. I ran a fio sequential
|
||
write test on one cephfs client and had a second client do "ls --color"
|
||
in a tight loop on the directory that held the file:
|
||
|
||
Baseline -- no activity on the second client:
|
||
|
||
WRITE: bw=76.7MiB/s (80.4MB/s), 76.7MiB/s-76.7MiB/s (80.4MB/s-80.4MB/s),
|
||
io=4600MiB (4824MB), run=60016-60016msec
|
||
|
||
Without this patch series, we see a noticable performance hit:
|
||
|
||
WRITE: bw=70.4MiB/s (73.9MB/s), 70.4MiB/s-70.4MiB/s (73.9MB/s-73.9MB/s),
|
||
io=4228MiB (4433MB), run=60012-60012msec
|
||
|
||
With this patch series, we gain most of that ground back:
|
||
|
||
WRITE: bw=75.9MiB/s (79.6MB/s), 75.9MiB/s-75.9MiB/s (79.6MB/s-79.6MB/s),
|
||
io=4555MiB (4776MB), run=60019-60019msec
|
||
|
||
* src/stat.c: move statx to stat struct conversion to new header...
|
||
* src/statx.h: ...here.
|
||
* src/ls.c: Add wrapper functions for stat/lstat/fstat calls,
|
||
and add variants for when we are only interested in specific info.
|
||
Add statx-enabled functions and set the request mask based on the
|
||
output format and what values are needed.
|
||
* NEWS: Mention the Improvement.
|
||
|
||
2019-10-03 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
truncate: avoid integer-overflow assumptions
|
||
* src/truncate.c (do_ftruncate): Simplify overflow checking,
|
||
and don’t rely on theoretically-nonportable assumptions
|
||
like assuming that OFF_MAX < UINTMAX_MAX.
|
||
|
||
numfmt: avoid unlikely integer overflow
|
||
* src/numfmt.c (parse_format_string): Report overflow if
|
||
pad < -LONG_MAX, since that can’t be negated.
|
||
|
||
nl: fix integer-overflow bug
|
||
Problem reported by Roland Illig (Bug#37585)
|
||
* src/nl.c (print_lineno): Don’t rely on undefined behavior when
|
||
checking for integer overflow.
|
||
|
||
cp: simplify integer overflow checking
|
||
* src/copy.c (sparse_copy): Use INT_ADD_WRAPV instead
|
||
of doing overflow checking by hand.
|
||
|
||
2019-09-08 Pádraig Brady <pbrady@fb.com>
|
||
|
||
seq: use faster processing for integer steps from 2 to 200
|
||
* src/seq.c: (seq_fast): Accept STEP as a parameter and use that
|
||
to skip the output of generated numbers.
|
||
(main): Relax to using seq_fast for integer steps between 1 and 200.
|
||
For larger steps the throughput was faster using the standard
|
||
incrementing procedure.
|
||
(cmp): Use the equivalent but faster memcmp for equal len strings.
|
||
* tests/misc/seq.pl: Update fast path cases.
|
||
Addresses https://bugs.gnu.org/37241
|
||
|
||
2019-09-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: use consistent header ordering and spacing in NEWS
|
||
* NEWS: Move "Changes in behavior" before "New features",
|
||
and ensure there is only a single blank line between sections.
|
||
|
||
2019-08-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2019-08-15 Assaf Gordon <assafgordon@gmail.com>
|
||
|
||
scripts: document how to build older versions on newer systems
|
||
Based on https://lists.gnu.org/r/coreutils/2019-08/msg00011.html .
|
||
|
||
* scripts/build-older-versions/README.older-versions: Documentation
|
||
* scripts/build-older-versions/build-older-versions.sh: Helper script.
|
||
* scripts/build-older-versions/.gitignore: Ignore build directory.
|
||
* scripts/build-older-versions/coreutils-5.0-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-5.97-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-6.10-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-6.11-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-6.12-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-7.2-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-8.13-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-8.17-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-8.18-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-8.24-on-glibc-2.28.diff,
|
||
scripts/build-older-versions/coreutils-8.4-on-glibc-2.28.diff: Patches.
|
||
|
||
2019-08-12 Bruno Haible <bruno@clisp.org>
|
||
|
||
build: adjust for recent gnulib pthread changes
|
||
Discussed in https://lists.gnu.org/r/coreutils/2019-08/msg00030.html .
|
||
|
||
* bootstrap.conf (gnulib_modules): Replace 'pthread' with
|
||
pthread-* modules.
|
||
* src/sort.c: Remove GNULIB_defined_pthread_functions conditional.
|
||
|
||
2019-08-11 Assaf Gordon <assafgordon@gmail.com>
|
||
|
||
date: mention military timezone changes from gnulib
|
||
Gnulib commits f1f10d47be8762e4ca17c8957a0520b08d28abfb and
|
||
0673d8ab42c9bb0cf618a21b537cdd8fb976fb73 negated the meaning of
|
||
military timezones parsed in gnu date.
|
||
See https://lists.gnu.org/r/bug-gnulib/2019-08/msg00005.html and
|
||
https://lists.gnu.org/r/coreutils/2019-08/msg00021.html
|
||
|
||
* NEWS: Mention this user-visible change.
|
||
* tests/misc/date.pl: Add tests for the new behavior.
|
||
|
||
2019-08-11 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: add lib/argmatch.h to po/POTFILES.in
|
||
* po/POTFILES.in (lib/argmatch.h): Add to avoid sc_po_check error:
|
||
"maint.mk: you have changed the set of files with translatable \
|
||
diagnostics;"
|
||
|
||
2019-08-11 Assaf Gordon <assafgordon@gmail.com>
|
||
|
||
gnulib: update to latest
|
||
|
||
2019-08-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: clarify that truncate creates sparse files
|
||
* src/truncate.c (usage): Explicitly mention "sparse".
|
||
* doc/coreutils.texi (truncate invocation): Likewise.
|
||
Addresses https://bugs.gnu.org/36963
|
||
|
||
2019-08-07 Mike Swanson <mikeonthecomputer@gmail.com>
|
||
|
||
dircolors: recognize the WebP image format
|
||
* src/dircolors.hin: Add .webp for the WebP image format.
|
||
Fixes https://bugs.gnu.org/36899
|
||
|
||
2019-08-07 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: fix error in syntax-check checking
|
||
The previous commit introduced a bug into the following syntax-check,
|
||
and thus effectively turned it off:
|
||
|
||
$ make sc_prohibit_test_calls_print_ver_with_irrelevant_argument; \
|
||
echo $?
|
||
prohibit_test_calls_print_ver_with_irrelevant_argument
|
||
fatal: cannot change to 'grep': No such file or directory
|
||
0
|
||
|
||
* cfg.mk (sc_prohibit_test_calls_print_ver_with_irrelevant_argument):
|
||
Remove changing directory, and pass $(srcdir) as argument to 'git -C'.
|
||
|
||
2019-08-04 Akim Demaille <akim.demaille@gmail.com>
|
||
|
||
maint: fix issues in syntax-check
|
||
* cfg.mk (sc_prohibit_colon_redirection): Don't expect `|` to denote
|
||
the pipe character in git grep.
|
||
(sc_tests_executable)
|
||
(sc_case_insensitive_file_names)
|
||
(sc_some_programs_must_avoid_exit_failure)
|
||
(sc_prohibit_test_background_without_cleanup_)
|
||
(sc_prohibit_test_calls_print_ver_with_irrelevant_argument)
|
||
(sc_prohibit_test_ulimit_without_require_)
|
||
(sc_prohibit_test_background_without_cleanup_)
|
||
(sc_THANKS_in_duplicates)
|
||
*sc_prohibit_test_calls_print_ver_with_irrelevant_argument):
|
||
Don't expect builddir to be a descendant of srcdir.
|
||
(sc_strftime_check): Don't check file size against 0 when "N\nq\n" was
|
||
already put in the file.
|
||
* THANKS.in: Remove me.
|
||
|
||
2019-08-03 Assaf Gordon <assafgordon@gmail.com>
|
||
|
||
seq: fix superfluous output line
|
||
Under certain circumstances seq prints an extra line when the output
|
||
format has custom format with characters following the printed numbers:
|
||
|
||
$ seq -f "%g " 1000000 1000000
|
||
1e+06
|
||
1e+06
|
||
|
||
This is due to the "print_extra_number" logic using strings to determine
|
||
whether a 'extra number' is needed, but only one string was trimmed
|
||
when using a custom printf format.
|
||
|
||
Prompted by https://lists.gnu.org/r/coreutils/2019-08/msg00001.html
|
||
|
||
* NEWS: Mention fix.
|
||
* src/seq.c (print_numbers): Trim the 'x0_str' string before comparing
|
||
it to the previous 'x_str' string.
|
||
* tests/misc/seq-extra-number.sh: Add this scenario.
|
||
* tests/local.mk (all_tests): Add new test.
|
||
|
||
2019-07-22 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
doc: improve new version sort chapter
|
||
* doc/sort-version.texi: Fix some typos, avoid overly long lines in
|
||
the generated PDF, enclose some sample strings in @samp{...} for better
|
||
readability, etc. This also avoids an sc-avoid-builtin error:
|
||
s/builtin/built-in/
|
||
|
||
2019-07-15 Assaf Gordon <assafgordon@gmail.com>
|
||
|
||
doc: add "version sort ordering" chapter
|
||
* doc/sort-version.texi: New file.
|
||
* doc/local.mk (doc_coreutils_TEXINFOS): Add new file.
|
||
* doc/coreutils.texi: @include new file, replace previous "Details about
|
||
version sort" section.
|
||
|
||
2019-07-12 Andreas Dilger <adilger@whamcloud.com>
|
||
|
||
stat: don't explicitly request file size for filenames
|
||
When calling 'stat -c %N' to print the filename, don't explicitly
|
||
request the size of the file via statx(), as it may add overhead on
|
||
some filesystems. The size is only needed to optimize an allocation
|
||
for the relatively rare case of reading a symlink name, and the worst
|
||
effect is a somewhat-too-large temporary buffer may be allocated for
|
||
areadlink_with_size(), or internal retries if buffer is too small.
|
||
|
||
The file size will be returned by statx() on most filesystems, even
|
||
if not requested, unless the filesystem considers this to be too
|
||
expensive for that file, in which case the tradeoff is worthwhile.
|
||
|
||
* src/stat.c: Don't explicitly request STATX_SIZE for filenames.
|
||
|
||
2019-06-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
od: use fseek on non-regular files
|
||
Problem reported by Szőts Ákos (Bug#36291).
|
||
* NEWS: Mention this.
|
||
* src/od.c (skip): Try fseek even on files that do not have usable
|
||
sizes, falling back on fread if fseek fails.
|
||
|
||
2019-06-18 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: mention ls -l user/group justification
|
||
* doc/coreutils.texi (What information is listed):
|
||
Document justification of user and group columns in ls -l output
|
||
(Bug#36220).
|
||
|
||
2019-06-14 Jeff Layton <jlayton@kernel.org>
|
||
|
||
stat: fix enabling of statx logic
|
||
* src/stat.c: STATX_INO isn't defined until stat.h is included.
|
||
Move the test down so it works properly.
|
||
|
||
2019-06-13 Assaf Gordon <assafgordon@gmail.com>
|
||
|
||
tests: avoid false-positive in date-debug test
|
||
When debugging an invalid date due to DST switching, the intermediate
|
||
'normalized time' should not be checked - its value can differ between
|
||
systems (e.g. glibc vs musl).
|
||
|
||
Reported by Niklas Hambüchen in
|
||
https://lists.gnu.org/r/coreutils/2019-05/msg00031.html
|
||
Analyzed by Rich Felker in
|
||
https://lists.gnu.org/r/coreutils/2019-05/msg00039.html
|
||
|
||
* tests/misc/date-debug.sh: Replace the exact normalized time
|
||
with 'XX:XX:XX' so different values would not trigger test failure.
|
||
|
||
2019-06-10 Jeff Layton <jlayton@kernel.org>
|
||
|
||
stat: Use statx where available and support --cached
|
||
* src/stat.c: Drop statbuf argument from out_epoch_sec().
|
||
Use statx() rather than [lf]stat() where available,
|
||
so a separate call is not required to get birth time.
|
||
Set STATX_* mask bits only for things we want to print,
|
||
which can be more efficient on some file systems.
|
||
Add a new --cache= command-line option that sets the appropriate hint
|
||
flags in the statx call. These are primarily used with network
|
||
file systems to indicate what level of cache coherency is desired.
|
||
The new option is available unconditionally for better portability,
|
||
and ignored where not implemented.
|
||
* doc/coreutils.texi: Add documention for --cached.
|
||
* man/stat.x (SEE ALSO): Mention statx().
|
||
* NEWS: Mention the new feature.
|
||
|
||
2019-06-09 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: fix description of tail -f on truncated files
|
||
* doc/coreutils.texi (tail invocation): Update to match
|
||
the new behavior following commit v8.23-189-gb28ff6a
|
||
|
||
2019-06-08 Pádraig Brady <P@draigBrady.com>
|
||
|
||
split: fix failure for certain number of specified files
|
||
* src/split.c (set_suffix_length): Use a more standard
|
||
zero based logN calculation for the number of units.
|
||
* tests/split/suffix-auto-length.sh: Add a test case.
|
||
* THANKS.in: Mention the reporter.
|
||
* NEWS: Mention the fix.
|
||
Fixes https://bugs.gnu.org/35291
|
||
|
||
2019-05-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: be more careful about signal handling
|
||
Problem reported by Hans Henrik Bergan (Bug#36007).
|
||
* NEWS: Mention this.
|
||
* src/dd.c (iclose, ifdatasync, ifstat, ifsync):
|
||
New functions, which are more careful about SIGINT.
|
||
(cleanup): Use iclose instead of close.
|
||
(finish_up): Process signals first.
|
||
(skip, dd_copy, main): Use ifstat instead of fstat.
|
||
(dd_copy): Use ifdatasync and ifsync instead of fdatasync and fsync.
|
||
|
||
maint: fix version number in NEWS
|
||
|
||
2019-05-28 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
cp: fix /dev/stdin problem on Solaris
|
||
Problem reported by Jakub Kulik (Bug#35713).
|
||
* NEWS: Mention this.
|
||
* configure.ac (DEV_FD_MIGHT_BE_CHR): New macro.
|
||
* src/copy.c (DEV_FD_MIGHT_BE_CHR): Default to false.
|
||
(follow_fstatat): New function.
|
||
(copy_internal): Use it.
|
||
* src/copy.h (XSTAT): Remove; no longer used.
|
||
|
||
2019-05-26 Kevin Locke <kevin@kevinlocke.name>
|
||
|
||
doc: clarify dd sparse detection is by *output* block
|
||
The wording of the dd --help text suggests that output will be skipped
|
||
for sparse *input* blocks (i.e. that NUL-checking is done on input
|
||
blocks) while the code actually checks/skips all-NUL *output* blocks.[1]
|
||
|
||
* src/dd.c (usage): Update the --help text to clarify the above.
|
||
* tests/dd/sparse.sh: Ensure sparseness is controlled with obs.
|
||
|
||
[1]: https://superuser.com/a/1136358
|
||
|
||
2019-05-22 Martin Castillo <castilma@uni-bremen.de>
|
||
|
||
doc: fix typo in sort set operations example
|
||
* doc/coreutils.texi (sort invocation): Add a missing -u
|
||
option to uniq.
|
||
Addresses https://bugs.gnu.org/35849
|
||
|
||
2019-05-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
b2sum: port blake2b-ref.c to HP-UX aCC
|
||
Continue the fix for Bug#35650.
|
||
* src/blake2/blake2b-ref.c [HAVE_CONFIG_H]: Include <config.h>.
|
||
|
||
2019-05-15 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
b2sum: sync better with upstream
|
||
* src/blake2/b2sum.c: Reorder source code to minimize diffs from:
|
||
https://github.com/BLAKE2/BLAKE2/blob/master/b2sum/b2sum.c
|
||
|
||
b2sum: port to HP-UX aCC
|
||
Its support for the -include option is flaky. Problem reported by
|
||
Michael Osipov (Bug#35650). Plus, we could run into other
|
||
compilers that don’t support any option like -include. Change the
|
||
code so that -include is not needed. Although this causes us to
|
||
depart from the upstream version, we’re already doing that for
|
||
other reasons.
|
||
* configure.ac (USE_XLC_INCLUDE): Remove, as there’s no
|
||
guarantee a compiler will support something like -include.
|
||
* src/blake2/b2sum.c [HAVE_CONFIG_H]: Include <config.h>.
|
||
* src/local.mk (src_b2sum_CPPFLAGS): Add -DHAVE_CONFIG_H.
|
||
Do not use -include or a substitute.
|
||
|
||
2019-05-14 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
stdbuf: port configure-time checking to HP-UX aCC
|
||
Problem reported by Michael Osipov (Bug#35650).
|
||
* configure.ac: Use AC_LANG_WERROR to pay attention to compiler
|
||
and linker warnings when testing whether stdbuf will work.
|
||
|
||
2019-05-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
b2sum: port to HP-UX C
|
||
* src/blake2/blake2.h (BLAKE2_PACKED):
|
||
Don’t assume __attribute__ ((packed)) works on non-Microsoft
|
||
compilers. Instead, assume it works only if we have good
|
||
reason to assume so, and fall back on Microsoft (or not packing)
|
||
otherwise. In practice, not packing is good enough and the
|
||
BLAKE2_PACKED macro is mostly just for documentation.
|
||
|
||
cp: port fiemap.h to C99
|
||
* src/extent-scan.c (extent_scan_read): Adjust to change in
|
||
struct fiemap.
|
||
* src/fiemap.h (struct fiemap): Use FLEXIBLE_ARRAY_MEMBER
|
||
to port to C99.
|
||
|
||
basenc: port to C99
|
||
* src/basenc.c: Various minor style cleanups.
|
||
(struct base_decode_context): Do not use anonymous unions, as
|
||
they’re not in C99. Use a named union instead. All uses changed.
|
||
|
||
maint: adjust to recent verify_true removal
|
||
* src/system.h (X2NREALLOC, X2REALLOC, DECIMAL_DIGIT_ACCUMULATE):
|
||
Use verify_expr instead of verify_true, which has been removed.
|
||
(DECIMAL_DIGIT_ACCUMULATE): Remove unnecessary size check.
|
||
|
||
build: update gnulib submodule to latest
|
||
|
||
2019-04-19 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
gnulib: update to the latest
|
||
* gnulib: Update to latest, mainly for:
|
||
> mountlist: make parsing /proc/self/mountinfo more robust
|
||
* NEWS: Mention the fix.
|
||
|
||
Fixes https://bugs.gnu.org/33468
|
||
|
||
2019-03-31 Shugo Maeda <shugo@ruby-lang.org>
|
||
|
||
factor: output immediately if stdout is a tty but stdin is not
|
||
* src/factor.c (lbuf_putc): Use line buffered mode if the standard
|
||
output is a terminal in the same way as the stdio library.
|
||
User programs might use pty only for the standard out
|
||
like the example of Ruby's PTY module:
|
||
https://docs.ruby-lang.org/en/2.6.0/PTY.html#module-PTY-label-Example
|
||
* NEWS: Mention the fix.
|
||
Fixes https://bugs.gnu.orv/35046
|
||
|
||
2019-03-30 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: fix syntax check failure
|
||
* src/ln.c: Remove leading TAB.
|
||
|
||
2019-03-30 Martin Castillo <castilma@uni-bremen.de>
|
||
|
||
maint: tee: use STDIN_FILENO rather than 0
|
||
* src/tee.c (tee_files): Use the name rather than the value.
|
||
Addresses https://bugs.gnu.org/35041
|
||
|
||
2019-03-20 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
dd: improve doc of stderr output
|
||
* doc/coreutils.texi (dd invocation):
|
||
Document stderr output more carefully.
|
||
Say that conv=block can lose input data.
|
||
|
||
2019-03-18 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
md5sum,b2sum,sha*sum: --help: add note about binary/text mode
|
||
* src/md5sum.c (usage): Make it clear that there is no difference
|
||
between binary mode and text mode on GNU systems.
|
||
|
||
Bug: https://bugzilla.redhat.com/406981
|
||
Bug: https://bugzilla.redhat.com/1688740
|
||
|
||
2019-03-17 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
doc: add NEWS item for Solaris symlink fix
|
||
|
||
ln: port to symlink ("x", ".") failing with EINVAL
|
||
Problem reported by John Marino (Bug#34894).
|
||
* src/ln.c (main): Port ln -s to Solaris symlink function,
|
||
where symlink ("x", ".") fails with errno == EINVAL.
|
||
|
||
2019-03-16 Pádraig Brady <P@draigBrady.com>
|
||
|
||
doc: add a NEWS entry for the ln O_DIRECTORY fix
|
||
* NEWS: Mention the bugfix.
|
||
|
||
2019-03-16 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
ln: port to platforms lacking O_DIRECTORY
|
||
* src/ln.c (main): Port to older platforms lacking
|
||
support for POSIX.1-2008’s O_DIRECTORY flag (Bug#34876).
|
||
|
||
2019-03-15 Kamil Dudka <kdudka@redhat.com>
|
||
|
||
doc: improve wording of the --kibibytes option description
|
||
Bug: https://bugzilla.redhat.com/1527391 , https://bugs.gnu.org/33646
|
||
|
||
* doc/coreutils.texi (General output formatting): Improve wording of
|
||
'--kibibytes' option.
|
||
|
||
2019-03-11 Bernhard Voelker <mail@bernhard-voelker.de>
|
||
|
||
maint: sync extra files from gnulib
|
||
Some files are physically copied from gnulib, and should get sync'ed
|
||
after each update to latest gnulib. This was forgotten during recent
|
||
updates.
|
||
|
||
* COPYING: Merge from gnulib/doc/COPYINGv3.
|
||
* tests/init.sh: Merge from gnulib/tests/init.sh.
|
||
|
||
2019-03-11 Pádraig Brady <P@draigBrady.com>
|
||
|
||
maint: post-release administrivia
|
||
* NEWS: Add header line for next release.
|
||
* .prev-version: Record previous version.
|
||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||
|
||
2019-03-10 Pádraig Brady <P@draigBrady.com>
|
||
|
||
version 8.31
|
||
* NEWS: Record release date.
|
||
|
||
|
||
See the source repo for older entries
|