Compare commits

...

223 Commits
next ... v8.4

Author SHA1 Message Date
Jim Meyering
954ef23ed9 version 8.4
* NEWS: Record release date.
2010-01-13 21:57:54 +01:00
Pádraig Brady
e55d882811 tests: avoid spurious failures on older shells
* tests/tail-2/inotify-hash-abuse: Use kill rather than wait
to determine if the tail process is still running.
* tests/tail-2/inotify-hash-abuse2: Ditto.
2010-01-13 13:42:49 +01:00
Jim Meyering
f28c7d959b tests: work around spurious test failure with OpenBSD4.5's /bin/sh
* tests/ls/infloop: OpenBSD4.5's /bin/sh would mistakenly include
"set -x"-output in an application's stderr stream when stderr is
redirected before stdout.  This was causing one spurious test failure.
The work-around: redirect stdout first.
Reported by Nelson Beebe.
2010-01-13 10:55:55 +01:00
Jim Meyering
3b498ba141 tests: don't silently skip the sort-version tests
* tests/misc/sort-version: Don't use <<- and indented here-doc contents.
s/<<-/<</ and unindent the here-document contents.  Otherwise,
bash would ignore the indented delimiter and use EOF, thus silently
skipping this test.  OpenBSD5.4's shell reported the failure:
  $ printf 'cat<<-x\n foo\n x\n'|sh
  sh: <stdin>[4]: here document `x' unclosed
  [Exit 1]
by contrast, bash warns but still exits successfully:
  $ printf 'cat<<-x\n foo\n x\n'|bash && echo you lose
  bash: line 3: warning: here-document at line 1 delimited by \
    end-of-file (wanted `x')
   foo
   x
  you lose
2010-01-13 10:21:02 +01:00
Eric Blake
39243f0ea8 tests: avoid spurious failure on old kernel
* tests/touch/no-dereference: Skip test if utimensat doesn't
support symlinks.
Reported by Bernhard Voelker.
2010-01-12 06:00:05 -07:00
Pádraig Brady
a4da48c4f5 maint: update info about getting the prerequisite automake
* README-prereq: Now that we require automake-1.11.1
update the instructions from getting it from the git repo
2010-01-12 10:32:08 +00:00
Pádraig Brady
d89755469b maint: remove an already handled item from TODO
* TODO: The question regarding printf octal escapes is answered in
commit 4bcefa62, 2003-04-21, "Fix printf POSIX compatibility bug ..."
2010-01-12 10:29:36 +00:00
Pádraig Brady
b81cdbf31e maint: fix tests on solaris by using /usr/xpg4/bin
* tests/check.mk: Prepend /usr/xpg4/bin to the $PATH if present.
Using the more standard utilities allows tests such as misc/printenv,
which uses the -E option to grep, to complete.
2010-01-12 10:26:27 +00:00
Jim Meyering
0a6bbb5947 build: update gnulib, to get fixed getlogin-related tests 2010-01-12 09:56:07 +01:00
Jim Meyering
6beca4248f build: fix build failure due to missing libxattr
Configure is supposed to detect insufficient XATTR support.
However, if a system has the required headers, but no library,
the configure script would mistakenly enable USE_XATTR.
* m4/xattr.m4 (gl_FUNC_XATTR): If the attr_copy_file function
is not found, don't set USE_XATTR.
Nelson Beebe reported a link failure on RHEL 5.3.
Also, do not let the combination of --disable-xattr and
a stray LIB_XATTR environment setting perturb the build.
* NEWS (Build-related): Mention it.
2010-01-12 08:06:47 +01:00
Jim Meyering
37b8bfda56 doc: mention the wchar.h vs. glibc build problem
* NEWS (Build-related): Mention the wchar.h issue.
2010-01-12 06:52:14 +01:00
Pádraig Brady
21a6a7f64c nproc: return a possibly more accurate total CPU count
* gnulib: Update, for num_processors() improvement.
* NEWS: Mention the fix.
2010-01-12 06:46:51 +01:00
Kamil Dudka
6454dd0f2f ls: reorder includes to work around broken <sys/capability.h>
* src/ls.c: Include <sys/capability.h> later, to avoid build
failure with a header from libcap-2.16-1 or earlier.
See http://bugzilla.redhat.com/483548 for details.
2010-01-12 06:31:20 +01:00
Eric Blake
d0f18197fc maint: move coreutils specific rule into cfg.mk
* gnulib: Update, for maint.mk improvement.
* cfg.mk (_makefile_at_at_check_excpetions): New rule, needed
for latest change to maint.mk.
2010-01-08 12:00:51 -07:00
Jim Meyering
21f4da0fb9 post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
2010-01-07 18:25:36 +01:00
Jim Meyering
201ba1a203 version 8.3
* NEWS: Record release date.
2010-01-07 18:13:26 +01:00
Jim Meyering
e06e7a8331 maint: change an email address in THANKS
* THANKS: Adjust Denis' address.
2010-01-07 07:17:06 +01:00
Eric Blake
67d3e26350 pr: ensure the page header line is of the required format
Before this change, with too long a file name, the name would
abut the date field on the left and possibly also the "Page N"
field on the right, rather than leaving a one-space separator
in each case.  Fixes a regression introduced on Mar 6 2009,
by commit a4053c5291

* src/pr.c (print_header): Ensure that there is at least one
space before and after the file name part of the header line.
* NEWS: Mention it.
* tests/pr/W20l24f-ll: s/xPage/ x Page/.
* THANKS: Update.
Reported by Denis McKeon, in https://savannah.gnu.org/bugs/?28492.
2010-01-06 21:07:23 -07:00
Eric Blake
72a0a8264d maint: apply correct license to auxiliary files
* gnulib: Update, for maint.mk improvements.
* HACKING: Use GFDL 1.3, not 1.2.
* NEWS: Likewise.
* README: Likewise.
* cfg.mk (old_NEWS_hash): Update accordingly.
* .gitignore: Ignore file created by 'make update-NEWS-hash'.
2010-01-06 21:05:52 -07:00
Jim Meyering
f52d939014 build: require newer versions of automake and autoconf
* configure.ac: Require autoconf-2.62 and automake-1.11.1 or newer.
* bootstrap.conf (buildreq): Require automake-1.11.1 or newer,
to ensure people use a version with the fix for CVE-2009-4029.
Note that the coreutils-8.2 tarball included a fixed Makefile.in.
Require autoconf-2.62, per automake.
2010-01-06 15:40:41 +01:00
Eric Blake
7a1f69aae0 cp, touch: avoid problem with new glibc
* gnulib: Update, for utimens fix.
* NEWS: Mention the fix.
Reported by Guillaume Ayoub in http://bugs.debian.org/563726.
See also http://bugzilla.redhat.com/552320.

Signed-off-by: Eric Blake <ebb9@byu.net>
2010-01-06 06:42:16 -07:00
Philip Rowlands
bbdc929602 doc: fix typo in NEWS
* NEWS: Fix typo: s/repeated/repeatedly/
2010-01-05 14:11:56 +01:00
Jim Meyering
4db2f5c6bc build: update gnulib submodule to latest 2010-01-05 09:08:07 +01:00
Jim Meyering
be6c13e7e0 maint: always free a buffer, to avoid even semblance of a leak
* src/tac.c (main): Free the input buffer in most cases.
2010-01-05 09:08:03 +01:00
Jim Meyering
dc0f5eb6a0 maint: use more readable operator: "||" rather than "|"
* src/cp.c (make_dir_parents_private): Use "||" rather than "|",
so that clang understands there is no undefined pointer dereference.
2010-01-04 16:46:44 +01:00
Jim Meyering
0faf3bf874 maint: record update-copyright options for this package
* cfg.mk: Next time, just run "make update-copyright".
2010-01-03 18:56:22 +01:00
Eric Blake
b7f2b51c42 ls: fix color of broken symlinks colored as target
* src/ls.c (print_color_indicator): When using 'LINK target' in
dircolors, treat broken symlink as C_ORPHAN.
* tests/misc/ls-misc (sl-dangle2, sl-dangle3, sl-dangle4)
(sl-dangle5): Test for it, and add more coverage.
* NEWS: Document it.
* THANKS: Update.
Reported by Chris Jones.
2010-01-01 13:41:46 -07:00
Jim Meyering
84db964925 df: use fputs in place of printf in a few more places
* src/df.c (print_header): Use fputs rather than printf in more places.
Suggested by Eric Blake.
2010-01-01 16:56:03 +01:00
Jim Meyering
49c5b690cb build: update gnulib submodule to latest 2010-01-01 14:06:48 +01:00
Jim Meyering
157c2bc55e maint: add a few copyrights; remove obsolete README file
* tests/README: Remove long-obsolete file.
* tests/Makefile.am (EXTRA_DIST): Remove README.
* tests/misc/truncate-dir-fail: Add copyright comment.
* tests/misc/selinux: Likewise.
* tests/misc/chcon: Likewise.
* tests/misc/chcon-fail: Likewise.
* tests/sample-test: Use only 2010 in this list.
2010-01-01 14:06:48 +01:00
Jim Meyering
1aa17dc89b maint: update all FSF copyright year lists to include 2010
Use this command:
git ls-files | grep -v COPYING \
  | xargs env UPDATE_COPYRIGHT_USE_INTERVALS=1 \
      build-aux/update-copyright
2010-01-01 14:06:47 +01:00
Stéphane Raimbault
6c8d432b1f pr --help: add missing space between short and long options usage message
* src/pr.c (usage): Add missing space.
2010-01-01 14:06:47 +01:00
Stéphane Raimbault
f1ab2e0227 pr --help: improve a line-break
* src/pr.c (usage): Move the newline character a bit farther.
2010-01-01 14:06:47 +01:00
Stéphane Raimbault
4668ae8f06 df: add comments to help translators align column headers
* src/df.c (print_header): Add a comment telling translators to
retain the message length, and another to align header translations.
2010-01-01 14:06:46 +01:00
Jim Meyering
b0782cb9ea maint: newer gnulib; don't hard-code my GPG key ID
* cfg.mk (gpg_key_ID): Remove definition, now that maint.mk automates it.
* gnulib: Update to latest.
2009-12-31 16:44:50 +01:00
Jim Meyering
f428e548e5 doc: update tail's documentation to allow for new -F semantics
* src/tail.c (usage): Reword tail -F description, so that it no
longer mentions details specific to the non-inotify implementation.
Also, join diagnostic strings (while staying under the 509-byte limit)
to ease formatting of translations.  The latter was prompted by
a report from Stéphane Raimbault.
* doc/coreutils.texi (tail invocation): Update description here, too.
2009-12-31 09:42:52 +01:00
Eric Blake
7e0c2b9a59 touch: work around ntfs-3g bug
* gnulib: Update, for utimensat fix.
* NEWS: Improve wording about touch fixes.
* THANKS: Update.
Reported by Stuart Citrin.
2009-12-30 20:33:39 -07:00
Jim Meyering
7f9e164d27 build: update gnulib submodule to latest 2009-12-30 11:24:16 +01:00
Jim Meyering
d3a4bc86cd doc: mention two tail -F bug fixes in NEWS
* NEWS (Bug fixes): Two tail -F fixes.
2009-12-30 11:22:55 +01:00
Jim Meyering
fe062d563a tail: test for a bug in inotify-enabled tail -F
tail -F a b would stop tracking additions to b after "mv a b".
* tests/tail-2/F-vs-rename: New file.
* tests/Makefile.am (TESTS): Add it.
2009-12-30 11:22:55 +01:00
Giuseppe Scrivano
2ead2365e0 tail -F: don't stop following the target of a rename
This fixes a bug whereby tail -F would fail to track changes
to a file that was a target of a rename, and when the source of
the rename was another tailed file.

* src/tail.c (tail_forever_inotify): Ensure the wd is not already
present in the hash table before trying to add it.  When a new watch
descriptor is added to the `wd_to_name' hash table, check that it is
not already present.  If it is present then remove the previous element.
2009-12-30 11:22:55 +01:00
Pádraig Brady
2024418dc4 maint: improve the info about $PATH in README-prereq
* README-prereq: It wasn't obvious that the $PATH should
be set before building any of the prerequisite packages,
so move that information up.
2009-12-30 02:09:43 +00:00
Jim Meyering
fd93fc3ef4 tail: add another test to exercise abort-inducing flaw in tail -F
* tests/tail-2/inotify-hash-abuse2: New test, based on a reproducer
by Rob Wortman.
* tests/Makefile.am (TESTS): Add it.
2009-12-29 17:01:54 +01:00
Jim Meyering
bd26efaaa3 tail: add a test to exercise abort-inducing flaw in tail -F
* tests/tail-2/inotify-hash-abuse: New file, derived from
a report by Rob Wortman.
* tests/Makefile.am (TESTS): Add it.
Improved by: Pádraig Brady.
2009-12-29 17:01:54 +01:00
Giuseppe Scrivano
07f15147eb tail: remove `fdspec' from the hash table before changing its key
* src/tail.c (tail_forever_inotify): Avoid modifying fdspec->wd while
it is in the wd_to_name hash table.  Once it is removed, it can be
added using the new `wd' as key for the hash table.  This fixes the
abort-inducing bug reported by Rob Wortman in
http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/19372
2009-12-29 17:01:01 +01:00
Jim Meyering
ed86ca7c5e maint: quiet "make" in doc/
* doc/Makefile.am (constants.texi): Add a use of AM_V_GEN.
2009-12-29 14:31:56 +01:00
Jim Meyering
4b2b2711d9 tail: rename an internal variable
* src/tail.c (tail_forever_inotify): s/wd_table/wd_to_name/
2009-12-29 14:26:05 +01:00
Jim Meyering
66b15949df tail: avoid read-beyond-end-of-buffer error
* src/tail.c (tail_forever_inotify): Do not use f[i] in a context
where i may be larger than the largest valid index.  In the final
"if" clause in which we'd remove an inotify watch, we might have
used f[n_files].  Use fspec instead, since it is guaranteed to
be defined.
2009-12-29 14:24:01 +01:00
Eric Blake
3d09e31e07 maint: ignore more built files
Recent gnulib changes added new built files.

* .gitignore: Add arg-nonnull.h, link-warning.h,
unused-parameter.h.
2009-12-26 11:11:24 -07:00
Eric Blake
67bfde6668 tac: supply link dependency
* src/Makefile.am (tac_LDADD): Add LIB_GETHRXTIME.
* THANKS: Update.
Reported by Robert Schwebel.
2009-12-26 10:40:17 -07:00
Jim Meyering
a0d5d53a30 build: update gnulib submodule to latest 2009-12-26 09:09:51 +01:00
Jim Meyering
8506d9adb6 tail: shrink internal struct by 8 bytes
* tail.c (struct File_spec): Rearrange struct members to decrease
size by 8 bytes to 76,96 on i686,x86_64 respectively.
2009-12-26 09:09:36 +01:00
Jim Meyering
c85ad43ef4 maint: tail: avoid in-function #if directives
* src/tail.c (fremote): Add a comment.
Move definition "up" to precede first use, so we can
remove its prototype and the #if..#endif around each use.
(any_remote_file): Rename from any_remote_files.
2009-12-25 12:05:30 +01:00
Pádraig Brady
8d2ecd4a3e tail: fix --follow to not use inotify on remote files
* src/tail.c (struct File_spec): Add a flag to record if file is remote.
(recheck): If we're using inotify then check if the file has gone remote
and if so, drop it with a warning.
(any_remote_files): A new function to check for any open remote files.
(tailable_stdin): A new function to refactor the check for whether
a tailable file was specified through stdin.
(fremote): A new function to check if a file descriptor
refers to a remote file.
(tail_forever_inotify): Add some comments.
(tail_file): Record if a file is remote when initially opened.
(main): Disable inotify if any remote files specified.
Also document the caveat about remounted files not
being noticed by inotify.
* NEWS: Mention the fix.
2009-12-25 00:56:41 +00:00
Pádraig Brady
11dc0016bb wc: line-buffer the printed counts
* src/wc.c (main): Set stdout to line buffered mode
to ensure parallel running instances don't intersperse
their output.  This adds 6.5% to the run time in the worst case
of many zero length files, but has neglible impact for
standard sized files.
* tests/misc/wc-parallel: New test for atomic output.
* tests/Makefile.am: Reference it.
* NEWS: Mention the fix
This is similar to commit 710fe413, 20-10-2009,
"md5sum, sha*sum, sum: line-buffer the printed checksums"
2009-12-23 13:45:34 +00:00
Pádraig Brady
53db8d6479 stat: Recognize k-afs, gfs, ocfs2 file system types
* src/stat.c (human_fstype): Add k-afs, gfs/gfs2 and ocfs2.
* NEWS: Update the stat -f entry.
2009-12-22 16:55:04 +00:00
Pádraig Brady
4b449caf2d stat: add support for more file system types
* src/stat.c (human_fstype): Add the following FS types:
fuseblk, rpc_pipefs.  Also fix a typo of minux3 to minix3,
and mention the fs-magic-compare make target to help update the list.
* NEWS: Mention the fix.
2009-12-22 11:17:01 +00:00
Jim Meyering
d98b1b35a6 build: correct coreutils-specific distcheck rules
* dist-check.mk (built_programs): Use $(bin_PROGRAMS), not $(PROGRAMS).
Otherwise, my-instcheck would fail due to non-installation of e.g.,
the noinst_PROGRAMS, setuidgid and getlimits.
(taint-distcheck): Correct the grep command that checks for libtool
traces in configure.
2009-12-20 10:57:45 +01:00
Eric Blake
01e4f003a0 touch: fix ctime regression in 'touch -a'
Regression introduced in coreutils 8.1 due to a bug in the Linux
kernel implementation of utimensat with mtime of UTIME_OMIT.

* gnulib: Update to latest, to pick up utimensat fix.
* NEWS: Mention the change.
* THANKS: Update.
Reported by John Stanley.
2009-12-19 17:32:45 -07:00
Pádraig Brady
54dcfab190 maint: don't include the strverscmp gnulib module
* bootstrap.conf (gnulib_modules): Remove the strverscmp module
which is not used since commit e505736f, on 03-10-2008,
"ls and sort: use filevercmp instead of strverscmp"
2009-12-19 01:34:59 +00:00
Pádraig Brady
3593cf50b2 doc: enhance and reference info about version comparison
* doc/coreutils.texi (sort invocation): Reference the additional
info about filevercmp rather than the unused strverscmp.
(Details about version sort): Add some examples that are not
handled well by fileversmp.
* src/ls.c: Change a comment referencing the now unused strverscmp.
2009-12-19 01:21:28 +00:00
Pádraig Brady
d64c186d8e rm: fix --one-file-system regression due to fts conversion
* src/remove.c (rm_fts): Fix incorrect comparison of
device and inode numbers.
* tests/rm/one-file-system2: Add a separate test so
that it can be run as a normal user (It doesn't need to mount).
* tests/Makefile.am: Reference it.
* NEWS: Mention the fix.
Reported by Jan Larres.
2009-12-19 01:14:07 +00:00
Jim Meyering
bfcfc0ce72 maint: improve dist-check.mk rules
* dist-check.mk (null_AM_MAKEFLAGS): Remove LIBTOOL.  Adding it was
erroneous, since it is required when building from a distribution
tarball of a libtool-using project.  Reported by Ralf Wildenhues.
(my-distcheck): Reorganize to use a subshell and set -e, so that
failures propagate "out".  Without this change, setting LIBTOOL=false
would cause a failure that would then be ignored, probably due to a
problem in $(install-transform-check).
2009-12-14 11:33:03 +01:00
Thiago Farina
bf01ac3004 base64: use *_OPTION_DESCRIPTION macros instead of hard-coded strings
* src/base64 (usage): Use HELP_OPTION_DESCRIPTION and
VERSION_OPTION_DESCRIPTION macros, not literal strings.
2009-12-14 08:35:17 +01:00
Jim Meyering
5519ba24b5 tests: unpack xz-compressed tarballs when possible, not always *.gz
* dist-check.mk: Unpack compressed tarball using xz when possible,
since that's faster.
2009-12-13 17:55:31 +01:00
Jim Meyering
e4c4d77f84 maint: make dist-check.mk more easily shared
* dist-check.mk (built_programs): More generic, but still assumes src/.
Don't set GZIP in environment when untarring.
(my-distcheck): Use $(DIST_ARCHIVES), rather than assuming that
there is always a .tar.gz file.
2009-12-13 17:55:24 +01:00
Jim Meyering
c149538652 nohup: if fd_repoen fails (redirecting stdin), report it
* src/nohup.c (main): Don't ignore fd_reopen failure.
2009-12-13 12:23:41 +01:00
Jim Meyering
6ee02e3d83 tests: make the taint-distcheck rule easier to share with other projects
* dist-check.mk (taint-distcheck): Skip this test in a project
that uses libtool.
2009-12-13 11:22:39 +01:00
Jim Meyering
207a978e64 stat: recognize "sockfs" file system type, ...
... now that its magic number appears in <linux/magic.h>.
* src/stat.c (human_fstype) [S_MAGIC_SOCKFS]: Add case.
2009-12-13 11:00:41 +01:00
Jim Meyering
0291966175 maint: move definitions from maint.mk to dist-check.mk
* dist-check.mk (null_AM_MAKEFLAGS): Define here, not in maint.mk.
(built_programs): Likewise.
(my-distcheck): Move comments to...
(coreutils-path-check): ...the code they refer to.
Remove obsolete comments.
(null_AM_MAKEFLAGS): Add gperf, even though it's not used here.
* gnulib: Update to latest, for fixed maint.mk.
2009-12-13 10:51:36 +01:00
Jim Meyering
d9ba885974 tests: tail-without-inotify: avoid spurious test failure
* tests/tail-2/wait: Account for the possibility that the kernel
lacks inotify support.  Reported by Chris Clayton.
2009-12-12 17:40:42 +01:00
Jim Meyering
96047b77ec factor: add a missing va_end
* src/factor.c (debug): Add missing va_end.
2009-12-12 08:10:07 +01:00
Jim Meyering
5a514de955 build: update gnulib submodule to latest; adapt a patch
* gl/lib/tempname.c.diff: Adjust patch to apply to gnulib, now that
most TABs in indentation have been converted to spaces by running
this command: f=tempname.c.diff; patch-xform $f > k && mv k $f
2009-12-11 19:30:59 +01:00
Jim Meyering
a0000ba4ae post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
2009-12-11 14:43:13 +01:00
Jim Meyering
70d023b076 version 8.2
* NEWS: Record release date.
2009-12-11 14:00:40 +01:00
Jim Meyering
ca39c9c308 tests: use a slightly better CU_TEST_NAME setting
* tests/check.mk (CU_TEST_NAME): Better test names.
2009-12-11 13:59:57 +01:00
Jim Meyering
fc4d3f63b0 tail: don't call fstat on an uninitialized FD
This bug showed up via valgrind as a "Conditional jump or move
depends on uninitialized value(s)" error.
* src/tail.c (ignore_fifo_and_pipe): New function.
(main): Use it only when tailing forever.
The code to compute n_viable and mark some F[i] as ignored would call
isapipe on an uninitialized file descriptor.  But n_viable and those
.ignored marks are useful/used only when tailing forever.  This bug
was introduced via commit f0ff8c73 (7.6), "tail: make the new
piped-stdin test as portable as the old one".
* NEWS (Bug fixes): Mention it.
2009-12-11 12:15:13 +01:00
Jim Meyering
3df2108b0d doc: NEWS: mention that gnulib's mgetgroups fix affects id
* NEWS (Bug fixes): Mention the "id" bug fix inherited via this gnulib
change: "mgetgroups: do not write bytes beyond end of malloc'd buffer"
http://git.sv.gnu.org/cgit/gnulib.git/commit/?id=51d5e813e9ee6cf23
2009-12-11 08:51:28 +01:00
Jim Meyering
829c418d67 build: update gnulib submodule to latest 2009-12-10 16:50:27 +01:00
Jim Meyering
06e9880c8e tests: avoid spurious failure when run via valgrind
* tests/misc/printenv: Ignore LD_PRELOAD differences.
2009-12-10 16:50:05 +01:00
Jim Meyering
bb4cb10e89 doc: NEWS: the "make distcheck" vulnerability dates back to 5.0
* NEWS (Bug fixes): Correct the introduced-in version number.
This was introduced on 2003-04-02 by commit 722a49ea.
2009-12-09 13:58:12 +01:00
Jim Meyering
23c0cecaa8 doc: NEWS: mention the "make distcheck" vulnerability
* NEWS (Bug fixes): Mention implications of the "make distcheck" change.
This was introduced on 2008-07-22 by commit 9bb0d576, "tests: ensure
"make check" w/tainted build dir no longer impacts $HOME".
2009-12-09 13:09:33 +01:00
Jim Meyering
19b460b239 tests: don't let "umask 077" cause root-only cp/preserve-gid failure
* tests/cp/preserve-gid: Use working_umask_or_skip_ to set umask to 022.
2009-12-09 08:45:30 +01:00
Jim Meyering
0f8bb24ca8 build: update gnulib submodule to latest 2009-12-08 21:34:00 +01:00
Pádraig Brady
321d2901de maint: remove an erroneous comment
* tests/misc/timeout: Remove an erroneous comment
introduced through copy and paste.
2009-12-08 15:33:18 +00:00
Pádraig Brady
f5a97b8269 sort: fix failure if sort's parent has ignored SIGCHLD
* src/sort.c (main): Reset the SIGCHLD handler to the default
as otherwise wait() could return an error.
* tests/misc/sort-compress: Set the CHLD handler in a subshell
to SIG_IGN to ensure the sort command resets it to SIG_DFL.
* NEWS: Mention the fix.
2009-12-08 15:29:27 +00:00
Pádraig Brady
73d4626134 timeout: fix failure if timeout's parent has ignored SIGCHLD
* src/timeout.c (main): Reset the SIGCHLD handler to the default
as otherwise wait() could return -1 and set errno to ECHILD.
This condition was ignored until commit 0b1dcf33, on 31-08-2009,
"timeout: defensive handling of all wait() errors"
but subsequently timeout would run the command correctly
but then fail with an error message.
* tests/misc/timeout: In a subshell set the CHLD handler to
SIG_IGN to ensure the timeout command resets it to SIG_DFL.
* NEWS: Mention the fix.
2009-12-08 15:17:01 +00:00
Pádraig Brady
7ac41f9950 tests: fix stty-row-col failure on small fixed terminals
* tests/misc/stty-row-col: Linux virtual consoles at least,
issue an error if you try to increase their size, so skip the
test if we can't increase the dimensions of the tty by 1 cell.
Reported by Matthew Burgess.
2009-12-08 15:08:44 +00:00
Pádraig Brady
dcff25a925 tests: fix stty failure with serial control settings
* tests/misc/stty: Don't check the serial control settings as
these are ignored by various Linux kernels.
Reported by Matthew Burgess.
2009-12-08 15:06:01 +00:00
Jim Meyering
7a2b0b8f66 build: update gnulib submodule to latest 2009-12-07 18:56:07 +01:00
Jim Meyering
ae034822c5 build: distcheck: do not leave a $TMPDIR/coreutils directory behind
* dist-check.mk (tmpdir): Rename from TMPDIR.  Use ./tests/torture
unconditionally, rather than $TMPDIR-with-default-to-/tmp.
Otherwise, running "make distcheck" could leave an empty /tmp/coreutils
directory behind.
(tp): Simplify, now that it's always in the build-dir.
(taint-distcheck): Set HOME earlier, in case $(MAKE) misbehaves.
(my-instcheck, coreutils-path-check): Add diagnostics, so it's easier
to diagnose when each runs.
(coreutils-path-check): Run configure with --quiet, to reduce output.
Inspired by Ralf Wildenhues' report of /tmp/coreutils being left behind.
2009-12-07 18:54:26 +01:00
Jim Meyering
d8cadda3b9 tests: readdir-mountpoint-inode avoid false-positive w/virtualbox
* tests/ls/readdir-mountpoint-inode: With some systems, stat can
succeed on a mount point and report that the inode number is 0.
Since ls displays "?" for those, that would otherwise show up as a
difference.  Skip such mount points.  Reported by Sergei Steshenko
in http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/19142
2009-12-06 08:48:51 +01:00
Pádraig Brady
afd087d414 tests: don't run tail-2/inotify-race by default
* tests/tail-2/inotify-race: Note the caveats of the test.
I.E. the intermittent skips and the gdb hang reported
by Alan Curry.  Add extra info to the log on why the test
is skipped as it may be due to multiple reasons.  Mark
the test as very expensive so that it's not normally run.
2009-12-06 00:42:42 +00:00
Eric Blake
9b4b38f56e id: handle systems without getgroups support
If getgroups failed with ENOSYS, mgetgroups would unnecessarily
fail, and that provoked id into freeing an uninitialized pointer.
Meanwhile, we were not using xalloc_die properly.  Both issues
are better solved in gnulib, by introducing xgetgroups; this
patch uses the new interface.

Regression introduced by commit 6a31fd8d7.

* gnulib: Update, for mgetgroups improvments.
* src/id.c (print_full_info): Adjust caller to die on allocation
failure, and no longer worry about ENOSYS.
* src/group-list.c (print_group_list): Likewise.
* src/setuidgid.c (main): Likewise.
* NEWS: Mention the fix.
* THANKS: Update.
Reported by Scott Harrison.
2009-12-04 19:18:06 -07:00
Jim Meyering
5224fbd6f9 tests: fix a bug in sanitize_path_ that inhibited verbose output
* tests/test-lib.sh (sanitize_path_): Use "set -- ...", not "set - ...",
since the latter turns off the -x setting we rely on for VERBOSE=yes
output.
2009-12-03 17:04:16 +01:00
Eric Blake
d16a8f6c7f sort: fix link failure on Solaris
Commit f9d0bb8481 made sort depend on xnanosleep.

* src/Makefile.am (sort_LDADD): Add LIB_NANOSLEEP.
2009-12-01 13:07:48 -07:00
Jim Meyering
0dc1f4c6f3 rm: fix empty-name bug introduced with conversion to use fts
While "rm ''" would properly fail, "rm F1 '' F2" would fail
to remove F1 and F2, due to the empty string argument.
This bug was introduced on 2009-07-12, via commit 4f73ecaf,
"rm: rewrite to use fts".
* gnulib: Update to latest, for fixed fts.c.
* NEWS (Bug fixes): Describe it.
* tests/rm/empty-name: Adjust for changed diagnostic.
(mk_file): Define, copied from misc/ls-misc.
(empty-name-2): New test, for today's fix.
* lib/xfts.c (xfts_open): Reflect the change in fts_open, now that
it no longer fails immediately when one argument is the empty string.
Assert that the bit flags were not the cause of failure.
* po/POTFILES.in: Remove xfts.c.
* THANKS: Update.
Reported by Ladislav Hagara.
2009-12-01 14:38:39 +01:00
Pádraig Brady
cb775df09e bootstrap: fix handling of various perl --version formats
* bootstrap (get_version): Don't use perl's $] special
variable, as that requires updating all bootstrap.conf files to
use perl's x.yyyzzz version format.  Instead make the regular
expression more general to support version formats from older
perl-5.005_002 (5.5.2) and perl-5.11 which has other numbers
in the version line.
2009-11-30 14:04:43 +01:00
Jim Meyering
b92e0455e1 bootstrap: update from gnulib, for perl-5.11.x support
* bootstrap (get_version): Handle perl separately,
since perl-5.11's --version output is different.
2009-11-29 14:04:09 +01:00
Jim Meyering
3910144405 build: update gnulib submodule to latest 2009-11-29 10:56:57 +01:00
Jim Meyering
4bb812ad49 maint: chown.c: remove a comment
* src/chown.c: Remove old spec-like comment.
2009-11-28 06:48:03 +01:00
Eric Blake
b498c58013 tests: fix link failure on cygwin
Counterpart to commit 8fe40b84bd, since test-link.c uses rename,
and we override gnulib with a rename() replacement that can xalloc_die.

* gl/modules/link-tests.diff: New file.
2009-11-24 06:36:13 -07:00
Eric Blake
f9d0bb8481 build: fix link failure on cygwin
Cygwin 1.5 has a broken sleep, and the gnulib tests dragged in
rpl_sleep which then caused a link failure because it wasn't in
libcoreutils.a.  We could solve it by using the gnulib sleep module.
However, sleep and usleep may interact poorly with SIGALRM, and they
have less granularity; so it is better to adopt a policy that if we
must sleep, prefer xnanosleep.

* src/sort.c (pipe_fork): Use xnanosleep, to avoid the need for
rpl_sleep on cygwin, and to reduce granularity.
(MAX_FORK_TRIES_COMPRESS, MAX_FORK_TRIES_DECOMPRESS): Increase,
to account for reduction in granularity.
* src/tail.c (tail_file): Use xnanosleep in debug code.
* cfg.mk (sc_prohibit_sleep): New rule.
2009-11-24 06:36:07 -07:00
Jim Meyering
ab6b27eba7 tests: avoid test failures when PATH contains an unsearchable directory
* tests/test-lib.sh (sanitize_path_): New function.
Always call it.
2009-11-23 17:49:39 +01:00
Dmitry V. Levin
9cf9f8e1e0 tests: do not fail on read-only root file system
* tests/touch/not-owner: Handle the case when the root file system is
mounted read-only.
Reported by Solar Designer.
2009-11-22 16:40:18 +01:00
Jim Meyering
ad1f07b3c4 maint: cfg.mk: remove factored-out ftp host/dir definitions
* cfg.mk (gnu_ftp_host-alpha, gnu_ftp_host-beta gnu_ftp_host-stable):
(gnu_rel_host, url_dir_list): Remove definitions.  The defaults,
now provided by maint.mk, are the same.
* gnulib: Update for latest, including those maint.mk additions.
2009-11-20 16:39:24 +01:00
Jim Meyering
ddea7b1078 maint: correct comments in test scripts
* tests/misc/pwd-long: Fix spelling of cygwin1.dll in comment.
* tests/rm/fail-eperm: Likewise.
Reported by Eric Blake.
2009-11-20 12:58:51 +01:00
Jim Meyering
5eb8d60e6d maint: don't list "warnings" module explicitly
* bootstrap.conf (gnulib_modules): Remove "warnings", now that
it's pulled in automatically via "manywarnings".
2009-11-20 08:17:24 +01:00
Jim Meyering
395b1c9375 maint: move xfreopen module to gnulib
* gl/lib/xfreopen.c: Remove file.
* gl/lib/xfreopen.h: Likewise.
* gl/modules/xfreopen: Likewise.
2009-11-20 07:37:56 +01:00
Jim Meyering
2f2112335c build: update gnulib submodule to latest 2009-11-20 07:37:56 +01:00
Jim Meyering
30eb606ed5 tests: avoid spurious failures due to insecure directory in PATH
These tests perform no PATH search, and used to simply delete PATH from
the environment.  However, that is not portable, as seen on Cygwin,
where cygwin.dll must be resolvable via PATH when starting a sub-shell.
With commit 0cc04241, we took the alternate approach of untainting the
incoming $ENV{PATH}, but that fails when it contains an other-writable
directory.  Instead, now we hard code it to '/bin:/usr/bin'.

* tests/misc/pwd-long: Hard code $ENV{PATH} to a safe value.
* tests/rm/fail-eperm: Likewise.
Reported by Gilles Espinasse, Andreas Schwab, and Bauke Jan Douma.
2009-11-19 11:12:29 +01:00
Jim Meyering
f18eef3284 build: "make stable" emitted an invalid gnupload command
* cfg.mk (gnu_ftp_host-stable): Rename from gnu_ftp_host-major.
* README-release: Change another s/major/stable/.
2009-11-18 21:04:52 +01:00
Jim Meyering
e246d654f3 post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
2009-11-18 19:56:25 +01:00
Jim Meyering
447d245551 version 8.1
* NEWS: Record release date.
2009-11-18 19:38:50 +01:00
Jim Meyering
fee722471c build: update gnulib for Solaris utimens workaround 2009-11-18 15:58:20 +01:00
Jim Meyering
630f4ba107 build: update gnulib submodule to latest 2009-11-18 07:33:02 +01:00
Jim Meyering
2fccfaab19 maint: remove local gnulib-related patches
* gl/lib/printf-args.c.diff: Remove file.  No longer needed.
* gl/lib/vasnprintf.c.diff: Likewise.
2009-11-17 21:44:37 +01:00
Jim Meyering
2b18a4c138 build: update gnulib for Solaris 10 unsetenv work-around 2009-11-17 21:44:30 +01:00
Jim Meyering
6609ccbf87 doc: mention the du/fts vs. NFSv4 mount-point work-around
* NEWS (Changes in behavior): Mention it.
2009-11-17 08:56:12 +01:00
Jim Meyering
d863533752 build: update from gnulib for (un)setenv fixes 2009-11-17 08:48:15 +01:00
Jim Meyering
bf5af9aef8 build: update gnulib submodule to latest 2009-11-16 11:37:09 +01:00
Jim Meyering
161e5120d4 true, false: perform initialization only when argc == 2
* src/true.c (main): There is no reason to examine argv[0],
call atexit, etc., in the usual case in which we're about to exit.
This has the side effect of making it so that these programs
no longer segfault when subjected to execve abuse.
Before this change, these commands would make "true" segfault:
  printf '%s\n' '#include <unistd.h>' 'int main(int c, char**v)' \
    '{ execve (v[1], 0, 0); }' > k.c && gcc k.c && ./a.out $PWD/true
Now it succeeds.  Reported by Tetsuo Handa and Bart Van Assche
via Ondřej Vašík in http://bugzilla.redhat.com/537684.
2009-11-16 09:30:50 +01:00
Jim Meyering
3b997a9bcb tail -F can fail to track a file after it's been rotated
Tailing forever and by-name (--follow=name, -F), tail would
sometimes fail to follow a file that had been removed via rename.
If you can't apply this patch and have tail 7.6 or newer, you can
work around the bug via the undocumented --disable-inotify option.
* src/tail.c (tail_forever_inotify): When tailing by name (-F),
do not un-watch a file upon receipt of the IN_MOVE_SELF event.
Reported by Arjan Opmeer in http://bugs.debian.org/548439.
* NEWS (Bug fixes): Mention it.
Also see http://marc.info/?l=coreutils-bug&m=125829031916515
* tests/Makefile.am (TESTS): Add tail-2/inotify-rotate.
* tests/tail-2/inotify-rotate: New test.
2009-11-16 09:30:43 +01:00
Jim Meyering
00f0cabaec tests: help-version: exit nonzero when $built_programs is empty
* tests/misc/help-version: Use "Exit 1", rather than "Exit $fail"
with fail defined to 0 when $built_programs is empty.
2009-11-14 15:01:44 +01:00
Jim Meyering
5cf6fb3b12 build: do use AM_GNU_GETTEXT's "need-formatstring-macros" option
* configure.ac: Revert commit 49741b61 and add a comment.
Reported by Eric Blake.
2009-11-14 15:01:44 +01:00
Pádraig Brady
9ed5048148 tests: avoid a spurious failure on a loaded system
* tests/misc/timeout-parameters: This test could fail due to
the 1-second timeout expiring before a command of "no_such"
could be exec'd and fail.  Increase to 10 seconds.
2009-11-14 13:53:17 +00:00
Jim Meyering
c3744b25f2 build: require gettext-0.17
* configure.ac: Require gettext-0.17; it was released two years ago.
2009-11-13 17:54:07 +01:00
Jim Meyering
49741b61b7 build: correct gettext configure-time support
* configure.ac: Use AM_GNU_GETTEXT([external], [need-ngettext]),
rather than AM_GNU_GETTEXT([external], [need-formatstring-macros]).
Reported by Martin Jacobs in
http://thread.gmane.org/gmane.comp.parsers.bison.bugs/3181
* THANKS: Add his name.
2009-11-13 17:54:07 +01:00
Jim Meyering
9a91b2a928 build: update gnulib to latest, for fixed test-getgroups.c 2009-11-13 16:39:11 +01:00
Jim Meyering
4c9e7e01fa tests: avoid a spurious timeout on a heavily-loaded system
* tests/misc/timeout-parameters: This test would fail due to
the 1-second timeout expiring before a command of "." could
be exec'd and fail.  Increase to 10 seconds.
2009-11-13 16:38:20 +01:00
Eric Blake
6a31fd8d73 build: update gnulib, for getgroups improvements
A replacement getgroups is now guaranteed to exist, but it may
fail with ENOSYS.  mgetgroups is moved to gnulib, and now takes
gid_t instead of GETGROUPS_T (but setgroups still needs GETGROUPS_T).

* gnulib: Update to latest.
* gl/modules/mgetgroups: Delete, moved to gnulib.
* gl/m4/mgetgroups.m4: Likewise.
* gl/lib/mgetgroups.h: Likewise.
* gl/lib/mgetgroups.c: Likewise.
* src/group-list.c (print_group_list): Adjust callers.
* src/id.c (print_full_info): Likewise.
2009-11-13 07:50:20 -07:00
Jim Meyering
719a95aa9d build: bootstrap: add a comment; generalize autoheader check
* bootstrap: Sync from gnulib and diff.
2009-11-12 09:51:54 +01:00
Jim Meyering
1313107c5c build: update gnulib to latest; more *BSD and Solaris work-arounds 2009-11-12 07:53:42 +01:00
Jim Meyering
cf1bc9810d bootstrap: use git_modules_config in one more place
* bootstrap: Make bootstrap's --gnulib-srcdir more useful (for testing).
2009-11-11 19:07:37 +01:00
Eric Blake
622cf39be6 doc: fix typo
* doc/coreutils.texi (mktemp invocation): Quote shell variable.
2009-11-10 05:56:22 -07:00
Jim Meyering
3aff3ed137 build: update gnulib submodule to latest for its FreeBSD fixes 2009-11-09 11:00:42 +01:00
Pádraig Brady
10d97b3191 ls: fix capability coloring
Capability checking was incorrectly done on just the base name
rather than on the whole path.  Consequently there could be both
false positives and negatives when coloring files with capabilities.
Also capability checking was not done at all in certain cases for
non executable files.  Note passing absolute rather than relative
names to cap_get_file() reduces the has_capability() overhead
from around 33% to 30%.  I.E. ls --color is now around 3% faster.

* src/ls.c (struct fileinfo): Add a has_capability member.
(print_color_indicator): Refactor to pass just a fileinfo pointer
and a flag to say if we're dealing with a symlink target.
(print_name_with_quoting): Likewise.
(gobble_file): Set has_capability in the fileinfo struct.  Also do
a capability check even if executable coloring is disabled.
Ditto for SETUID and SETUID coloring.
Comment on how expensive has_capability() is.
(print_long_format): Adjust to refactored print_name_with_quoting.
(quote_name): Likewise.
(print_file_name_and_frills): Likewise.
* tests/ls/capability: Test the various false positive and negatives.
* THANKS: Add reporter (Ivan Labath).
* NEWS: Mention the fix.
2009-11-09 08:16:20 +00:00
Eric Blake
56b85e035b build: consistently use freopen-safer
cat, head, ptx, shuf, tac, tail, tee, tr, and uniq used freopen
on stdout, and were potentially vulnerable.  dircolors, du, and
tsort only used it on stdin, which is unaffected by freopen_safer,
but this covers all uses for consistency.

* cfg.mk (sc_require_stdio_safer): New rule.
* gl/modules/xfreopen (Depends-on): Add freopen-safer.
* gl/lib/xfreopen.c (includes): Use stdio--.h.
* src/ptx.c (includes): Likewise.
* src/shuf.c (includes): Likewise.
* src/uniq.c (includes): Likewise.
* src/dircolors.c (includes): Likewise.
* src/du.c (includes): Likewise.
* src/tsort.c (includes): Likewise.
2009-11-07 10:10:28 -07:00
Eric Blake
c768e2231b mktemp: fix bug with -q and closed stdout
If stdin or stdout is closed, then freopen(,stderr) can violate
the premise that STDERR_FILENO==fileno(stderr), which in turn
breaks mktemp -q.

* bootstrap.conf (gnulib_modules): Add freopen-safer.
* src/mktemp.c (includes): Use stdio--.h.
* tests/misc/close-stdout: Enhance test to catch bug.
2009-11-07 10:10:25 -07:00
Jim Meyering
9a8d8f46a5 maint: make du's cycle-detection code consistent
* src/du.c (process_file): Revert the du.c-changing part of
commit 8ba5d1a7. Use cycle_warning_required instead.
2009-11-07 08:43:05 +01:00
Jim Meyering
d9dbbb9a45 chcon, chgrp, chmod and chown now diagnose a directory cycle
* lib/xfts.c (cycle_warning_required): New function.
* lib/xfts.h: Declare it.
* src/chown-core.c (change_file_owner): Diagnose a cycle.
* src/chmod.c (process_file): Likewise.
* src/chcon.c (process_file): Likewise.
* NEWS (Bug fixes): Mention this.
2009-11-07 08:43:00 +01:00
Giuseppe Scrivano
74cf4cb26d nproc: A new program to count the available processors
* AUTHORS: Add my name.
* NEWS: Mention it.
* README: Likewise.
* bootstrap.conf (gnulib_modules): Add nproc.
* doc/coreutils.texi (nproc invocation): Add nproc info.
* man/Makefile.am (nproc.1): Add dependency.
* man/nproc.x: New template.
* man/.gitignore: Ignore generated man page.
* po/POTFILES.in: Add src/nproc.c.
* src/.gitignore: Exclude nproc.
* src/Makefile.am (EXTRA_PROGRAMS): Add nproc.
* src/nproc.c: New file.
* tests/Makefile.am (TESTS): Add misc/nproc-{avail,positive}.
* tests/misc/nproc-avail: New file.
* tests/misc/nproc-positive: New file.
2009-11-06 16:54:12 +00:00
Jim Meyering
41456fac8a build: move do-release-commit-and-tag to gnulib
* bootstrap.conf (gnulib_modules): Add do-release-commit-and-tag.
* build-aux/do-release-commit-and-tag: Remove file.  Now it's in gnulib.
* gnulib: Update submodule to the latest, to get the just-moved script.
2009-11-06 11:20:16 +01:00
Eric Blake
dde83c27b4 mktemp: use more robust means to avoid double-close of stdout
Reverts earlier patch - fflush() can succeed but fclose() fail for
some cases of write failures, and we want to catch those.

* src/mktemp.c (stdout_closed): New variable.
(maybe_close_stdout): New function, borrowed from dd.c.
(main): Track whether stdout has been closed.
2009-11-05 13:12:35 -07:00
Eric Blake
20e5a0d562 mktemp: enhance test to catch just-fixed typo behavior
Penance for botching the conflict resolution while rebasing my series.

* tests/misc/mktemp (check_tmp): Test for the bug when wrong parameter
is used.
2009-11-05 13:12:33 -07:00
Jim Meyering
22e4276ed1 mktemp: don't try to close stdout twice
* src/mktemp.c (main): Rather than calling close_stream (which would
make atexit-called close_stdout try to close it a second time),
check for write failure via ferror and fflush.
2009-11-05 16:32:52 +01:00
Jim Meyering
25d2460ae3 mktemp: don't use suff_len in place of #-of-`X's variable
* src/mktemp.c (mkstemp_len, mkdtemp_len): Pass x_len as final
argument, and not suff_len.
2009-11-05 16:23:59 +01:00
Eric Blake
31a9937081 mktemp: add suffix handling
Now that mkstemps is supported, we might as well use it.

* src/mktemp.c (TMPDIR_OPTION): New enum value.
(longopts): Add new option.
(usage): Document it.
(count_trailing_X_s): Rename...
(count_consecutive_X_s): ...to this, and add parameter.
(mkstemp_len, mkdtemp_len): Add parameter.
(main): Implement new option.
(AUTHORS): Add myself.
* AUTHORS (mktemp): Likewise.
* tests/misc/mktemp: Test new option.
* doc/coreutils.texi (mktemp invocation): Document it.
* NEWS: Likewise.
Fixes http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=548316.
2009-11-05 07:10:40 -07:00
Eric Blake
d431c61873 build: reflect gnulib changes to tempname
In glibc 2.11 and gnulib, gen_tempname added a parameter
suffixlen (unfortunately, it is typed as int rather than
size_t, for historical compatibility to a poor choice by BSD).

* gnulib: Import latest changes.
* gl/lib/tempname.h.diff: Accommodate new suffixlen parameter.
* gl/lib/tempname.c.diff (check_x_suffix): Allow for X in suffix
beyond x_suffix_len.
(gen_tempname_len): Add suffixlen parameter.
(__gen_tempname): Update caller.
* src/mktemp.c (mkstemp_len, mkdtemp_len): Update callers.
2009-11-05 07:00:52 -07:00
Eric Blake
5f29d118df build: override gnulib tempname via diff
Diffs are more robust than wholesale replacement, because bootstrap
will inform us of any incompatible changes made in upstream gnulib.

* gl/lib/tempname.h: Change...
* gl/lib/tempname.h.diff: ...to diff.
* gl/lib/tempname.c: Change...
* gl/lib/tempname.c.diff: ...to diff.
2009-11-05 06:59:21 -07:00
Eric Blake
0c5ae3a8ac mktemp: rearrange --help output
* src/mktemp.c (usage): Align indentation and sort by long
options.  Describe valid templates.
Suggested by http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=548316.
2009-11-05 06:59:03 -07:00
Eric Blake
e89a5e9b13 tests: enhance mktemp test
* tests/misc/mktemp: Add more coverage.
2009-11-05 06:54:56 -07:00
Eric Blake
bcca26e838 doc: document mktemp
* doc/coreutils.texi (mktemp invocation): New node.
* TODO: Delete completed task.
2009-11-05 06:54:50 -07:00
Eric Blake
41b3a8ed8b mktemp: don't leave file behind on write failure
* src/mktemp.c (main): Remove just-created file if stdout had
problems.
* bootstrap.conf (gnulib_modules): Add remove.
* tests/misc/close-stdout: Test it.
* NEWS: Document it.
2009-11-05 06:53:21 -07:00
Jim Meyering
cd65f11c4f du: cleanup: remove dead-code vestige of already-removed option
* src/du.c (MEGABYTES_LONG_OPTION, main): Remove vestiges
of already-removed long option, --megabytes.
2009-11-05 08:37:12 +01:00
Jim Meyering
8ba5d1a70c du now diagnoses cycles, rather than ignoring them
* src/du.c (symlink_deref_bits): New global, decl moved from ...
(main): ...here.
(process_file): When fts detects a directory cycle that can't
be due to symlinks, report it and arrange to exit nonzero.
* NEWS (Bug fixes): Mention it.
2009-11-05 08:32:31 +01:00
Jim Meyering
38cb824673 maint: factor out cycle warning, now that du will use it, too
* src/system.h (emit_cycle_warning): Define.  Factored out of...
* src/remove.c (rm_fts): ...here.  Use the new macro.
2009-11-05 08:32:31 +01:00
Jim Meyering
d4b96c26ce tests: rm: add test for today's change in behavior
* tests/Makefile.am (root_tests): Add rm/read-only to the list.
* tests/rm/read-only: New file.
2009-11-03 14:48:10 +01:00
Jim Meyering
7bf2e3db23 rm -f: ignore EROFS when it's really ENOENT
rm -f must not print a diagnostic for a nonexistent file.  However,
most linux-based kernel unlinkat functions set errno to EROFS when
the named file (regardless of whether it exists) would lie on a
read-only file system.  remove.c now performs an extra fstatat call
in that case, to determine whether the file exists.
* src/remove.c (excise): Map EROFS to ENOENT, if a file is nonexistent.
Reported by Steven Drake in <http://savannah.gnu.org/bugs/?27923>.
* NEWS (Changes in behavior): Mention it.
2009-11-03 14:14:00 +01:00
Jim Meyering
87bf834dd3 tests: inotify-race: don't let malfunctioning gdb hang the test
* tests/tail-2/inotify-race: Apply timeout to each gdb invocation.
2009-11-03 14:14:00 +01:00
Eric Blake
8fe40b84bd build: avoid some warnings
* gl/lib/mbsalign.c (mbsalign): Mark unused parameter.
* bootstrap.conf (gnulib_modules): Remove obsolete
rename-dest-slash.
* gnulib-tests/Makefile.am (AM_CFLAGS): Reduce set of warnings for
gnulib tests.
* gl/modules/rename-tests.diff (Makefile.am): New file, to add
LIBINTL to LDADD, since we avoid canonicalize-lgpl module.
* gl/lib/regcomp.c.diff (regerror, calc_next)
(build_collating_symbol, parse_bracket_element, build_equiv_class)
(free_tree): Mark unused parameters.
* gl/lib/regex_internal.h.diff (re_string_elem_size_at): New file,
to mark unused parameters.
* gl/lib/printf-args.c.diff (PRINTF_FETCHARGS): New file, to avoid
type mismatch.
* gl/lib/vasnprintf.c (VASNPRINTF): New file, to avoid shadowing
local variable name.
* .gitignore: Ignore temporary build artifacts.
2009-11-02 06:34:24 -07:00
Eric Blake
565e5f6827 build: update gnulib submodule to latest, for fewer compiler warnings 2009-11-02 06:26:55 -07:00
Jim Meyering
6eb457eaba admin: automate one more part of the release process
This script automates the process of updating NEWS, performs
the resulting final commit (thus with a consistent log message),
and applies a signed tag (v$VERSION) to the result.
* build-aux/do-release-commit-and-tag: New script.
* README-release: Document it.
2009-10-31 11:08:03 +01:00
Jim Meyering
a276ba2dd4 admin: fix typo in release procedure
* README-release: s/gzip/coreutils/
2009-10-31 08:49:46 +01:00
Jim Meyering
71c2f88155 tests: prohibit fail=0 initialization
* cfg.mk (sc_prohibit_fail_0): New rule.
* .x-sc_prohibit_fail_0: New file.
* Makefile.am (syntax_check_exceptions): Distribute the new file.
2009-10-30 12:50:31 +01:00
Jim Meyering
3c88587b2e tests: factor 350 fail=0 initializations into test-lib.sh
Run this command to remove the factored-out "fail=0" lines.
perl -ni -e '/^fail=0$/ or print' $(g grep -l '^fail=0$')
* tests/test-lib.sh: Initialize fail=0 here, not in 300+ scripts.
* tests/...: nearly all bourne shell scripts
Suggested by Eric Blake.
2009-10-30 12:50:12 +01:00
Jim Meyering
12a0a583f6 tests: remove the less-regular fail=0 assignments manually
* tests/tail-2/assert-2:
* tests/tail-2/assert:
* tests/cp/file-perm-race:
* tests/misc/df:
* tests/misc/truncate-dir-fail:
2009-10-30 10:49:22 +01:00
Jim Meyering
39da66f979 tests: don't let a fail=1 env. setting induce unwarranted test failure
* cfg.mk (sc_fail_is_initialized): New rule.
Fix the offenders:
* tests/cp/acl: Set fail=0
* tests/cp/backup-is-src: Likewise.
* tests/cp/file-perm-race: Likewise.
* tests/cp/reflink-auto: Likewise.
* tests/cp/same-file: Likewise.
* tests/ln/backup-1: Likewise.
* tests/misc/su-fail: Likewise.
* tests/misc/truncate-owned-by-other: Likewise.
* tests/mkdir/p-3: Likewise.
* tests/mkdir/selinux: Likewise.
* tests/mkdir/special-1: Likewise.
* tests/mv/acl: Likewise.
* tests/mv/backup-is-src: Likewise.
* tests/mv/diag: Likewise.
* tests/mv/force: Likewise.
* tests/mv/hard-link-1: Likewise.
* tests/mv/into-self-3: Likewise.
* tests/mv/sticky-to-xpart: Likewise.
* tests/touch/now-owned-by-other: Likewise.
2009-10-29 16:51:07 +01:00
Jim Meyering
22776f84cb remove stray closing comment delimiter, "*/", in previous change
* gl/lib/regexec.c.diff: Fix a typo.
2009-10-29 14:53:45 +01:00
Eric Blake
17b7d09bf2 maint: avoid exiting with magic number
Cope with gnulib's new sc_prohibit_magic_number_exit rule.

* .x-sc_prohibit_magic_number_exit: New file, to add exemptions.
* Makefile.am (syntax_check_exceptions): Distribute it.
* lib/euidaccess-stat.c (main): Fix culprits.
* src/chcon.c (main): Likewise.
* src/runcon.c (main): Likewise.
* src/setuidgid.c (main): Likewise.
2009-10-29 07:31:23 -06:00
Jim Meyering
f2859424cb build (--enable-gcc-warnings): enable gcc's -Werror also in lib/
* configure.ac (GNULIB_WARN_CFLAGS): Define.
* lib/Makefile.am (AM_CFLAGS): Use $(GNULIB_WARN_CFLAGS)
rather than $(WARN_CFLAGS) and add $(WERROR_CFLAGS).
* gl/lib/regcomp.c.diff: New file.
* gl/lib/regex_internal.c.diff: New file.
* gl/lib/regexec.c.diff: New file.
2009-10-29 08:14:42 +01:00
Jim Meyering
56a66d78ff build: update gnulib submodule to latest 2009-10-29 08:14:42 +01:00
Jim Meyering
e26cb21e6b build: allow whitespace violations in gl/lib/*.diff files
* .gitattributes: Exempt gl/lib/*.diff.
* .x-sc_prohibit_tab_based_indentation: Likewise.
* .x-sc_space_tab:Likewise.
2009-10-29 08:14:42 +01:00
Eric Blake
1c59bb3cef nice, nohup, su: detect write failure to stderr
These programs can print non-fatal diagnostics to stderr prior to
exec'ing a subsidiary program.  However, if we thought the situation
warranted a diagnostic, we insist that the diagnostic be printed
without error, rather than blindly exec, as it may be a security risk.

For an example, try 'nice -n -1 nice 2>/dev/full'.  Failure to raise
priority (by lowering niceness) is not fatal, but failure to inform
the user about failure to change priority is dangerous.

* src/nice.c (main): Declare failure if writing advisory message
to stderr fails.
* src/nohup.c (main): Likewise.
* src/su.c (main): Likewise.
* tests/misc/nice: Test this.
* tests/misc/nohup: Likewise.
* NEWS: Document this.
2009-10-28 21:12:41 -06:00
Jim Meyering
536a1fbe5f doc: tell --enable-gcc-warnings users where to report problems
* README-hacking: Add a caveat for --enable-gcc-warnings.
2009-10-28 18:13:44 +01:00
Jim Meyering
ce22916610 build: make doc checks more user-friendly
* doc/Makefile.am (check-texinfo): Begin moving each individual test
into its own rules.
(sc-avoid-builtin, sc-avoid-path): New rules.
Extracted from check-texinfo.
(syntax_checks): Add them.
2009-10-28 18:07:22 +01:00
Jim Meyering
da17f99b20 doc: avoid failing "make check"
* doc/coreutils.texi (env invocation): s/builtin/built-in/
2009-10-28 18:07:21 +01:00
Pádraig Brady
c07b181396 doc: improve the echo and printf help on escapes
* src/printf.c (usage): Merge strings with echo.c to
aid translators.  Move the description for \NNN beside
the other numeric escape codes.  Don't mention
"character" as that suggests character conversion.
* src/echo.c (usage): Likewise.
Also mention the \xHH escape sequence.
2009-10-28 17:01:29 +00:00
Pádraig Brady
2904d675a4 echo, printf: interpret \e as the Escape character
Match gcc, perl, bash, ksh, tcsh, ... in supporting \e.
* src/printf.c (print_escape_char): Output \x1B when \e encountered.
* src/echo.c (main): Likewise.
* src/stat.c (print_escape_char): Likewise.
* doc/coreutils.texi (echo invocation): Add \e to the list.
* tests/misc/printf: Verify that \e outputs \x1B.
* NEWS: Mention the change in behaviour.
2009-10-28 16:37:07 +00:00
Eric Blake
54491d2751 printenv: ignore bogus variable names
Exposed by env a=b=c printenv a=b.

* src/printenv.c (main): Silently reject = in names.
* tests/misc/printenv: Test for it.
* NEWS: Document this.
2009-10-28 06:24:52 -06:00
Pádraig Brady
42d12b45d3 maint: avoid "make syntax-check" failure
* src/printenv.c: Remove unused "long-options.h"
2009-10-28 11:50:54 +00:00
Eric Blake
75efc921b0 doc: turn env comments into documentation
* src/env.c: Convert introductory comments...
* doc/coreutils.texi (env invocation): ...into documentation.
Suggested by Jim Meyering.
2009-10-27 19:55:37 -06:00
Eric Blake
d6de2f198e env, printenv: add -0/--null option
Allows for unambiguous processing when environment values (or even
non-portable names!) contain newline.

* src/env.c (longopts): Add new option.
(usage): Document it.
(main): Implement it.
* src/printenv.c (longopts): New variable.
(usage): Document new option.
(main): Implement it.
* doc/coreutils.texi (Common options): New macro optNull.
(du invocation, env invocation, printenv invocation): Use it.
* NEWS: Mention this.
* tests/misc/env-null: New test.
* tests/Makefile.am (TESTS): Run it.
2009-10-27 19:55:35 -06:00
Eric Blake
1a81342089 tests: add printenv coverage
* tests/misc/printenv: New test.
* tests/Makefile.am (TESTS): Run it.
* .gitignore: Ignore more cruft.
2009-10-27 19:53:37 -06:00
Eric Blake
0cc0424119 tests: fix PATH problems on cygwin
* tests/misc/sort-compress: Remove non-portable over-restriction
of PATH; besides, commit 3ea177e changed sort to no longer default
to gzip.
* tests/rm/fail-eperm: Untaint, rather than clear, PATH.
* tests/misc/pwd-long: Likewise.  Also skip test if long path
cannot be created.
(normalize_to_cwd_relative): Use eq rather than ==, since cygwin
perl doesn't properly handle 64-bit ino_t numerically.
2009-10-27 18:53:44 -06:00
Eric Blake
f00bbe33e4 tests: clean up tests of env -- handling
The comment in env.c about -- handling has not matched the behavior
in the code since the initial commit back in 1992.

* src/env.c: Fix bogus comment.
* tests/misc/env: Further tweaks, avoiding PATH problems inherent
in testing -i, and testing program name containing =.
* doc/coreutils.texi (env invocation): Mention that intermediate
program is needed to invoke program with name containing =.
2009-10-26 21:30:34 -06:00
Eric Blake
0f3f6bf6bf doc: document PATH interactions with env
* doc/coreutils.texi (env invocation): Mention that PATH is
modified prior to exec.
* tests/misc/env: Test this.
2009-10-26 21:30:32 -06:00
Eric Blake
243f1b1c71 env: reject bogus -u arguments
* src/env.c (main): Use unsetenv rather than putenv to remove
items from environ, and check for failure.
* bootstrap.conf (gnulib_modules): Add unsetenv.
* tests/misc/env: Test this.
* NEWS: Document it.
2009-10-26 21:30:30 -06:00
Eric Blake
c6900474ef maint: let gnulib provide environ
* bootstrap.conf (gnulib_modules): Add environ.
* src/env.c (environ): Delete declaration.
* src/printenv.c (environ): Likewise.
* src/stdbuf.c (environ): Likewise.
* src/su.c (environ): Likewise.
2009-10-26 21:30:28 -06:00
Eric Blake
dae24f5ffc tests: avoid file name not portable to cygwin
* tests/misc/chroot-fail: Use 'no_such', not '...', since cygwin
1.5 silently strips trailing dots.
* tests/misc/nice-fail: Likewise.
* tests/misc/stdbuf: Likewise.
* tests/misc/timeout-parameters: Likewise.
2009-10-26 06:05:44 -06:00
Jim Meyering
c695781753 tests: rm/one-file-system: work around umount failure
* tests/rm/one-file-system (cleanup_): Unmount a/b, rather than
"$other_partition_tmpdir", to accommodate those who link /etc/mtab
to /proc/mounts.  Reported by Gilles Espinasse in
http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/18508
2009-10-26 10:21:25 +01:00
Jim Meyering
d9cf7c911f tests: adjust new env test not to fail
* tests/misc/env: Create ./-i as a link to our "echo" binary,
rather than as a bourne shell script, so that env can exec it.
Set PATH to ".".
2009-10-26 09:59:32 +01:00
Jim Meyering
50e837b1c4 tests: nice: adjust new tests to work more portably
* tests/misc/nice (tests): Accommodate a nice program for which
"nice -n -1 nice" prints nothing.  It should print -1 or (usually) 0.
Otherwise, we'd get syntax errors.
2009-10-26 08:25:34 +01:00
Jim Meyering
501bf7b589 nice: execute program even when setpriority fails due to EACCES
* src/nice.c (perm_related_errno): New function.
(main): Use it, rather than testing only errno == EPERM.
* NEWS (Bug fixes): Mention it.
2009-10-26 08:25:34 +01:00
Pádraig Brady
69fbfd400c timeout: don't orphan monitored programs if they ignore specified signals
* src/timeout.c (install_signal_handlers): Handle any user
specified signal, so that if it does not cause the child
to exit then we don't exit and orphan the child. Previously this
for example, would leave an orphan dd process running:
timeout -sUSR1 1s dd if=/dev/zero of=/dev/null
* NEWS: Mention the fix.
2009-10-25 23:28:38 +00:00
Eric Blake
30e4b6e84b tests: test recent status changes
* tests/misc/nice: Enhance test.
* tests/misc/chroot-fail: New test.
* tests/misc/env: Likewise.
* tests/misc/nice-fail: Likewise.
* tests/misc/su-fail: Likewise.
* tests/Makefile.am (TESTS): Run new tests.
2009-10-23 16:32:26 -06:00
Eric Blake
2122247aca maint: move chroot test
* tests/chroot/credentials: Move...
* tests/misc/chroot-credentials: ...here, to reduce number of
directories.
* tests/Makefile.am (root_tests): Reflect rename.
2009-10-23 16:31:34 -06:00
Eric Blake
bd933c1250 tests: enhance stdbuf and timeout tests
* tests/misc/timeout-parameters: Validate exact exit status.
* tests/misc/stdbuf: Likewise.
* tests/misc/timeout: Likewise.  Use require_built_.
* tests/misc/arch: Likewise.
2009-10-23 16:31:23 -06:00
Eric Blake
1ce9e1e5ca nohup: use EXIT_CANCELED if not POSIXLY_CORRECT
* src/nohup.c (NOHUP_FAILURE): Rename...
(POSIX_NOHUP_FAILURE): ...to this.
(main): Pay attention to POSIXLY_CORRECT, to determine whether to
use status 125 or 127.
* doc/coreutils.texi (nohup invocation): Document this.
* NEWS: Likewise.
* tests/misc/invalid-opt (exit_status): Adjust expected results.
* tests/misc/help-version (expected_failure_status): Likewise.
* tests/misc/nohup: Likewise.
2009-10-23 16:24:08 -06:00
Eric Blake
b6540b96ba chroot, env, nice, su: use EXIT_CANCELED for internal failure
* src/chroot.c (main): Use EXIT_CANCELED, not EXIT_FAILURE.
* src/env.c (main): Likewise.
* src/nice.c (main): Likewise.
* src/su.c (change_identity, main): Likewise.
* doc/coreutils.texi (chroot invocation, env invocation)
(nice invocation, su invocation): Document this.
* NEWS: Likewise.
* tests/misc/invalid-opt (exit_status): Adjust expected results.
* tests/misc/help-version (expected_failure_status): Likewise.
2009-10-23 16:24:05 -06:00
Eric Blake
97777f559a tests: accommodate BSD getopt
* tests/misc/invalid-opt (err_subst): Support alternate spelling.
2009-10-23 16:24:02 -06:00
Eric Blake
c0dcf3238b build: prohibit improper use of stat and lstat
* cfg.mk (sc_prohibit_stat_macro_address): New rule.
* src/ln.c (do_link): Adjust comment to avoid false positive.
* src/stat.c (do_stat): Likewise.
* src/touch.c (main): Likewise.
2009-10-23 06:29:54 -06:00
Eric Blake
a08e13a0fb build: update gnulib submodule to latest, for test cleanups 2009-10-22 21:25:39 -06:00
Eric Blake
5e361387d0 maint: turn on compiler warnings for gnulib tests
* gnulib-tests/Makefile.am (AM_CFLAGS): Add WARN_CFLAGS.
* configure.ac (enable-gcc-warnings): Also use -funit-at-a-time,
to silence gcc 4.3.4 -Wdisabled-optimization.
* .gitignore: Ignore some more files.
2009-10-22 08:05:09 -06:00
Jim Meyering
cbf36952d8 build: prohibit direct use of readlink or readlinkat
* cfg.mk (sc_prohibit_readlink): New rule.
Suggested by Eric Blake.
2009-10-22 12:12:24 +02:00
Giuseppe Scrivano
029b6b14c5 tests: add a test for the `tail -f' race condition bug
If new data becomes available between the initial read and when tail
registers the inotify watch descriptors, ensure that it is read
before a new event happens on the file.
* tests/Makefile.am (TESTS): Add tail-2/inotify-race.
* tests/tail-2/inotify-race: New file.
2009-10-22 10:25:58 +02:00
Giuseppe Scrivano
cd0f3036f6 tail -f: avoid a race condition
* NEWS (Bug fixes): Mention it.
* src/tail.c (check_fspec): New function.
(tail_forever_inotify): Ensure there is no new data before entering the
inotify events wait loop.
2009-10-22 09:11:24 +02:00
Eric Blake
9abbe32c2e build: update gnulib submodule to latest, for utimens enhancements 2009-10-21 21:44:56 -06:00
Eric Blake
54645c195c tests: ensure touch honors trailing slash
* tests/touch/trailing-slash: New test.
* tests/Makefile.am (TESTS): Run it.
2009-10-21 20:45:27 -06:00
Pádraig Brady
710fe413fe md5sum, sha*sum, sum: line-buffer the printed checksums
* src/md5sum.c (main): Set stdout to line buffered mode
to ensure parallel running instances don't intersperse
their output.  This adds 5% to the run time in the worst case
of many zero length files, or 2% with standard file sizes.
* src/sum.c (main): Likewise.
* tests/misc/md5sum-parallel: New test for atomic output.
* tests/Makefile.am: Reference it.
* NEWS: Mention the fix
2009-10-21 16:56:00 +01:00
Pádraig Brady
71adb516de maint: issue warnings for more missing optional libraries
* README-hacking: Suggest to use ./configure --quiet so that
any warnings are easily noticed.
* m4/gmp.m4 (cu_GMP): Warn if libgmp is not available.
* m4/jm-macros.m4 (coreutils_MACROS): Normalize the libcap warning.
* m4/xattr.m4 (gl_FUNC_XATTR): Warn if libattr is not available.
2009-10-20 17:11:00 +01:00
Jim Meyering
6ac6c7e4b7 build: use gnulib's isblank module
* bootstrap.conf (gnulib_modules): Add isblank.
* src/system.h (isblank): Don't define.
* m4/check-decl.m4: Don't check for isblank declaration.
* gnulib: Update submodule to latest.
2009-10-19 07:57:15 +02:00
Jim Meyering
f26508204b maint: factor out duplication in currently unused rules
* src/Makefile.am (fs_normalize_perl_subst): Define.
(fs-magic, fs-kernel-magic): Use it.
2009-10-18 10:26:15 +02:00
Eric Blake
9e13b6a0b4 touch: add -h to change symlink timestamps, where supported
* src/touch.c (no_dereference): New flag variable.
(longopts): Add -h/--no-dereference.
(touch): Add symlink handling.
(usage): Document new option.
(main): Accept new option.
* NEWS: Document it.
* doc/coreutils.texi (touch invocation): Likewise.  Also mention
birthtime.
* tests/touch/no-dereference: New test.
* tests/Makefile.am (TESTS): Run it.
2009-10-17 14:36:28 -06:00
Jim Meyering
527fb951de tests: abmon-align: avoid test failure
* tests/ls/abmon-align: Don't remove (1d;) the first line of output.
That was making the test consider only 11 of 12 month names.
Rewrite not to use \(.*\), as that provoked a malfunction in GNU sed
on powerpc Mac OS X (though we don't know yet whether this is due to a
sed bug, or to miscompilation).  Nelson Beebe reported the test failure.
2009-10-17 12:21:52 +02:00
Jim Meyering
f8653f2af3 build: update gnulib submodule to latest 2009-10-17 12:20:41 +02:00
Jim Meyering
2fa407885c build: don't let environment settings perturb build
Setting the envvars, LIB_FDATASYNC, LIB_XATTR or LIB_CRYPT
could cause a configure-time and/or build-time malfunction.
Typically, a configure-time function-in-library test is performed
via code like this:

  LIB_VAR=
  AC_SUBST([LIB_VAR])
  prefix_saved_LIBS=$LIBS
    AC_SEARCH_LIBS([FUNC], [LIB_NAME],
                   [test "$ac_cv_search_FUNC" = "none required" ||
                    LIB_VAR=$ac_cv_search_FUNC])
  LIBS=$prefix_saved_LIBS

However, in each of the files affected by this change, the LIB_VAR=
initialization was omitted.  Thus, when set in the environment, its
value would propagate into generated Makefiles when FUNC is not found
in LIB_NAME.
* m4/jm-macros.m4 (coreutils_MACROS): Initialize AC_SUBST'd var
* m4/lib-check.m4 (cu_LIB_CHECK): Likewise.
* m4/xattr.m4 (gl_FUNC_XATTR): Likewise.
2009-10-15 21:03:40 +02:00
C de-Avillez
b3cfa712ca tail: add add missing backslash at the end of a line in usage
* src/tail.c (usage): Add missing backslash at the end of a line.
2009-10-13 11:20:20 +02:00
Eric Blake
f25273d7f1 tail: tweak usage for more clarity
* src/tail.c (usage): Spell out -n +K.
* THANKS: Update.
Reported by Jan-Pawel Wrozstinski.
2009-10-12 07:00:12 -06:00
Eric Blake
26e8e602a8 touch: optimize use of utimens
* src/touch.c (main): Use UTIME_NOW rather than calling gettime.
(touch): Use UTIME_OMIT rather than stat.
2009-10-10 15:16:55 -06:00
Eric Blake
7280a913a1 copy: allow symlink timestamp preservation on more systems
* src/copy.c (utimens_symlink): Simplify by using lutimens.
* m4/jm-macros.m4 (coreutils_MACROS): Drop utimensat; gnulib does
this for us.
* tests/cp/preserve-slink-time: Recognize lutimes support.
2009-10-10 15:16:52 -06:00
Eric Blake
7ff00ca82f build: update gnulib submodule to latest, for utimens improvements 2009-10-10 15:16:50 -06:00
Jim Meyering
f7b1873805 tests: adjust tail-2/pid to work around FreeBSD 6.1 failure
* tests/tail-2/pid: Run tail -f --pid=... on an actual file, not on
/dev/null, to avoid this failure on FreeBSD 6.1: tail: /dev/null:
cannot change nonblocking mode: Inappropriate ioctl for device
2009-10-10 15:05:09 +02:00
658 changed files with 4565 additions and 2426 deletions

2
.gitattributes vendored
View File

@@ -5,3 +5,5 @@
# # Derived from the regexp in emacs' lisp/add-log.el.
# [diff "texinfo"]
# funcname = "^@node[ \t][ \t]*\\([^,][^,]*\\)"
gl/lib/*.diff -whitespace

9
.gitignore vendored
View File

@@ -1,8 +1,10 @@
*.I[12]
*.[EIOX]
*.bak
*.o
*/.deps
*~
._bootmp
.gdb-history
.kludge-stamp
.tarball-version
@@ -43,16 +45,21 @@ coreutils-*.tar.lzma.sig
gnulib-tests
lib/.cvsignore
lib/.gitignore
lib/arg-nonnull.h
lib/arpa
lib/binary-io.h
lib/charset.alias
lib/configmake.h
lib/glthread
lib/libcoreutils.a
lib/link-warning.h
lib/printf.c
lib/progname.c
lib/progname.h
lib/selinux
lib/unistr
lib/uniwidth
lib/unused-parameter.h
m4/.cvsignore
m4/.gitignore
maint.mk
@@ -72,3 +79,5 @@ src/version.c
src/version.h
stamp-h1
tests/*/*.log
tests/t?
tests/test-suite.log

View File

@@ -1 +1 @@
8.0
8.3

View File

@@ -1,6 +1,6 @@
# Suppress valgrind diagnostics we don't care about.
# Copyright (C) 2003, 2004, 2006-2009 Free Software Foundation, Inc.
# Copyright (C) 2003-2004, 2006-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

3
.x-sc_prohibit_fail_0 Normal file
View File

@@ -0,0 +1,3 @@
\.mk$
/Makefile\.am$
^tests/test-lib\.sh$

View File

@@ -0,0 +1,3 @@
configure.ac
*.m4
ChangeLog*

View File

@@ -4,3 +4,4 @@ Makefile\.am$
^tests/pr/
ChangeLog.*
^man/help2man$
^gl/lib/.*\.c\.diff$

View File

@@ -9,3 +9,4 @@ m4/lib-prefix.m4
m4/po.m4
aclocal.m4
src/c99-to-c89.diff
^gl/lib/.*\.c\.diff$

View File

@@ -46,11 +46,12 @@ md5sum: Ulrich Drepper, Scott Miller, David Madore
mkdir: David MacKenzie
mkfifo: David MacKenzie
mknod: David MacKenzie
mktemp: Jim Meyering
mktemp: Jim Meyering, Eric Blake
mv: Mike Parker, David MacKenzie, Jim Meyering
nice: David MacKenzie
nl: Scott Bartram, David MacKenzie
nohup: Jim Meyering
nproc: Giuseppe Scrivano
od: Jim Meyering
paste: David M. Ihnat, David MacKenzie
pathchk: Paul Eggert, David MacKenzie, Jim Meyering

View File

@@ -11609,7 +11609,7 @@
-----
Copyright (C) 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
Copyright (C) 2002-2005, 2009-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

View File

@@ -4033,7 +4033,7 @@
-----
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

View File

@@ -4015,7 +4015,7 @@
-----
Copyright (C) 2007, 2009 Free Software Foundation, Inc.
Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

View File

@@ -372,7 +372,7 @@
-----
Copyright (C) 2008-2009 Free Software Foundation, Inc.
Copyright (C) 2008-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

View File

@@ -481,10 +481,10 @@ Then just open the index.html file (in the generated lcov-html directory)
in your favorite web browser.
========================================================================
Copyright (C) 2009 Free Software Foundation, Inc.
Copyright (C) 2009-2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the ``GNU Free

View File

@@ -1,6 +1,6 @@
# Make coreutils. -*-Makefile-*-
# Copyright (C) 1990, 1993-2009 Free Software Foundation, Inc.
# Copyright (C) 1990, 1993-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -47,6 +47,8 @@ syntax_check_exceptions = \
.x-sc_po_check \
.x-sc_program_name \
.x-sc_prohibit_atoi_atof \
.x-sc_prohibit_fail_0 \
.x-sc_prohibit_magic_number_exit \
.x-sc_prohibit_stat_st_blocks \
.x-sc_prohibit_strcmp \
.x-sc_prohibit_tab_based_indentation \

191
NEWS
View File

@@ -1,6 +1,112 @@
GNU coreutils NEWS -*- outline -*-
* Noteworthy changes in release ?.? (????-??-??) [?]
* Noteworthy changes in release 8.4 (2010-01-13) [stable]
** Bug fixes
nproc --all is now guaranteed to be as large as the count
of available processors, which may not have been the case
on GNU/Linux systems with neither /proc nor /sys available.
[bug introduced in coreutils-8.1]
** Build-related
Work around a build failure when using buggy <sys/capability.h>.
Alternatively, configure with --disable-libcap.
Compilation would fail on systems using glibc-2.7..2.9 due to changes in
gnulib's wchar.h that tickled a bug in at least those versions of glibc's
own <wchar.h> header. Now, gnulib works around the bug in those older
glibc <wchar.h> headers.
Building would fail with a link error (cp/copy.o) when XATTR headers
were installed without the corresponding library. Now, configure
detects that and disables xattr support, as one would expect.
* Noteworthy changes in release 8.3 (2010-01-07) [stable]
** Bug fixes
cp -p, install -p, mv, and touch -c could trigger a spurious error
message when using new glibc coupled with an old kernel.
[bug introduced in coreutils-6.12].
ls -l --color no longer prints "argetm" in front of dangling
symlinks when the 'LINK target' directive was given to dircolors.
[bug introduced in fileutils-4.0]
pr's page header was improperly formatted for long file names.
[bug introduced in coreutils-7.2]
rm -r --one-file-system works once again.
The rewrite to make rm use fts introduced a regression whereby
a commmand of the above form would fail for all subdirectories.
[bug introduced in coreutils-8.0]
stat -f recognizes more file system types: k-afs, fuseblk, gfs/gfs2, ocfs2,
and rpc_pipefs. Also Minix V3 is displayed correctly as minix3, not minux3.
[bug introduced in coreutils-8.1]
tail -f (inotify-enabled) once again works with remote files.
The use of inotify with remote files meant that any changes to those
files that was not done from the local system would go unnoticed.
[bug introduced in coreutils-7.5]
tail -F (inotify-enabled) would abort when a tailed file is repeatedly
renamed-aside and then recreated.
[bug introduced in coreutils-7.5]
tail -F (inotify-enabled) could fail to follow renamed files.
E.g., given a "tail -F a b" process, running "mv a b" would
make tail stop tracking additions to "b".
[bug introduced in coreutils-7.5]
touch -a and touch -m could trigger bugs in some file systems, such
as xfs or ntfs-3g, and fail to update timestamps.
[bug introduced in coreutils-8.1]
wc now prints counts atomically so that concurrent
processes will not intersperse their output.
[the issue dates back to the initial implementation]
* Noteworthy changes in release 8.2 (2009-12-11) [stable]
** Bug fixes
id's use of mgetgroups no longer writes beyond the end of a malloc'd buffer
[bug introduced in coreutils-8.1]
id no longer crashes on systems without supplementary group support.
[bug introduced in coreutils-8.1]
rm once again handles zero-length arguments properly.
The rewrite to make rm use fts introduced a regression whereby
a command like "rm a '' b" would fail to remove "a" and "b", due to
the presence of the empty string argument.
[bug introduced in coreutils-8.0]
sort is now immune to the signal handling of its parent.
Specifically sort now doesn't exit with an error message
if it uses helper processes for compression and its parent
ignores CHLD signals. [bug introduced in coreutils-6.9]
tail without -f no longer access uninitialized memory
[bug introduced in coreutils-7.6]
timeout is now immune to the signal handling of its parent.
Specifically timeout now doesn't exit with an error message
if its parent ignores CHLD signals. [bug introduced in coreutils-7.6]
a user running "make distcheck" in the coreutils source directory,
with TMPDIR unset or set to the name of a world-writable directory,
and with a malicious user on the same system
was vulnerable to arbitrary code execution
[bug introduced in coreutils-5.0]
* Noteworthy changes in release 8.1 (2009-11-18) [stable]
** Bug fixes
@@ -8,15 +114,94 @@ GNU coreutils NEWS -*- outline -*-
Even then, chcon may still be useful.
[bug introduced in coreutils-8.0]
chcon, chgrp, chmod, chown and du now diagnose an ostensible directory cycle
and arrange to exit nonzero. Before, they would silently ignore the
offending directory and all "contents."
env -u A=B now fails, rather than silently adding A to the
environment. Likewise, printenv A=B silently ignores the invalid
name. [the bugs date back to the initial implementation]
ls --color now handles files with capabilities correctly. Previously
files with capabilities were often not colored, and also sometimes, files
without capabilites were colored in error. [bug introduced in coreutils-7.0]
md5sum now prints checksums atomically so that concurrent
processes will not intersperse their output.
This also affected sum, sha1sum, sha224sum, sha384sum and sha512sum.
[the bug dates back to the initial implementation]
mktemp no longer leaves a temporary file behind if it was unable to
output the name of the file to stdout.
[the bug dates back to the initial implementation]
nice -n -1 PROGRAM now runs PROGRAM even when its internal setpriority
call fails with errno == EACCES.
[the bug dates back to the initial implementation]
nice, nohup, and su now refuse to execute the subsidiary program if
they detect write failure in printing an otherwise non-fatal warning
message to stderr.
stat -f recognizes more file system types: afs, cifs, anon-inode FS,
btrfs, cgroupfs, cramfs-wend, debugfs, futexfs, hfs, inotifyfs, minux3,
nilfs, securityfs, selinux, xenfs
tail -f (inotify-enabled) now avoids a race condition.
Before, any data appended in the tiny interval between the initial
read-to-EOF and the inotify watch initialization would be ignored
initially (until more data was appended), or forever, if the file
were first renamed or unlinked or never modified.
[The race was introduced in coreutils-7.5]
tail -F (inotify-enabled) now consistently tails a file that has been
replaced via renaming. That operation provokes either of two sequences
of inotify events. The less common sequence is now handled as well.
[The bug came with the implementation change in coreutils-7.5]
timeout now doesn't exit unless the command it is monitoring does,
for any specified signal. [bug introduced in coreutils-7.0].
** Changes in behavior
chroot, env, nice, and su fail with status 125, rather than 1, on
internal error such as failure to parse command line arguments; this
is for consistency with stdbuf and timeout, and avoids ambiguity
with the invoked command failing with status 1. Likewise, nohup
fails with status 125 instead of 127.
du (due to a change in gnulib's fts) can now traverse NFSv4 automounted
directories in which the stat'd device number of the mount point differs
during a traversal. Before, it would fail, because such a mismatch would
usually represent a serious error or a subversion attempt.
echo and printf now interpret \e as the Escape character (0x1B).
rm -f /read-only-fs/nonexistent now succeeds and prints no diagnostic
on systems with an unlinkat syscall that sets errno to EROFS in that case.
Before, it would fail with a "Read-only file system" diagnostic.
Also, "rm /read-only-fs/nonexistent" now reports "file not found" rather
than the less precise "Read-only file system" error.
** New programs
nproc: Print the number of processing units available to a process.
** New features
env and printenv now accept the option --null (-0), as a means to
avoid ambiguity with newlines embedded in the environment.
md5sum --check now also accepts openssl-style checksums.
So do sha1sum, sha224sum, sha384sum and sha512sum.
mktemp now accepts the option --suffix to provide a known suffix
after the substitution in the template. Additionally, uses such as
"mktemp fileXXXXXX.txt" are able to infer an appropriate --suffix.
touch now accepts the option --no-dereference (-h), as a means to
change symlink timestamps on platforms with enough support.
* Noteworthy changes in release 8.0 (2009-10-06) [beta]
@@ -2721,10 +2906,10 @@ packages, see ./old/*/NEWS.
========================================================================
Copyright (C) 2001-2009 Free Software Foundation, Inc.
Copyright (C) 2001-2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the ``GNU Free

6
README
View File

@@ -11,7 +11,7 @@ The programs that can be built with this package are:
csplit cut date dd df dir dircolors dirname du echo env expand expr
factor false fmt fold groups head hostid hostname id install join kill
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir
nproc od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir
runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf
sleep sort split stat stdbuf stty su sum sync tac tail tee test timeout
touch tr true truncate tsort tty uname unexpand uniq unlink uptime users
@@ -229,10 +229,10 @@ the address on the last line of --help output.
========================================================================
Copyright (C) 1998, 2002-2009 Free Software Foundation, Inc.
Copyright (C) 1998, 2002-2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the ``GNU Free

View File

@@ -35,7 +35,7 @@ which are extracted from other source packages:
And there you are! Just
$ ./configure #[--enable-gcc-warnings]
$ ./configure --quiet #[--enable-gcc-warnings] [*]
$ make
$ make check
@@ -48,9 +48,15 @@ should output no difference.
Enjoy!
[*] The --enable-gcc-warnings option is useful only with glibc
and with a very recent version of gcc. You'll probably also have
to use recent system headers. If you configure with this option,
and spot a problem, please be sure to send the report to the bug
reporting address of this package, and not to that of gnulib, even
if the problem seems to originate in a gnulib-provided file.
-----
Copyright (C) 2002-2009 Free Software Foundation, Inc.
Copyright (C) 2002-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -17,11 +17,15 @@ Note please try to install/build official packages for your system.
If these are not available then one can make them available only to
the coreutils build using the following instructions. Even if the
official packages for your system are too old, please install them
as they may be required to build the newer versions.
as they may be required to build the newer versions. The examples
below build into $HOME/coreutils/deps/, so first ensure that your
$PATH is set correctly, which can be done for the current shell like:
export PATH=$HOME/coreutils/deps/bin:$PATH
* autoconf *
# Note Autoconf 2.62 or newer is needed to build automake-1.11
# Note Autoconf 2.62 or newer is needed to build automake-1.11.1
git clone --depth=1 git://git.sv.gnu.org/autoconf.git
git checkout v2.62
autoreconf -vi
@@ -33,7 +37,7 @@ as they may be required to build the newer versions.
# Note help2man is required to build automake fully
git clone git://git.sv.gnu.org/automake.git
cd automake
git checkout -b branch-1.11 --track origin/branch-1.11
git checkout v1.11.1
./bootstrap
./configure --prefix=$HOME/coreutils/deps
make install
@@ -50,7 +54,4 @@ requires version 1.10a or newer, as well as the xz program itself.
./configure --prefix=$HOME/coreutils/deps
make install
Now we can build coreutils as described in README-hacking
as long as $PATH starts with $HOME/coreutils/deps/bin, which
one can set for the current shell like:
$ export PATH=$HOME/coreutils/deps/bin:$PATH
Now one can build coreutils as described in README-hacking.

View File

@@ -29,13 +29,10 @@ FIXME: enable excluded programs like arch? to get their manual pages?
* Run "make distcheck"
* Manually set the date, version number, and [stable/alpha/beta] on
line 3 of NEWS, then do e.g.,:
* Set the date, version number, and release type [stable/alpha/beta] on
line 3 of NEWS, commit that, and tag the release by running e.g.,
v=8.0
pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' Makefile)
git commit -F <(printf 'version '$v'\n\n* NEWS: Record release date.\n') -a
git tag -s -m "$pkg $v" v$v HEAD
build-aux/do-release-commit-and-tag 8.1 beta
* Run the following to create release tarballs. Your choice selects the
corresponding upload-to destination in the emitted gnupload command.
@@ -53,7 +50,7 @@ FIXME: enable excluded programs like arch? to get their manual pages?
Once all the builds and tests have passed,
* Run the gnupload command that was suggested by your "make major" run above.
* Run the gnupload command that was suggested by your "make stable" run above.
* Wait a few minutes (maybe up to 30?) and then use the release URLs to
download all tarball/signature pairs and use gpg --verify to ensure
@@ -79,7 +76,7 @@ Once all the builds and tests have passed,
click on the "submit news", then write something like the following:
(If there is no such button, then enable "News" for the project via
the Main -> "Select Features" menu item, or via this link:
https://savannah.gnu.org/project/admin/editgroupfeatures.php?group=gzip)
https://savannah.gnu.org/project/admin/editgroupfeatures.php?group=coreutils)
Subject: coreutils-0.0 released [beta]
The announcement is here:

View File

@@ -1,7 +1,7 @@
#! /bin/bash
# Convert this package for use with valgrind.
# Copyright (C) 2002-2006, 2009 Free Software Foundation, Inc.
# Copyright (C) 2002-2006, 2009-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

18
THANKS
View File

@@ -52,6 +52,7 @@ Andy Longton alongton@metamark.com
Anthony Thyssen anthony@griffith.edu.au
Antonio Rendas ajrendas@yahoo.com
Ariel Faigon ariel@cthulhu.engr.sgi.com
Arjan Opmeer arjan.opmeer@gmail.com
Arne H. Juul arnej@solan.unit.no
Arne Henrik Juul arnej@imf.unit.no
Arnold Robbins arnold@skeeve.com
@@ -101,8 +102,10 @@ Carlos Canau Carlos.Canau@relay.puug.pt
Charles Karney karney@pppl.gov
Charles Randall crandall@matchlogic.com
Chip Salzenberg chip@valinux.com
Chris Clayton chris2553@googlemail.com
Chris Faylor cgf@cygnus.com
Chris J. Bednar cjb@AdvancedDataSolutions.com
Chris Jones cjns1989@gmail.com
Chris Lesniewski ctl@mit.edu
Chris Sylvain csylvain@umm.edu
Chris Yeo cyeo@biking.org
@@ -149,6 +152,7 @@ Dawson Engler engler@stanford.edu
Dean Gaudet dean-savannah@arctic.org
Deepak Goel deego@gnufans.org
Denis Excoffier denis.excoffier@airbus.com
Denis McKeon dmckeon@swcp.com
Dennis Henriksen opus@flamingo.osrl.dk
Dennis Smit ds@nerds-incorporated.org
Derek Clegg dclegg@next.com
@@ -210,6 +214,7 @@ Geoff Whale geoffw@cse.unsw.EDU.AU
Gerald Pfeifer gerald@pfeifer.com
Gerhard Poul gpoul@gnu.org
Germano Leichsenring germano@jedi.cs.kobe-u.ac.jp
Gilles Espinasse g.esp@free.fr
Glen Lenker glen.lenker@gmail.com
Göran Uddeborg goeran@uddeborg.se
Guochun Shi gshi@ncsa.uiuc.edu
@@ -246,6 +251,7 @@ Ian Turner vectro@pipeline.com
Iida Yosiaki iida@gnu.org
Ilya N. Golubev gin@mo.msk.ru
Ingo Saitz ingo@debian.org
Ivan Labath labath3@st.fmph.uniba.sk
Ivo Timmermans ivo@debian.org
James james@albion.glarp.com
James Antill jmanti%essex.ac.uk@seralph21.essex.ac.uk
@@ -262,6 +268,7 @@ Jan Engelhardt jengelh@medozas.de
Jan Fedak J.Fedak@sh.cvut.cz
Jan Moringen jan.moringen@uni-bielefeld.de
Jan Nieuwenhuizen janneke@gnu.org
Jan-Pawel Wrozstinski jpwroz@gmail.com
Janos Farkas chexum@shadow.banki.hu
Jarkko Hietaniemi jhi@epsilon.hut.fi
Jarod Wilson jwilson@redhat.com
@@ -296,6 +303,7 @@ John Kodis kodis@acm.org
John Murphy jam@philabs.research.philips.com
John Roll john@panic.harvard.edu
John Salmon johns@mullet.anu.edu.au
John Stanley johnstops@verizon.net
John Summerfield summer@OS2.ami.com.au
Jon Peatfield J.S.Peatfield@damtp.cam.ac.uk
Joost van Baal joostvb@xs4all.nl
@@ -330,6 +338,7 @@ Kirk Kelsey kirk.kelsey@0x4b.net
Kristin E Thomas kristint@us.ibm.com
Kjetil Torgrim Homme kjetilho@ifi.uio.no
Kristoffer Rose kris@diku.dk
Ladislav Hagara ladislav.hagara@unob.cz
Larry McVoy lm@sgi.com
Lars Hecking lhecking@nmrc.ucc.ie
Leah Q eequor@earthlink.net
@@ -368,6 +377,7 @@ Martin martin@dresden.nacamar.de
Martin Buck martin.buck@ascom.ch
Martin Gallant martyg@goodbit.net
Martin Hippe martin.hippe@schlund.de
Martin Jacobs martin.jacobs@arcor.de
Martin Michlmayr tbm@cyrius.com
Martin Mitchell martin@debian.org
Martin P.J. Zinser zinser@decus.de
@@ -397,7 +407,7 @@ Max Chang maxchang@ucla.edu
Meelis Roos mroos@tartu.cyber.ee
Michael michael@aplatform.com
Michael ??? michael@roka.net
Michael Bacarella mbac@netgraft.com>
Michael Bacarella mbac@netgraft.com
Michael Deutschmann michael@talamasca.ocis.net
Michael Elizabeth Chastain mec.gnu@mindspring.com
Michael Gaughen mgaughen@polyserve.com
@@ -504,9 +514,11 @@ Richard Sharman rsharman@magmacom.com
Rick Sladkey jrs@world.std.com
Rik Faith faith@cs.unc.edu
Risto Kankkunen kankkune@lingsoft.fi
Rob Wortman wyrm@haell.com
Robert H. de Vries robert@and.nl
Robert Lindgren robert@orcafat.com
Robert Millan zeratul2@wanadoo.es
Robert Schwebel r.schwebel@pengutronix.de
Rogier Wolff R.E.Wolff@BitWizard.nl
Roland Huebner ro-huebner@gmx.de
Roland Turner raz.tah.bet@raz.cx
@@ -523,6 +535,7 @@ Samuli Karkkainen Samuli.Karkkainen@hut.fi
Sander van Malssen svm@kozmix.ow.nl
Santiago Vila Doncel sanvila@unex.es
Savochkin Andrey Vladimirovich saw@msu.ru
Scott Harrison scott.gnu.2009@scottrix.co.uk
Scott Lurndal slurn@griffin.engr.sgi.com
Sébastien Maret smaret@umich.edu
Sergei Steshenko sergstesh@yahoo.com
@@ -532,6 +545,7 @@ Solar Designer solar@owl.openwall.com
Stanislav Ievlev inger@altlinux.ru
Stavros Passas stabat@ics.forth.gr
Stéphane Chazelas Stephane_CHAZELAS@yahoo.fr
Stéphane Raimbault stephane.raimbault@makina-corpus.com
Stephen Depooter sbdep@myrealbox.com
Stephen Eglen eglen@pcg.wustl.edu
Stephen Gildea gildea@stop.mail-abuse.org
@@ -539,11 +553,13 @@ Stephen Smoogen smooge@mindspring.com
Steve McConnel steve@acadcomp.sil.org
Steve McIntyre steve@einval.com
Steve Ward planet36@gmail.com
Steven Drake sbd@users.sourceforge.net
Steven G. Johnson stevenj@alum.mit.edu
Steven Mocking ufo@quicknet.nl
Steven Parkes smparkes@smparkes.net
Steven Schveighoffer schveiguy@yahoo.com
Steven P Watson steven@magelico.net
Stuart Citrin ctrn3e8@gmail.com
Stuart Kemp skemp@peter.bmc.com
Stuart Shelton stuart@shelton.me
Sven Joachim svenjoac@gmx.de

7
TODO
View File

@@ -12,7 +12,6 @@ Modify chmod so that it does not change an inode's st_ctime
Discussed more recently on <http://bugs.debian.org/497514>.
document the following in coreutils.texi:
mktemp
[
pinky
@@ -60,10 +59,6 @@ Integrate use of sendfile, suggested here:
http://mail.gnu.org/archive/html/bug-fileutils/2003-03/msg00030.html
I don't plan to do that, since a few tests demonstrate no significant benefit.
Should printf '\0123' print "\n3"?
per report from TAKAI Kousuke on Mar 27
http://mail.gnu.org/archive/html/bug-coreutils/2003-03/index.html
printf: consider adapting builtins/printf.def from bash
tail: don't use xlseek; it *exits*.
@@ -170,7 +165,7 @@ pr's use of nstrftime can make it malloc a very large (up to SIZE_MAX) buffer
-----
Copyright (C) 2002-2009 Free Software Foundation, Inc.
Copyright (C) 2002-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# Bootstrap this package from checked-out sources.
# Copyright (C) 2003-2009 Free Software Foundation, Inc.
# Copyright (C) 2003-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -71,6 +71,7 @@ gnulib_modules=
gnulib_files=
# A function to be called after everything else in this script.
# Override it via your own definition in bootstrap.conf.
bootstrap_epilogue() { :; }
# The command to download all .po files for a specified domain into
@@ -313,10 +314,20 @@ get_version() {
$app --version >/dev/null 2>&1 || return 1
$app --version 2>&1 |
sed -n 's/[^0-9.]*\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/p
sed -n '# extract version within line
s/.*[v ]\{1,\}\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
t done
# extract version at start of line
s/^\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
t done
d
:done
#the following essentially does s/5.005/5.5/
s/\.0*\([1-9]\)/.\1/g
p
q'
}
@@ -416,7 +427,7 @@ case ${GNULIB_SRCDIR--} in
git_modules_config submodule.gnulib.url >/dev/null; then
git submodule init
GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
git_modules_config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
echo "$0: getting gnulib files..."
git submodule update || exit $?
GNULIB_SRCDIR=gnulib
@@ -733,7 +744,7 @@ find "$m4_base" "$source_base" \
# Reconfigure, getting other files.
# Skip autoheader if it's not needed.
grep '^[ ]*AC_CONFIG_HEADERS\>' configure.ac >/dev/null ||
grep -E '^[ ]*AC_CONFIG_HEADERS?\>' configure.ac >/dev/null ||
AUTOHEADER=true
for command in \

View File

@@ -1,6 +1,6 @@
# Bootstrap configuration.
# Copyright (C) 2006-2009 Free Software Foundation, Inc.
# Copyright (C) 2006-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -71,7 +71,9 @@ gnulib_modules="
diacrit
dirfd
dirname
do-release-commit-and-tag
dup2
environ
error
euidaccess
exclude
@@ -90,6 +92,7 @@ gnulib_modules="
fopen-safer
fprintftime
freopen
freopen-safer
fseeko
fsusage
fsync
@@ -127,6 +130,7 @@ gnulib_modules="
inttostr
inttypes
isapipe
isblank
lchmod
lchown
lib-ignore
@@ -156,6 +160,7 @@ gnulib_modules="
modechange
mountlist
mpsort
nproc
obstack
pathmax
perl
@@ -178,8 +183,8 @@ gnulib_modules="
readutmp
realloc
regex
remove
rename
rename-dest-slash
rmdir
root-dev-ino
rpmatch
@@ -205,7 +210,6 @@ gnulib_modules="
strsignal
strtoimax
strtoumax
strverscmp
symlink
sys_stat
timespec
@@ -215,6 +219,7 @@ gnulib_modules="
unistd-safer
unlink-busy
unlocked-io
unsetenv
update-copyright
uptime
useless-if-before-free
@@ -226,7 +231,6 @@ gnulib_modules="
verify
verror
version-etc-fsf
warnings
wcwidth
winsz-ioctl
winsz-termios
@@ -306,8 +310,8 @@ gnulib_tool_option_extras="--tests-base=$bt/gnulib-tests --with-tests"
# Build prerequisites
buildreq="\
autoconf 2.61
automake 1.11
autoconf 2.62
automake 1.11.1
autopoint -
bison -
gettext -

View File

@@ -234,7 +234,7 @@
-----
Copyright (C) 2002-2009 Free Software Foundation, Inc.
Copyright (C) 2002-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

61
cfg.mk
View File

@@ -1,5 +1,5 @@
# Customize maint.mk -*- makefile -*-
# Copyright (C) 2003-2009 Free Software Foundation, Inc.
# Copyright (C) 2003-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,22 +14,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Use alpha.gnu.org for alpha and beta releases.
# Use ftp.gnu.org for major releases.
gnu_ftp_host-alpha = alpha.gnu.org
gnu_ftp_host-beta = alpha.gnu.org
gnu_ftp_host-major = ftp.gnu.org
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
# Used in maint.mk's web-manual rule
manual_title = Core GNU utilities
url_dir_list = \
ftp://$(gnu_rel_host)/gnu/$(PACKAGE)
# The GnuPG ID of the key used to sign the tarballs.
gpg_key_ID = B9AB9A16
# Tests not to run as part of "make distcheck".
local-checks-to-skip =
@@ -39,7 +26,10 @@ bootstrap-tools = autoconf,automake,gnulib,bison
# Now that we have better tests, make this the default.
export VERBOSE = yes
old_NEWS_hash = 785e51bc9af87e7eb004f9ba24a0ca27
old_NEWS_hash = beab130e9d41bf8014a0594cfe8b28d4
# Add an exemption for sc_makefile_at_at_check.
_makefile_at_at_check_exceptions = ' && !/^cu_install_program =/'
# Ensure that the list of O_ symbols used to compute O_FULLBLOCK is complete.
dd = $(srcdir)/src/dd.c
@@ -191,6 +181,18 @@ sc_no_exec_perl_coreutils:
exit 1; } || :; \
fi
# Don't use "readlink" or "readlinkat" directly
sc_prohibit_readlink:
@re='\<readlink(at)? \(' \
msg='do not use readlink(at); use via xreadlink or areadlink*' \
$(_prohibit_regexp)
# Don't use address of "stat" or "lstat" functions
sc_prohibit_stat_macro_address:
@re='\<l?stat '':|&l?stat\>' \
msg='stat() and lstat() may be function-like macros' \
$(_prohibit_regexp)
# Ensure that date's --help output stays in sync with the info
# documentation for GNU strftime. The only exception is %N,
# which date accepts but GNU strftime does not.
@@ -218,4 +220,33 @@ sc_prohibit_emacs__indent_tabs_mode__setting:
msg='use of emacs indent-tabs-mode: setting' \
$(_prohibit_regexp)
# Ensure that each file that contains fail=1 also contains fail=0.
# Otherwise, setting file=1 in the environment would make tests fail unexpectedly.
sc_prohibit_fail_0:
@re='\<fail=0\>' \
msg='fail=0 initialization' \
$(_prohibit_regexp)
# Ensure that "stdio--.h" is used where appropriate.
sc_require_stdio_safer:
@if $(VC_LIST_EXCEPT) | grep -l '\.[ch]$$' > /dev/null; then \
files=$$(grep -l '\bfreopen \?(' $$($(VC_LIST_EXCEPT) \
| grep '\.[ch]$$')); \
test -n "$$files" && grep -LE 'include "stdio--.h"' $$files \
| grep . && \
{ echo '$(ME): the above files should use "stdio--.h"' \
1>&2; exit 1; } || :; \
else :; \
fi
# Prefer xnanosleep over other less-precise sleep methods
sc_prohibit_sleep:
@re='\<(nano|u)?sleep \(' \
msg='prefer xnanosleep over other sleep interfaces' \
$(_prohibit_regexp)
include $(srcdir)/dist-check.mk
update-copyright-env = \
UPDATE_COPYRIGHT_USE_INTERVALS=1 \
UPDATE_COPYRIGHT_MAX_LINE_LENGTH=79

View File

@@ -1,7 +1,7 @@
# -*- autoconf -*-
# Process this file with autoconf to produce a configure script.
# Copyright (C) 1991, 1993-2009 Free Software Foundation, Inc.
# Copyright (C) 1991, 1993-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
dnl Written by Jim Meyering.
AC_PREREQ([2.61])
AC_PREREQ([2.62])
# Make inter-release version strings look like, e.g., v6.9-219-g58ddd, which
# indicates that it is built from the 219th delta (in _some_ repository)
@@ -32,7 +32,7 @@ AC_CONFIG_SRCDIR([src/ls.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([lib/config.h:lib/config.hin])
AM_INIT_AUTOMAKE([1.11 dist-xz color-tests parallel-tests])
AM_INIT_AUTOMAKE([1.11.1 dist-xz color-tests parallel-tests])
AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
AC_PROG_CC_STDC
@@ -106,6 +106,7 @@ if test "$gl_gcc_warnings" = yes; then
gl_WARN_ADD([-Wno-logical-op])
gl_WARN_ADD([-fdiagnostics-show-option])
gl_WARN_ADD([-funit-at-a-time])
AC_SUBST([WARN_CFLAGS])
@@ -113,6 +114,16 @@ if test "$gl_gcc_warnings" = yes; then
AC_DEFINE([_FORTIFY_SOURCE], [2],
[enable compile-time and run-time bounds-checking, and some warnings])
AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
# We use a slightly smaller set of warning options for lib/.
# Remove the following and save the result in GNULIB_WARN_CFLAGS.
nw=
nw="$nw -Wuninitialized"
nw="$nw -Wunused-macros"
nw="$nw -Wmissing-prototypes"
nw="$nw -Wold-style-definition"
gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
AC_SUBST([GNULIB_WARN_CFLAGS])
fi
AC_FUNC_FORK
@@ -418,8 +429,10 @@ CONFIG_STATUS_DEPENDENCIES='$(top_srcdir)/src/Makefile.am'
AC_SUBST([CONFIG_STATUS_DEPENDENCIES])
############################################################################
# As long as "grep 'PRI[diouxX]' po/*.pot" reports matches in
# translatable strings, we must use need-formatstring-macros here.
AM_GNU_GETTEXT([external], [need-formatstring-macros])
AM_GNU_GETTEXT_VERSION([0.15])
AM_GNU_GETTEXT_VERSION([0.17])
# For a test of uniq: it uses the $LOCALE_FR envvar.
gt_LOCALE_FR

View File

@@ -4,36 +4,63 @@ bin=bin-$$$$
write_loser = printf '\#!%s\necho $$0: bad path 1>&2; exit 1\n' '$(SHELL)'
TMPDIR ?= /tmp
t=$(TMPDIR)/$(PACKAGE)/test
tmpdir = $(abs_top_builddir)/tests/torture
t=$(tmpdir)/$(PACKAGE)/test
pfx=$(t)/i
built_programs = \
$$(echo 'spy:;@echo $$(bin_PROGRAMS)' \
| MAKEFLAGS= $(MAKE) -s -C src -f Makefile -f - spy \
| fmt -1 | sed 's,$(EXEEXT)$$,,' | sort -u)
# More than once, tainted build and source directory names would
# have caused at least one "make check" test to apply "chmod 700"
# to all directories under $HOME. Make sure it doesn't happen again.
tp := $(shell echo "$(TMPDIR)/$(PACKAGE)-$$$$")
tp = $(tmpdir)/taint
t_prefix = $(tp)/a
t_taint = '$(t_prefix) b'
fake_home = $(tp)/home
# When extracting from a distribution tarball, extract using the fastest
# method possible. With dist-xz, that means using the *.xz file.
ifneq ('', $(filter *.xz, $(DIST_ARCHIVES)))
tar_decompress_opt_ = J
suffix_ = xz
else
ifneq ('', $(filter *.gz, $(DIST_ARCHIVES)))
tar_decompress_opt_ = z
suffix_ = gz
else
tar_decompress_opt_ = j
suffix_ = bz2
endif
endif
amtar_extract_ = $(AMTAR) -$(tar_decompress_opt_)xf
preferred_tarball_ = $(distdir).tar.$(suffix_)
# Ensure that tests run from tainted build and src dir names work,
# and don't affect anything in $HOME. Create witness files in $HOME,
# record their attributes, and build/test. Then ensure that the
# witnesses were not affected.
# Skip this test when using libtool, since libtool-generated scripts
# cannot deal with a space-tainted srcdir.
ALL_RECURSIVE_TARGETS += taint-distcheck
taint-distcheck: $(DIST_ARCHIVES)
grep '^[ ]*LT_INIT' configure.ac >/dev/null && exit 0 || :
test -d $(t_taint) && chmod -R 700 $(t_taint) || :
-rm -rf $(t_taint) $(fake_home)
mkdir -p $(t_prefix) $(t_taint) $(fake_home)
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t_taint) -zxf $(distdir).tar.gz
$(amtar_extract_) $(preferred_tarball_) -C $(t_taint)
mkfifo $(fake_home)/fifo
touch $(fake_home)/f
mkdir -p $(fake_home)/d/e
ls -lR $(fake_home) $(t_prefix) > $(tp)/.ls-before
HOME=$(fake_home); export HOME; \
cd $(t_taint)/$(distdir) \
&& ./configure \
&& $(MAKE) \
&& HOME=$(fake_home) $(MAKE) check \
&& $(MAKE) check \
&& ls -lR $(fake_home) $(t_prefix) > $(tp)/.ls-after \
&& diff $(tp)/.ls-before $(tp)/.ls-after \
&& test -d $(t_prefix)
@@ -50,8 +77,9 @@ define install-transform-check
endef
# Install, then verify that all binaries and man pages are in place.
# Note that neither the binary, ginstall, nor the ].1 man page is installed.
# Note that neither the binary, ginstall, nor the [.1 man page is installed.
define my-instcheck
echo running my-instcheck; \
$(MAKE) prefix=$(pfx) install \
&& test ! -f $(pfx)/bin/ginstall \
&& { fail=0; \
@@ -68,8 +96,16 @@ define my-instcheck
}
endef
# The hard-linking for-loop below ensures that there is a bin/ directory
# full of all of the programs under test (except the ones that are required
# for basic Makefile rules), all symlinked to the just-built "false" program.
# This is to ensure that if ever a test neglects to make PATH include
# the build srcdir, these always-failing programs will run.
# Otherwise, it is too easy to test the wrong programs.
# Note that "false" itself is a symlink to true, so it too will malfunction.
define coreutils-path-check
{ \
echo running coreutils-path-check; \
if test -f $(srcdir)/src/true.c; then \
fail=1; \
mkdir $(bin) \
@@ -97,37 +133,38 @@ define coreutils-path-check
}
endef
# Use -Wformat -Werror to detect format-string/arg-list mismatches.
# Also, check for shadowing problems with -Wshadow, and for pointer
# arithmetic problems with -Wpointer-arith.
# These CFLAGS are pretty strict. If you build this target, you probably
# have to have a recent version of gcc and glibc headers.
# The hard-linking for-loop below ensures that there is a bin/ directory
# full of all of the programs under test (except the ones that are required
# for basic Makefile rules), all symlinked to the just-built "false" program.
# This is to ensure that if ever a test neglects to make PATH include
# the build srcdir, these always-failing programs will run.
# Otherwise, it is too easy to test the wrong programs.
# Note that "false" itself is a symlink to true, so it too will malfunction.
# Use this to make sure we don't run these programs when building
# from a virgin compressed tarball file, below.
null_AM_MAKEFLAGS ?= \
ACLOCAL=false \
AUTOCONF=false \
AUTOMAKE=false \
AUTOHEADER=false \
GPERF=false \
MAKEINFO=false
ALL_RECURSIVE_TARGETS += my-distcheck
my-distcheck: $(DIST_ARCHIVES) $(local-check)
$(MAKE) syntax-check
$(MAKE) check
-rm -rf $(t)
mkdir -p $(t)
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
cd $(t)/$(distdir) \
&& ./configure --enable-gcc-warnings --disable-nls \
&& $(MAKE) AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
&& $(MAKE) dvi \
&& $(install-transform-check) \
&& $(my-instcheck) \
&& $(coreutils-path-check) \
&& $(MAKE) distclean
$(amtar_extract_) $(preferred_tarball_) -C $(t)
(set -e; cd $(t)/$(distdir); \
./configure --quiet --enable-gcc-warnings --disable-nls; \
$(MAKE) AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)'; \
$(MAKE) dvi; \
$(install-transform-check); \
$(my-instcheck); \
$(coreutils-path-check); \
$(MAKE) distclean \
)
(cd $(t) && mv $(distdir) $(distdir).old \
&& $(AMTAR) -zxf - ) < $(distdir).tar.gz
&& $(amtar_extract_) - ) < $(preferred_tarball_)
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
-rm -rf $(t)
rmdir $(tmpdir)/$(PACKAGE) $(tmpdir)
@echo "========================"; \
echo "$(distdir).tar.gz is ready for distribution"; \
echo "ready for distribution:"; \
for i in $(DIST_ARCHIVES); do echo " $$i"; done; \
echo "========================"

View File

@@ -2002,7 +2002,7 @@
-----
Copyright (C) 2001-2009 Free Software Foundation, Inc.
Copyright (C) 2001-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

View File

@@ -1,6 +1,6 @@
# Make coreutils documentation. -*-Makefile-*-
# Copyright (C) 1995-1998, 2001-2009 Free Software Foundation, Inc.
# Copyright (C) 1995-1998, 2001-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -30,13 +30,12 @@ EXTRA_DIST = perm.texi getdate.texi constants.texi fdl.texi
AM_MAKEINFOFLAGS = --no-split
constants.texi: $(top_srcdir)/src/tail.c $(top_srcdir)/src/shred.c
LC_ALL=C \
sed -n -e 's/^#define \(DEFAULT_MAX[_A-Z]*\) \(.*\)/@set \1 \2/p' \
$(top_srcdir)/src/tail.c > t-$@
LC_ALL=C \
sed -n -e 's/.*\(DEFAULT_PASSES\)[ =]* \([0-9]*\).*/@set SHRED_\1 \2/p'\
$(top_srcdir)/src/shred.c >> t-$@
mv t-$@ $@
$(AM_V_GEN)LC_ALL=C; export LC_ALL; \
{ sed -n -e 's/^#define \(DEFAULT_MAX[_A-Z]*\) \(.*\)/@set \1 \2/p' \
$(top_srcdir)/src/tail.c && \
sed -n -e 's/.*\(DEFAULT_PASSES\)[ =]* \([0-9]*\).*/@set SHRED_\1 \2/p'\
$(top_srcdir)/src/shred.c; } > t-$@ \
&& mv t-$@ $@
MAINTAINERCLEANFILES = constants.texi
@@ -48,8 +47,10 @@ _W = (^|[^A-Za-z0-9_])
W_ = ([^A-Za-z0-9_]|$$)
syntax_checks = \
sc-avoid-builtin \
sc-avoid-io \
sc-avoid-non-zero \
sc-avoid-path \
sc-avoid-timezone \
sc-avoid-zeroes \
sc-exponent-grouping \
@@ -70,9 +71,18 @@ check-texinfo: $(syntax_checks)
$(PERL) -e 1 2> /dev/null && { $(PERL) -ne \
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ && !/^\* / || /{posix}/ and print,exit 1' \
$(srcdir)/*.texi 2> /dev/null || fail=1; }; \
$(EGREP) -i '$(_W)builtins?$(W_)' $(srcdir)/*.texi && fail=1; \
exit $$fail
sc-avoid-builtin:
$(AM_V_GEN)$(EGREP) -i '$(_W)builtins?$(W_)' $(srcdir)/*.texi \
&& exit 1 || :
sc-avoid-path:
$(AM_V_GEN)fail=0; \
$(EGREP) -i '$(_W)path(name)?s?$(W_)' $(srcdir)/*.texi \
| $(EGREP) -v 'search path|@vindex PATH$$|@env[{]PATH[}]' && fail=1; \
| $(EGREP) -v \
'PATH=|path search|search path|@vindex PATH$$|@env[{]PATH[}]' \
&& fail=1; \
exit $$fail
# Use `time zone', not `timezone'.

View File

@@ -31,7 +31,6 @@
@c FIXME: the following need documentation
@c * [: (coreutils)[ invocation. File/string tests.
@c * pinky: (coreutils)pinky invocation. FIXME.
@c * mktemp: (coreutils)mktemp invocation. FIXME.
@dircategory Individual utilities
@direntry
@@ -80,10 +79,12 @@
* mkdir: (coreutils)mkdir invocation. Create directories.
* mkfifo: (coreutils)mkfifo invocation. Create FIFOs (named pipes).
* mknod: (coreutils)mknod invocation. Create special files.
* mktemp: (coreutils)mktemp invocation. Create temporary files.
* mv: (coreutils)mv invocation. Rename files.
* nice: (coreutils)nice invocation. Modify niceness.
* nl: (coreutils)nl invocation. Number lines and write files.
* nohup: (coreutils)nohup invocation. Immunize to hangups.
* nproc: (coreutils)nproc invocation. Print the number of processors.
* od: (coreutils)od invocation. Dump files in octal, etc.
* paste: (coreutils)paste invocation. Merge lines of files.
* pathchk: (coreutils)pathchk invocation. Check file name portability.
@@ -138,7 +139,7 @@
This manual documents version @value{VERSION} of the @sc{gnu} core
utilities, including the standard programs for text and file manipulation.
Copyright @copyright{} 1994-1996, 2000-2009 Free Software Foundation, Inc.
Copyright @copyright{} 1994-1996, 2000-2010 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -193,7 +194,7 @@ Free Documentation License''.
* Printing text:: echo printf yes
* Conditions:: false true test expr
* Redirection:: tee
* File name manipulation:: dirname basename pathchk
* File name manipulation:: dirname basename pathchk mktemp
* Working context:: pwd stty printenv tty
* User information:: id logname whoami groups users who
* System context:: date arch uname hostname hostid uptime
@@ -378,6 +379,7 @@ File name manipulation
* basename invocation:: Strip directory and suffix from a file name
* dirname invocation:: Strip non-directory suffix from a file name
* pathchk invocation:: Check file name validity and portability
* mktemp invocation:: Create temporary file or directory
Working context
@@ -409,6 +411,7 @@ System context
* arch invocation:: Print machine hardware name
* date invocation:: Print or set system date and time
* nproc invocation:: Print the number of processors
* uname invocation:: Print system information
* hostname invocation:: Print or set system name
* hostid invocation:: Print numeric host identifier
@@ -574,6 +577,18 @@ Do not treat the last operand specially when it is a directory or a
symbolic link to a directory. @xref{Target directory}.
@end macro
@macro optNull{cmd}
@item -0
@opindex -0
@itemx --null
@opindex --null
@cindex output @sc{nul}-byte-terminated lines
Output a zero byte (@acronym{ASCII} @sc{nul}) at the end of each line,
rather than a newline. This option enables other programs to parse the
output of @command{\cmd\} even when that output would contain data
with embedded newlines.
@end macro
@macro optSi
@itemx --si
@opindex --si
@@ -2755,8 +2770,10 @@ If you'd like to continue to track the end of a growing file even after
it has been unlinked, use @option{--follow=descriptor}. This is the default
behavior, but it is not useful if you're tracking a log file that may be
rotated (removed or renamed, then reopened). In that case, use
@option{--follow=name} to track the named file by reopening it periodically
to see if it has been removed and recreated by some other program.
@option{--follow=name} to track the named file, perhaps by reopening it
periodically to see if it has been removed and recreated by some other program.
Note that the inotify-based implementation handles this case without
the need for any periodic reopening.
No matter which method you use, if the tracked file is determined to have
shrunk, @command{tail} prints a message saying the file has been truncated
@@ -3847,10 +3864,9 @@ To compare such strings numerically, use the
@opindex -V
@opindex --version-sort
@cindex version number sort
@vindex LC_NUMERIC
Sort per @code{strverscmp(3)}. This is a normal string comparison, except
that embedded decimal numbers are sorted by numeric value
(see @option{--numeric-sort} above).
Sort by version name and number. It behaves like a standard sort,
except that each sequence of decimal digits is treated numerically
as an index/version number. (@xref{Details about version sort}.)
@item -r
@itemx --reverse
@@ -6670,23 +6686,17 @@ after the last @samp{.}); files with no extension are sorted first.
@node Details about version sort
@subsection Details about version sort
The version sort takes into account the fact that file names frequently include
indices or version numbers. Standard sorting functions usually do not produce
the ordering that people expect because comparisons are made on a
character-by-character basis. The version
sort addresses this problem, and is especially useful when browsing
directories that contain many files with indices/version numbers in their
names:
Version sorting handles the fact that file names frequently include indices or
version numbers. Standard sorting usually does not produce the order that one
expects because comparisons are made on a character-by-character basis.
Version sorting is especially useful when browsing directories that contain
many files with indices/version numbers in their names:
@example
$ ls -1 $ ls -1v
foo.zml-1.gz foo.zml-1.gz
foo.zml-100.gz foo.zml-2.gz
foo.zml-12.gz foo.zml-6.gz
foo.zml-13.gz foo.zml-12.gz
foo.zml-2.gz foo.zml-13.gz
foo.zml-25.gz foo.zml-25.gz
foo.zml-6.gz foo.zml-100.gz
abc.zml-1.gz abc.zml-1.gz
abc.zml-12.gz abc.zml-2.gz
abc.zml-2.gz abc.zml-12.gz
@end example
Version-sorted strings are compared such that if @var{ver1} and @var{ver2}
@@ -6705,11 +6715,27 @@ abc-1.012b.tgz abc-1.007.tgz
abc-1.01a.tgz abc-1.012b.tgz
@end example
This functionality is implemented using gnulib's @code{filevercmp} function.
One result of that implementation decision is that @samp{ls -v}
and @samp{sort -V} do not use the locale category, @env{LC_COLLATE},
which means non-numeric prefixes are sorted as if @env{LC_COLLATE} were set
to @samp{C}.
This functionality is implemented using gnulib's @code{filevercmp} function,
which has some caveats worth noting.
@itemize @bullet
@item @env{LC_COLLATE} is ignored, which means @samp{ls -v} and @samp{sort -V}
will sort non-numeric prefixes as if the @env{LC_COLLATE} locale category
was set to @samp{C}.
@item Some suffixes will not be matched by the regular
expression mentioned above. Consequently these examples may
not sort as you expect:
@example
abc-1.2.3.4.7z
abc-1.2.3.7z
@end example
@example
abc-1.2.3.4.x86_64.rpm
abc-1.2.3.x86_64.rpm
@end example
@end itemize
@node General output formatting
@subsection General output formatting
@@ -9855,7 +9881,9 @@ touch [@var{option}]@dots{} @var{file}@dots{}
@end example
@cindex empty files, creating
Any @var{file} argument that does not exist is created empty.
Any @var{file} argument that does not exist is created empty, unless
option @option{--no-create} (@option{-c}) or @option{--no-dereference}
(@option{-h}) was in effect.
A @var{file} argument string of @samp{-} is handled specially and
causes @command{touch} to change the times of the file associated with
@@ -9869,8 +9897,8 @@ user must own the files.
Although @command{touch} provides options for changing two of the times---the
times of last access and modification---of a file, there is actually
a third one as well: the inode change time. This is often referred to
as a file's @code{ctime}.
a standard third one as well: the inode change time. This is often
referred to as a file's @code{ctime}.
The inode change time represents the time when the file's meta-information
last changed. One common example of this is when the permissions of a
file change. Changing the permissions doesn't access the file, so
@@ -9882,6 +9910,9 @@ fresh copy of the file, including the new permissions value.
Another operation that modifies a file's ctime without affecting
the others is renaming. In any case, it is not possible, in normal
operations, for a user to change the ctime field to a user-specified value.
Some operating systems and file systems support a fourth time: the
birth time, when the file was first created; by definition, this
timestamp never changes.
@vindex TZ
Time stamps assume the time zone rules specified by the @env{TZ}
@@ -9910,7 +9941,7 @@ Change the access time only.
@itemx --no-create
@opindex -c
@opindex --no-create
Do not create files that do not exist.
Do not warn about or create files that do not exist.
@item -d
@itemx --date=@var{time}
@@ -9931,6 +9962,24 @@ silently ignore any excess precision here.
@cindex BSD @command{touch} compatibility
Ignored; for compatibility with BSD versions of @command{touch}.
@item -h
@itemx --no-dereference
@opindex -h
@opindex --no-dereference
@cindex symbolic links, changing time
@findex lutimes
Attempt to change the timestamps of a symbolic link, rather than what
the link refers to. When using this option, empty files are not
created, but option @option{-c} must also be used to avoid warning
about files that do not exist. Not all systems support changing the
timestamps of symlinks, since underlying system support for this
action was not required until @acronym{POSIX} 2008. Also, on some
systems, the mere act of examining a symbolic link changes the access
time, such that only changes to the modification time will persist
long enough to be observable. When coupled with option @option{-r}, a
reference timestamp is taken from a symbolic link rather than the file
it refers to.
@item -m
@itemx --time=mtime
@itemx --time=modify
@@ -9950,6 +9999,8 @@ If this option is combined with the @option{--date=@var{time}}
the origin for any relative @var{time}s given, but is otherwise ignored.
For example, @samp{-r foo -d '-5 seconds'} specifies a time stamp
equal to five seconds before the corresponding time stamp for @file{foo}.
If @var{file} is a symbolic link, the reference timestamp is taken
from the target of the symlink, unless @option{-h} was also in effect.
@item -t [[@var{cc}]@var{yy}]@var{mmddhhmm}[.@var{ss}]
Use the argument (optional four-digit or two-digit years, months,
@@ -10351,15 +10402,7 @@ Show the total for each directory (and file if --all) that is at
most MAX_DEPTH levels down from the root of the hierarchy. The root
is at level 0, so @code{du --max-depth=0} is equivalent to @code{du -s}.
@item -0
@opindex -0
@itemx --null
@opindex --null
@cindex output null-byte-terminated lines
Output a zero byte (@acronym{ASCII} @sc{nul}) at the end of each line,
rather than a newline. This option enables other programs to parse the
output of @command{du} even when that output would contain file names
with embedded newlines.
@optNull{du}
@optSi
@@ -10771,6 +10814,8 @@ alert (bell)
backspace
@item \c
produce no further output
@item \e
escape
@item \f
form feed
@item \n
@@ -11845,6 +11890,7 @@ This section describes commands that manipulate file names.
* basename invocation:: Strip directory and suffix from a file name.
* dirname invocation:: Strip non-directory suffix from a file name.
* pathchk invocation:: Check file name validity and portability.
* mktemp invocation:: Create temporary file or directory.
@end menu
@@ -12019,6 +12065,180 @@ Exit status:
1 otherwise.
@end display
@node mktemp invocation
@section @command{mktemp}: Create temporary file or directory
@pindex mktemp
@cindex file names, creating temporary
@cindex directory, creating temporary
@cindex temporary files and directories
@command{mktemp} manages the creation of temporary files and
directories. Synopsis:
@example
mktemp [@var{option}]@dots{} [@var{template}]
@end example
Safely create a temporary file or directory based on @var{template},
and print its name. If given, @var{template} must include at least
three consecutive @samp{X}s in the last component. If omitted, the template
@samp{tmp.XXXXXXXXXX} is used, and option @option{--tmpdir} is
implied. The final run of @samp{X}s in the @var{template} will be replaced
by alpha-numeric characters; thus, on a case-sensitive file system,
and with a @var{template} including a run of @var{n} instances of @samp{X},
there are @samp{62**@var{n}} potential file names.
Older scripts used to create temporary files by simply joining the
name of the program with the process id (@samp{$$}) as a suffix.
However, that naming scheme is easily predictable, and suffers from a
race condition where the attacker can create an appropriately named
symbolic link, such that when the script then opens a handle to what
it thought was an unused file, it is instead modifying an existing
file. Using the same scheme to create a directory is slightly safer,
since the @command{mkdir} will fail if the target already exists, but
it is still inferior because it allows for denial of service attacks.
Therefore, modern scripts should use the @command{mktemp} command to
guarantee that the generated name will be unpredictable, and that
knowledge of the temporary file name implies that the file was created
by the current script and cannot be modified by other users.
When creating a file, the resulting file has read and write
permissions for the current user, but no permissions for the group or
others; these permissions are reduced if the current umask is more
restrictive.
Here are some examples (although note that if you repeat them, you
will most likely get different file names):
@itemize @bullet
@item
Create a temporary file in the current directory.
@example
$ mktemp file.XXXX
file.H47c
@end example
@item
Create a temporary file with a known suffix.
@example
$ mktemp --suffix=.txt file-XXXX
file-H08W.txt
$ mktemp file-XXXX-XXXX.txt
file-XXXX-eI9L.txt
@end example
@item
Create a secure fifo relative to the user's choice of @env{TMPDIR},
but falling back to the current directory rather than @file{/tmp}.
Note that @command{mktemp} does not create fifos, but can create a
secure directory in which the fifo can live. Exit the shell if the
directory or fifo could not be created.
@example
$ dir=$(mktemp -p "$@{TMPDIR:-.@}" -d dir-XXXX) || exit 1
$ fifo=$dir/fifo
$ mkfifo "$fifo" || @{ rmdir "$dir"; exit 1; @}
@end example
@item
Create and use a temporary file if possible, but ignore failure. The
file will reside in the directory named by @env{TMPDIR}, if specified,
or else in @file{/tmp}.
@example
$ file=$(mktemp -q) && @{
> # Safe to use $file only within this block. Use quotes,
> # since $TMPDIR, and thus $file, may contain whitespace.
> echo ... > "$file"
> rm "$file"
> @}
@end example
@item
Act as a semi-random character generator (it is not fully random,
since it is impacted by the contents of the current directory). To
avoid security holes, do not use the resulting names to create a file.
@example
$ mktemp -u XXX
Gb9
$ mktemp -u XXX
nzC
@end example
@end itemize
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item -d
@itemx --directory
@opindex -d
@opindex --directory
Create a directory rather than a file. The directory will have read,
write, and search permissions for the current user, but no permissions
for the group or others; these permissions are reduced if the current
umask is more restrictive.
@item -q
@itemx --quiet
@opindex -q
@opindex --quiet
Suppress diagnostics about failure to create a file or directory. The
exit status will still reflect whether a file was created.
@item -u
@itemx --dry-run
@opindex -u
@opindex --dry-run
Generate a temporary name that does not name an existing file, without
changing the file system contents. Using the output of this command
to create a new file is inherently unsafe, as there is a window of
time between generating the name and using it where another process
can create an object by the same name.
@item -p @var{dir}
@itemx --tmpdir[=@var{dir}]
@opindex -p
@opindex --tmpdir
Treat @var{template} relative to the directory @var{dir}. If
@var{dir} is not specified (only possible with the long option
@option{--tmpdir}) or is the empty string, use the value of
@env{TMPDIR} if available, otherwise use @samp{/tmp}. If this is
specified, @var{template} must not be absolute. However,
@var{template} can still contain slashes, although intermediate
directories must already exist.
@item --suffix=@var{suffix}
@opindex --suffix
Append @var{suffix} to the @var{template}. @var{suffix} must not
contain slash. If @option{--suffix} is specified, @var{template} must
end in @samp{X}; if it is not specified, then an appropriate
@option{--suffix} is inferred by finding the last @samp{X} in
@var{template}. This option exists for use with the default
@var{template} and for the creation of a @var{suffix} that starts with
@samp{X}.
@item -t
@opindex -t
Treat @var{template} as a single file relative to the value of
@env{TMPDIR} if available, or to the directory specified by
@option{-p}, otherwise to @samp{/tmp}. @var{template} must not
contain slashes. This option is deprecated; the use of @option{-p}
without @option{-t} offers better defaults (by favoring the command
line over @env{TMPDIR}) and more flexibility (by allowing intermediate
directories).
@end table
@cindex exit status of @command{mktemp}
Exit status:
@display
0 if the file was created,
1 otherwise.
@end display
@node Working context
@chapter Working context
@@ -12781,8 +13001,13 @@ If no @var{variable}s are specified, @command{printenv} prints the value of
every environment variable. Otherwise, it prints the value of each
@var{variable} that is set, and nothing for those that are not set.
The only options are a lone @option{--help} or @option{--version}.
@xref{Common options}.
The program accepts the following option. Also see @ref{Common options}.
@table @samp
@optNull{printenv}
@end table
@cindex exit status of @command{printenv}
Exit status:
@@ -13196,6 +13421,7 @@ information.
@menu
* date invocation:: Print or set system date and time.
* arch invocation:: Print machine hardware name.
* nproc invocation:: Print the number of processors.
* uname invocation:: Print system information.
* hostname invocation:: Print or set system name.
* hostid invocation:: Print numeric host identifier.
@@ -13855,6 +14081,43 @@ The program accepts the @ref{Common options} only.
@exitstatus
@node nproc invocation
@section @command{nproc}: Print the number of available processors
@pindex nproc
@cindex Print the number of processors
@cindex system information, printing
Print the number of processing units available to the current process,
which may be less than the number of online processors.
If this information is not accessible, then print the number of
processors installed. If the @env{OMP_NUM_THREADS} environment variable is
set, then it will determine the returned value. The result is guaranteed to be
greater than zero. Synopsis:
@example
nproc [@var{option}]
@end example
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item --all
@opindex --all
Print the number of installed processors on the system, which may
be greater than the number online or available to the current process.
The @env{OMP_NUM_THREADS} environment variable is not honored in this case.
@item --ignore=@var{number}
@opindex --ignore
If possible, exclude this @var{number} of processing units.
@end table
@exitstatus
@node uname invocation
@section @command{uname}: Print system information
@@ -14338,7 +14601,7 @@ device files), copy them into place, too.
Exit status:
@display
1 if @command{chroot} itself fails
125 if @command{chroot} itself fails
126 if @var{command} is found but cannot be invoked
127 if @var{command} cannot be found
the exit status of @var{command} otherwise
@@ -14383,17 +14646,89 @@ remaining arguments are passed as arguments to that program.
The program should not be a special built-in utility
(@pxref{Special built-in utilities}).
Modifications to @env{PATH} take effect prior to searching for
@var{command}. Use caution when reducing @env{PATH}; behavior is
not portable when @env{PATH} is undefined or omits key directories
such as @file{/bin}.
In the rare case that a utility contains a @samp{=} in the name, the
only way to disambiguate it from a variable assignment is to use an
intermediate command for @var{command}, and pass the problematic
program name via @var{args}. For example, if @file{./prog=} is an
executable in the current @env{PATH}:
@example
env prog= true # runs 'true', with prog= in environment
env ./prog= true # runs 'true', with ./prog= in environment
env -- prog= true # runs 'true', with prog= in environment
env sh -c '\prog= true' # runs 'prog=' with argument 'true'
env sh -c 'exec "$@@"' sh prog= true # also runs 'prog='
@end example
@cindex environment, printing
If no command name is specified following the environment
specifications, the resulting environment is printed. This is like
specifying the @command{printenv} program.
For some examples, suppose the environment passed to @command{env}
contains @samp{LOGNAME=rms}, @samp{EDITOR=emacs}, and
@samp{PATH=.:/gnubin:/hacks}:
@itemize @bullet
@item
Output the current environment.
@example
$ env | LC_ALL=C sort
EDITOR=emacs
LOGNAME=rms
PATH=.:/gnubin:/hacks
@end example
@item
Run @command{foo} with a reduced environment, preserving only the
original @env{PATH} to avoid problems in locating @command{foo}.
@example
env - PATH="$PATH" foo
@end example
@item
Run @command{foo} with the environment containing @samp{LOGNAME=rms},
@samp{EDITOR=emacs}, and @samp{PATH=.:/gnubin:/hacks}, and guarantees
that @command{foo} was found in the file system rather than as a shell
built-in.
@example
env foo
@end example
@item
Run @command{nemacs} with the environment containing @samp{LOGNAME=foo},
@samp{EDITOR=emacs}, @samp{PATH=.:/gnubin:/hacks}, and
@samp{DISPLAY=gnu:0}.
@example
env DISPLAY=gnu:0 LOGNAME=foo nemacs
@end example
@item
Attempt to run the program @command{/energy/--} (as that is the only
possible path search result); if the command exists, the environment
will contain @samp{LOGNAME=rms} and @samp{PATH=/energy}, and the
arguments will be @samp{e=mc2}, @samp{bar}, and @samp{baz}.
@example
env -u EDITOR PATH=/energy -- e=mc2 bar baz
@end example
@end itemize
The program accepts the following options. Also see @ref{Common options}.
Options must precede operands.
@table @samp
@optNull{env}
@item -u @var{name}
@itemx --unset=@var{name}
@opindex -u
@@ -14416,7 +14751,7 @@ Exit status:
@display
0 if no @var{command} is specified and the environment is output
1 if @command{env} itself fails
125 if @command{env} itself fails
126 if @var{command} is found but cannot be invoked
127 if @var{command} cannot be found
the exit status of @var{command} otherwise
@@ -14491,7 +14826,7 @@ Exit status:
@display
0 if no @var{command} is specified and the niceness is output
1 if @command{nice} itself fails
125 if @command{nice} itself fails
126 if @var{command} is found but cannot be invoked
127 if @var{command} cannot be found
the exit status of @var{command} otherwise
@@ -14609,11 +14944,15 @@ options}. Options must precede operands.
Exit status:
@display
125 if @command{nohup} itself fails, and @env{POSIXLY_CORRECT} is not set
126 if @var{command} is found but cannot be invoked
127 if @command{nohup} itself fails or if @var{command} cannot be found
127 if @var{command} cannot be found
the exit status of @var{command} otherwise
@end display
If @env{POSIXLY_CORRECT} is set, internal failures give status 127
instead of 125.
@node stdbuf invocation
@section @command{stdbuf}: Run a command with modified I/O stream buffering
@@ -14818,7 +15157,7 @@ shell is restricted (see @option{-m} just above).
Exit status:
@display
1 if @command{su} itself fails
125 if @command{su} itself fails
126 if subshell is found but cannot be invoked
127 if subshell cannot be found
the exit status of the subshell otherwise

View File

@@ -1,7 +1,7 @@
@c File mode bits
@c Copyright (C) 1994, 1996, 1999-2001, 2003-2006,
@c 2008-2009 Free Software Foundation, Inc.
@c Copyright (C) 1994, 1996, 1999-2001, 2003-2006, 2008-2010 Free Software
@c Foundation, Inc.
@c Permission is granted to copy, distribute and/or modify this document
@c under the terms of the GNU Free Documentation License, Version 1.3 or

View File

@@ -1,5 +1,5 @@
/* Align/Truncate a string in a given screen width
Copyright (C) 2009 Free Software Foundation, Inc.
Copyright (C) 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -129,7 +129,7 @@ mbs_align_pad (char *dest, const char* dest_end, size_t n_spaces)
size_t
mbsalign (const char *src, char *dest, size_t dest_size,
size_t *width, mbs_align_t align, int flags)
size_t *width, mbs_align_t align, int flags _UNUSED_PARAMETER_)
{
size_t ret = -1;
size_t src_size = strlen (src) + 1;

View File

@@ -1,5 +1,5 @@
/* Align/Truncate a string in a given screen width
Copyright (C) 2009 Free Software Foundation, Inc.
Copyright (C) 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,142 +0,0 @@
/* mgetgroups.c -- return a list of the groups a user is in
Copyright (C) 2007-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Extracted from coreutils' src/id.c. */
#include <config.h>
#include "mgetgroups.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdint.h>
#include <string.h>
#include <errno.h>
#if HAVE_GETGROUPLIST
# include <grp.h>
#endif
#include "getugroups.h"
#include "xalloc.h"
static GETGROUPS_T *
realloc_groupbuf (GETGROUPS_T *g, size_t num)
{
if (xalloc_oversized (num, sizeof (*g)))
{
errno = ENOMEM;
return NULL;
}
return realloc (g, num * sizeof (*g));
}
/* Like getugroups, but store the result in malloc'd storage.
Set *GROUPS to the malloc'd list of all group IDs of which USERNAME
is a member. If GID is not -1, store it first. GID should be the
group ID (pw_gid) obtained from getpwuid, in case USERNAME is not
listed in the groups database (e.g., /etc/groups). Upon failure,
don't modify *GROUPS, set errno, and return -1. Otherwise, return
the number of groups. */
int
mgetgroups (char const *username, gid_t gid, GETGROUPS_T **groups)
{
int max_n_groups;
int ng;
GETGROUPS_T *g;
#if HAVE_GETGROUPLIST
/* We prefer to use getgrouplist if available, because it has better
performance characteristics.
In glibc 2.3.2, getgrouplist is buggy. If you pass a zero as the
length of the output buffer, getgrouplist will still write to the
buffer. Contrary to what some versions of the getgrouplist
manpage say, this doesn't happen with nonzero buffer sizes.
Therefore our usage here just avoids a zero sized buffer. */
if (username)
{
enum { N_GROUPS_INIT = 10 };
max_n_groups = N_GROUPS_INIT;
g = realloc_groupbuf (NULL, max_n_groups);
if (g == NULL)
return -1;
while (1)
{
GETGROUPS_T *h;
int last_n_groups = max_n_groups;
/* getgrouplist updates max_n_groups to num required. */
ng = getgrouplist (username, gid, g, &max_n_groups);
/* Some systems (like Darwin) have a bug where they
never increase max_n_groups. */
if (ng < 0 && last_n_groups == max_n_groups)
max_n_groups *= 2;
if ((h = realloc_groupbuf (g, max_n_groups)) == NULL)
{
int saved_errno = errno;
free (g);
errno = saved_errno;
return -1;
}
g = h;
if (0 <= ng)
{
*groups = g;
/* On success some systems just return 0 from getgrouplist,
so return max_n_groups rather than ng. */
return max_n_groups;
}
}
}
/* else no username, so fall through and use getgroups. */
#endif
max_n_groups = (username
? getugroups (0, NULL, username, gid)
: getgroups (0, NULL));
/* If we failed to count groups with NULL for a buffer,
try again with a non-NULL one, just in case. */
if (max_n_groups < 0)
max_n_groups = 5;
g = realloc_groupbuf (NULL, max_n_groups);
if (g == NULL)
return -1;
ng = (username
? getugroups (max_n_groups, g, username, gid)
: getgroups (max_n_groups, g));
if (ng < 0)
{
int saved_errno = errno;
free (g);
errno = saved_errno;
return -1;
}
*groups = g;
return ng;
}

View File

@@ -1,19 +0,0 @@
/* Get a list of all group IDs associated with a specified user ID.
Copyright (C) 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/types.h>
int mgetgroups (const char *username, gid_t gid, GETGROUPS_T **groups);

View File

@@ -1,6 +1,6 @@
/* Bob Jenkins's cryptographic random number generator, ISAAC.
Copyright (C) 1999-2006, 2009 Free Software Foundation, Inc.
Copyright (C) 1999-2006, 2009-2010 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 1999 Colin Plumb.
This program is free software: you can redistribute it and/or modify

View File

@@ -1,6 +1,6 @@
/* Bob Jenkins's cryptographic random number generator, ISAAC.
Copyright (C) 1999-2005, 2009 Free Software Foundation, Inc.
Copyright (C) 1999-2005, 2009-2010 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 1999 Colin Plumb.
This program is free software: you can redistribute it and/or modify

View File

@@ -1,6 +1,6 @@
/* Generate random integers.
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Generate random integers.
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Generate random permutations.
Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
Copyright (C) 2006-2007, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Generate buffers of random data.
Copyright (C) 2006, 2008-2009 Free Software Foundation, Inc.
Copyright (C) 2006, 2008-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Generate buffers of random data.
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

82
gl/lib/regcomp.c.diff Normal file
View File

@@ -0,0 +1,82 @@
diff --git c/lib/regcomp.c i/lib/regcomp.c
index 6472ff6..665b2ab 100644
--- c/lib/regcomp.c
+++ i/lib/regcomp.c
@@ -18,6 +18,8 @@
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+#include "intprops.h"
+#include "verify.h"
static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
size_t length, reg_syntax_t syntax);
static void re_compile_fastmap_iter (regex_t *bufp,
@@ -541,7 +543,7 @@ regerror (errcode, preg, errbuf, errbuf_size)
size_t errbuf_size;
#else /* size_t might promote */
size_t
-regerror (int errcode, const regex_t *_Restrict_ preg,
+regerror (int errcode, const regex_t *_Restrict_ preg _UNUSED_PARAMETER_,
char *_Restrict_ errbuf, size_t errbuf_size)
#endif
{
@@ -1375,7 +1377,7 @@ calc_first (void *extra, bin_tree_t *node)
/* Pass 2: compute NEXT on the tree. Preorder visit. */
static reg_errcode_t
-calc_next (void *extra, bin_tree_t *node)
+calc_next (void *extra _UNUSED_PARAMETER_, bin_tree_t *node)
{
switch (node->token.type)
{
@@ -2571,7 +2573,8 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
/* This loop is actually executed only when end != REG_MISSING,
to rewrite <re>{0,n} as (<re>(<re>...<re>?)?)?... We have
already created the start+1-th copy. */
- if ((Idx) -1 < 0 || end != REG_MISSING)
+ verify (! TYPE_SIGNED (Idx));
+ if (end != REG_MISSING)
for (i = start + 2; i <= end; ++i)
{
elem = duplicate_tree (elem, dfa);
@@ -2731,7 +2734,8 @@ static reg_errcode_t
internal_function
build_collating_symbol (bitset_t sbcset,
# ifdef RE_ENABLE_I18N
- re_charset_t *mbcset, Idx *coll_sym_alloc,
+ re_charset_t *mbcset _UNUSED_PARAMETER_,
+ Idx *coll_sym_alloc _UNUSED_PARAMETER_,
# endif
const unsigned char *name)
{
@@ -3309,7 +3313,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
static reg_errcode_t
parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp,
- re_token_t *token, int token_len, re_dfa_t *dfa,
+ re_token_t *token, int token_len,
+ re_dfa_t *dfa _UNUSED_PARAMETER_,
reg_syntax_t syntax, bool accept_hyphen)
{
#ifdef RE_ENABLE_I18N
@@ -3396,8 +3401,9 @@ parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
static reg_errcode_t
#ifdef RE_ENABLE_I18N
-build_equiv_class (bitset_t sbcset, re_charset_t *mbcset,
- Idx *equiv_class_alloc, const unsigned char *name)
+build_equiv_class (bitset_t sbcset, re_charset_t *mbcset _UNUSED_PARAMETER_,
+ Idx *equiv_class_alloc _UNUSED_PARAMETER_,
+ const unsigned char *name)
#else /* not RE_ENABLE_I18N */
build_equiv_class (bitset_t sbcset, const unsigned char *name)
#endif /* not RE_ENABLE_I18N */
@@ -3798,7 +3804,7 @@ free_token (re_token_t *node)
and its children. */
static reg_errcode_t
-free_tree (void *extra, bin_tree_t *node)
+free_tree (void *extra _UNUSED_PARAMETER_, bin_tree_t *node)
{
free_token (&node->token);
return REG_NOERROR;

View File

@@ -0,0 +1,25 @@
diff --git a/lib/regex_internal.c b/lib/regex_internal.c
index 904b88e..61c8d9d 100644
--- a/lib/regex_internal.c
+++ b/lib/regex_internal.c
@@ -18,6 +18,8 @@
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+#include "verify.h"
+#include "intprops.h"
static void re_string_construct_common (const char *str, Idx len,
re_string_t *pstr,
RE_TRANSLATE_TYPE trans, bool icase,
@@ -1390,7 +1392,10 @@ static void
internal_function
re_node_set_remove_at (re_node_set *set, Idx idx)
{
- if (idx < 0 || idx >= set->nelem)
+ verify (! TYPE_SIGNED (Idx));
+ /* if (idx < 0)
+ return; */
+ if (idx >= set->nelem)
return;
--set->nelem;
for (; idx < set->nelem; idx++)

View File

@@ -0,0 +1,14 @@
diff --git i/lib/regex_internal.h w/lib/regex_internal.h
index 859832f..3c7fe06 100644
--- i/lib/regex_internal.h
+++ w/lib/regex_internal.h
@@ -826,7 +826,8 @@ re_string_wchar_at (const re_string_t *pstr, Idx idx)
static int
internal_function __attribute ((pure))
-re_string_elem_size_at (const re_string_t *pstr, Idx idx)
+re_string_elem_size_at (const re_string_t *pstr _UNUSED_PARAMETER_,
+ Idx idx _UNUSED_PARAMETER_)
{
# ifdef _LIBC
const unsigned char *p, *extra;

45
gl/lib/regexec.c.diff Normal file
View File

@@ -0,0 +1,45 @@
diff --git a/lib/regexec.c b/lib/regexec.c
index 21a8166..7762437 100644
--- a/lib/regexec.c
+++ b/lib/regexec.c
@@ -18,6 +18,8 @@
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+#include "verify.h"
+#include "intprops.h"
static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
Idx n) internal_function;
static void match_ctx_clean (re_match_context_t *mctx) internal_function;
@@ -378,8 +380,11 @@ re_search_2_stub (struct re_pattern_buffer *bufp,
Idx len = length1 + length2;
char *s = NULL;
- if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0))
- return -2;
+ verify (! TYPE_SIGNED (Idx));
+ if (BE (len < length1, 0))
+ return -2;
+ /* if (BE (length1 < 0 || length2 < 0 || stop < 0, 0))
+ return -2; */
/* Concatenate the strings. */
if (length2 > 0)
@@ -431,11 +436,14 @@ re_search_stub (struct re_pattern_buffer *bufp,
Idx last_start = start + range;
/* Check for out-of-range. */
- if (BE (start < 0 || start > length, 0))
- return -1;
+ verify (! TYPE_SIGNED (Idx));
+ /* if (BE (start < 0, 0))
+ return -1; */
+ if (BE (start > length, 0))
+ return -1;
if (BE (length < last_start || (0 <= range && last_start < start), 0))
last_start = length;
- else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
+ else if (BE (/* last_start < 0 || */ (range < 0 && start <= last_start), 0))
last_start = 0;
__libc_lock_lock (dfa->lock);

View File

@@ -1,5 +1,5 @@
/* root-dev-ino.c -- get the device and inode numbers for `/'.
Copyright (C) 2003, 2005, 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2003, 2005-2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Root device and inode number checking.
Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2003, 2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,294 +0,0 @@
/* tempname.c - generate the name of a temporary file.
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Extracted from glibc sysdeps/posix/tempname.c. See also tmpdir.c. */
#if !_LIBC
# include <config.h>
# include "tempname.h"
# include "randint.h"
#endif
#include <sys/types.h>
#include <assert.h>
#include <errno.h>
#ifndef __set_errno
# define __set_errno(Val) errno = (Val)
#endif
#include <stdio.h>
#ifndef P_tmpdir
# define P_tmpdir "/tmp"
#endif
#ifndef TMP_MAX
# define TMP_MAX 238328
#endif
#ifndef __GT_FILE
# define __GT_FILE 1
# define __GT_DIR 2
# define __GT_NOCREATE 3
#endif
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/time.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/stat.h>
#if _LIBC
# define struct_stat64 struct stat64
#else
# define struct_stat64 struct stat
# define __open open
# define __gen_tempname gen_tempname
# define __getpid getpid
# define __gettimeofday gettimeofday
# define __mkdir mkdir
# define __lxstat64(version, file, buf) lstat (file, buf)
# define __xstat64(version, file, buf) stat (file, buf)
#endif
#if ! (HAVE___SECURE_GETENV || _LIBC)
# define __secure_getenv getenv
#endif
#if _LIBC
/* Return nonzero if DIR is an existent directory. */
static int
direxists (const char *dir)
{
struct_stat64 buf;
return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
}
/* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is
non-null and exists, uses it; otherwise uses the first of $TMPDIR,
P_tmpdir, /tmp that exists. Copies into TMPL a template suitable
for use with mk[s]temp. Will fail (-1) if DIR is non-null and
doesn't exist, none of the searched dirs exists, or there's not
enough space in TMPL. */
int
__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
int try_tmpdir)
{
const char *d;
size_t dlen, plen;
if (!pfx || !pfx[0])
{
pfx = "file";
plen = 4;
}
else
{
plen = strlen (pfx);
if (plen > 5)
plen = 5;
}
if (try_tmpdir)
{
d = __secure_getenv ("TMPDIR");
if (d != NULL && direxists (d))
dir = d;
else if (dir != NULL && direxists (dir))
/* nothing */ ;
else
dir = NULL;
}
if (dir == NULL)
{
if (direxists (P_tmpdir))
dir = P_tmpdir;
else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp"))
dir = "/tmp";
else
{
__set_errno (ENOENT);
return -1;
}
}
dlen = strlen (dir);
while (dlen > 1 && dir[dlen - 1] == '/')
dlen--; /* remove trailing slashes */
/* check we have room for "${dir}/${pfx}XXXXXX\0" */
if (tmpl_len < dlen + 1 + plen + 6 + 1)
{
__set_errno (EINVAL);
return -1;
}
sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx);
return 0;
}
#endif /* _LIBC */
static inline bool
check_x_suffix (char const *s, size_t len)
{
return strspn (s, "X") == len;
}
/* These are the characters used in temporary file names. */
static const char letters[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
/* Generate a temporary file name based on TMPL. TMPL must end in a
a sequence of at least X_SUFFIX_LEN "X"s. The name constructed
does not exist at the time of the call to __gen_tempname. TMPL is
overwritten with the result.
KIND may be one of:
__GT_NOCREATE: simply verify that the name does not exist
at the time of the call.
__GT_FILE: create the file using open(O_CREAT|O_EXCL)
and return a read-write fd. The file is mode 0600.
__GT_DIR: create a directory, which will be mode 0700.
We use a clever algorithm to get hard-to-predict names. */
int
gen_tempname_len (char *tmpl, int flags, int kind, size_t x_suffix_len)
{
size_t len;
char *XXXXXX;
unsigned int count;
int fd = -1;
int save_errno = errno;
struct_stat64 st;
struct randint_source *rand_src;
/* A lower bound on the number of temporary files to attempt to
generate. The maximum total number of temporary file names that
can exist for a given template is 62**6. It should never be
necessary to try all these combinations. Instead if a reasonable
number of names is tried (we define reasonable as 62**3) fail to
give the system administrator the chance to remove the problems. */
#define ATTEMPTS_MIN (62 * 62 * 62)
/* The number of times to attempt to generate a temporary file. To
conform to POSIX, this must be no smaller than TMP_MAX. */
#if ATTEMPTS_MIN < TMP_MAX
unsigned int attempts = TMP_MAX;
#else
unsigned int attempts = ATTEMPTS_MIN;
#endif
len = strlen (tmpl);
if (len < x_suffix_len || ! check_x_suffix (&tmpl[len - x_suffix_len],
x_suffix_len))
{
__set_errno (EINVAL);
return -1;
}
rand_src = randint_all_new (NULL, 8);
if (! rand_src)
return -1;
/* This is where the Xs start. */
XXXXXX = &tmpl[len - x_suffix_len];
for (count = 0; count < attempts; ++count)
{
size_t i;
for (i = 0; i < x_suffix_len; i++)
{
XXXXXX[i] = letters[randint_genmax (rand_src, sizeof letters - 2)];
}
switch (kind)
{
case __GT_FILE:
fd = __open (tmpl,
(flags & ~0777) | O_RDWR | O_CREAT | O_EXCL,
S_IRUSR | S_IWUSR);
break;
case __GT_DIR:
fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR);
break;
case __GT_NOCREATE:
/* This case is backward from the other three. This function
succeeds if __xstat fails because the name does not exist.
Note the continue to bypass the common logic at the bottom
of the loop. */
if (__lxstat64 (_STAT_VER, tmpl, &st) < 0)
{
if (errno == ENOENT)
{
__set_errno (save_errno);
fd = 0;
goto done;
}
else
{
/* Give up now. */
fd = -1;
goto done;
}
}
continue;
default:
assert (! "invalid KIND in __gen_tempname");
}
if (fd >= 0)
{
__set_errno (save_errno);
goto done;
}
else if (errno != EEXIST)
{
fd = -1;
goto done;
}
}
randint_all_free (rand_src);
/* We got out of the loop because we ran out of combinations to try. */
__set_errno (EEXIST);
return -1;
done:
{
int saved_errno = errno;
randint_all_free (rand_src);
__set_errno (saved_errno);
}
return fd;
}
int
__gen_tempname (char *tmpl, int flags, int kind)
{
return gen_tempname_len (tmpl, flags, kind, 6);
}

193
gl/lib/tempname.c.diff Normal file
View File

@@ -0,0 +1,193 @@
diff --git c/lib/tempname.c i/lib/tempname.c
index 2da5afe..562955a 100644
--- c/lib/tempname.c
+++ i/lib/tempname.c
@@ -22,6 +22,7 @@
#if !_LIBC
# include <config.h>
# include "tempname.h"
+# include "randint.h"
#endif
#include <sys/types.h>
@@ -49,6 +50,7 @@
# error report this to bug-gnulib@gnu.org
#endif
+#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
@@ -179,14 +181,21 @@ __path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
}
#endif /* _LIBC */
+static inline bool
+check_x_suffix (char const *s, size_t len)
+{
+ return len <= strspn (s, "X");
+}
+
/* These are the characters used in temporary file names. */
static const char letters[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
/* Generate a temporary file name based on TMPL. TMPL must match the
- rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
+ rules for mk[s]temp (i.e. end in at least X_SUFFIX_LEN "X"s,
+ possibly with a suffix).
The name constructed does not exist at the time of the call to
- __gen_tempname. TMPL is overwritten with the result.
+ this function. TMPL is overwritten with the result.
KIND may be one of:
__GT_NOCREATE: simply verify that the name does not exist
@@ -197,23 +206,24 @@ static const char letters[] =
We use a clever algorithm to get hard-to-predict names. */
int
-__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
+gen_tempname_len (char *tmpl, int suffixlen, int flags, int kind,
+ size_t x_suffix_len)
{
- int len;
+ size_t len;
char *XXXXXX;
- static uint64_t value;
- uint64_t random_time_bits;
unsigned int count;
int fd = -1;
int save_errno = errno;
struct_stat64 st;
+ struct randint_source *rand_src;
/* A lower bound on the number of temporary files to attempt to
generate. The maximum total number of temporary file names that
can exist for a given template is 62**6. It should never be
necessary to try all these combinations. Instead if a reasonable
number of names is tried (we define reasonable as 62**3) fail to
- give the system administrator the chance to remove the problems. */
+ give the system administrator the chance to remove the problems.
+ This value requires that X_SUFFIX_LEN be at least 3. */
#define ATTEMPTS_MIN (62 * 62 * 62)
/* The number of times to attempt to generate a temporary file. To
@@ -225,43 +235,28 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
#endif
len = strlen (tmpl);
- if (len < 6 + suffixlen || memcmp (&tmpl[len - 6 - suffixlen], "XXXXXX", 6))
+ if (len < x_suffix_len + suffixlen
+ || ! check_x_suffix (&tmpl[len - x_suffix_len - suffixlen],
+ x_suffix_len))
{
__set_errno (EINVAL);
return -1;
}
/* This is where the Xs start. */
- XXXXXX = &tmpl[len - 6 - suffixlen];
+ XXXXXX = &tmpl[len - x_suffix_len - suffixlen];
/* Get some more or less random data. */
-#ifdef RANDOM_BITS
- RANDOM_BITS (random_time_bits);
-#else
- {
- struct timeval tv;
- __gettimeofday (&tv, NULL);
- random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
- }
-#endif
- value += random_time_bits ^ __getpid ();
+ rand_src = randint_all_new (NULL, 8);
+ if (! rand_src)
+ return -1;
- for (count = 0; count < attempts; value += 7777, ++count)
+ for (count = 0; count < attempts; ++count)
{
- uint64_t v = value;
-
- /* Fill in the random bits. */
- XXXXXX[0] = letters[v % 62];
- v /= 62;
- XXXXXX[1] = letters[v % 62];
- v /= 62;
- XXXXXX[2] = letters[v % 62];
- v /= 62;
- XXXXXX[3] = letters[v % 62];
- v /= 62;
- XXXXXX[4] = letters[v % 62];
- v /= 62;
- XXXXXX[5] = letters[v % 62];
+ size_t i;
+
+ for (i = 0; i < x_suffix_len; i++)
+ XXXXXX[i] = letters[randint_genmax (rand_src, sizeof letters - 2)];
switch (kind)
{
@@ -276,7 +271,7 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
break;
case __GT_NOCREATE:
- /* This case is backward from the other three. __gen_tempname
+ /* This case is backward from the other three. This function
succeeds if __xstat fails because the name does not exist.
Note the continue to bypass the common logic at the bottom
of the loop. */
@@ -285,11 +280,15 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
if (errno == ENOENT)
{
__set_errno (save_errno);
- return 0;
+ fd = 0;
+ goto done;
}
else
- /* Give up now. */
- return -1;
+ {
+ /* Give up now. */
+ fd = -1;
+ goto done;
+ }
}
continue;
@@ -301,13 +300,32 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
if (fd >= 0)
{
__set_errno (save_errno);
- return fd;
+ goto done;
}
else if (errno != EEXIST)
- return -1;
+ {
+ fd = -1;
+ goto done;
+ }
}
+ randint_all_free (rand_src);
+
/* We got out of the loop because we ran out of combinations to try. */
__set_errno (EEXIST);
return -1;
+
+ done:
+ {
+ int saved_errno = errno;
+ randint_all_free (rand_src);
+ __set_errno (saved_errno);
+ }
+ return fd;
+}
+
+int
+__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
+{
+ return gen_tempname_len (tmpl, suffixlen, flags, kind, 6);
}

View File

@@ -1,42 +0,0 @@
/* Create a temporary file or directory.
Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* header written by Eric Blake */
/* In gnulib, always prefer large files. GT_FILE maps to
__GT_BIGFILE, not __GT_FILE, for a reason. */
#define GT_FILE 1
#define GT_DIR 2
#define GT_NOCREATE 3
/* Generate a temporary file name based on TMPL. TMPL must match the
rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed
does not exist at the time of the call to gen_tempname. TMPL is
overwritten with the result.
KIND may be one of:
GT_NOCREATE: simply verify that the name does not exist
at the time of the call.
GT_FILE: create a large file using open(O_CREAT|O_EXCL)
and return a read-write fd. The file is mode 0600.
GT_DIR: create a directory, which will be mode 0700.
We use a clever algorithm to get hard-to-predict names. */
#include <stddef.h>
extern int gen_tempname (char *tmpl, int flags, int kind);
extern int gen_tempname_len (char *tmpl, int flags, int kind,
size_t x_suffix_len);

12
gl/lib/tempname.h.diff Normal file
View File

@@ -0,0 +1,12 @@
diff --git c/lib/tempname.h i/lib/tempname.h
index cd69e7d..9757db2 100644
--- c/lib/tempname.h
+++ i/lib/tempname.h
@@ -46,5 +46,7 @@
We use a clever algorithm to get hard-to-predict names. */
extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind);
+extern int gen_tempname_len (char *tmpl, int suffixlen, int flags, int kind,
+ size_t x_suffix_len);
#endif /* GL_TEMPNAME_H */

View File

@@ -1,41 +0,0 @@
/* a wrapper for frepoen
Copyright (C) 2008-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include "xfreopen.h"
#include <errno.h>
#include "error.h"
#include "exitfail.h"
#include "quote.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
void
xfreopen (char const *filename, char const *mode, FILE *fp)
{
if (!freopen (filename, mode, fp))
{
char const *f = (filename ? filename
: (fp == stdin ? _("stdin")
: (fp == stdout ? _("stdout")
: (fp == stderr ? _("stderr")
: _("unknown stream")))));
error (exit_failure, errno, _("failed to reopen %s with mode %s"),
quote_n (0, f), quote_n (1, mode));
}
}

View File

@@ -1,2 +0,0 @@
#include <stdio.h>
void xfreopen (char const *filename, char const *mode, FILE *fp);

View File

@@ -1,11 +0,0 @@
#serial 3
dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_MGETGROUPS],
[
AC_CHECK_FUNCS([getgrouplist])
AC_LIBOBJ([mgetgroups])
])

View File

@@ -1,5 +1,5 @@
#serial 3
dnl Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
dnl Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

View File

@@ -0,0 +1,9 @@
diff --git i/modules/link-tests w/modules/link-tests
index d8e7b1a..aca0e74 100644
--- i/modules/link-tests
+++ w/modules/link-tests
@@ -12,3 +12,4 @@ configure.ac:
Makefile.am:
TESTS += test-link
check_PROGRAMS += test-link
+test_link_LDADD = $(LDADD) @LIBINTL@

View File

@@ -1,24 +0,0 @@
Description:
Return the group IDs of a user in malloc'd storage.
Files:
lib/mgetgroups.c
lib/mgetgroups.h
m4/mgetgroups.m4
Depends-on:
getugroups
xalloc
configure.ac:
gl_MGETGROUPS
Makefile.am:
Include:
License:
LGPL
Maintainer:
Jim Meyering

View File

@@ -0,0 +1,9 @@
diff --git a/modules/rename-tests b/modules/rename-tests
index be1b423..fea330a 100644
--- a/modules/rename-tests
+++ b/modules/rename-tests
@@ -14,3 +14,4 @@ configure.ac:
Makefile.am:
TESTS += test-rename
check_PROGRAMS += test-rename
+test_rename_LDADD = $(LDADD) @LIBINTL@

View File

@@ -1,25 +0,0 @@
Description:
a wrapper for frepoen
Files:
lib/xfreopen.c
lib/xfreopen.h
Depends-on:
error
exitfail
quote
configure.ac:
Makefile.am:
lib_SOURCES += xfreopen.c xfreopen.h
Include:
"xfreopen.h"
License:
LGPL
Maintainer:
Jim Meyering

2
gnulib

Submodule gnulib updated: f4dc80620e...7521ea075f

View File

@@ -1 +1,3 @@
include gnulib.mk
AM_CFLAGS = $(GNULIB_WARN_CFLAGS) # $(WERROR_CFLAGS)

View File

@@ -8746,7 +8746,7 @@
-----
Copyright (C) 2000-2009 Free Software Foundation, Inc.
Copyright (C) 2000-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

View File

@@ -1,6 +1,6 @@
## Makefile for gnulib/lib -*-Makefile-*-
# Copyright (C) 1995-2007, 2009 Free Software Foundation, Inc.
# Copyright (C) 1995-2007, 2009-2010 Free Software Foundation, Inc.
## This program is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
include gnulib.mk
AM_CFLAGS += $(WARN_CFLAGS) # $(WERROR_CFLAGS)
AM_CFLAGS += $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
libcoreutils_a_SOURCES += \
buffer-lcm.c buffer-lcm.h \

View File

@@ -1,6 +1,6 @@
/* buffer-lcm.c - compute a good buffer size for dealing with two files
Copyright (C) 2002, 2005, 2009 Free Software Foundation, Inc.
Copyright (C) 2002, 2005, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
This function is probably useful only for choosing whether to issue
a prompt in an implementation of POSIX-specified rm.
Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -130,6 +130,6 @@ main (int argc, char **argv)
ok = euidaccess_stat (&st, mode);
printf ("%s: %s\n", file, ok ? "y" : "n");
exit (0);
return 0;
}
#endif

View File

@@ -1,6 +1,6 @@
/* Invoke open, but return either a desired file descriptor or -1.
Copyright (C) 2005, 2006, 2008-2009 Free Software Foundation, Inc.
Copyright (C) 2005-2006, 2008-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Invoke open, but return either a desired file descriptor or -1.
Copyright (C) 2005, 2009 Free Software Foundation, Inc.
Copyright (C) 2005, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Locale-specific memory transformation
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Compare integer strings.
Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* Compare numeric strings. This is an internal include file.
Copyright (C) 1988, 1991, 1992, 1993, 1995, 1996, 1998, 1999, 2000,
2003, 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 1988, 1991-1993, 1995-1996, 1998-2000, 2003-2006, 2009-2010
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* Compare numeric strings.
Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# Exercise chdir-long's sample main program.
# Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
# Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* xfts.c -- a wrapper for fts_open
Copyright (C) 2003, 2005-2007, 2009 Free Software Foundation, Inc.
Copyright (C) 2003, 2005-2007, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,13 +21,9 @@
#include <stdbool.h>
#include <stdlib.h>
#include <errno.h>
#include <assert.h>
#include "error.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
#include "quote.h"
#include "xalloc.h"
#include "xfts.h"
@@ -40,24 +36,30 @@ xfts_open (char * const *argv, int options,
FTS *fts = fts_open (argv, options | FTS_CWDFD, compar);
if (fts == NULL)
{
/* This can fail in three ways: out of memory, invalid bit_flags,
and one or more of the FILES is an empty string. We could try
to decipher that errno==EINVAL means invalid bit_flags and
errno==ENOENT means there's an empty string, but that seems wrong.
Ideally, fts_open would return a proper error indicator. For now,
we'll presume that the bit_flags are valid and just check for
empty strings. */
bool invalid_arg = false;
for (; *argv; ++argv)
{
if (**argv == '\0')
invalid_arg = true;
}
if (invalid_arg)
error (EXIT_FAILURE, 0, _("invalid argument: %s"), quote (""));
else
xalloc_die ();
/* This can fail in two ways: out of memory or with errno==EINVAL,
which indicates it was called with invalid bit_flags. */
assert (errno != EINVAL);
xalloc_die ();
}
return fts;
}
/* When fts_read returns FTS_DC to indicate a directory cycle,
it may or may not indicate a real problem. When a program like
chgrp performs a recursive traversal that requires traversing
symbolic links, it is *not* a problem. However, when invoked
with "-P -R", it deserves a warning. The fts_options member
records the options that control this aspect of fts's behavior,
so test that. */
bool
cycle_warning_required (FTS const *fts, FTSENT const *ent)
{
#define ISSET(Fts,Opt) ((Fts)->fts_options & (Opt))
/* When dereferencing no symlinks, or when dereferencing only
those listed on the command line and we're not processing
a command-line argument, then a cycle is a serious problem. */
return ((ISSET (fts, FTS_PHYSICAL) && !ISSET (fts, FTS_COMFOLLOW))
|| (ISSET (fts, FTS_PHYSICAL) && ISSET (fts, FTS_COMFOLLOW)
&& ent->fts_level != FTS_ROOTLEVEL));
}

View File

@@ -1,5 +1,9 @@
#include <stdbool.h>
#include "fts_.h"
FTS *
xfts_open (char * const *, int options,
int (*) (const FTSENT **, const FTSENT **));
bool
cycle_warning_required (FTS const *fts, FTSENT const *ent);

View File

@@ -1,6 +1,6 @@
/* Locale-specific memory transformation
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -5004,8 +5004,7 @@
-----
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2009 Free Software Foundation, Inc.
Copyright (C) 1997-2006, 2009-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice

View File

@@ -1,7 +1,8 @@
# boottime.m4 serial 4
# Determine whether this system has infrastructure for obtaining the boot time.
# Copyright (C) 1996, 2000, 2002-2004, 2006, 2008-2009 Free Software Foundation, Inc.
# Copyright (C) 1996, 2000, 2002-2004, 2006, 2008-2010 Free Software
# Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@@ -1,8 +1,8 @@
#serial 25
#serial 26
# Check declarations for this package.
dnl Copyright (C) 1997-2001, 2003-2006, 2008-2009 Free Software
dnl Foundation, Inc.
dnl Copyright (C) 1997-2001, 2003-2006, 2008-2010 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -35,8 +35,6 @@ AC_DEFUN([gl_CHECK_DECLS],
getpwuid,
ttyname], , , $headers)
AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
AC_CHECK_DECLS_ONCE([geteuid])
AC_CHECK_DECLS_ONCE([getlogin])
AC_CHECK_DECLS_ONCE([getuid])

View File

@@ -1,5 +1,5 @@
# serial 1
dnl Copyright (C) 2005, 2009 Free Software Foundation, Inc.
dnl Copyright (C) 2005, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

View File

@@ -1,6 +1,6 @@
# Invoke open, but return either a desired file descriptor or -1.
dnl Copyright (C) 2005, 2009 Free Software Foundation, Inc.
dnl Copyright (C) 2005, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,

View File

@@ -1,6 +1,6 @@
# Tests for GNU GMP (or any compatible replacement).
dnl Copyright (C) 2008-2009 Free Software Foundation, Inc.
dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -30,7 +30,9 @@ AC_DEFUN([cu_GMP],
LIB_GMP=$ac_cv_search___gmpz_init
AC_DEFINE([HAVE_GMP], [1],
[Define if you have GNU libgmp (or replacement)])
}])
}],
[AC_MSG_WARN([libgmp development library was not found or not usable.])
AC_MSG_WARN([AC_PACKAGE_NAME will be built without GMP support.])])
LIBS=$cu_saved_libs
fi
])

View File

@@ -1,5 +1,5 @@
#serial 2
dnl Copyright (C) 2007, 2009 Free Software Foundation, Inc.
dnl Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

View File

@@ -2,7 +2,7 @@
dnl Misc type-related macros for coreutils.
# Copyright (C) 1998, 2000-2009 Free Software Foundation, Inc.
# Copyright (C) 1998, 2000-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -89,14 +89,12 @@ AC_DEFUN([coreutils_MACROS],
tcgetpgrp \
)
# for cp.c
AC_CHECK_FUNCS_ONCE([utimensat])
dnl This can't use AC_REQUIRE; I'm not quite sure why.
cu_PREREQ_STAT_PROG
# for dd.c and shred.c
coreutils_saved_libs=$LIBS
LIB_FDATASYNC=
AC_SEARCH_LIBS([fdatasync], [rt posix4],
[test "$ac_cv_search_fdatasync" = "none required" ||
LIB_FDATASYNC=$ac_cv_search_fdatasync])
@@ -118,7 +116,8 @@ AC_DEFUN([coreutils_MACROS],
if test "X$enable_libcap" = "Xyes"; then
AC_MSG_ERROR([libcap library was not found or not usable])
else
AC_MSG_WARN([libcap library was not found or not usable, support for libcap will not be built])
AC_MSG_WARN([libcap library was not found or not usable.])
AC_MSG_WARN([AC_PACKAGE_NAME will be built without capability support.])
fi
fi
else

View File

@@ -2,8 +2,8 @@
dnl Misc lib-related macros for coreutils.
# Copyright (C) 1993-1997, 2000-2001, 2003-2006, 2008-2009
# Free Software Foundation, Inc.
# Copyright (C) 1993-1997, 2000-2001, 2003-2006, 2008-2010 Free Software
# Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -51,6 +51,7 @@ $ac_includes_default
# SCO-ODT-3.0 is reported to need -lufc for crypt.
# NetBSD needs -lcrypt for crypt.
LIB_CRYPT=
cu_saved_libs="$LIBS"
AC_SEARCH_LIBS([crypt], [ufc crypt],
[test "$ac_cv_search_crypt" = "none required" ||

View File

@@ -1,4 +1,4 @@
dnl Copyright (C) 2006, 2009 Free Software Foundation, Inc.
dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

View File

@@ -7,7 +7,7 @@ m4_pattern_forbid([^gl_[ABCDEFGHIJKLMNOPQRSTUVXYZ]])dnl
# directory of the coreutils package.
# Copyright (C) 1998, 2000, 2001, 2003-2009 Free Software Foundation, Inc.
# Copyright (C) 1998, 2000-2001, 2003-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
# stat-prog.m4 serial 6
# Record the prerequisites of src/stat.c from the coreutils package.
# Copyright (C) 2002-2004, 2006, 2008-2009 Free Software Foundation, Inc.
# Copyright (C) 2002-2004, 2006, 2008-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# Compare numeric strings.
dnl Copyright (C) 2005, 2009 Free Software Foundation, Inc.
dnl Copyright (C) 2005, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,

View File

@@ -1,6 +1,6 @@
# xattr.m4 - check for Extended Attributes (Linux)
# Copyright (C) 2003, 2008-2009 Free Software Foundation, Inc.
# Copyright (C) 2003, 2008-2010 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -15,22 +15,29 @@ AC_DEFUN([gl_FUNC_XATTR],
[do not support extended attributes]),
[use_xattr=$enableval], [use_xattr=yes])
LIB_XATTR=
AC_SUBST([LIB_XATTR])
if test "$use_xattr" = "yes"; then
AC_CHECK_HEADERS([attr/error_context.h attr/libattr.h])
use_xattr=no
if test $ac_cv_header_attr_libattr_h = yes \
&& test $ac_cv_header_attr_error_context_h = yes; then
use_xattr=1
else
use_xattr=0
&& test $ac_cv_header_attr_error_context_h = yes; then
xattr_saved_LIBS=$LIBS
AC_SEARCH_LIBS([attr_copy_file], [attr],
[test "$ac_cv_search_attr_copy_file" = "none required" ||
LIB_XATTR=$ac_cv_search_attr_copy_file])
AC_CHECK_FUNCS([attr_copy_file])
LIBS=$xattr_saved_LIBS
if test $ac_cv_func_attr_copy_file = yes; then
use_xattr=yes
fi
fi
AC_DEFINE_UNQUOTED([USE_XATTR], [$use_xattr],
[Define if you want extended attribute support.])
xattr_saved_LIBS=$LIBS
AC_SEARCH_LIBS([attr_copy_file], [attr],
[test "$ac_cv_search_attr_copy_file" = "none required" ||
LIB_XATTR=$ac_cv_search_attr_copy_file])
AC_CHECK_FUNCS([attr_copy_file])
LIBS=$xattr_saved_LIBS
AC_SUBST([LIB_XATTR])
if test $use_xattr = no; then
AC_MSG_WARN([libattr development library was not found or not usable.])
AC_MSG_WARN([AC_PACKAGE_NAME will be built without xattr support.])
fi
fi
])

View File

@@ -1,5 +1,5 @@
#serial 1
dnl Copyright (C) 2005, 2009 Free Software Foundation, Inc.
dnl Copyright (C) 2005, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

1
man/.gitignore vendored
View File

@@ -48,6 +48,7 @@ mv.1
nice.1
nl.1
nohup.1
nproc.1
od.1
paste.1
pathchk.1

View File

@@ -1,6 +1,6 @@
# Make coreutils man pages. -*-Makefile-*-
# Copyright (C) 2002-2009 Free Software Foundation, Inc.
# Copyright (C) 2002-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -80,6 +80,7 @@ mv.1: $(common_dep) $(srcdir)/mv.x ../src/mv.c
nice.1: $(common_dep) $(srcdir)/nice.x ../src/nice.c
nl.1: $(common_dep) $(srcdir)/nl.x ../src/nl.c
nohup.1: $(common_dep) $(srcdir)/nohup.x ../src/nohup.c
nproc.1: $(common_dep) $(srcdir)/nproc.x ../src/nproc.c
od.1: $(common_dep) $(srcdir)/od.x ../src/od.c
paste.1: $(common_dep) $(srcdir)/paste.x ../src/paste.c
pathchk.1: $(common_dep) $(srcdir)/pathchk.x ../src/pathchk.c

View File

@@ -1,4 +1,5 @@
'\" Copyright (C) 1998, 1999, 2001, 2006, 2007, 2009 Free Software Foundation, Inc.
'\" Copyright (C) 1998-1999, 2001, 2006-2007, 2009-2010 Free Software
'\" Foundation, Inc.
'\"
'\" This is free software. You may redistribute copies of it under the terms
'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.

View File

@@ -1,4 +1,5 @@
'\" Copyright (C) 1998, 1999, 2001, 2006, 2009 Free Software Foundation, Inc.
'\" Copyright (C) 1998-1999, 2001, 2006, 2009-2010 Free Software Foundation,
'\" Inc.
'\"
'\" This is free software. You may redistribute copies of it under the terms
'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.

View File

@@ -1,4 +1,4 @@
'\" Copyright (C) 1998, 1999, 2004, 2009 Free Software Foundation, Inc.
'\" Copyright (C) 1998-1999, 2004, 2009-2010 Free Software Foundation, Inc.
'\"
'\" This is free software. You may redistribute copies of it under the terms
'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.

View File

@@ -1,4 +1,4 @@
'\" Copyright (C) 1998, 1999, 2000, 2002, 2009 Free Software Foundation, Inc.
'\" Copyright (C) 1998-2000, 2002, 2009-2010 Free Software Foundation, Inc.
'\"
'\" This is free software. You may redistribute copies of it under the terms
'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.

View File

@@ -1,8 +1,7 @@
#!/usr/bin/perl -w
# Generate a short man page from --help and --version output.
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009
# Free Software Foundation, Inc.
# Copyright (C) 1997-2004, 2008-2010 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

Some files were not shown because too many files have changed in this diff Show More