]> git.ipfire.org Git - thirdparty/coreutils.git/log
thirdparty/coreutils.git
16 months agoenv: add -a,--argv0 to set the first argument passed to exec
Pádraig Brady [Thu, 2 Mar 2023 14:56:18 +0000 (11:56 -0300)] 
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.

16 months agodoc: pr: give solution to expanding TABs in multicolumn output
Pádraig Brady [Thu, 21 Mar 2024 15:26:48 +0000 (15:26 +0000)] 
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

16 months agodoc: clarify mv --exchange
Paul Eggert [Wed, 20 Mar 2024 22:01:07 +0000 (15:01 -0700)] 
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

16 months agomv: new option --exchange
Paul Eggert [Wed, 20 Mar 2024 21:00:25 +0000 (14:00 -0700)] 
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.

16 months agochmod: fix TOCTOU security issue with symlink replacement
Pádraig Brady [Tue, 19 Mar 2024 23:34:31 +0000 (23:34 +0000)] 
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

16 months agochmod: add support for -h, -H,-L,-P, --dereference options
Pádraig Brady [Mon, 28 Nov 2016 08:13:39 +0000 (09:13 +0100)] 
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.

16 months agomaint: basenc: consistently check buffer bounds when encoding
Pádraig Brady [Tue, 19 Mar 2024 15:55:18 +0000 (15:55 +0000)] 
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.

16 months agopinky: disable location canonicalization by default
Pádraig Brady [Tue, 19 Mar 2024 13:19:16 +0000 (13:19 +0000)] 
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

16 months agodoc: fix stale --dereference info for chown/chgrp
Pádraig Brady [Sun, 17 Mar 2024 12:18:25 +0000 (12:18 +0000)] 
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.

16 months agobuild: update gnulib submodule to latest
Paul Eggert [Sun, 17 Mar 2024 05:39:12 +0000 (22:39 -0700)] 
build: update gnulib submodule to latest

16 months agobuild: provide a cross-compiling default for 16 bit float checks
Pádraig Brady [Fri, 15 Mar 2024 11:38:28 +0000 (11:38 +0000)] 
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.

16 months agoenv,kill,timeout: support unnamed signals
Grisha Levit [Thu, 25 Jan 2024 19:52:50 +0000 (14:52 -0500)] 
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.

16 months agobuild: add caching for involved configure checks
Pádraig Brady [Wed, 13 Mar 2024 12:31:32 +0000 (12:31 +0000)] 
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.

16 months agobuild: strengthen 16 bit float support checks
Grisha Levit [Wed, 13 Mar 2024 02:24:34 +0000 (22:24 -0400)] 
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.

16 months agomaint: prefer minmax.h instead of defining our own
Collin Funk [Tue, 12 Mar 2024 17:48:38 +0000 (10:48 -0700)] 
maint: prefer minmax.h instead of defining our own

* src/comm.c (min): Remove.
(compare_files): Use MIN which is referenced by system.h.

16 months agodircolors: add more archive extensions
Ville Skyttä [Mon, 11 Mar 2024 07:43:11 +0000 (09:43 +0200)] 
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).

16 months agodoc: add basic documentation for 'pinky'
Collin Funk [Tue, 12 Mar 2024 13:30:52 +0000 (06:30 -0700)] 
doc: add basic documentation for 'pinky'

* doc/coreutils.texi: Add 'pinky' under 'who'.

16 months agotimeout: fix narrow race in failing to kill processes
Pádraig Brady [Mon, 11 Mar 2024 13:46:24 +0000 (13:46 +0000)] 
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

16 months agotimeout: fix race where we might kill arbitrary processes
Pádraig Brady [Mon, 11 Mar 2024 13:18:37 +0000 (13:18 +0000)] 
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.

17 months agocksum: ensure appropriate "binary" mode with --untagged
Pádraig Brady [Wed, 6 Mar 2024 21:54:02 +0000 (21:54 +0000)] 
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.

17 months agomv: revert add --swap (-x) option
Pádraig Brady [Tue, 5 Mar 2024 21:31:34 +0000 (21:31 +0000)] 
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

17 months agocksum: consistently validate --length attributes
Pádraig Brady [Mon, 4 Mar 2024 16:33:23 +0000 (16:33 +0000)] 
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

17 months agodoc: fix spellings in NEWS
Pádraig Brady [Fri, 8 Dec 2023 14:19:06 +0000 (14:19 +0000)] 
doc: fix spellings in NEWS

* NEWS: s/user/uses/; s/exisiting/existing/

17 months agomv: add --swap (-x) option to atomically swap 2 paths
Petr Malat [Thu, 29 Feb 2024 22:02:03 +0000 (23:02 +0100)] 
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.

17 months agocat,cp,mv,dd,install,split: set the default IO size to 256KiB
Pádraig Brady [Wed, 28 Feb 2024 16:41:40 +0000 (16:41 +0000)] 
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.

17 months agomktemp: fix template diagnostic with --suffix
lvgenggeng [Tue, 27 Feb 2024 01:41:27 +0000 (09:41 +0800)] 
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.

17 months agotests: move join tests to their own directory
Pádraig Brady [Tue, 27 Feb 2024 14:12:27 +0000 (14:12 +0000)] 
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.

17 months agotests: simplify treatment of the $LOCALE_FR_UTF8 variable
Pádraig Brady [Tue, 27 Feb 2024 14:05:49 +0000 (14:05 +0000)] 
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.

17 months agojoin: avoid test failure on systems with no French UTF-8 locale
Bruno Haible [Mon, 26 Feb 2024 21:33:18 +0000 (22:33 +0100)] 
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

17 months agosort: make the startup time optimization effective on glibc < 2.34
Bruno Haible [Tue, 27 Feb 2024 11:12:59 +0000 (12:12 +0100)] 
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).

17 months agobuild: improve libcrypto library detection
Pádraig Brady [Mon, 26 Feb 2024 19:10:14 +0000 (19:10 +0000)] 
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

17 months agowc: fix -w with breaking space over UCHAR_MAX
Aearil [Sat, 24 Feb 2024 20:44:24 +0000 (21:44 +0100)] 
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

17 months agocp,mv: add --update=none-fail to fail if existing files
Pádraig Brady [Mon, 5 Feb 2024 15:55:07 +0000 (15:55 +0000)] 
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

17 months agocp,mv: reinstate that -n exits with success if files skipped
Pádraig Brady [Sat, 24 Feb 2024 19:51:56 +0000 (19:51 +0000)] 
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

17 months agobuild: fix libcrypto version linked by sort at runtime
Pádraig Brady [Mon, 26 Feb 2024 16:38:41 +0000 (16:38 +0000)] 
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().

17 months agomaint: avoid sc_tight_scope failure in sort.c
Pádraig Brady [Mon, 26 Feb 2024 14:42:40 +0000 (14:42 +0000)] 
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.

17 months agodoc: mention -lcrypto change in NEWS
Paul Eggert [Mon, 26 Feb 2024 05:24:04 +0000 (21:24 -0800)] 
doc: mention -lcrypto change in NEWS

17 months agosort: dynamically link -lcrypto if -R
Paul Eggert [Mon, 26 Feb 2024 01:13:12 +0000 (17:13 -0800)] 
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.

17 months agodoc: de-“note” the documentation
Paul Eggert [Sat, 24 Feb 2024 22:03:42 +0000 (14:03 -0800)] 
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.

17 months agocp: add --keep-directory-symlink option
Daan De Meyer [Thu, 25 Jan 2024 13:02:32 +0000 (14:02 +0100)] 
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.

17 months agodircolors: update list of archive file extensions
Michel Lind [Fri, 16 Feb 2024 16:24:32 +0000 (10:24 -0600)] 
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).

17 months agomaint: prefer #include <...> for gnulib substitute headers
Collin Funk [Sun, 18 Feb 2024 20:23:07 +0000 (12:23 -0800)] 
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>.

Copyright-paperwork-exempt: Yes

17 months agodoc: add '[' to the info index
Pádraig Brady [Mon, 19 Feb 2024 14:14:21 +0000 (14:14 +0000)] 
doc: add '[' to the info index

* doc/coreutils.texi (test invocation): Add '[' to the index.

17 months agobuild: update gnulib submodule to latest
Paul Eggert [Sun, 18 Feb 2024 05:55:56 +0000 (21:55 -0800)] 
build: update gnulib submodule to latest

17 months agonohup: document GCC bug number
Paul Eggert [Sun, 18 Feb 2024 05:51:46 +0000 (21:51 -0800)] 
nohup: document GCC bug number

* src/nohup.c: Add GCC bug number to comment.

17 months agols: remove unnecessary pragmas
Paul Eggert [Sun, 18 Feb 2024 05:51:03 +0000 (21:51 -0800)] 
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.

17 months agomaint: update GCC version comment
Paul Eggert [Sun, 18 Feb 2024 05:48:15 +0000 (21:48 -0800)] 
maint: update GCC version comment

* src/copy.c: Update comment.

17 months agomaint: document fix for GCC bug 109628
Paul Eggert [Sun, 18 Feb 2024 05:40:20 +0000 (21:40 -0800)] 
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.

17 months agomaint: remove unneeded suggest-attributes pragmas
Paul Eggert [Sun, 18 Feb 2024 05:36:37 +0000 (21:36 -0800)] 
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.

17 months agodoc: fix typo in shred example
Greg Wooledge [Sat, 17 Feb 2024 13:07:12 +0000 (13:07 +0000)] 
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

17 months agomaint: avoid -Wshadow warning under clang
Collin Funk [Wed, 7 Feb 2024 11:58:02 +0000 (03:58 -0800)] 
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.

Copyright-paperwork-exempt: Yes

17 months agobuild: fix od build on clang < 17
Pádraig Brady [Wed, 7 Feb 2024 10:55:00 +0000 (10:55 +0000)] 
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.

18 months agood: support half precision floating point
Pádraig Brady [Thu, 1 Feb 2024 17:59:51 +0000 (17:59 +0000)] 
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

18 months agoseq: say why not ‘x += step’
Paul Eggert [Mon, 29 Jan 2024 07:35:49 +0000 (23:35 -0800)] 
seq: say why not ‘x += step’

* src/seq.c (print_numbers): Add comment.

18 months agodoc: split -C: test and document a heap overflow
Pádraig Brady [Thu, 18 Jan 2024 00:05:18 +0000 (00:05 +0000)] 
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.

18 months agotests: make ulimit -v interact better with ASAN
Pádraig Brady [Wed, 17 Jan 2024 23:49:52 +0000 (23:49 +0000)] 
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.

18 months agosplit: do not shrink hold buffer
Paul Eggert [Tue, 16 Jan 2024 21:48:32 +0000 (13:48 -0800)] 
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.

18 months agotests: ls: add a test to verify that '+' is added
Sylvestre Ledru [Wed, 10 Jan 2024 18:18:05 +0000 (19:18 +0100)] 
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.

19 months agomaint: add attributes to two functions without side effects
Samuel Tardieu [Fri, 5 Jan 2024 15:51:34 +0000 (16:51 +0100)] 
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.

19 months agomaint: update all copyright year number ranges
Pádraig Brady [Mon, 1 Jan 2024 13:22:42 +0000 (13:22 +0000)] 
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.

19 months agomaint: pacify recent clang better
Paul Eggert [Mon, 1 Jan 2024 03:48:24 +0000 (19:48 -0800)] 
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.

19 months agomaint: pacify clang -Winclude-next-absolute-path
Paul Eggert [Mon, 1 Jan 2024 03:48:24 +0000 (19:48 -0800)] 
maint: pacify clang -Winclude-next-absolute-path

* gl/lib/xdectoint.c: Use #include <...> instead of #include "...".

19 months agobuild: update gnulib submodule to latest
Paul Eggert [Mon, 1 Jan 2024 03:48:24 +0000 (19:48 -0800)] 
build: update gnulib submodule to latest

19 months agols: omit bad_cast
Paul Eggert [Fri, 29 Dec 2023 00:32:28 +0000 (16:32 -0800)] 
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.

19 months agosplit: omit bad_cast
Paul Eggert [Fri, 29 Dec 2023 00:32:28 +0000 (16:32 -0800)] 
split: omit bad_cast

* src/split.c (infile): Now char const *, not char *.
(main): Omit unnecessary bad_cast calls.

19 months agosort: fix thousands grouping handling on single byte locales
Pádraig Brady [Thu, 28 Dec 2023 00:02:42 +0000 (00:02 +0000)] 
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.

19 months agotests: numfmt: fix test related to lower case 'k' SI unit
Pádraig Brady [Wed, 27 Dec 2023 23:37:17 +0000 (23:37 +0000)] 
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.

19 months agotests: run locale tests on more systems
Pádraig Brady [Wed, 27 Dec 2023 22:47:48 +0000 (22:47 +0000)] 
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.

19 months agomaint: distribute new header from previous commit
Pádraig Brady [Fri, 29 Dec 2023 17:51:19 +0000 (17:51 +0000)] 
maint: distribute new header from previous commit

* src/local.mk: Reference the new header, so it's distributed.

19 months agomaint: merge chgrp and chown sources
Pádraig Brady [Wed, 27 Dec 2023 13:28:02 +0000 (13:28 +0000)] 
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.

19 months agocopy,install: avoid unnecessary security context translations
Christian Göttsche [Tue, 19 Dec 2023 14:55:28 +0000 (15:55 +0100)] 
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.

19 months agobuild: update gnulib to latest
Pádraig Brady [Tue, 19 Dec 2023 17:18:46 +0000 (17:18 +0000)] 
build: update gnulib to latest

* gnulib: Primarily to get raw selinux wrappers

19 months agomaint: avoid false positive warning with newer gcc
Pádraig Brady [Sun, 17 Dec 2023 17:13:31 +0000 (17:13 +0000)] 
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.

19 months agodoc: cp --no-clobber: improve documentation
Pádraig Brady [Sun, 17 Dec 2023 14:35:36 +0000 (14:35 +0000)] 
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.

19 months agochgrp: add --from parameter similar to chown
Pádraig Brady [Wed, 27 Sep 2023 19:32:06 +0000 (20:32 +0100)] 
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.

19 months agomaint: remove obsolete AC_PROG_GCC_TRADITIONAL
Pádraig Brady [Mon, 11 Dec 2023 17:03:33 +0000 (17:03 +0000)] 
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

19 months agodoc: ls: fix regression in -f description
Pádraig Brady [Mon, 11 Dec 2023 14:20:47 +0000 (14:20 +0000)] 
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

19 months agomaint: add list/obstack.h to .gitignore
Pádraig Brady [Mon, 11 Dec 2023 14:33:14 +0000 (14:33 +0000)] 
maint: add list/obstack.h to .gitignore

Following recent gnulib update

19 months agobuild: update gnulib submodule to latest
Pádraig Brady [Sun, 10 Dec 2023 19:04:59 +0000 (19:04 +0000)] 
build: update gnulib submodule to latest

* bootstrap: Copy from latest Gnulib,
to fix --bootstrap-sync with other options.

20 months agodoc: touch: clarify --time description in man page
Pádraig Brady [Wed, 6 Dec 2023 13:03:48 +0000 (13:03 +0000)] 
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

20 months agotail: fix tailing sysfs files where PAGE_SIZE > BUFSIZ
dann frazier [Thu, 30 Nov 2023 01:32:34 +0000 (18:32 -0700)] 
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

20 months agonumfmt: support lowercase 'k' for Kilo and Kibi
Pádraig Brady [Sun, 26 Nov 2023 16:41:56 +0000 (16:41 +0000)] 
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

20 months agouniq: fix bug with -w in multibyte locales
Paul Eggert [Thu, 16 Nov 2023 19:34:55 +0000 (11:34 -0800)] 
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.

20 months agotests: omit inapplicable test code
Paul Eggert [Thu, 16 Nov 2023 18:12:55 +0000 (10:12 -0800)] 
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.

20 months agouniq: change macro to function
Paul Eggert [Wed, 15 Nov 2023 23:08:34 +0000 (15:08 -0800)] 
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.

20 months agouniq: prefer static init
Paul Eggert [Wed, 15 Nov 2023 23:05:17 +0000 (15:05 -0800)] 
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.

20 months agouniq: simplify and fix unlikely bug by using bool
Paul Eggert [Wed, 15 Nov 2023 22:57:17 +0000 (14:57 -0800)] 
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.

20 months agouniq: prefer signed integers
Paul Eggert [Wed, 15 Nov 2023 07:13:26 +0000 (23:13 -0800)] 
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.

20 months agomaint: DECIMAL_DIGIT_ACCUMULATE uses stdckdint.h
Paul Eggert [Wed, 15 Nov 2023 04:35:56 +0000 (20:35 -0800)] 
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.

20 months agopinky: fix string size calculation
Paul Eggert [Sat, 11 Nov 2023 08:17:11 +0000 (00:17 -0800)] 
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.

20 months agomaint: port randread to FreeBSD 14
Paul Eggert [Sat, 11 Nov 2023 08:14:48 +0000 (00:14 -0800)] 
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.

20 months agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 11 Nov 2023 03:08:54 +0000 (19:08 -0800)] 
build: update gnulib submodule to latest

21 months agols: fix recent regression in size alignment
Pádraig Brady [Fri, 3 Nov 2023 16:22:22 +0000 (16:22 +0000)] 
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

21 months agojoin: fix recently introduced NUL bug
Paul Eggert [Mon, 30 Oct 2023 17:47:34 +0000 (10:47 -0700)] 
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.

21 months agomaint: pacify ‘make syntax-check’
Paul Eggert [Mon, 30 Oct 2023 08:32:37 +0000 (01:32 -0700)] 
maint: pacify ‘make syntax-check’

* tests/misc/join-utf8.sh: Omit fail=0.
Fix framework_failure_ typo.
* tests/misc/join.pl: Change ` to '.

21 months agomaint: copy join, uniq tests from Fedora
Paul Eggert [Mon, 30 Oct 2023 08:24:28 +0000 (01:24 -0700)] 
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.

21 months agojoin,uniq: support multi-byte separators
Paul Eggert [Mon, 30 Oct 2023 07:32:51 +0000 (00:32 -0700)] 
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

21 months agotest: allow non-blank white space in numbers
Paul Eggert [Sat, 28 Oct 2023 23:15:49 +0000 (16:15 -0700)] 
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.

21 months agostdbuf: port to oddball toupper
Paul Eggert [Sat, 28 Oct 2023 16:30:49 +0000 (09:30 -0700)] 
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.

21 months agodircolors: assume C-locale spaces
Paul Eggert [Sat, 28 Oct 2023 16:22:09 +0000 (09:22 -0700)] 
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.