platform/upstream/coreutils.git
11 years agobuild: fix syntax-check rules broken by test-added .sh/pl suffixes
Bernhard Voelker [Fri, 31 Aug 2012 08:07:54 +0000 (10:07 +0200)]
build: fix syntax-check rules broken by test-added .sh/pl suffixes

* cfg.mk: We exempt a few test files that would otherwise trigger
false-positive matches in syntax-check rules.  The recent change
that added a .sh or .pl suffix to each test script made it so
some of the exclusion regexps would no longer match.
Include the required \.sh suffix in each such regexp, too.

11 years agotests: get rid of the 'shell-or-perl' auxiliary script
Stefano Lattarini [Thu, 30 Aug 2012 12:13:13 +0000 (14:13 +0200)]
tests: get rid of the 'shell-or-perl' auxiliary script

It's now easier and faster to simply run the perl ans shell test
scripts directly with the appropriate interpreter and options.

* tests/shell-or-perl: Delete.
* tests/Makefile.am (EXTRA_DIST): Remove it.
(SH_LOG_COMPILER): Re-define to invoke the correct shell.
(PL_LOG_COMPILER): Re-define to invoke the correct perl
interpreter ...
(TESTSUITE_PERL_OPTIONS): ... with the correct options.
(XPL_LOG_COMPILER): Use those options instead of inlining
their expansion.
(LOG_COMPILER): Delete, no longer needed.

11 years agotests: add .sh and .pl suffixes to shell and perl tests, respectively
Stefano Lattarini [Thu, 30 Aug 2012 12:13:12 +0000 (14:13 +0200)]
tests: add .sh and .pl suffixes to shell and perl tests, respectively

Not only this shrinks the size of the generated Makefile (from > 6300
lines to ~3000), but will allow further simplifications in future
changes.

* tests/Makefile.am (TEST_EXTENSIONS): Add '.sh' and '.pl'.
(PL_LOG_COMPILER, SH_LOG_COMPILER): New, still defined simply to
$(LOG_COMPILER) for the time being.
(TESTS, root_tests): Adjust as described.
* All tests: Rename as described.

11 years agotests: detect missing perl at configure runtime
Stefano Lattarini [Thu, 30 Aug 2012 12:13:11 +0000 (14:13 +0200)]
tests: detect missing perl at configure runtime

* configure.ac (AM_CONDITIONAL): Set the conditional 'HAVE_PERL' to
true if the configure-time checks (as run by gl_PERL) have been able
to find a working perl.
* tests/no-perl: New script, report a diagnostic about "missing perl"
and exit with status 77.
* tests/Makefile.am (EXTRA_DIST): Distribute it.
(TESTSUITE_PERL): New, define to '$(PERL)' if a perl interpreter has
been found at configure time (i.e., if the 'HAVE_PERL' automake
conditional is true), and to '$(srcdir)/no-perl' otherwise.
(LOG_COMPILER): Use $(TESTSUITE_PERL) instead of $(PERL).
(XPL_LOG_COMPILER): Likewise.
* tests/shell-or-perl: Simplify: no need to actually check whether
perl is working.

11 years agotests: avoid use of '-T' in shebang line to enable perl taint mode
Stefano Lattarini [Thu, 30 Aug 2012 12:13:10 +0000 (14:13 +0200)]
tests: avoid use of '-T' in shebang line to enable perl taint mode

* tests/rm/fail-eperm: Rename ...
* tests/rm/fail-eperm.xpl: ... like this
* tests/Makefile.am (TESTS): Adjust.
(TEST_EXTENSIONS): New, list '.xpl'.
(XPL_TEST_LOGS): New, run a perl test in tainted mode.
* tests/shell-or-perl: Simplify this script: we no longer need to
parse the shebang line and adjust the flags in the perl invocation
accordingly.

11 years agobuild: require Automake >= 1.11.2
Stefano Lattarini [Thu, 30 Aug 2012 14:58:14 +0000 (16:58 +0200)]
build: require Automake >= 1.11.2

Now that we use AM_TESTS_ENVIRONMENT, we must require
Automake >= 1.11.2.
* configure.ac (AM_INIT_AUTOMAKE): Bump version requirement to 1.11.2.
* bootstrap.conf ($buildreq): Likewise.

11 years agotests: prefer AM_TESTS_ENVIRONMENT over TESTS_ENVIRONMENT
Stefano Lattarini [Thu, 30 Aug 2012 12:13:08 +0000 (14:13 +0200)]
tests: prefer AM_TESTS_ENVIRONMENT over TESTS_ENVIRONMENT

The latter should be reserved for user overrides.

* tests/Makefile.am (TESTS_ENVIRONMENT): Rename ...
(AM_TESTS_ENVIRONMENT): ... like this.

11 years agotests: merge tests/check.mk into tests/Makefile.am
Stefano Lattarini [Thu, 30 Aug 2012 12:13:07 +0000 (14:13 +0200)]
tests: merge tests/check.mk into tests/Makefile.am

The separation has become unnecessary after all the ancient
'tests/*/Makefile.am' makefiles have been merged into the
"more-top-level" one 'tests/Makefile.am'.

* tests/check.mk: Merge ...
* tests/Makefile.am: ... in here.  Some comments tweaking while
at it.

11 years agobuild: enable the 'subdir-objects' Automake option globally
Stefano Lattarini [Thu, 30 Aug 2012 13:27:47 +0000 (15:27 +0200)]
build: enable the 'subdir-objects' Automake option globally

This is not strictly required now (it will be once we make more
parts of the coreutils build system non-recursive), but enabling
it early helps to ensure that we don't unwittingly introduce any
incompatibility or subtle breakage later.

* configure.ac (AM_INIT_AUTOMAKE): Add  'subdir-objects'.

11 years agomaint: update gitignore entries
Stefano Lattarini [Wed, 29 Aug 2012 16:01:02 +0000 (18:01 +0200)]
maint: update gitignore entries

* doc/.gitinore: Here, adding the '.dirstamp' file generated by
the Texinfo rules.

11 years agobuild: factor out a little more re list of *.texi files
Jim Meyering [Wed, 29 Aug 2012 15:59:48 +0000 (17:59 +0200)]
build: factor out a little more re list of *.texi files

We may well want to switch from checking all *.texi to
checking only version-controlled .texi files, so encapsulate
this concept in one place.

* doc/local.mk (doc_srcdir): Delete.  Use this instead:
(texi_files): Define.  All usages adjusted.

11 years agomaint: adjust syntax check 'sc_option_desc_uppercase'
Stefano Lattarini [Wed, 29 Aug 2012 15:57:45 +0000 (17:57 +0200)]
maint: adjust syntax check 'sc_option_desc_uppercase'

* cfg.mk (sc_option_desc_uppercase): Here, by grafting the 'man/'
prefix to the manpages obtained from $(NO_INSTALL_PROGS_DEFAULT)
and listed as prerequisites for this rule.

11 years agomaint: adjust syntax check 'check-x-vs-1'
Stefano Lattarini [Wed, 29 Aug 2012 15:50:34 +0000 (17:50 +0200)]
maint: adjust syntax check 'check-x-vs-1'

* cfg.mk (check-x-vs-1): Here, by stripping 'man/' prefix from
$(dist_man1_MANS) entries before comparing them with the list of
expected programs.

11 years agomaint: move man-related syntax checks in cfg.mk
Stefano Lattarini [Wed, 29 Aug 2012 15:37:35 +0000 (17:37 +0200)]
maint: move man-related syntax checks in cfg.mk

This is more natural, now that the top-level Makefile has access to
all the variables and rules once defined only in 'man/Makefile.am'

* man/local.mk (all_programs, sc_option_desc_uppercase,
sc_man_file_correlation check-x-vs-1, check-programs-vs-x): Move
from here ...
* cfg.mk: ... to here.  Adjust some comments in the process.

11 years agobuild: don't use recursive make to build the 'man' subdirectory
Stefano Lattarini [Wed, 29 Aug 2012 14:37:24 +0000 (16:37 +0200)]
build: don't use recursive make to build the 'man' subdirectory

* Makefile.am: Include 'man/local.mk'.
(SUBDIRS): Remove 'man'.
* configure.ac ($MAN): Adjust so that each of its entries has a leading
'man/' component.
(AC_CONFIG_FILES): Remove 'man/Makefile'.
* man/Makefile.am: Rename ...
* man/local.mk: ... like this.  With further adjustments: each 'foo.1'
target renamed like 'man/foo.1', each '../src/foo.c' dependency as
'src/foo.c', and each '$(srcdir)' usage as '$(srcdir)/man'.  Also ...
(mandep): Adjust, removing the leading '../' component.
Several whitespace adjustments while at it.
(ASSORT): Remove, it's already defined in the top-level Makefile.am.
* cfg.mk (sc_option_desc_uppercase, sc_man_file_correlation): Remove
the associated recipes, they are now directly available from the
included 'man/local.mk'.  Actually, the other changes in this commit
have made these recipes instable and not completely correct, but that
will be fixed in later changes.

11 years agobuild: rework some recipes in man/Makefile.am, for future changes
Stefano Lattarini [Wed, 29 Aug 2012 19:31:57 +0000 (21:31 +0200)]
build: rework some recipes in man/Makefile.am, for future changes

This change is merely required to make future changes easier.

In particular, since we are going to merge the contents of
'man/Makefile.am' into the top-level Makefile, we need to avoid
conflicts with the rules and variables in 'dist-check.mk', and
to prepare for changes in the value of the '$*' variable as used
in the recipe of the '.x -> .1' suffix rule.

* man/Makefile.am (t, mapped_name): Delete, inlining their use ...
(.1.x): ... in the recipe of this suffix rule.  Other adjustments
to prepare to changes in the value of the '$*' automatic variable.
While at it, made more resilient about unlikely but possible failure.
Adjust and reorder few comments.

11 years agobuild: provide convenience target 'all_programs' also at top-level
Stefano Lattarini [Wed, 29 Aug 2012 14:57:41 +0000 (16:57 +0200)]
build: provide convenience target 'all_programs' also at top-level

This will be mostly useful in future changes.

* Makefile.am (all_programs): New, simply work by delegating to
the same-named target in the 'src/' subdirectory.
* cfg.mk (sc_option_desc_uppercase): Take advantage of it.
(sc_man_file_correlation): Likewise.

11 years agobuild: make a rule less dependent on exact source tree layout
Stefano Lattarini [Wed, 29 Aug 2012 14:22:38 +0000 (16:22 +0200)]
build: make a rule less dependent on exact source tree layout

This is mostly a preparatory change in view of future ones.

* man/Makefile.am (.x.1): Use '$(abs_top_builddir)/src' to access
the 'src' directory.

11 years agobuild: rely on VPATH capabilities in man/Makefile
Stefano Lattarini [Wed, 29 Aug 2012 14:13:35 +0000 (16:13 +0200)]
build: rely on VPATH capabilities in man/Makefile

* man/Makefile.am: In all the 'foo.1' targets, no need to depend
explicitly on '$(srcdir)/foo.x': the '.x.1' suffix rule takes care
of that automatically.

11 years agomaint: typofix: s/it's/its/
Stefano Lattarini [Wed, 29 Aug 2012 13:57:22 +0000 (15:57 +0200)]
maint: typofix: s/it's/its/

* man/Makefile.am: Here.

11 years agobuild: rename common_dep -> mandep in man/Makefile
Stefano Lattarini [Wed, 29 Aug 2012 13:56:47 +0000 (15:56 +0200)]
build: rename common_dep -> mandep in man/Makefile

This is mostly a preparatory refactoring in view of future changes.

* man/Makefile.am (common_dep): Rename ...
(mandep): ... like this.
All usages adjusted.

11 years agobuild: fix a stray usage of uninitialized $(ME)
Stefano Lattarini [Wed, 29 Aug 2012 13:55:54 +0000 (15:55 +0200)]
build: fix a stray usage of uninitialized $(ME)

* man/Makefile.am (sc_option_desc_uppercase): Here.

11 years agobuild: add an explanatory comment
Stefano Lattarini [Wed, 29 Aug 2012 13:44:05 +0000 (15:44 +0200)]
build: add an explanatory comment

* man/Makefile.am (EXTRA_DIST): Describe portability issues of the
idiom we now use.  Reformat the definition a little while at it.

11 years agomaint: simplify definition of $MAN in configure.ac
Stefano Lattarini [Wed, 29 Aug 2012 13:18:08 +0000 (15:18 +0200)]
maint: simplify definition of $MAN in configure.ac

* configure.ac: Here, by making less use of 'sed' and 'tr' munging,
and relying on a smarter and simpler shell loop instead.

11 years agobuild: don't define $(SUFFIXES) explicitly
Stefano Lattarini [Wed, 29 Aug 2012 13:02:19 +0000 (15:02 +0200)]
build: don't define $(SUFFIXES) explicitly

* man/Makefile.am (SUFFIXES): Remove definition: Automake is smart
enough to extract the list of suffixes from the '.x.1' suffix rule
automatically.

11 years agobuild: don't use recursive make to build the 'doc' subdirectory
Stefano Lattarini [Wed, 29 Aug 2012 12:22:47 +0000 (14:22 +0200)]
build: don't use recursive make to build the 'doc' subdirectory

* doc/Makefile.am: Rename ...
* doc/local.mk: ... like this.  With further adjustments ...
(info_TEXINFOS): Prepend 'doc/' to all '*.texi' files listed in
here.
(coreutils_TEXINFOS): Likewise, and rename ...
(doc_coreutils_TEXINFOS): ... like this.
(constants.texi): Rename ...
(doc/constants.texi): ... like this.  Adjust the recipe to avoid
spurious errors.
(MAINTAINERCLEANFILES): Adjust, and extend with '+=' rather than
setting it with '='.
(ME): Delete.
(find_upper_case_var): Use '$@', not '$(ME)', in error messages.
* Makefile.am: Include 'doc/local.mk'.
(SUBDIRS): Remove 'doc'.
* configure.ac (AC_CONFIG_FILES): Remove 'doc/Makefile'.

11 years agobuild: use 'check-local' to extend the 'check' target
Stefano Lattarini [Wed, 29 Aug 2012 12:15:42 +0000 (14:15 +0200)]
build: use 'check-local' to extend the 'check' target

* doc/Makefile.am (check-local): Here, by making this depend
on 'check-texinfo' ...
(check): ... rather than this.  While the old usage worked, it
did so for an implementation detail rather than a documented
behaviour, so relying on that was riskier a "unclean".

11 years agobuild: prefer '$(top_srcdir)/doc' over '$(srcdir)' in doc Makefile
Stefano Lattarini [Wed, 29 Aug 2012 12:01:12 +0000 (14:01 +0200)]
build: prefer '$(top_srcdir)/doc' over '$(srcdir)' in doc Makefile

This is just a preparatory refactoring that will become useful in
a future change (in which the doc/Makefile.am makefile will be merged
with the top-level one).

* doc/Makefile.am (doc_srcdir): New, define to '$(top_srcdir)/doc'.
Use it throughout instead of "bare" '$(srcdir)'.

11 years agobuild: add extra *.texi files to coreutils_TEXINFOS, not EXTRA_DIST
Stefano Lattarini [Wed, 29 Aug 2012 11:55:49 +0000 (13:55 +0200)]
build: add extra *.texi files to coreutils_TEXINFOS, not EXTRA_DIST

* doc/Makefile.am (coreutils_TEXINFO): List them here, instead of ...
(EXTRA_DIST): ... listing them here.  This ensures the rebuild rules
will be more faithful.
($(DVIS), $(INFO_DEPS)): No need to depend on $(EXTRA_DIST) now.

11 years agomaint: slightly improve .gitignore
Stefano Lattarini [Wed, 29 Aug 2012 11:03:27 +0000 (13:03 +0200)]
maint: slightly improve .gitignore

* .gitignore: Ignore '.deps' only when it's a directory.
Ignore '*.trs' only if they are in a subdirectory of the
'tests/' directory.

11 years agobuild: don't abuse Automake internals (with its 'check-am' rule)
Stefano Lattarini [Wed, 29 Aug 2012 10:35:43 +0000 (12:35 +0200)]
build: don't abuse Automake internals (with its 'check-am' rule)

* tests/check.mk (check-am): Remove; obtain the same effect by moving
its dependency '.built-programs' ...
(check_DATA): ... to this variable.

11 years agoscripts: git commit message hook: prohibit use of "Signed-off-by:"
Jim Meyering [Thu, 30 Aug 2012 11:07:10 +0000 (13:07 +0200)]
scripts: git commit message hook: prohibit use of "Signed-off-by:"

* scripts/git-hooks/commit-msg: Reject a commit log message that
contains "Signed-off-by:".

11 years agotests: remove useless defn of REPLACE_GETCWD from TESTS_ENVIRONMENT
Stefano Lattarini [Wed, 29 Aug 2012 22:35:20 +0000 (00:35 +0200)]
tests: remove useless defn of REPLACE_GETCWD from TESTS_ENVIRONMENT

It's last use had been removed in commit v8.12-3-g3ed91fc of 2011-04-28,
"tests: remove useless test: misc/pwd-unreadable-parent".

* tests/check.mk (TESTS_ENVIRONMENT): Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: fix misc/sort-exit-early to skip if root
Nick Alcock [Wed, 29 Aug 2012 22:02:46 +0000 (23:02 +0100)]
tests: fix misc/sort-exit-early to skip if root

* tests/misc/sort-exit-early: skip_if_root_ as this test
requires an unwritable input and an unreadable output.

11 years agotail,stat: improve support for ZFS
Jim Meyering [Wed, 29 Aug 2012 07:32:49 +0000 (09:32 +0200)]
tail,stat: improve support for ZFS

This change enables tail -f to use inotify and lets
stat -f --format=%T report the file system type name, "zfs".
* src/stat.c (human_fstype): Add a case: zfs, 0x2fc12fc1.
* NEWS (Improvements): Mention it.
* THANKS.in: Update.
Reported by Raimonds Miltins in http://bugs.gnu.org/12301.

11 years agobuild: update gnulib submodule to latest
Jim Meyering [Sun, 26 Aug 2012 20:47:57 +0000 (22:47 +0200)]
build: update gnulib submodule to latest

11 years agomaint: stop using @acronym{...} in texinfo sources
Jim Meyering [Sun, 26 Aug 2012 11:28:34 +0000 (13:28 +0200)]
maint: stop using @acronym{...} in texinfo sources

* doc/coreutils.texi: Remove all uses of @acronym{...},
per recommendation by Karl Berry.
* doc/perm.texi: Likewise.
* cfg.mk (local-checks-to-skip): Remove exemption, enabling
the @acronym{-prohibiting syntax-check rule.

11 years agotests: don't require @acronym{...} around POSIX
Jim Meyering [Sun, 26 Aug 2012 11:26:26 +0000 (13:26 +0200)]
tests: don't require @acronym{...} around POSIX

* doc/Makefile.am (check-texinfo): Remove POSIX-checking part.

11 years agodf: allow translators to reorder "1K-blocks" header
Nguyễn Thái Ngọc Duy [Sun, 26 Aug 2012 09:57:22 +0000 (16:57 +0700)]
df: allow translators to reorder "1K-blocks" header

* src/df.c (get_header): Mark two "%s-%s" strings for translation
and give translators a hint what each is for.

11 years agomd5sum, sha*sum: add --tag to output a format indicating the algorithm
Ondrej Oprala [Thu, 2 Aug 2012 11:31:50 +0000 (13:31 +0200)]
md5sum, sha*sum: add --tag to output a format indicating the algorithm

The format used is the BSD traditional format which looks like:
MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e

* NEWS: Add new feature info.
* doc/coreutils.texi (md5sum invocation): Add detailed information
about the new --tag option.
* src/md5sum.c: Add the new --tag option for BSD-style output.
(bsd_split_3): Add ESCAPED_FILENAME parameter.
(print_filename): New function refactored from main().
(filename_unescape): New function refactored from split_3().
* tests/misc/md5sum-bsd: Add tests for the new feature.

11 years agorm: fix the new --dir (-d) option to work with -i
Rob Day [Wed, 22 Aug 2012 22:04:19 +0000 (23:04 +0100)]
rm: fix the new --dir (-d) option to work with -i

* src/remove.c (prompt): Hoist the computation of is_empty, since we'll
need it slightly earlier.
Before, this function would arrange to fail with EISDIR when processing
a directory without --recursive (-r).  Adjust the condition to exempt
an empty directory when --dir has been specified.
Improve comments.
* tests/rm/d-3: New file, to ensure that rm -d -i dir works.
* tests/Makefile.am (TESTS): Add it.
* NEWS (Bug fixes): Mention it.
* THANKS.in: Update.
Reported by Michael Price in http://bugs.gnu.org/12260

11 years agotests: correct print_ver_ arguments and add a rule to enforce this
Bernhard Voelker [Wed, 22 Aug 2012 13:04:04 +0000 (15:04 +0200)]
tests: correct print_ver_ arguments and add a rule to enforce this

We use print_ver_ to run "PROG --version" for each program under
test.  Some tests have been derived from others, while the
argument(s) to print_ver_ have not been adapted.
Add a new cfg.mk rule to prohibit this.

* cfg.mk (sc_prohibit_test_calls_print_ver_with_irrelevant_argument):
New rule, to prohibit a test script from calling print_env_ for a
program not actually used by that test.
* tests/chown/basic: s/\(print_ver_\) chgrp/\1 chown/
* tests/cp/acl: s/\(print_ver_\) mv/\1 cp/
* tests/cp/capability: s/\(print_ver_\) ls/\1 cp/
* tests/cp/cp-parents: s/(print_ver_\) mv/\1 cp/
* tests/du/bind-mount-dir-cycle: s/(print_ver_\) rm/\1 du/
* tests/misc/wc-parallel: s/(print_ver_\) md5sum/\1 wc/

11 years agodu: handle bind-mounted directory cycles gracefully
Ondrej Oprala [Thu, 9 Aug 2012 15:34:09 +0000 (17:34 +0200)]
du: handle bind-mounted directory cycles gracefully

Before this change, a directory cycle induced by a bind mount
would be treated as a fatal error, i.e., probable disk corruption.
However, such cycles are relatively common, and can be detected
efficiently, so now du emits a descriptive warning and arranges
to exit nonzero.

* NEWS (Bug fixes): Mention it.
* src/du.c: Include "mountlist.h".
(di_mnt): New global set.
(di_files): Rename global from di_set, now that there are two.
(fill_mount_table): New function.
(hash_ins): Add DI_SET parameter.
(process_file): Look up each dir dev/ino pair in the new set.
(main): Allocate, initialize, and free the new set.
* tests/du/bind-mount-dir-cycle: Add a test for the fix.
* tests/Makefile.am (TESTS): Add it.
* THANKS.in: Update.
This implements the proposal in http://bugs.gnu.org/11844.
Originally reported in http://bugs.debian.org/563254 by Alan Jenkins
and more recently as http://bugzilla.redhat.com/836557

Improved by: Jim Meyering

11 years agomaint: post-release administrivia
Jim Meyering [Mon, 20 Aug 2012 06:26:57 +0000 (08:26 +0200)]
maint: post-release administrivia

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

11 years agoversion 8.19 v8.19
Jim Meyering [Mon, 20 Aug 2012 06:13:02 +0000 (08:13 +0200)]
version 8.19

* NEWS: Record release date.

11 years agotests: port df/no-mtab-status to Solaris
Paul Eggert [Sat, 18 Aug 2012 16:46:39 +0000 (09:46 -0700)]
tests: port df/no-mtab-status to Solaris

* tests/df/no-mtab-status: Include <mntent.h> in test program, so
that the getmntent hack compilation fails on Solaris, as it
should, since it's not compatible with Solaris.  Reported by
Stefano Lattarini in <http://bugs.gnu.org/12225>.

11 years agotests: avoid split/filter test failure on very low-mem system
Jim Meyering [Sun, 19 Aug 2012 15:34:04 +0000 (17:34 +0200)]
tests: avoid split/filter test failure on very low-mem system

* tests/split/filter: Use xz -1 when compressing, to minimize
memory usage.  Otherwise, xz could fail due to insufficient
virtual memory on a system with very little free memory.

11 years agotests: trigger the sort -u free-memory-read bug
Jim Meyering [Sat, 18 Aug 2012 05:26:30 +0000 (07:26 +0200)]
tests: trigger the sort -u free-memory-read bug

* tests/misc/sort-u-FMR: New file.
* tests/Makefile.am (TESTS): Add it.
* tests/misc/sort: Add the test here, too.
* NEWS (Bug fixes): Mention it.

11 years agotests: wrap the valgrind-requiring assertion in a function
Jim Meyering [Sat, 18 Aug 2012 05:25:28 +0000 (07:25 +0200)]
tests: wrap the valgrind-requiring assertion in a function

* tests/init.cfg (require_valgrind_): New function...
* tests/misc/sort-stale-thread-mem: ...extracted from here.

11 years agosort: simpler fix for sort -u data-loss bug, and for a FMR bug
Paul Eggert [Fri, 17 Aug 2012 20:26:00 +0000 (13:26 -0700)]
sort: simpler fix for sort -u data-loss bug, and for a FMR bug

This also fixes a free-memory-read (FMR) bug: when fillbuf's realloc
of buf->buf frees the buffer into which saved_line.text points,
the processing of that just-read longer line includes comparison
against the saved line in freed memory.
* src/sort.c (overlap): Remove.
(fillbuf): Do not try to copy saved lines, as that is too risky
in the presence of parallelism, reallocated buffers, etc.
(sort): Invalidate any saved line before sorting a new batch.

11 years agosort: sort --unique (-u) could cause data loss
Jim Meyering [Wed, 15 Aug 2012 10:30:44 +0000 (12:30 +0200)]
sort: sort --unique (-u) could cause data loss

sort -u could omit one or more lines of expected output.
This bug arose because sort recorded the most recently printed line via
reference, and if you were unlucky, the storage for that line would be
reused (overwritten) as additional input was read into memory.  If you
were doubly unlucky, the new value of the "saved" line would not only
match the very next line, but if that next line were also the first in
a series of identical, not-yet-printed lines, then the corrupted "saved"
line value would result in the omission of all matching lines.

* src/sort.c (saved_line): New static/global, renamed and moved from...
(write_unique): ...here.  Old name was "saved", which was too generic
for its new role as file-scoped global.
(fillbuf): With --unique, when we're about to read into a buffer that
overlaps the saved "preceding" line (saved_line), copy the line's .text
member to a realloc'd-as-needed temporary buffer and adjust the line's
key-defining members if they're set.
(overlap): New function.
* tests/misc/sort: New tests.
* NEWS (Bug fixes): Mention it.
* THANKS.in: Update.
Bug introduced via commit v8.5-89-g9face83.
Reported by Rasmus Borup Hansen in
http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/23173/focus=24647

11 years agotests: reverse args in Coreutils.pm-invoked diff, for consistency
Jim Meyering [Thu, 16 Aug 2012 06:59:27 +0000 (08:59 +0200)]
tests: reverse args in Coreutils.pm-invoked diff, for consistency

* tests/Coreutils.pm (_compare_files): Reverse diff arguments so
that we invoke diff -c $expected $actual, which is consistent with
how init.sh-using tests invoke "compare exp out".

11 years agomaint: correct a stale comment in sort.c
Jim Meyering [Wed, 15 Aug 2012 09:31:24 +0000 (11:31 +0200)]
maint: correct a stale comment in sort.c

* src/sort.c (fillbuf): Fix comment typo.  x2nrealloc no longer
doubles the size of its input buffer.

11 years agomaint: fix comment grammar to placate make syntax-check
Jim Meyering [Thu, 16 Aug 2012 17:25:40 +0000 (19:25 +0200)]
maint: fix comment grammar to placate make syntax-check

* src/remove.c (rm_fts): s/can not/cannot/

11 years agorm: new option --dir (-d) to remove empty directories
Krzysztof Goj [Sun, 22 Jan 2012 00:39:59 +0000 (01:39 +0100)]
rm: new option --dir (-d) to remove empty directories

Add new option to rm (-d/--dir), which allows removal of
empty directories, while still safely disallowing removal
of non-empty ones.

This improves compatibility with Mac OS X and BSD systems,
which honor the -d option.

* src/remove.c (rm_fts): Remove empty directories when requested.
* src/remove.h (rm_options) [remove_empty_directories]: New member.
* src/rm.c (long_opts, usage, main): Update usage and option parsing.
(rm_option_init): Initialize the new member.
* src/mv.c (rm_option_init): Initialize the new member.
* tests/rm/d-1: New test case - successfully delete empty dir.
* tests/rm/d-2: New test case - refuse to delete nonempty dir.
* tests/Makefile.am (TESTS): Add them.

11 years agodf: fail when the mount list is required but cannot be read
Bernhard Voelker [Tue, 14 Aug 2012 07:22:13 +0000 (09:22 +0200)]
df: fail when the mount list is required but cannot be read

* src/df.c (main): Add conditions to fail when the mount list cannot
be read: this includes the cases when a file name argument is given
and any of -a, -l, -t or -x is used.
* doc/coreutils.texi: Document the additional error conditions.
* tests/df/no-mtab-status: Add a new test.
* tests/Makefile.am: Reference the new test.
* NEWS: Mention the fix.

11 years agomaint: post-release administrivia
Jim Meyering [Sun, 12 Aug 2012 08:07:32 +0000 (10:07 +0200)]
maint: post-release administrivia

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

11 years agoversion 8.18 v8.18
Jim Meyering [Sun, 12 Aug 2012 07:37:42 +0000 (09:37 +0200)]
version 8.18

* NEWS: Record release date.

11 years agotests: fix validation of local file systems
Pádraig Brady [Wed, 8 Aug 2012 15:38:38 +0000 (16:38 +0100)]
tests: fix validation of local file systems

* tests/init.cfg (require_mount_list_): A new function
to ensure we can read the list of file systems.
(require_local_dir_): Call the above function, as otherwise
the check is invalid.
* tests/df/total-unprocessed: Ensure df can read the
list of mounted file systems so that --local can be honored.

11 years agobuild: update gnulib submodule to latest
Jim Meyering [Mon, 6 Aug 2012 14:02:39 +0000 (16:02 +0200)]
build: update gnulib submodule to latest

11 years agotests: printf-surprise: avoid unwarranted failure on FreeBSD 9.0
Jim Meyering [Sun, 5 Aug 2012 14:10:09 +0000 (16:10 +0200)]
tests: printf-surprise: avoid unwarranted failure on FreeBSD 9.0

* tests/misc/printf-surprise: A VM size of 10,000KiB was too
little in which to run "env printf ..." on FreeBSD 9.0-p3.
Increase it to 15,000.

11 years agobuild: avoid sort link failure on Solaris 10
Jim Meyering [Sun, 5 Aug 2012 08:05:13 +0000 (10:05 +0200)]
build: avoid sort link failure on Solaris 10

* src/Makefile.am (sort_LDADD): Sort uses euidaccess, which may require
whatever library configure deemed necessary to resolve the eaccess
function, but no one told sort to link with that library.
(sort_LDADD): Add $(LIB_EACCESS).

11 years agodf: fix exit code and error messages with --total
Bernhard Voelker [Fri, 3 Aug 2012 23:09:22 +0000 (01:09 +0200)]
df: fix exit code and error messages with --total

When the combination of the file system options with given files or
devices does not lead to output, "df --total" would exit successfully
although it should not.

Examples:
  $ df --total --type=xfs /          # when / is not an XFS file system
  $ df --total --local -t nfs  DIR   # nfs is remote per se ...
  $ df --total -t qwerty /dev/sdb5   # typo in file system type

Furthermore, "df --total" would not print the error message "no file
systems processed" when the file argument does not exist or is otherwise
not accessible.

Example:
  $ df --total __not_exist__

These 2 bugs are present since --total was added by commit
v6.12-166-gea2887b.

* src/df.c (get_dev): Do not set file_systems_processed to true when
force_fsu is true, i.e. when the row for the "total" line is processed.
(main): Don't print totals unless we've processed a file system.
Also only print the "no FS processed" message if there was no
preceding diagnostic.
* tests/df/total-unprocessed: Add a new test.
* tests/Makefile.am: Reference the new test.
* NEWS: Mention the fix.

Improved-by: Jim Meyering
11 years agotruncate: don't leak a file descriptor with --ref=PIPE
Jim Meyering [Sat, 4 Aug 2012 09:02:40 +0000 (11:02 +0200)]
truncate: don't leak a file descriptor with --ref=PIPE

* src/truncate.c (main): For a user who makes the mistake of
using a non-seekable file as a reference for the desired length,
truncate would open that file, attempt to seek to its end, but
upon seek failure would neglect to close the file descriptor.
Close the file descriptor even when lseek fails.
In addition, ignore failure to close that reference FD, since as
long as the lseek succeeds, a close failure doesn't matter.
Coverity spotted the potential FD leak.

Improved-by: Pádraig Brady.
11 years agotests: avoid FP ulimit failure with valgrind-wrapped tools
Jim Meyering [Thu, 2 Aug 2012 17:12:18 +0000 (19:12 +0200)]
tests: avoid FP ulimit failure with valgrind-wrapped tools

* tests/init.cfg (require_ulimit_): Raise VM limit from 10MiB to
20MiB, to accommodate overhead of a valgrind-wrapped date program.
Also declare this function's local variables "local".

11 years agosplit: plug nominal leaks
Jim Meyering [Thu, 2 Aug 2012 17:31:36 +0000 (19:31 +0200)]
split: plug nominal leaks

* src/split.c (lines_rr) [IF_LINT]: Plug a harmless leak.
(main) [IF_LINT]: Free a usually-small (~70KB) buffer
just before exit, mainly to take this off the radar of
leak-detecting tools.

Improved-by: Pádraig Brady.
11 years agotail: avoid rare error-path FD leak
Jim Meyering [Fri, 27 Jul 2012 21:42:05 +0000 (23:42 +0200)]
tail: avoid rare error-path FD leak

* src/tail.c (tail_forever): Close FD to avoid leak after a
failed fstat.

11 years agomaint: refresh stale local gnulib patch files
Jim Meyering [Fri, 27 Jul 2012 10:15:32 +0000 (12:15 +0200)]
maint: refresh stale local gnulib patch files

We carry local adjustments for a few gnulib modules via the
patches in gl/.  Nearly all of those patches had become stale
due to evolution of the originals in gnulib.

To refresh them, first make sure you have no local changes in gl/
or in the gnulib submodule, then run "make refresh-gnulib-patches".

11 years agotail: avoid misleading diagnostic upon fstat failure
Jim Meyering [Wed, 25 Jul 2012 16:35:36 +0000 (18:35 +0200)]
tail: avoid misleading diagnostic upon fstat failure

* src/tail.c (check_fspec): Save fstat-induced errno *before*
calling close_fd, not after.  Otherwise, the close could well
clobber the global errno, making tail print an invalid diagnostic.
This could happen only with tail -f, and even then, only when
a valid file descriptor were to provoke fstat failure.

11 years agotests: add a test for a previously fixed output format bug in join
Pádraig Brady [Mon, 23 Jul 2012 08:29:57 +0000 (09:29 +0100)]
tests: add a test for a previously fixed output format bug in join

Add a test and NEWS entry for a bug inadvertently fixed in
a refactoring in commit v8.9-32-gd4db0cb

* tests/misc/join (v2-format): Add a new test.
* THANKS.in: Add the reporter.
* NEWS: Mention the old bug.
* cfg.mk (old_NEWS_hash): Update.

Reported-by: Jean-Pierre Tosoni
11 years agodoc: mention gethostid(3) in hostid(1)
Pádraig Brady [Sun, 22 Jul 2012 11:59:49 +0000 (12:59 +0100)]
doc: mention gethostid(3) in hostid(1)

* man/hostid.x: Add gethostid(3) to SEE ALSO section.
Addresses http://bugs.gnu.org/12023

11 years agodoc: mention uniq(1) in sort(1) man-page and vice versa
Erik Auerswald [Fri, 20 Jul 2012 22:48:17 +0000 (00:48 +0200)]
doc: mention uniq(1) in sort(1) man-page and vice versa

* man/sort.x: Add SEE ALSO section with entry uniq(1).
* man/uniq.x: Add sort(1) to SEE ALSO section.

11 years agomaint: stzncpy: restrict pointer parameters
Jim Meyering [Sat, 21 Jul 2012 10:08:31 +0000 (12:08 +0200)]
maint: stzncpy: restrict pointer parameters

* src/system.h (stzncpy): Add "restrict" attribute to each pointer
parameter and note in the comment that the buffers must not overlap.

11 years agomaint: rm: remove two more unused static inline functions
Joachim Schmitz [Fri, 20 Jul 2012 13:52:10 +0000 (15:52 +0200)]
maint: rm: remove two more unused static inline functions

* src/remove.c (cache_stat_ok, is_nondir_lstat): Remove unused
functions.

11 years agomaint: adjust exemption to track renamed test script
Jim Meyering [Fri, 20 Jul 2012 13:10:12 +0000 (15:10 +0200)]
maint: adjust exemption to track renamed test script

* cfg.mk (exclude_file_name_regexp--sc_file_system): Sync this
exemption regexp to match renamed tests/df/df-P.  This avoids
a "make syntax-check" failure.

11 years agomaint: rm: remove unused static-inlined functions
Joachim Schmitz [Fri, 20 Jul 2012 12:32:53 +0000 (14:32 +0200)]
maint: rm: remove unused static-inlined functions

* src/remove.c (cache_statted, is_dir_lstat): Remove unused
static-inlined functions.
* THANKS.in: Remove my name from this list, now that (with this
commit) it is included automatically.
Copyright-paperwork-exempt: Yes

11 years agotests: fiemap-perf: avoid a false failure on ext2
Andrew D Warshall [Wed, 18 Jul 2012 12:53:53 +0000 (13:53 +0100)]
tests: fiemap-perf: avoid a false failure on ext2

* tests/cp/fiemap-perf: Skip the test on ext2 file systems,
as we do for ext3.  Also skip the test if we can't create
a 1TiB file, which might not be supported on certain file systems.

Signed-off-by: Pádraig Brady <P@draigBrady.com>
11 years agomaint: move two df tests from tests/misc to tests/df
Pádraig Brady [Mon, 16 Jul 2012 01:51:41 +0000 (02:51 +0100)]
maint: move two df tests from tests/misc to tests/df

* test/Makefile.am: Reference the moved tests.

11 years agodf: don't output control characters in a mount point name
Pádraig Brady [Fri, 13 Jul 2012 01:27:26 +0000 (02:27 +0100)]
df: don't output control characters in a mount point name

It's awkward to read and problematic for scripts when
control characters like '\n' are output.

Note other fields are already handled with mbsalign,
which converts non printable chars to the replacement char.
A caveat to note with that, is the replacement char takes
a place in the field and so possibly truncates the field
if it was the widest field in the records.

Note a more general replacement function, that
handles all printable, or non white space characters,
would require more sophisticated support for various
encodings, and the complexity vs benefit was not
deemed beneficial enough at present.
Perhaps in future a more general replacement function
could be shared between the various utilities.

Note <space> is unaffected in any field,
which could impact scripts processing the output.
However any of the number fields at least could have
spaces considering `LANG=fr_FR df -B\'1`, so it's
probably best to leave spaces, which also allows
scripts to handle mount points with spaces without change.

* src/df.c (hide_problematic_chars): Replace control chars with '?'.
* tests/df/problematic-chars: Add a new root only test.
* tests/Makefile.am: Reference the new test.
* NEWS: Mention the fix.

11 years agopinky,who: fix bug in latest change
Jim Meyering [Sun, 15 Jul 2012 16:18:03 +0000 (18:18 +0200)]
pinky,who: fix bug in latest change

* src/system.h (stzncpy): New function.
* src/pinky.c (print_entry): Use stzncpy, not stpncpy.
The latter does not NUL-terminate.  I assumed that strncpy was
the only function with such a horrible API.  Today I learned that
stpncpy also may not NUL-terminate its result.
The bugs were introduced in commit v8.17-48-gf79263d.
* src/who.c (print_user): Likewise.
Thanks to Erik Auerswald for spotting my error.

11 years agobuild: update gnulib submodule to latest
Jim Meyering [Sun, 15 Jul 2012 11:50:36 +0000 (13:50 +0200)]
build: update gnulib submodule to latest

11 years agomaint: remove unwarranted uses of strncpy
Jim Meyering [Sun, 15 Jul 2012 09:38:51 +0000 (11:38 +0200)]
maint: remove unwarranted uses of strncpy

* src/pinky.c (print_entry): Remove unwarranted uses of strncpy.
Instead, use stpcpy and stpncpy.
* src/who.c (print_user): Likewise.
* cfg.mk: Remove strncpy exemptions.

11 years agobuild: shred.c: avoid i686-specific gcc -Wstrict-overflow warning
Jim Meyering [Sun, 15 Jul 2012 09:31:18 +0000 (11:31 +0200)]
build: shred.c: avoid i686-specific gcc -Wstrict-overflow warning

* src/shred.c: Avoid gcc -Wstrict-overflow warning.
Addresses http://bugs.gnu.org/11927

11 years agodoc: clarify meaning of '-parodd' in stty help
Bruno Haible [Fri, 13 Jul 2012 14:00:53 +0000 (15:00 +0100)]
doc: clarify meaning of '-parodd' in stty help

* src/stty.c (usage): Disambiguate explanation of -parodd.
* THANKS.in: Add reporter.
Reported by Michael Stummvoll

11 years agodoc: mention the improved sort memory allocation
Pádraig Brady [Thu, 12 Jul 2012 14:02:19 +0000 (15:02 +0100)]
doc: mention the improved sort memory allocation

* NEWS: Mention the improvement.

11 years agodoc: fix errors and warnings with Texinfo 5
Stefano Lattarini [Thu, 12 Jul 2012 14:08:34 +0000 (15:08 +0100)]
doc: fix errors and warnings with Texinfo 5

Or rather, with the development version 4.13.90, which will eventually
become Texinfo 5.0.

* doc/coreutils.texi: Use '@item' instead of '@itemx' in several places,
as Texinfo 5 refuses to process an '@itemx' that is not preceded by an
'@item'.  Ensure that node extended names in menus and sectioning are
consistent, and that ordering and presence of nodes in menus and in the
actual text are consistent as well.

Fixes http://bugs.gnu.org/11828

11 years agodf: warn if soon-to-be-removed --megabyte option is used
Bernhard Voelker [Wed, 11 Jul 2012 15:27:20 +0000 (17:27 +0200)]
df: warn if soon-to-be-removed --megabyte option is used

* src/df.c (MEGABYTES_OPTION): Add enum and mark it for removal
in August 2013.
(long_options): Use MEGABYTES_OPTION for --megabytes option.
(main): Add a case for it and issue a deprecation warning if
the long form is used.  Document the short -m option to
exist only for BSD compatibility.

11 years agosort: by default, do not exceed 3/4 of physical memory
Paul Eggert [Tue, 10 Jul 2012 23:14:33 +0000 (16:14 -0700)]
sort: by default, do not exceed 3/4 of physical memory

* src/sort.c (default_sort_size): Do not exceed 3/4 of total memory.
See Jeff Janes's bug report in
<http://lists.gnu.org/archive/html/coreutils/2012-06/msg00018.html>.

11 years agotests: sort-merge-fdlimit: reduce the limit by one
Pádraig Brady [Wed, 4 Jul 2012 10:02:20 +0000 (12:02 +0200)]
tests: sort-merge-fdlimit: reduce the limit by one

* tests/misc/sort-merge-fdlimit: As a consequence of commit
v8.17-34-g59daf05, we can reduce the descriptor limit by one.

11 years agodoc: document leap seconds better
Paul Eggert [Thu, 5 Jul 2012 23:11:49 +0000 (16:11 -0700)]
doc: document leap seconds better

* doc/coreutils.texi (touch invocation, Time conversion specifiers)
(Options for date, Examples of date): Index "leap seconds" and
improve their documentation a bit.

11 years agodoc: fix spacing
Paul Eggert [Thu, 5 Jul 2012 22:47:21 +0000 (15:47 -0700)]
doc: fix spacing

* doc/coreutils.texi: Use right amount of spacing after punctuation.

11 years agodate: fails to diagnose invalid input
Jim Meyering [Wed, 4 Jul 2012 11:01:56 +0000 (13:01 +0200)]
date: fails to diagnose invalid input

date -d "$(printf '\xb0')" would print 00:00:00 with today's date
rather than diagnosing the invalid input.  Now it reports this:
date: invalid date '\260'
* gnulib: Update submodule to latest for fixed parse-datetime.y.
* tests/misc/date [invalid-high-bit-set]: New test.
* NEWS (Bug fixes): Mention it.
* bootstrap, tests/init.sh: Also update to latest.
Reported by Peter Evans in http://bugs.gnu.org/11843

11 years agomaint: add syntax-check rule to help avoid misuse of EXIT_FAILURE
Jim Meyering [Tue, 3 Jul 2012 18:14:56 +0000 (20:14 +0200)]
maint: add syntax-check rule to help avoid misuse of EXIT_FAILURE

* cfg.mk (sc_some_programs_must_avoid_exit_failure): New rule,
to help us avoid using EXIT_FAILURE in programs like sort, ls, nohup,
timeout, env, etc. that use different exit codes in many cases.

11 years agomaint: fix minor bugs in helper program, setuidgid
Jim Meyering [Tue, 3 Jul 2012 18:13:09 +0000 (20:13 +0200)]
maint: fix minor bugs in helper program, setuidgid

* src/setuidgid.c (main): Fix two error-before-usage calls not to exit.
Exit with status SETUIDGID_FAILURE (not EXIT_FAILURE) consistently.

11 years agosort: fix exit-status typo
Paul Eggert [Mon, 2 Jul 2012 23:19:28 +0000 (16:19 -0700)]
sort: fix exit-status typo

* src/sort.c (stream_open): EXIT_FAILURE -> SORT_FAILURE.
Suggested by Pádraig Brady in <http://bugs.gnu.org/11816#34>.

11 years agosort: simplify -o handling to avoid fdopen, assert
Paul Eggert [Mon, 2 Jul 2012 22:47:03 +0000 (15:47 -0700)]
sort: simplify -o handling to avoid fdopen, assert

* src/sort.c (outfd): Remove.  All uses replaced by STDOUT_FILENO.
(stream_open): When writing, use stdout rather than fdopen.
(move_fd_or_die): Renamed from dup2_or_die, with the added functionality
of closing its first argument.  All uses changed.
(avoid_trashing_input): Special case for !outfile no longer needed.
(check_output): Arrange for standard output to go to the file,
rather than storing the fd in outfd.

11 years agosort: avoid redundant processing with inaccessible inputs or output
Pádraig Brady [Sun, 1 Jul 2012 00:14:42 +0000 (01:14 +0100)]
sort: avoid redundant processing with inaccessible inputs or output

* src/sort.c (check_inputs): A new function to verify all inputs
are accessible before further processing.
(check_output): A new function to open or create a specified
output file, before futher processing.
(stream_open): Adjust to truncating the previously opened
output file rather than opening directly.
(avoid_trashing_input): Optimize to stat the output file
descriptor, rather than the file name.
(main): Call the new functions to check accessibility of
inputs and output, before processing starts.
* tests/misc/sort: Adjust to the changed error message.
* tests/misc/sort-merge-fdlimit: Account for the earlier opened
file descriptor of the specified output file.
* tests/misc/sort-exit-early: A new test to exercise the improvements.
* tests/Makefile.am: Reference the new test.
* NEWS: Mention the improvement.

Suggested-by: Bernhard Voelker
11 years agomaint: sc_prohibit_fail_0: update a stale comment
Pádraig Brady [Mon, 2 Jul 2012 18:40:01 +0000 (20:40 +0200)]
maint: sc_prohibit_fail_0: update a stale comment

* cfg.mk (sc_prohibit_fail_0): Following on from
commit v8.0-79-g71c2f88, update the comment to match.

11 years agomaint: avoid a -Wunsed-but-set warning on some systems
Pádraig Brady [Sat, 30 Jun 2012 23:04:37 +0000 (00:04 +0100)]
maint: avoid a -Wunsed-but-set warning on some systems

* src/stty.c (main): Mark speed_was_set as possibly unused,
as is the case when CIBAUD is undefined (on ppc64 GNU/Linux
for example).
Reported-by: Stefano Lattarini
11 years agomaint: avoid false-positive syntax-check failure due to fail=0 in .texi
Jim Meyering [Sat, 30 Jun 2012 16:29:38 +0000 (18:29 +0200)]
maint: avoid false-positive syntax-check failure due to fail=0 in .texi

* cfg.mk (exclude_file_name_regexp--sc_prohibit_fail_0): Exempt
all .texi files.