platform/upstream/coreutils.git
13 years agodi-set: provide a lookup method
Jim Meyering [Mon, 7 Feb 2011 14:46:09 +0000 (15:46 +0100)]
di-set: provide a lookup method

This is required for patch, and hence is about to move to gnulib.
* gl/lib/di-set.c (di_set_lookup): New function.
* gl/lib/di-set.h: Declare it.
* gl/tests/test-di-set.c (main): Exercise it.

The bug was introduced on 2004-12-04 via commit 7380cf79.

13 years agocut: don't segfault for large unbounded range
Jim Meyering [Mon, 7 Feb 2011 07:29:33 +0000 (08:29 +0100)]
cut: don't segfault for large unbounded range

* src/cut.c (set_fields): When computing the maximum range endpoint,
take into consideration the start of any unbounded range, like "999-".
* NEWS (Bug fixes): Mention it.
* tests/misc/cut (big-unbounded-b,c,f): Add tests.
Reported by Paul Marinescu in http://debbugs.gnu.org/7993
The bug was introduced on 2004-12-04 via commit 7380cf79.

13 years agocopy: don't let a failed lseek go undiagnosed
Jim Meyering [Sat, 5 Feb 2011 21:40:57 +0000 (22:40 +0100)]
copy: don't let a failed lseek go undiagnosed

Upon failed lseek, sparse_copy_finalize would mistakenly return true.
Admittedly, that is very unlikely, since that particular lseek
is attempted only if the preceding call to sparse_copy induced
a hole at EOF (via lseek on the destination FD).  However, now
that sparse_copy has an output parameter, N_READ, there is no
longer any reason to call lseek (fd, 0, SEEK_CUR), so...
* src/copy.c (sparse_copy_finalize): Remove the function.
(copy_reg): Call ftruncate with n_read, rather than
sparse_copy_finalize with its now-unnecessary lseek.
Lasse Collin spotted the bug in sparse_copy_finalize.

13 years agopost-release administrivia
Jim Meyering [Fri, 4 Feb 2011 17:19:36 +0000 (18:19 +0100)]
post-release administrivia

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

13 years agoversion 8.10 v8.10
Jim Meyering [Fri, 4 Feb 2011 17:08:12 +0000 (18:08 +0100)]
version 8.10

* NEWS: Record release date.

13 years agocp: avoid spurious failure on any non-linux kernel
Jim Meyering [Fri, 4 Feb 2011 14:01:39 +0000 (15:01 +0100)]
cp: avoid spurious failure on any non-linux kernel

* src/extent-scan.c (extent_scan_read) [!linux]: Always set
scan->initial_scan_failed so caller knows not to report the failure.

13 years agotests: skip mv/i-3 on FreeBSD to avoid spurious failure
Jim Meyering [Fri, 4 Feb 2011 13:59:03 +0000 (14:59 +0100)]
tests: skip mv/i-3 on FreeBSD to avoid spurious failure

* tests/mv/i-3: Skip when uname -s reports FreeBSD.

13 years agosort: fix --debug key highlighting when key start after key end
Pádraig Brady [Wed, 2 Feb 2011 23:08:42 +0000 (23:08 +0000)]
sort: fix --debug key highlighting when key start after key end

This case was overlooked in commit bdde34f9, 2010-08-05,
"sort: tune and refactor --debug code, and fix minor underlining bug"

* src/sort.c (debug_key):  Don't adjust the key end when
it's before the key start.
* tests/misc/sort-debug-keys: Add a test case.

13 years agotests: correct part of fiemap-perf
Jim Meyering [Wed, 2 Feb 2011 11:02:22 +0000 (12:02 +0100)]
tests: correct part of fiemap-perf

* tests/cp/fiemap-perf: Correct erroneous added test.
Since nonexistent names were used, the final test ended up
being "test =", which would always "succeed".

13 years agobuild: update gnulib submodule to latest
Jim Meyering [Wed, 2 Feb 2011 08:40:55 +0000 (09:40 +0100)]
build: update gnulib submodule to latest

13 years agocp: fix the buffer size used when writing zeros
Pádraig Brady [Mon, 31 Jan 2011 22:04:35 +0000 (22:04 +0000)]
cp: fix the buffer size used when writing zeros

* src/copy.c (write_zeros): This bug caused 4 or 8 bytes to
be written at a time which is very inefficient.  One could
trigger the issue with `cp --sparse=never sparse non-sparse`
on a file system that supports fiemap.

13 years agocp: always initialize extent_copy's output parameter
Jim Meyering [Mon, 31 Jan 2011 19:55:34 +0000 (20:55 +0100)]
cp: always initialize extent_copy's output parameter

* src/copy.c (extent_copy): Otherwise it would be used uninitialized.

13 years agotests: exercise a rarely-used corner of copy.c
Jim Meyering [Mon, 31 Jan 2011 16:18:13 +0000 (17:18 +0100)]
tests: exercise a rarely-used corner of copy.c

* tests/cp/sparse-to-pipe: New test.
* tests/Makefile.am (TESTS): Add it.

13 years agocp: fix copying a sparse file to a pipe
Jim Meyering [Mon, 31 Jan 2011 17:25:58 +0000 (18:25 +0100)]
cp: fix copying a sparse file to a pipe

The recent FIEMAP-related changes made it so the unusual case of
copying a sparse file to a non-regular destination (e.g., a pipe)
would erroneously write one byte too many to that destination.
That happened because extent_copy assumed that it could use lseek
to obtain the number of bytes written to the output file descriptor.
That was valid only for regular files.
* src/copy.c (sparse_copy): Add a parameter, to be used by extent_copy,
but not by reg_copy.  Adjust callers.
(extent_copy): Maintain new local, dest_pos, using new arg, n_read.
Don't call lseek on dest_fd; use new var, dest_pos, instead.
(copy_reg): Add unused arg.

13 years agotests: gfs2 also supports FIEMAP
Jim Meyering [Mon, 31 Jan 2011 14:20:29 +0000 (15:20 +0100)]
tests: gfs2 also supports FIEMAP

* tests/init.cfg (fiemap_capable_): Add gfs2.
Clarify comment.

13 years agomaint: remove unused inclusion of "fiemap.h"
Jim Meyering [Mon, 31 Jan 2011 14:17:12 +0000 (15:17 +0100)]
maint: remove unused inclusion of "fiemap.h"

* src/copy.c: Don't include "fiemap.h".

13 years agotests: factor fiemap-related predicate into init.cfg
Jim Meyering [Mon, 31 Jan 2011 13:44:15 +0000 (14:44 +0100)]
tests: factor fiemap-related predicate into init.cfg

* tests/init.cfg (fiemap_capable_): New function.
* tests/cp/fiemap-perf: Use it.
* tests/cp/sparse-fiemap: Likewise.
* tests/cp/fiemap-2: Likewise.

13 years agomaint: update copyright year lists in new files
Jim Meyering [Mon, 31 Jan 2011 12:42:49 +0000 (13:42 +0100)]
maint: update copyright year lists in new files

* src/extent-scan.h: Update copyright year list.
* src/extent-scan.c: Likewise.
* tests/cp/sparse-fiemap: Likewise.

13 years agotests: modernize sparse-fiemap test
Jim Meyering [Mon, 31 Jan 2011 12:40:26 +0000 (13:40 +0100)]
tests: modernize sparse-fiemap test

* tests/cp/sparse-fiemap: Use print_ver_, not open-coded VERBOSE test.

13 years agotests: remove duplicate fiemap-perf test
Jim Meyering [Mon, 31 Jan 2011 12:35:55 +0000 (13:35 +0100)]
tests: remove duplicate fiemap-perf test

* tests/cp/fiemap-perf: Copy block-comparing code from sparse-fiemap.
* tests/cp/sparse-fiemap: The same test was here, alongside a much
more involved test.  Remove it, now that it is in its own file.

13 years agodoc: NEWS: mention cp's improvement
Jim Meyering [Sun, 30 Jan 2011 20:27:12 +0000 (21:27 +0100)]
doc: NEWS: mention cp's improvement

* NEWS (New Features): cp now copies sparse files efficiently.

13 years agobuild: update gnulib submodule to latest
Jim Meyering [Sun, 30 Jan 2011 08:21:57 +0000 (09:21 +0100)]
build: update gnulib submodule to latest

13 years agocopy, tee: assume EINTR is always defined: remove #ifdefs
Jim Meyering [Sun, 30 Jan 2011 15:12:56 +0000 (16:12 +0100)]
copy, tee: assume EINTR is always defined: remove #ifdefs

Don't use "#ifdef EINTR".  dd.c has been doing that since 2004.
* src/copy.c (sparse_copy): Remove #ifdef...#endif around EINTR use.
* src/tee.c (tee_files): Remove #ifdef...#endif around EINTR use.
If we need it, add something like this in system.h:
/* When EINTR is not defined, define it to an improbable value
   so that each use does not have to be #ifdef'd.  */
 #ifndef EINTR
 # define EINTR 999988
 #endif

13 years agotests: cp/fiemap: exercise previously-failing parts
Jim Meyering [Thu, 27 Jan 2011 14:17:42 +0000 (15:17 +0100)]
tests: cp/fiemap: exercise previously-failing parts

* tests/cp/fiemap-2: New test.
* tests/Makefile.am (TESTS): Add it.

13 years agocopy: make extent_copy use sparse_copy, rather than its own code
Jim Meyering [Fri, 28 Jan 2011 20:19:50 +0000 (21:19 +0100)]
copy: make extent_copy use sparse_copy, rather than its own code

* src/copy.c (extent_copy): Before this change, extent_copy would fail
to create holes, thus breaking --sparse=auto and --sparse=always.
I.e., copying a large enough file of all zeros, cp --sparse=always
should introduce a hole, but with extent_copy, it would not.

13 years agocopy: remove obsolete comment
Jim Meyering [Thu, 27 Jan 2011 20:01:07 +0000 (21:01 +0100)]
copy: remove obsolete comment

* src/copy.c (sparse_copy): Remove now-obsolete comment about
how we used to work around lack of ftruncate.  Combine nested
if conditions into one.

13 years agocopy: factor sparse-copying code into its own function, because
Jim Meyering [Thu, 27 Jan 2011 19:57:17 +0000 (20:57 +0100)]
copy: factor sparse-copying code into its own function, because

we're going to have to use it from within extent_copy, too.
* src/copy.c (sparse_copy): New function, factored out of...
(copy_reg): ...here.
Remove now-unused locals.

13 years agofiemap copy: avoid leak-on-error
Jim Meyering [Thu, 27 Jan 2011 16:49:04 +0000 (17:49 +0100)]
fiemap copy: avoid leak-on-error

* src/copy.c (extent_copy): Don't leak an extent_scan buffer on
failed lseek, read, or write.

13 years agofiemap copy: avoid a performance hit due to very small buffer
Jim Meyering [Thu, 27 Jan 2011 16:30:08 +0000 (17:30 +0100)]
fiemap copy: avoid a performance hit due to very small buffer

* src/copy.c (extent_copy): Don't let what should have been a
temporary reduction of buf_size (to handle a short ext_len) become
permanent and thus impact the performance of all further iterations.

13 years agofiemap copy: simplify post-loop logic; improve comments
Jim Meyering [Thu, 27 Jan 2011 18:00:48 +0000 (19:00 +0100)]
fiemap copy: simplify post-loop logic; improve comments

* src/copy.c (extent_copy): Avoid duplication in post-loop
extend-to-desired-length code.

13 years agofiemap copy: rename some locals
Jim Meyering [Thu, 27 Jan 2011 17:28:25 +0000 (18:28 +0100)]
fiemap copy: rename some locals

(extent_copy): Rename locals: s/*ext_logical/*ext_start/

13 years agotests: ensure that FIEMAP-enabled cp copies a sparse file efficiently
Jim Meyering [Fri, 28 Jan 2011 21:31:23 +0000 (22:31 +0100)]
tests: ensure that FIEMAP-enabled cp copies a sparse file efficiently

* tests/cp/fiemap-perf: New file.
* tests/Makefile.am (TESTS): Add it.

13 years agocopy: don't allocate a separate buffer just for extent-based copy
Jim Meyering [Sat, 22 Jan 2011 12:09:08 +0000 (13:09 +0100)]
copy: don't allocate a separate buffer just for extent-based copy

* src/copy.c (copy_reg): Move use of extent_scan to just *after*
we allocate the main copying buffer, so we can...
(extent_scan): Take a new parameter, BUF, and use that rather
than allocating a private buffer.  Update caller.

13 years agocopy: tweak variable name; improve a comment
Jim Meyering [Sat, 22 Jan 2011 11:55:58 +0000 (12:55 +0100)]
copy: tweak variable name; improve a comment

* src/copy.c (copy_reg): Rename a variable to make more sense from
caller's perspective: s/require_normal_copy/normal_copy_required/.
This is an output-only variable, and the original name could make
it look like an input (or i&o) variable.

13 years agocopy: call extent_copy also when make_holes is false, ...
Jim Meyering [Sat, 22 Jan 2011 11:36:03 +0000 (12:36 +0100)]
copy: call extent_copy also when make_holes is false, ...

so that we benefit from using extents also when reading a sparse
input file with --sparse=never.
* src/copy.c (copy_reg): Remove erroneous test of "make_holes"
so that we call extent_copy also when make_holes is false.
Otherwise, what's the point of that parameter?

13 years agocopy: remove else-after-goto and adjust indentation
Jim Meyering [Sat, 22 Jan 2011 11:30:21 +0000 (12:30 +0100)]
copy: remove else-after-goto and adjust indentation

* src/copy.c (copy_reg): Remove useless else-after-goto.

13 years agoextent-scan: adjust naming and formatting
Jim Meyering [Mon, 11 Oct 2010 09:19:02 +0000 (11:19 +0200)]
extent-scan: adjust naming and formatting

* src/extent-scan.h [struct extent_scan]: Rename member:
s/hit_last_extent/hit_final_extent/.  "final" is clearer,
since "last" can be interpreted as "preceding".
Rename extent-scan functions to start with extent_scan_.
* src/Makefile.am (copy_sources): Also distribute extent-scan.h.
* src/extent-scan.c: Don't include error.h or quote.h.  Neither is used.
* src/copy.c: shorten a comment to fit in 80 columns
* src/extent-scan.c, src/extent-scan.h: Correct formatting.

13 years agofiemap copy: don't let write failure go unreported; adjust style, etc.
Jim Meyering [Mon, 11 Oct 2010 08:39:50 +0000 (10:39 +0200)]
fiemap copy: don't let write failure go unreported; adjust style, etc.

* src/copy.c (write_zeros): Add comments.
(extent_copy): Move decls of "ok" and "i" down to scope where used.
Adjust comments.
Rename local: s/holes_len/hole_size/
Print a diagnostic upon failure to write zeros.

13 years agofiemap copy: add extent-scan.[ch], avoid a double-free and reorganize
jeff.liu [Wed, 29 Sep 2010 08:11:41 +0000 (16:11 +0800)]
fiemap copy: add extent-scan.[ch], avoid a double-free and reorganize

Changes:
========
1. fix write_zeros() per Jim's comments.
2. remove char const *fname from struct extent_scan.
3. change the signature of open_extent_scan() from
"void open_extent_scan(struct extent_scan **scan)" to
"void open_extent_scan(struct extent_scan *scan)" to avoid having
to malloc the extent_scan variable; instead save it on the stack.
4. move close_extent_scan() from a function defined in extent-scan.c
to extent-scan.h as a macro definition, but it does nothing for now,
since initial extent scan defined at stack.
5. add a macro "free_extents_info()" defined at extent-scan.h to
release the memory allocated to extent info which should be called
combine with get_extents_info(), it just one line, so IMHO, define
it as macro should be ok.

* src/extent-scan.c: New file; functions to read "extents".
* src/extent-scan.h: Header file of extent-scan.c.
* src/Makefile.am: Reference it and link it to copy_source.
* src/copy.c: Use the new functions and avoid double-free.

13 years agobuild: distribute new test script, filefrag-extent-compare
Jim Meyering [Sun, 13 Jun 2010 14:34:42 +0000 (16:34 +0200)]
build: distribute new test script, filefrag-extent-compare

* tests/Makefile.am (EXTRA_DIST): Add filefrag-extent-compare.

13 years agobuild: distribute new file, fiemap.h
Jim Meyering [Sun, 13 Jun 2010 14:19:29 +0000 (16:19 +0200)]
build: distribute new file, fiemap.h

* src/Makefile.am (noinst_HEADERS): Add fiemap.h.

13 years agocopy.c: add FIEMAP_FLAG_SYNC to fiemap ioctl
Jie Liu [Fri, 11 Jun 2010 08:29:02 +0000 (16:29 +0800)]
copy.c: add FIEMAP_FLAG_SYNC to fiemap ioctl

* src/copy.c (fiemap_copy): Force kernel to sync the source
file before mapping.

13 years agofiemap.h: include <stdint.h>, not <linux/types.h>
Jim Meyering [Wed, 9 Jun 2010 06:42:30 +0000 (08:42 +0200)]
fiemap.h: include <stdint.h>, not <linux/types.h>

* src/fiemap.h: Include stdint.h, not linux/types.h,
now that this file uses only portable type names.

13 years agocopy.c: ensure proper alignment of fiemap buffer
Paul Eggert [Wed, 9 Jun 2010 06:15:07 +0000 (08:15 +0200)]
copy.c: ensure proper alignment of fiemap buffer

* src/copy.c (fiemap_copy): Ensure that our fiemap buffer
is large enough and well-aligned.
Replace "0LL" with equivalent "0" as 3rd argument to lseek.

13 years agocopy.c: adjust comments, tweak semantics
Jim Meyering [Sat, 5 Jun 2010 08:17:48 +0000 (10:17 +0200)]
copy.c: adjust comments, tweak semantics

* src/copy.c (fiemap_copy): Rename from fiemap_copy_ok.
Add/improve comments.
Remove local, "fail".
(fiemap_copy): Do not require caller to set
"normal_copy_required" before calling fiemap_copy.
Report ioctl failure if it's the 2nd or subsequent call.

13 years agotests: relax the root-tests cross-check
Jim Meyering [Sat, 29 May 2010 19:22:40 +0000 (21:22 +0200)]
tests: relax the root-tests cross-check

* cfg.mk (sc_root_tests): Allow spaces before "require_root_",
now that tests/cp/sparse-fiemap has a conditional use.

13 years agotests: accommodate varying filefrag -v "flags" output
Jim Meyering [Fri, 11 Jun 2010 12:34:03 +0000 (14:34 +0200)]
tests: accommodate varying filefrag -v "flags" output

* tests/cp/sparse-fiemap: Accommodate values other than "eof"
in the "flags" column of filefrag -v output

13 years agotests: exercise more of the new FIEMAP copying code
Jim Meyering [Fri, 21 May 2010 16:28:42 +0000 (18:28 +0200)]
tests: exercise more of the new FIEMAP copying code

* tests/cp/sparse-fiemap: Ensure that a file with many extents
(more than fit in copy.c's internal buffer) is copied properly.
Don't require root access if current partition is btrfs or xfs.
Use init.sh, not test-lib.sh.
* tests/filefrag-extent-compare: New file.

13 years agotests: add a new test for FIEMAP-copy
Jie Liu [Thu, 13 May 2010 14:17:53 +0000 (22:17 +0800)]
tests: add a new test for FIEMAP-copy

* tests/cp/sparse-fiemap: Add a new test for FIEMAP-copy against a
loopbacked ext4 partition.
* tests/Makefile.am (sparse-fiemap): Reference the new test.

13 years agocp: copy sparse files efficiently using the FIEMAP ioctl
Jie Liu [Thu, 13 May 2010 14:09:30 +0000 (22:09 +0800)]
cp: copy sparse files efficiently using the FIEMAP ioctl

* src/fiemap.h: Add fiemap.h for fiemap ioctl(2) support.  Copied
from linux's include/linux/fiemap.h, with minor formatting changes.
* src/copy.c (copy_reg): Now, when `cp' is invoked with --sparse=[WHEN],
we will try to do FIEMAP-copy if the underlying file system
supports it, and fall back to a normal copy if it fails.

13 years agodoc: add alternatives for field processing not supported by cut
Pádraig Brady [Wed, 24 Nov 2010 08:37:23 +0000 (08:37 +0000)]
doc: add alternatives for field processing not supported by cut

* doc/coreutils.texi (cut invocation): Remove the tr -s '[:blank:]'
example, as it doesn't handle leading and trailing blanks.  Add `awk`
examples for common field processing operations often asked about.
Also document a `join` hack, to achieve the same thing.  Note the
join options are ordered so as to be compatible with other systems.

13 years agojoin: don't report disorder against an empty file
Pádraig Brady [Thu, 27 Jan 2011 07:17:16 +0000 (07:17 +0000)]
join: don't report disorder against an empty file

This allows one to use join as a field extractor like:
  join -a1 -o 1.3,1.1 - /dev/null

* src/join.c (join): Don't flag unpairable lines when
one of the files is empty.
* tests/misc/join: Add a new test for empty input, and adjust
a previous test that was only checking against empty input.
* doc/coreutils.texi (join invocation): Document the change.
* NEWS: Likewise.

13 years agojoin: ensure --header skips the order check with empty files
Pádraig Brady [Fri, 14 Jan 2011 08:46:21 +0000 (08:46 +0000)]
join: ensure --header skips the order check with empty files

* src/join.c: Skip the header even if one of the files is empty.
* tests/misc/join: Add a test case.
* NEWS: Mention the fix

13 years agojoin: add -o 'auto' to output a constant number of fields per line
Pádraig Brady [Wed, 5 Jan 2011 11:52:54 +0000 (11:52 +0000)]
join: add -o 'auto' to output a constant number of fields per line

Lines with a different number of fields than the first line,
will be truncated or padded.

* src/join.c (prfields): A new function refactored from prjoin(),
to output all but the join field.
(prjoin): Don't swap line1 and line2 when line1 is blank
so that the padding is applied to the right place.
(main): Handle the -o 'auto' option.
* tests/misc/join: Add 6 new cases to test the auto format.
* NEWS: Mention the change in behavior.
Suggestion from Assaf Gordon

13 years agotests: remove obsolete uses of "$$" in temporary file names
Jim Meyering [Fri, 28 Jan 2011 18:23:21 +0000 (19:23 +0100)]
tests: remove obsolete uses of "$$" in temporary file names

Those were useful when tests might have been run in the same
directory and in parallel.  Now, each test is run in a newly-
created empty directory.
* tests/cp/backup-1: Remove obsolete uses of "$$".
* tests/cp/same-file: Likewise.
* tests/dd/misc: Likewise.
* tests/mv/part-symlink: Likewise.
* tests/mv/to-symlink: Likewise.
* tests/touch/fail-diag: Likewise.

13 years agotests: don't hide all trace of the vc_exe_in_TESTS test
Jim Meyering [Tue, 25 Jan 2011 13:29:07 +0000 (14:29 +0100)]
tests: don't hide all trace of the vc_exe_in_TESTS test

There was a non-negligible delay after running a single test.
Now, you'll know why when you see this test's name.
* tests/check.mk (vc_exe_in_TESTS): Don't @-hide commands.
Use $(AM_V_GEN) instead.

13 years agotests: minor correction
Andreas Schwab [Tue, 25 Jan 2011 17:29:07 +0000 (18:29 +0100)]
tests: minor correction

* tests/du/move-dir-while-traversing: Ignoring SIGTSTP is enough;
don't also attempt to ignore SIGSTOP, it cannot be handled or ignored.
Spotted by Andreas Schwab.

13 years agotests: avoid FP failure due to suspension
Jim Meyering [Tue, 25 Jan 2011 11:36:22 +0000 (12:36 +0100)]
tests: avoid FP failure due to suspension

* tests/du/move-dir-while-traversing: Prohibit suspension,
to avoid false-positive failure.

13 years agotests: avoid rare FP failure in new du test
Jim Meyering [Tue, 25 Jan 2011 10:09:27 +0000 (11:09 +0100)]
tests: avoid rare FP failure in new du test

* tests/du/move-dir-while-traversing: Create an even larger tree
to avoid a false-positive failure due to du terminating before
the rename is triggered.

13 years agosplit: avoid a new, spurious warning from gcc-4.6.0
Jim Meyering [Mon, 24 Jan 2011 08:38:40 +0000 (09:38 +0100)]
split: avoid a new, spurious warning from gcc-4.6.0

* src/split.c (lines_rr) [IF_LINT]: Initialize files, now that
rawhide's gcc-4.6.0 would otherwise warn about use-uninitialized.

13 years agotail: avoid new diagnostic when applying -f to a pipe on linux-2.3.38
Jim Meyering [Mon, 24 Jan 2011 08:37:10 +0000 (09:37 +0100)]
tail: avoid new diagnostic when applying -f to a pipe on linux-2.3.38

* src/tail.c (fremote): Do not print a diagnostic when
fstatfs (pipe_FD, &buf) fails, as it now does on linux-2.3.38.
This avoids the spurious failure of tests/misc/tail's f-pipe-1
test, when running in input-from-pipe mode.

13 years agodoc: fix wording in warning about potential conflict with built-in
Jim Meyering [Fri, 21 Jan 2011 13:02:27 +0000 (14:02 +0100)]
doc: fix wording in warning about potential conflict with built-in

* doc/coreutils.texi (mayConflictWithShellBuiltIn): Fix wording.

13 years agomanual: document floating point better
Paul Eggert [Fri, 21 Jan 2011 18:59:32 +0000 (10:59 -0800)]
manual: document floating point better

* doc/coreutils.texi (Floating point): New section.
(od invocation, tail invocation, sort invocation, printf invocation):
(sleep invocation, seq invocation): Refer and defer to it.  See
<http://lists.gnu.org/archive/html/bug-coreutils/2011-01/msg00031.html>.

13 years agobuild: update gnulib submodule to latest
Jim Meyering [Thu, 20 Jan 2011 09:50:11 +0000 (10:50 +0100)]
build: update gnulib submodule to latest

The previous gnulib submodule reference was *still* to a
non-public commit.  My submodule had a stray commit, so
the reference was always to a local merge commit.
Reported by Rob Vermaas.

13 years agobuild: update gnulib submodule to latest
Jim Meyering [Thu, 20 Jan 2011 09:00:42 +0000 (10:00 +0100)]
build: update gnulib submodule to latest

The previous gnulib submodule reference was to a non-public commit.
Reported by Rob Vermaas.

13 years agomaint: use slightly more efficient process in README-release
Jim Meyering [Tue, 4 Jan 2011 11:47:24 +0000 (12:47 +0100)]
maint: use slightly more efficient process in README-release

* README-release: Run cheaper root-only tests first.
Use half of processing units (not just 1) for the expensive tests.

13 years agotests: avoid FP failure in new du test
Jim Meyering [Tue, 18 Jan 2011 21:32:33 +0000 (22:32 +0100)]
tests: avoid FP failure in new du test

* tests/du/move-dir-while-traversing: Create a larger tree to
avoid a false-positive failure due to du terminating before
the rename is triggered.

13 years agobuild: update gnulib submodule to latest
Jim Meyering [Tue, 18 Jan 2011 20:07:57 +0000 (21:07 +0100)]
build: update gnulib submodule to latest

13 years agodoc: update NEWS
Jim Meyering [Tue, 18 Jan 2011 08:45:00 +0000 (09:45 +0100)]
doc: update NEWS

* NEWS: Note when the uniq bug was introduced.
It was mine, commit 1d9b3de9, "uniq: remove redundant test".

13 years agodoc: show how to shred more efficiently
Jim Meyering [Mon, 17 Jan 2011 10:32:35 +0000 (11:32 +0100)]
doc: show how to shred more efficiently

* doc/coreutils.texi (shred invocation): Give an example showing how
to invoke shred in single-pass mode, and warn that -n0 --zero may
be inadequate.

13 years agouniq: replace a wasteful loop with simple calculation
Jim Meyering [Mon, 17 Jan 2011 11:36:58 +0000 (12:36 +0100)]
uniq: replace a wasteful loop with simple calculation

* src/uniq.c (find_field): Remove the byte-skipping loop altogether.
Instead, perform the simple calculation.  This results in a 10%
performance improvement for large byte offsets.

13 years agotests: add a test for today's uniq bug
Jim Meyering [Mon, 17 Jan 2011 11:27:55 +0000 (12:27 +0100)]
tests: add a test for today's uniq bug

* tests/misc/uniq-perf: New file.
* tests/Makefile.am (TESTS): Add it.

13 years agouniq: don't continue field processing after end of line
Sami Kerola [Sun, 16 Jan 2011 23:27:06 +0000 (00:27 +0100)]
uniq: don't continue field processing after end of line

* NEWS (Bug fixes): Mention it.
* src/uniq.c (find_field): Stop processing loop when end of line
is reached.  Before this fix, 'uniq -f 10000000000 /etc/passwd'
would run for a very long time.

13 years agodoc: specify how tr, echo, printf treat octal numbers
Ondřej Vašík [Fri, 14 Jan 2011 15:38:57 +0000 (16:38 +0100)]
doc: specify how tr, echo, printf treat octal numbers

* doc/coreutils.texi (tr's Character sets): Document how a 9-bit
octal value is interpreted.  tr does not ignore the ninth bit.
(echo invocation, printf invocation): Document that any ninth
bit in \OOO is ignored. (http://debbugs.gnu.org/7574)

13 years agomaint: refactor to use read-file from gnulib
Pádraig Brady [Tue, 11 Jan 2011 19:30:28 +0000 (19:30 +0000)]
maint: refactor to use read-file from gnulib

* bootstrap.conf: Add the read-file module
* src/ptx.c: Replace the original code which would
needlessly read SIZE_MAX bytes of files larger than this.
* src/shuf.c: Replace the original code.

13 years agomaint: trivial system header file cleanups
Pádraig Brady [Thu, 13 Jan 2011 09:36:38 +0000 (09:36 +0000)]
maint: trivial system header file cleanups

* src/system.h: Note where it should be included, and
make ordering check portable to GLIBC > 2
* src/copy.c: Move <sys/ioctl.h> along with other system headers
as is done elsewhere.
* src/install.c: Move <sys/wait.h> along with other system headers
as is done elsewhere.
* src/ptx.c: Include <regex.h> rather than "regex.h" as
is done elsewhere.  Note <regex.h> is kept after "system.h"
as per commit dba300a0.

13 years agodoc: clean up HACKING guidelines
Jim Meyering [Wed, 12 Jan 2011 20:20:34 +0000 (21:20 +0100)]
doc: clean up HACKING guidelines

* HACKING: Remove mention of "indent-tabs-mode: nil", since
we've remove all of those directives.  No longer needed.
Remove dated (pre-emacs-23) reference regarding WhiteSpace mode.

13 years agognulib: Also use dtoastr and ldtoastr modules.
Paul Eggert [Wed, 12 Jan 2011 02:07:15 +0000 (18:07 -0800)]
gnulib: Also use dtoastr and ldtoastr modules.
This adjusts to the recent splitting of the ftoastr module into 3
<http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00199.html>.
* bootstrap.conf (gnulib_modules): Add dtoastr, ldtoastr,
as coreutils needs all 3 modules now.

13 years agobuild: update gnulib submodule to latest
Paul Eggert [Wed, 12 Jan 2011 01:52:40 +0000 (17:52 -0800)]
build: update gnulib submodule to latest

13 years agorm: ignore errno related to invalid file names
Nadav Har'El [Tue, 11 Jan 2011 14:53:07 +0000 (07:53 -0700)]
rm: ignore errno related to invalid file names

* src/remove.c (nonexistent_file_errno): Also skip EINVAL and
EILSEQ, for at least smbfs rejection of '*' in file names.
* NEWS: Mention the fix.

13 years agobuild: update gnulib submodule to latest
Jim Meyering [Mon, 10 Jan 2011 06:59:00 +0000 (07:59 +0100)]
build: update gnulib submodule to latest

13 years agodu: don't abort when a subdir is renamed during traversal
Jim Meyering [Sat, 8 Jan 2011 16:44:55 +0000 (17:44 +0100)]
du: don't abort when a subdir is renamed during traversal

* NEWS (Bug fixes): Mention it.
* src/du.c (prev_level): Move declaration "up" to file-scope global.
(du_files): Reset prev_level to 0 upon abnormal fts_read termination.
Reported by Johathan Nieder in http://bugs.debian.org/609049
Also, improve a diagnostic.
* tests/du/move-dir-while-traversing: Test for the above.
* tests/Makefile.am (TESTS): Add it.

13 years agomaint: suppress some clang scan-build warnings
Pádraig Brady [Sat, 18 Dec 2010 23:06:10 +0000 (23:06 +0000)]
maint: suppress some clang scan-build warnings

* src/pr.c (char_to_clump): Remove a dead store.
* src/remove.c (fts_skip_tree): Likewise.
* src/sort.c (key_warnings): Likewise.
(sort): Suppress an uninitialized pointer warning.

13 years agomaint: replace uses of ignore_ptr with ignore_value
Pádraig Brady [Wed, 5 Jan 2011 12:01:14 +0000 (12:01 +0000)]
maint: replace uses of ignore_ptr with ignore_value

* gnulib: Update for enhanced ignore_value()
* src/chcon.c (process_file): Don't use the deprecated ignore_ptr.
* src/chmod.c (process_file): Likewise.
* src/chown-core.c (change_file_owner): Likewise.

13 years agopost-release administrivia
Jim Meyering [Tue, 4 Jan 2011 11:56:30 +0000 (12:56 +0100)]
post-release administrivia

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

13 years agoversion 8.9 v8.9
Jim Meyering [Tue, 4 Jan 2011 11:18:32 +0000 (12:18 +0100)]
version 8.9

* NEWS: Record release date.

13 years agobuild: update gnulib to latest; portability fixes
Jim Meyering [Tue, 4 Jan 2011 11:17:21 +0000 (12:17 +0100)]
build: update gnulib to latest; portability fixes

13 years agomaint: update all copyright year number ranges
Jim Meyering [Sat, 1 Jan 2011 10:37:32 +0000 (11:37 +0100)]
maint: update all copyright year number ranges

Run "make update-copyright".

13 years agobuild: update gnulib for version-etc copyright year update
Jim Meyering [Sat, 1 Jan 2011 10:10:00 +0000 (11:10 +0100)]
build: update gnulib for version-etc copyright year update

* tests/sample-test: Update copyright to 2011, to appease syntax-check.

13 years agomaint: generate much of the THANKS file
Jim Meyering [Mon, 17 Nov 2008 11:05:27 +0000 (12:05 +0100)]
maint: generate much of the THANKS file

Before this change, we had a tendency to manually list each
contributor's name in THANKS.  Now, each commit "Author" is
included in the generated THANKS file automatically, and most
of the old THANKS file is now a template, THANKS.in.
We'll still have to manually list the names of people who report
problems without a usable patch.

* THANKS.in: New file, derived from THANKS, but removing names of
those who are listed as git log 'Author:'s.
* THANKS: Remove file.
* thanks-gen: New file.
* Makefile.am (THANKS): New rule.
(EXTRA_DIST): Add .mailmap, THANKS.in and thanks-gen.
* .gitignore: Add THANKS and THANKS-to-translators.
* .mailmap: Unify on single address and name-spelling per contributor.

13 years agomaint: update to latest gnulib, for testsuite improvement
Eric Blake [Fri, 31 Dec 2010 16:50:46 +0000 (09:50 -0700)]
maint: update to latest gnulib, for testsuite improvement

* gnulib: Update to latest for init.sh fix.
* bootstrap: Resync from gnulib.
* tests/init.sh: Likewise.

13 years agomaint: allow gettext 0.17 again
Eric Blake [Thu, 30 Dec 2010 20:08:32 +0000 (13:08 -0700)]
maint: allow gettext 0.17 again

Commit 041c9c47 traded the 'gettext' module for the lighter 'gettext-h'
module, so as to not require the latest gettext release (we only need
the latest release if we ship gettext as a dependent library, but
coreutils has long preferred to use it as an external library).
But that commit overlooked two places necessary to allow the use of
gettext 0.17.

This does not force you to downgrade (using gettext 0.18.1.1 is still
just fine), nor does it affect tarballs (once a tarball is built
with a given gettext version, it can be built on other machines
regardless of what gettext version is present).

* bootstrap.conf (buildreq): Relax prerequisite.
* configure.ac (AM_GNU_GETTEXT_VERSION): Likewise.

13 years agosplit: fix the suffix length calculation
Pádraig Brady [Thu, 30 Dec 2010 01:36:59 +0000 (01:36 +0000)]
split: fix the suffix length calculation

* src/split.c (set_suffix_length): Only auto-calculate
the suffix length when the number of files is specified.
* tests/misc/split-a: Add a case to trigger the bug,
and exercise the suffix length auto-calculation.
* NEWS: Mention the fix.
Reported by Dmitry V. Levin and Sergey Vlasov at
https://bugzilla.altlinux.org/show_bug.cgi?id=24841

13 years agocoreutils: keep lines within 80-column limits
Paul Eggert [Tue, 28 Dec 2010 20:28:48 +0000 (12:28 -0800)]
coreutils: keep lines within 80-column limits

* cfg.mk (LINE_LEN_MAX, FILTER_LONG_LINES): New macros.
(sc_long_lines): New rule.
* HACKING: Use shorter URLs to the same material.
* doc/Makefile.am, doc/coreutils.texi, m4/boottime.m4:
* man/help2man, man/stdbuf.x, src/Makefile.am, src/cat.c, src/copy.c:
* src/cp.c, src/dd.c, src/df.c, src/du.c, src/groups.c, src/install.c:
* src/ls.c, src/md5sum.c, src/mv.c, src/od.c, src/pinky.c, src/ptx.c:
* src/readlink.c, src/remove.c, src/rmdir.c, src/setuidgid.c:
* src/sort.c, src/tail.c, src/touch.c, tests/Coreutils.pm:
* tests/cp/existing-perm-race, tests/cp/perm, tests/cp/preserve-gid:
* tests/du/2g, tests/du/long-from-unreadable, tests/init.sh:
* tests/install/basic-1, tests/ls/nameless-uid:
* tests/ls/readdir-mountpoint-inode, tests/misc/chroot-credentials:
* tests/misc/cut, tests/misc/date, tests/misc/join, tests/misc/md5sum:
* tests/misc/sha1sum, tests/misc/sha224sum, tests/misc/sort:
* tests/misc/sort-continue, tests/misc/sort-files0-from:
* tests/misc/sort-rand, tests/misc/stdbuf, tests/misc/tr:
* tests/misc/uniq, tests/mv/atomic, tests/mv/part-fail:
* tests/mv/part-symlink, tests/mv/sticky-to-xpart, tests/pr/pr-tests:
* tests/rm/fail-2eperm, tests/rm/interactive-always:
Reformat to fit within 80 columns.
* doc/Makefile.am (BAD_POSIX_PERL): New macro.
* doc/coreutils.texi: Reword slightly, to make menus and
index lines shorter.
* src/md5sum.c: Redo --help output so that it fits within 79
columns, since that's a bit more portable and all the other --help
strings fit in 79 columns.

13 years agomaint: avoid syntax-check failure due to unused #include
Jim Meyering [Fri, 24 Dec 2010 13:59:06 +0000 (14:59 +0100)]
maint: avoid syntax-check failure due to unused #include

* src/getlimits.c: Don't include "c-ctype.h"; no longer used.

13 years agocsplit: diagnose file counter wraparound
Paul Eggert [Thu, 23 Dec 2010 08:07:35 +0000 (00:07 -0800)]
csplit: diagnose file counter wraparound

* src/csplit.c (create_output_file): Detect overflow when the
file counter wraps around, and exit with a diagnostic.  Formerly
the code silently wrapped around and wrote to the wrong file,
losing output data.

13 years agosort: minor performance tweak with num_processors
Paul Eggert [Thu, 23 Dec 2010 07:29:57 +0000 (23:29 -0800)]
sort: minor performance tweak with num_processors

* src/sort.c (main): Don't invoke num_processors twice.

13 years agogetlimits: port to hosts with very wide int, or non-ASCII
Paul Eggert [Thu, 23 Dec 2010 07:11:05 +0000 (23:11 -0800)]
getlimits: port to hosts with very wide int, or non-ASCII

* src/getlimits.c (decimal_ascii_add): Remove, replacing with ...
(decimal_absval_add_one): New function, with different signature,
which does not assume ASCII.  All callers changed.
(print_int): Remove assumptions that integers fit in 206 bits, and
that characters are ASCII.  These assumptions are portable in
practice but are easy to remove here.

13 years agopost-release administrivia
Jim Meyering [Wed, 22 Dec 2010 17:19:37 +0000 (18:19 +0100)]
post-release administrivia

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

13 years agoversion 8.8 v8.8
Jim Meyering [Wed, 22 Dec 2010 16:43:50 +0000 (17:43 +0100)]
version 8.8

* NEWS: Record release date.