merging coreutils-7.5 into trunk (c89 fixes needed)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32796 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval 2009-08-28 22:30:24 +00:00
parent fb086488a9
commit b5dc2c1535
313 changed files with 10682 additions and 3459 deletions

View File

@ -76,6 +76,7 @@ sleep: Jim Meyering, Paul Eggert
sort: Mike Haertel, Paul Eggert sort: Mike Haertel, Paul Eggert
split: Torbjörn Granlund, Richard M. Stallman split: Torbjörn Granlund, Richard M. Stallman
stat: Michael Meskes stat: Michael Meskes
stdbuf: Pádraig Brady
stty: David MacKenzie stty: David MacKenzie
su: David MacKenzie su: David MacKenzie
sum: Kayvan Aghaiepour, David MacKenzie sum: Kayvan Aghaiepour, David MacKenzie

View File

@ -1,5 +1,883 @@
2009-08-20 Jim Meyering <meyering@redhat.com>
version 7.5
* NEWS: Record release date.
tests: skip the stdbuf tests when the abs build directory name is bogus
* tests/misc/stdbuf: Avoid spurious failure when the directory name
from which we'd set LD_PRELOAD contains unsafe characters.
install: avoid a portability bug when compiling with non-gcc
* src/install.c (extra_mode): Be careful to return only a 0 or 1
value, since this is a "bool" function, and there are still some
compilers for which this is necessary. Without this change,
Bernhard Voelker reported that the Forte Developer 7 C 5.4 2002/03/09
compiler would produce a malfunctioning "install" binary. Details in
http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/17710/focus=17760
2009-08-19 Jim Meyering <meyering@redhat.com>
tests: make install-C slightly less prone to confusion
* tests/install/install-C: Invoke framework_failure, if necessary.
build: avoid "make dist" failure in man/
Now that "make check" no longer builds programs like arch, ...
* src/Makefile.am (dist-hook): Depend on $(all_programs), so that the
subsequent build in man/ doesn't fail due to lack of a program like
arch that is not going to be installed.
2009-08-18 Jim Meyering <meyering@redhat.com>
build: update from gnulib
* gnulib: Update submodule to latest.
2009-08-18 Giuseppe Scrivano <gscrivano@gnu.org>
nl: deprecate --page-increment in favor of --line-increment
* NEWS: Mention the change.
* doc/coreutils.texi: Document the new --line-increment option.
* src/nl.c (struct option): Add --line-increment,
(usage): Describe it,
(main): Use it.
2009-08-18 Jim Meyering <meyering@redhat.com>
tests: stdbuf: fix a bug in test script
* tests/misc/stdbuf: Use skip_test_ only after it's defined.
Reported by Berhnard Voelker.
(sc_check-AUTHORS): Rename rule from check-AUTHORS.
build: perform check-AUTHORS via syntax-check, not via "make check"
* src/Makefile.am (check): Don't depend on check-AUTHORS.
That check fails on systems for which a program like stdbuf is
not built. Instead, move this check to "make syntax-check".
(sc_check-AUTHORS): Rename rule from check-AUTHORS.
* cfg.mk (sc_check-AUTHORS): New rule.
Reported by Berhnard Voelker.
sort: use more portable initialization syntax
* src/sort.c (find_unit_order): Spell out 256-element static
initializer, rather than relying on C99 syntax.
Required for Forte Developer 7 C 5.4 2002/03/09 on Solaris 10.
Reported by Bernhard Voelker.
2009-08-17 Jim Meyering <meyering@redhat.com>
build: suppress warnings due to gcc's new -Wjump-misses-init
* configure.ac: Ignore -Wjump-misses-init violations in remove.c.
build: update from gnulib
* gnulib: Update submodule to latest.
2009-08-16 Jim Meyering <meyering@redhat.com>
tests: tail-2/append-only: don't discard stderr
* tests/tail-2/append-only: Don't discard a diagnostic that
may help explain why this test fails for some. Details in
http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/17621/focus=17641
2009-08-14 Jim Meyering <meyering@redhat.com>
tests: skip the misc/stdbuf test if stdbuf was not built
* tests/misc/stdbuf: Skip this test when stdbuf is not built.
Reported by Eric Blake.
build: use gnulib's getopt-gnu module (getopt is now deprecated)
* bootstrap.conf (gnulib_modules): Gnulib's getopt module is now
deprecated; use the new, preferred name, getopt-gnu.
* gnulib: Update to latest.
2009-08-14 Pádraig Brady <P@draigBrady.com>
cp,mv: fix issues with preserving timestamps of copied symlinks
* src/copy.c (copy_internal): On systems without utimensat don't
use utimens on a symlink, as that would dereference the symlink.
* tests/cp/abuse: To work around possible attribute preservation
failures breaking the test, use cp -dR rather than cp -a.
doc: clarify the cp --reflink NEWS
* NEWS: Remove the description associated with the removed
experimental code which unconditionally tried to reflink() on copy.
Also clarify where --reflink works exactly.
2009-08-13 Jim Meyering <meyering@redhat.com>
tests: raise ulimit virt-mem limit to avoid new failure
* tests/cp/link-heap: Raise limit from 16MB to ~20MB,
to avoid spurious failure on rawhide.
2009-08-13 Pádraig Brady <P@draigBrady.com>
tail: fix tail -f failure when inotify used
* src/tail.c (tail_forever_inotify): Remove the redundant and
incorrect error check of the return from inotify_add_watch().
Also initialize the wd member of each File_spec to an invalid value.
Reported by C de-Avillez.
dd: fix a signal handling race
* src/dd.c (main): Install the signal handlers at startup
rather than just before the copy starts. In this way signals
received before the copy (like during a slow truncate for e.g.)
will be deferred and handled consistently.
* THANKS: Add Bernhard's email address.
* NEWS: Mention the fix.
Reported by Bernhard Voelker.
2009-08-12 Pádraig Brady <P@draigBrady.com>
tests: improve one of the tail --pid tests
* tests/tail-2/pid: Speed up the test by specifying a
timeout of 100ms rather than the default 1s. Also
skip the test instead of failing in the unlikely case
were the pid required to be missing pid is present.
2009-08-10 Jim Meyering <meyering@redhat.com>
nl, pinky: replace uses of strcat
* src/nl.c (main): Avoid strcat, on principle. Use stpcpy instead.
* src/pinky.c (print_long_entry): Likewise.
build: update from gnulib, for HOST_NAME_MAX on solaris 10
* gnulib: Update submodule to latest.
2009-08-07 Giuseppe Scrivano <gscrivano@gnu.org>
cp: accept the --reflink option
* NEWS: Mention it.
* doc/coreutils.texi (cp invocation): Describe it.
* src/copy.h (struct cp_options) [reflink]: New member.
* src/copy.c (usage): Describe it.
(copy_reg): If reflink is true try to clone the file.
(main): Check for --reflink.
(cp_option_init): Initialize the new member.
* src/install.c (cp_option_init): Initialize the new member.
* src/mv.c (cp_option_init): Likewise.
* tests/cp/sparse: Add a new test case.
2009-08-07 Jim Meyering <meyering@redhat.com>
dd: preserve semantics of O_DIRECT even for final block
* src/dd.c: Include "ignore-value.h"
(iwrite): When disabling O_DIRECT, try to compensate
via POSIX_FADV_DONTNEED and fsync.
Suggested by Eric Sandeen.
2009-08-06 Jim Meyering <meyering@redhat.com>
maint: move selinux-at module from gl/ to gnulib
* gl/lib/selinux-at.c: Remove file.
* gl/lib/selinux-at.h: Likewise.
* gl/modules/selinux-at: Likewise.
* gnulib: update to latest, to get the new module.
dd: work around buffer length restrictions with oflag=direct (O_DIRECT)
dd oflag=direct would fail to copy a file with size that is
not a multiple of 512 (destination file system specific)
* NEWS (Bug fixes): Mention it.
* src/dd.c (iwrite): Turn off O_DIRECT for any
smaller-than-obs-sized write. Don't bother to restore it.
* tests/dd/direct: New test for the above.
* tests/Makefile.am (TESTS): Add dd/direct.
* doc/coreutils.texi (dd invocation): Mention oflag=direct
buffer size restriction.
Details in http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/17586
Reported by Eric Sandeen.
2009-08-04 Jim Meyering <meyering@redhat.com>
dd: remove unnecessary #if HAVE_FTRUNCATE
* src/dd.c (main): Remove unnecessary cpp directives.
Gnulib guarantees that ftruncate is usable.
cp -pP (and e.g., -a): preserve time stamps on symlinks, too
* src/copy.c (utimensat_if_possible): New function.
(copy_internal): Remove variable, "preserve_metadata".
Replace with "dest_is_symlink". That covers all cases but one:
the one in which cp --link has created hard links to non-directories.
In that case, there is no need to update attributes of the links.
Use utimensat_if_possible, to preserve timestamps of symlinks.
* NEWS (New features): Mention this.
* tests/Makefile.am (TESTS): Add cp/preserve-slink-time.
* tests/cp/preserve-slink-time: New file.
* m4/jm-macros.m4 (coreutils_MACROS): Test for utimensat.
Reported in http://bugzilla.redhat.com/230866
2009-08-04 Kamil Dudka <kdudka@redhat.com>
install runs faster again with SELinux enabled
* m4/jm-macros.m4: Pull in SELinux libraries while checking for
matchpathcon_init_prefix (). Emit configure warning when not found
with SELinux enabled.
* NEWS (Bug fixes): Mention it.
The bug was introduced in coreutils-7.0 via commit 0647f3eb, 2008-06-02,
"accommodate older SELinux which lacks matchpathcon_init_prefix".
2009-08-04 Jim Meyering <meyering@redhat.com>
maint: move the update-copyright rule to gnulib's maint.mk
* gnulib: Update submodule to get latest maint.mk.
* Makefile.am (update-copyright): Remove rule; now it's in maint.mk.
* m4/check-decl.m4: Update sole remaining copyright year list.
2009-07-31 Jim Meyering <meyering@redhat.com>
build: *really* update to a usable gnulib commit
build: update to a usable gnulib commit
The commit, 5ef90695, 2009-07-29, "maint: move update-copyright
to gnulib" recorded a local-only commit.
Reported by Pádraig Brady.
2009-07-30 Jim Meyering <meyering@redhat.com>
tests: new function: require_openat_support_
* tests/rm/inaccessible: Factor out openat-support-detection code...
* tests/test-lib.sh (require_openat_support_): ...into this new function.
tail: tweak indentation
* src/tail.c (tail_forever_inotify): Adjust indentation of continued line.
2009-07-30 Pádraig Brady <P@draigBrady.com>
tail: properly parse fractional seconds when monitoring a pid
* src/tail.c (tail_forever_inotify): The fractional
part of the delay was 1000 times too large.
* tests/tail-2/pid: Add a test to ensure the
timeout happens for this case.
2009-07-30 Jim Meyering <meyering@redhat.com>
tests: test for just-fixed tail --pid bug
* tests/tail-2/pid: Ensure tail exits successfully when PID dies.
2009-07-30 Giuseppe Scrivano <gscrivano@gnu.org>
tail: exit successfully upon watched process death
* src/tail.c (tail_forever_inotify): If a PID is specified and the
watched process dies, exit with status EXIT_SUCCESS, rather than
falling through to an EXIT_FAILURE.
2009-07-29 Jim Meyering <meyering@redhat.com>
maint: move update-copyright to gnulib
* build-aux/update-copyright: Remove file.
* bootstrap.conf (gnulib_modules): Add update-copyright.
* gnulib: Update submodule to latest.
maint: make update-copyright work in yet another case
* build-aux/update-copyright: Handle the case in which "\n#"
appears between the final year number and the copyright holder name.
* m4/lib-check.m4: Update copyright year list.
Reported by Joel E. Denny.
maint: update NEWS
* NEWS (New features): Mention it.
2009-07-29 Giuseppe Scrivano <gscrivano@gnu.org>
cp: support btrfs' copy-on-write file clone operation
* src/copy.c [HAVE_SYS_IOCTL_H]: Include <sys/ioctl.h>.
(BTRFS_IOCTL_MAGIC, BTRFS_IOC_CLONE): Define.
(clone_file): New function.
(copy_reg): Use the btrfs clone operation if possible.
2009-07-29 Jim Meyering <meyering@redhat.com>
maint: update sleep.c's copyright year list
* src/sleep.c: Update copyright year list to include 2009.
* tests/sort-time/rand-gen: Remove long-unused file.
* tests/sort-time/README: Likewise.
2009-07-29 Joel E. Denny <jdenny@clemson.edu>
maint: improve update-copyright rule
* Makefile.am (update-copyright): Relax the selection rule
to match any file containing the word "Copyright".
Correct the exclusion rule so that it also excludes ChangeLog
and COPYING files that are not in the top level directory.
2009-07-29 Jim Meyering <meyering@redhat.com>
maint: update-copyright: fix just-introduced bug
* build-aux/update-copyright: ... and revert-for-now the
change that made this script invoke localtime only once.
maint: make update-copyright handle more cases
* build-aux/update-copyright: Handle cases in which the final
year number and copyright holder are on separate lines.
Prompted by a report from Joel E. Denny.
Also, do not invoke localtime for each line we process.
2009-07-29 Pádraig Brady <P@draigBrady.com>
doc: fix the generated HTML index
* doc/coreutils.texi: Move the "SELinux context" section
down below the "System context" nodes so that the HTML
index is generated correctly. Also some extraneous and missing
'.' characters were corrected in the index.
Reported by Benno Schulenberg.
2009-07-28 Giuseppe Scrivano <gscrivano@gnu.org>
tail: use the inotify backend also with --pid=PID
* src/tail.c (tail_forever_inotify): When a PID is specified, use
select to block for no more than sleep_interval seconds at a time,
and check for process death upon timeout.
(main): Adapt to new tail_forever_inotify interface.
2009-07-27 Jim Meyering <meyering@redhat.com>
tests: new test for bug in ls -1U dir arg ...
* tests/misc/ls-misc (multi-arg-U1): New test.
2009-07-27 Kamil Dudka <kdudka@redhat.com>
ls -1U dir arg ... now works again
* src/ls.c (print_dir): Emit "$dir_name:\n" *before* accumulating (and
possibly printing) directory entry names.
The bug was introduced in coreutils-7.0 via commit
8d974b00, 2008-07-30, "ls -U1 now uses constant memory".
Reported by Julian Bradfield.
* NEWS (Bug fixes): Mention it.
2009-07-27 Heikki Orsila <heikki.orsila@iki.fi>
tr: improve --help's description of --complement (-c)
2009-07-27 Pádraig Brady <P@draigBrady.com>
doc: add a sort by line length example
* doc/coreutils.texi (sort invocation): Add an example showing how
to sort data not directly supported by the sort command.
doc: mention realpath in the readlink info
* doc/coreutils.texi (readlink invocation): Add realpath to the index,
and also mention it in the readlink description so people
searching for that functionality can easily make the connection.
2009-07-26 Jim Meyering <meyering@redhat.com>
build: use a fixed-name temporary in man/Makefile.am
* man/Makefile.am (check-x-vs-1): Using a fixed-name temporary file
is better than one ending in -$$, because many -$$-suffixed files
may accumulate over time.
2009-07-24 Kamil Dudka <kdudka@redhat.com>
doc: improve readlink description here, too
* doc/coreutils.texi (readlink invocation): Update menus.
Add @cindex entries.
2009-07-24 Jim Meyering <meyering@redhat.com>
readlink: improve one-line summary: prints canonical file names, too
* src/readlink.c (usage): Adjust one-line summary.
* man/readlink.x: Likewise.
Suggested by Kamil Dudka.
2009-07-21 Jim Meyering <meyering@redhat.com>
build: update from gnulib
* gnulib: Update submodule to latest.
2009-07-14 Jim Meyering <meyering@redhat.com>
doc: point to Guile's ChangeLog-writing guidelines
* HACKING (Commit log requirements): Point to Guile's
http://www.gnu.org/software/guile/changelogs/guile-changelogs_3.html.
Mention that a bit of prose can be welcome.
2009-07-11 Jim Meyering <meyering@redhat.com>
tail: adjust type of a local variable
* src/tail.c (tail_forever_inotify): Declare "len" to be of type
size_t, not ssize_t, since the former is what safe_read returns.
2009-07-09 Jim Meyering <meyering@redhat.com>
tests: avoid false-positive cp/link-heap failure
* tests/cp/link-heap: Increase address space limit from 14000KB
to 16000KB, to avoid failure with Debian unstable's libc6-dev-2.9-19
build: avoid build warn/failure due to -Wstack-protector
* configure.ac: Do not enable -Wstack-protector.
Otherwise, at least df.c would provoke a warning.
2009-07-08 Ondřej Vašík <ovasik@redhat.com>
copy.c: remove a duplicate expression
* src/copy.c (copy_attr_error): remove a redundant expression
added in commit e0cf592f, 2009-04-27, "factor out test for errno ...".
2009-07-08 Jim Meyering <meyering@redhat.com>
build: update from gnulib
* gnulib: Update submodule to latest.
tail: use size_t for counter and index variables, ...
* src/tail.c (any_live_files): ... not "int" or even unsigned int
(tail_forever, tail_forever_inotify, main): Likewise.
tail: declare "file descriptor" variable to be "int", not size_t
* src/tail.c (tail_forever_inotify): Use "int", not size_t
as the type of a file descriptor variable.
2009-07-04 Jim Meyering <meyering@redhat.com>
move argv-iter module to gnulib
* gl/lib/argv-iter.c: Remove file.
* gl/lib/argv-iter.h: Remove file.
* gl/modules/argv-iter: Remove file.
* gl/modules/argv-iter-tests: Remove file.
* gl/tests/test-argv-iter.c: Remove file.
* gnulib: Update submodule, to get argv-iter
2009-07-04 Giuseppe Scrivano <gscrivano@gnu.org>
tests: refactor code to use require_proc_pid_status_
* tests/tail-2/tail-n0f: Read the process status using the test-lib.sh
require_proc_pid_status_ function.
tests: use the "nobody" user's group as the default group id
* tests/chroot/credentials: Use the group id, not its name.
* tests/test-lib.sh (NON_ROOT_GROUP): Use the "nobody" user's group in
place of "nogroup".
2009-07-03 Jim Meyering <meyering@redhat.com>
build: update from gnulib
* gnulib: Update submodule to latest.
2009-07-03 Pádraig Brady <P@draigBrady.com>
sort: allow SI and IEC units on separate human sort fields
* src/sort.c: Store the si_present state per key rather than globally
* tests/misc/sort: Add a check that would have previously failed.
Also add a test to demonstrate that invalid IEC/SI mixtures are not
always noticed when they're not significant to the sort.
2009-07-03 Giuseppe Scrivano <gscrivano@gnu.org>
tail: avoid an inotify portability problem in kernels prior to 2.6.21
* src/tail.c (tail_forever_inotify): Handle the special case in which
an old inotify watcher returns 0. Affects kernels in [2.6.13, 2.6.21).
2009-07-03 Jim Meyering <meyering@redhat.com>
tests: tail-2/wait: rename internal file name
* tests/tail-2/wait: Rename file from not_accessible to unreadable,
since all the test cares about is readability.
2009-07-03 Giuseppe Scrivano <gscrivano@gnu.org>
tests: tail-2/wait: don't fail when run as root
* tests/tail-2/wait: Ensure that the unreadable file really is not
readable before trying to run "tail -f" on it.
2009-07-03 Pádraig Brady <P@draigBrady.com>
doc: update the info on sort -b and -k
* doc/coreutils.texi (sort invocation): Mention in the description
of -b, that the locale can also affect whether blanks are significant.
Update the list of ordering options for a --key that cause it
to not inherit any global ordering options.
Update the list of ordering options that implicitly skip whitespace.
maint: generalize the development prerequisites docs
* README-hacking: Add a little more high level info and
merge notes on specific developer prerequisites into README-prereq
* README-prereq: Remove the Fedora 8 specific information
and generalize the information to be applicable to any system.
2009-06-29 Jim Meyering <meyering@redhat.com>
tail: add comments noting potential inotify-related problems
* src/tail.c (tail_forever_inotify): Add two FIXME comments.
2009-06-28 Jim Meyering <meyering@redhat.com>
maint: bootstrap: merge changes from gnulib
* bootstrap: Indent using spaces, not TABs.
maint: bootstrap: sync submodule usage from gnulib
* bootstrap: Config for git submodule use only if .gitmodules exists.
maint: bootstrap: split a few long lines
* bootstrap (found_aux_dir): Avoid lines longer than 80 columns.
2009-06-27 Jim Meyering <meyering@redhat.com>
maint: don't change COPYING
* COPYING: Don't modify Copyright date list in imported file.
This file is one of very few exceptions in that we version-control it,
even though its primary source is another package.
Spotted by Eric Blake.
maint: add a rule to automate the annual copyright-year-update process
* build-aux/update-copyright: New file.
* Makefile.am (changelog_etc): Add update-copyright.
(update-copyright): New rule.
2009-06-27 Pádraig Brady <P@draigBrady.com>
stdbuf: fix to stop -i option causing an assertion
* src/stdbuf.c (main): Fix the array bounds check in the assert
* tests/misc/stdbuf: Add a test for all standard streams
2009-06-25 Pádraig Brady <P@draigBrady.com>
doc: clarify the tail inotify NEWS
* NEWS: Say why inotify was used
2009-06-23 Jim Meyering <meyering@redhat.com>
maint: update all Copyright year lists to include 2009
maint: remove old TODO files
* lib/TODO: Remove file.
* tests/join/TODO: Likewise.
doc: README-hacking tweak
* README-hacking: Move the "While building..." sentence down
to where it belongs.
tests: tail-2/pid: include more info upon failure
* tests/tail-2/pid: Print unexpected $state upon failing.
2009-06-20 Jim Meyering <meyering@redhat.com>
doc: typo fix in README-hacking
* README-hacking: Fix a typo.
Don't make building from a git-cloned tree sound so hard.
build: update from gnulib (hash module updates; maint.mk tweak)
* gnulib: Update submodule to latest.
2009-06-17 Jim Meyering <meyering@redhat.com>
doc: fix a typo
* doc/coreutils.texi (stdbuf invocation): Insert missing "to".
2009-06-17 Pádraig Brady <P@draigBrady.com>
stdbuf: A new program to run a command with modified stdio buffering
* AUTHORS: Register as the author.
* NEWS: Mention this change.
* README: Add stdbuf command to list.
* configure.ac: Only enable on ELF systems with GCC.
* cfg.mk (sc_system_h_headers): Use VC_LIST_EXCEPT rather than
VC_LIST, so we can add an exception, if needed.
* .x-sc_system_h_headers: New file. Exempt libstdbuf.c.
* Makefile.am (syntax_check_exceptions): Add .x-sc_system_h_headers.
* doc/coreutils.texi (stdbuf invocation): Add stdbuf info.
* man/.gitignore: Ignore generated manpage.
* src/.gitignore: Ignore stdbuf and libstdbuf.so binaries.
* man/Makefile.am (stdbuf.1): Add dependency.
* man/stdbuf.x: New file with example usage.
* po/POTFILES.in: Reference new command and shared library sources.
* src/Makefile.am (build_if_possible__progs): Add stdbuf and libstdbuf,
(pkglib_PROGRAMS): Reference optional shared lib,
(libstdbuf_so_LDADD): Ensure we don't link with non PIC libcoreutils.a.
(libstdbuf_so_LDFLAGS): Add -shared GCC option,
(libstdbuf_so_CFLAGS): Add -fPIC GCC option.
(check-README): Exclude libstbuf.
(check-AUTHORS): ditto.
(sc_tight_scope): Exclude functions starting with __.
* src/libstdbuf.c: The LD_PRELOAD shared library to control buffering.
* src/stdbuf.c: New file to setup env variables before execing command.
* tests/Makefile.am: Reference new test file.
* tests/misc/help-version: Set expected exit codes.
* tests/misc/invalid-opt: ditto.
* tests/misc/stdbuf: Add 9 tests.
2009-06-16 Jim Meyering <meyering@redhat.com>
doc: cp: describe an oddity of combining -H/-L and --preserve=links
* doc/coreutils.texi (cp invocation) [-L]: Elaborate.
[--preserve=links]: Remove comments saying that we need documentation
for just this situation. Provide more explanation and examples.
Reported by Brian M. Carlson in http://bugs.debian.org/525048.
2009-06-15 Jim Meyering <meyering@redhat.com>
maint: revert last change: we're not ready for "local" in scripts, yet
Revert "use a local var: more readable"
This reverts commit c0d82452883a10911c9cbc69c84144d99b7e6b08.
use a local var: more readable
2009-06-15 Giuseppe Scrivano <gscrivano@gnu.org>
tail: use inotify if it is available
* NEWS: Document the new feature.
* m4/jm-macros.m4: Check if inotify is present.
* src/tail.c (tail_forever_inotify): New function.
(main): Use the inotify-based function, if possible.
* tests/Makefile.am: Add new tests for tail.
* tests/test-lib.sh (require_proc_pid_status_, get_process_status_):
New functions.
* tests/tail-2/pid: New file.
* tests/tail-2/wait: New file.
* tests/tail-2/tail-n0f: Refactor code into the test-lib.sh
require_proc_pid_status_ function.
2009-06-13 Jim Meyering <meyering@redhat.com>
diag: say "failed to...", rather than "cannot..." in a few diagnostics
* src/chroot.c (main): ...it's more precise.
* src/nohup.c (main): Likewise.
* src/setuidgid.c (main): Likewise.
* src/timeout.c (main): Likewise.
2009-06-13 Cliff Miller <cbm@whatexit.org>
sort: Ignore fields where end position is before the start position
* NEWS: Mention the fix
* THANKS: Add Cliff Miller
* src/sort.c (keycompare): Ensure lima >= texta
* tests/misc/sort: Add 3 corresponding tests
2009-06-11 Pádraig Brady <P@draigBrady.com>
tests: ls --color, permissions override hardlink coloring
* tests/ls/multihardlink: Add a test case to demonstrate
and test this non obvious behavior.
2009-06-11 Kamil Dudka <kdudka@redhat.com>
ls --color: do not colorize files with multiple hard links by default
* src/ls.c: Rename hl->mh, do not colorize files with multiple
hard links by default.
* src/dircolors.c: Rename HARDLINK -> MULTIHARDLINK, hl -> mh.
* src/dircolors.hin: Do not colorize files with multiple hard links by
default.
* tests/Makefile.am: Rename the test case accordingly.
* tests/ls/multihardlink: Additionally test ls' default behavior
and factor out some duplication.
* NEWS: Mention the change in behavior.
2009-06-08 Pádraig Brady <P@draigBrady.com>
maint: Add a syntax-check to ensure all .x-sc_ files are distributed
* Makefile.am: Add a couple of missing entries to
syntax_check_exceptions for distribution.
* cfg.mk: Add a rule to ensure the syntax_check_exceptions list
stays in sync with the .x-sc_* files in the repository.
2009-06-07 Jim Meyering <meyering@redhat.com>
build: update from gnulib
* gnulib: Update submodule to latest.
sort: die immediately upon heap allocation failure
* src/sort.c (register_proc): Handle hash_insert failure.
2009-06-04 Mike Frysinger <vapier@gentoo.org>
dircolors: add screen-256color-bce to TERM list
* src/dircolors.hin: Add screen-256color-bce.
2009-06-03 Jim Meyering <meyering@redhat.com>
doc: HACKING: minor adjustments, additions
* HACKING (Amending...): Remove spurious "-e" used with commit --amend.
(log message policy): Mention the 72-column limit.
"build:" and "maint:" are common prefixes, these days.
doc: adjust wording in README-prereq
dircolors: recognize .xz, .txz, .tbz and .tlz suffixes
* src/dircolors.hin: Add .xz, .txz, .tbz and .tlz.
doc: use newer URL for XZ utils
* README-hacking: Use <http://tukaani.org/xz/>
* README-prereq: Mention xz, not lzma.
2009-06-03 Matěj Cepl <mcepl@redhat.com>
doc: adjust README-prereq instructions
* README-prereq: Mention new requirement on automake-1.11,
with its new location and updated dependency on autoconf-2.62.
Remove the reference to coreutils-7.0 so that this file
implicitly refers to the latest or release version of coreutils.
Fix and clarify the instructions for updating the $PATH.
2009-06-02 Jim Meyering <meyering@redhat.com>
doc: HACKING: mention the GNU Coding Standards
* HACKING (Add documentation): Add a link to the GCS.
build: no longer list gnulib's "memchr" module as obsolete
* bootstrap.conf (obsolete_gnulib_modules): Remove memchr from
the list, now that it fixes a problem in some modern C libraries.
(gnulib_modules): Add it here.
build: make generated man/*.1 files read-only
This should help people notice that they are generated.
Note: each file already has a comment to that effect from help2man.
* man/Makefile.am (.x.1): Make generated files read-only.
Also, don't redirect directly to the target, $@.
build (man/): use automake's new $(AM_V_GEN) variable
* man/Makefile.am (.x.1, check-x-vs-1, check-programs-vs-x):
Mark with $(AM_V_GEN), so that automake-1.11 prints
"GEN $@" by default (stick with "GEN" in spite of the latter two
rules not officially generating anything -- they're just tests).
chroot: make --groups= work without --userspec=; be more robust
* src/chroot.c (set_additional_groups): Add comments.
Given an empty or all-comma group list, diagnose it and return nonzero.
When more than one group is invalid, diagnose all of them,
not just the first.
(main): Honor --groups= also when --userspec= is not specified.
Now that set_additional_groups consistently diagnoses its failures,
don't diagnose it separately here.
* tests/chroot/credentials: Do not invoke with an empty group list.
chroot: don't set bogus user-ID or group-ID for --u=U: or --u=:G
* src/chroot.c (main): Initialize both "uid" and "gid". To -1.
This also allows one to set the user-ID or primary group-ID to 0,
in case it's not that already.
* tests/chroot/credentials: Test for the above.
chroot: set-*-ID failure must provoke nonzero exit before execvp
* src/chroot.c (main): Exit upon set-group-ID or set-user-ID failure.
tests: use "nobody" as the default group name in chroot test
* tests/test-lib.sh (NON_ROOT_GROUP): Use "nobody", not "nogroup".
build: make distcheck rules use --enable-gcc-warnings
* dist-check.mk (warn_cflags): Remove definition, now that it's
been subsumed by --enable-gcc-warnings.
(my-distcheck): Use configure with --enable-gcc-warnings and remove
use of $(warn_cflags).
2009-05-30 Eric Blake <ebb9@byu.net>
head, tail: make --help less ambiguous
* src/head.c (usage): Use -n K, not -n N, to avoid confusion.
* src/tail.c (usage): Likewise.
* doc/coreutils.texi (head invocation, tail invocation):
Likewise.
Reported by Christophe Lyon.
2009-05-26 Michael Speer <knomenet@gmail.com>
sort: new --human-numeric-sort option to sort KiB MB etc.
* NEWS: Document the new option
* doc/coreutils.texi (sort invocation): ditto
* src/sort.c (main): handle the new --human-numeric-sort option (-h).
(human_numcompare): A new function to compare SI and IEC suffixes
before falling back to the standard --numeric comparison.
(find_unit_order): A new helper function to find the order
of magnitude of a number string as determined by its suffix.
(check_mixed_SI_IEC): A new helper function to exit with error
if both SI and IEC suffixes are presented.
* tests/misc/sort: Add 8 tests to test the new functionality.
* THANKS: Update
2009-05-26 Giuseppe Scrivano <gscrivano@gnu.org>
chroot: accept new options --userspec=U:G and --groups=G1,G2,G3
* NEWS: Note chroot's new options.
* doc/coreutils.texi: Document them.
* src/chroot.c (main): Add support for --userspec and --groups.
* tests/Makefile.am (root-tests): Add chroot/credentials.
* tests/chroot/credentials: New file.
* tests/test-lib.sh: Define NON_ROOT_GROUP to a default value.
2009-05-18 Pádraig Brady <P@draigBrady.com>
doc: clarify the operation of the comm -123 parameters
* src/comm.c (usage): give more information on the -123 parameters,
with examples to show that they can be combined.
Addresses <http://savannah.gnu.org/bugs/?24974>.
* doc/coreutils.texi (comm invocation): Mention that the
column separators are suppressed along with the column.
Suggestion from Dan Jacobson.
* man/comm.x: Reference other commands that match adjacent lines.
* man/join.x: ditto.
* man/uniq.x: ditto.
2009-05-18 Jim Meyering <meyering@redhat.com>
build: require automake-1.11
* bootstrap.conf (buildreq): Require automake-1.11, not 1.10b,
for our use of AM_SILENT_RULES.
* configure.ac (AM_INIT_AUTOMAKE): Likewise.
2009-05-17 Jim Meyering <meyering@redhat.com>
maint: HACKING: mention a few more useful git commands
* HACKING (Miscellaneous useful git commands): Add a few.
build: avoid new "make distcheck" failure with gcc 4.5.0 20090517
* dist-check.mk (warn_cflags): Add -Wno-enum-compare.
build: avoid new warnings from gcc 4.5.0 20090517
* configure.ac: Add an explicit -Wno-logical-op,
now that not listing -Wlogical-op is insufficient.
maint: use ARRAY_CARDINALITY more
* src/sort.c (main): Use ARRAY_CARDINALITY, rather than open-coding it.
* src/factor.c (WHEEL_END): Likewise.
* src/csplit.c (main): Likewise.
* src/od.c: Likewise,
* src/ls.c (main): Likewise.
(N_ENTRIES): Remove definition. Use ARRAY_CARDINALITY instead.
* src/dircolors.c: Likewise.
(array_len): Remove definition.
build: tr: avoid a warning due to newer gcc's -Wenum-compare
* src/tr.c (N_CHAR_CLASSES): Remove anonymous enum definition.
(look_up_char_class): Use ARRAY_CARDINALITY, rather than N_CHAR_CLASSES.
maint: define ARRAY_CARDINALITY in system.h
* src/system.h (ARRAY_CARDINALITY): Define if not already defined.
build: turn off -Wlong-long
* configure.ac: With --enable-gcc-warnings, -Wlong-long would
cause compilation failure due to inclusion of lib/gethrxtime.h.
Initialize "nw".
2009-05-16 Jim Meyering <meyering@redhat.com>
maint: cfg.mk: remove now-unnecessary gnulib_dir definition
* cfg.mk (gnulib_dir): Remove definition, now that gnulib's
maint.mk provides the default we want.
* gnulib: Update submodule to latest.
2009-05-15 Pádraig Brady <P@draigBrady.com>
tests: fix date-next-dow failure on older systems
* tests/misc/date-next-dow: In the strftime call use %Y-%m-%d
rather than the newer %F equivalent which is not available
on Solaris 8 for example.
2009-05-14 Jim Meyering <meyering@redhat.com>
build: update from gnulib, for rename.m4 fix, improved tests, etc.
* gnulib: Update submodule to latest.
maint: README-release: minor improvements
* README-release: Mention gnu_ftp_host-{alpha,...} settings in cfg.mk.
Now that XZ_OPT is set via maint.mk, don't mention it here.
2009-05-11 Eric Blake <ebb9@byu.net>
truncate: fix bug in use of isspace
* src/truncate.c (main): Pass unsigned characters to isspace.
* NEWS: Mention this.
2009-05-07 Jim Meyering <meyering@redhat.com> 2009-05-07 Jim Meyering <meyering@redhat.com>
post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
version 7.4 version 7.4
* NEWS (Build-related): Mention make check fixes. * NEWS (Build-related): Mention make check fixes.

View File

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

View File

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

View File

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

View File

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

View File

@ -4,8 +4,10 @@ Installation Instructions
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006, 2007, 2008, 2009 Free Software Foundation, Inc. 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives Copying and distribution of this file, with or without modification,
unlimited permission to copy, distribute and modify it. are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation Basic Installation
================== ==================
@ -13,7 +15,11 @@ Basic Installation
Briefly, the shell commands `./configure; make; make install' should Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for more-detailed instructions are generic; see the `README' file for
instructions specific to this package. instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses various system-dependent variables used during compilation. It uses
@ -42,7 +48,7 @@ may remove or edit it.
you want to change it or regenerate `configure' using a newer version you want to change it or regenerate `configure' using a newer version
of `autoconf'. of `autoconf'.
The simplest way to compile this package is: The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type 1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. `./configure' to configure the package for your system.
@ -53,12 +59,18 @@ The simplest way to compile this package is:
2. Type `make' to compile the package. 2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with 3. Optionally, type `make check' to run any self-tests that come with
the package. the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and 4. Type `make install' to install the programs and any data files and
documentation. documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
5. You can remove the program binaries and object files from the 5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is a different kind of computer), type `make distclean'. There is
@ -67,8 +79,15 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came all sorts of other programs in order to regenerate files that came
with the distribution. with the distribution.
6. Often, you can also type `make uninstall' to remove the installed 7. Often, you can also type `make uninstall' to remove the installed
files again. files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options Compilers and Options
===================== =====================
@ -93,7 +112,8 @@ same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have architecture at a time in the source code directory. After you have
@ -120,7 +140,8 @@ Installation Names
By default, `make install' installs the package's commands under By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You `/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'. `configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute path.
You can specify separate installation prefixes for You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you architecture-specific files and architecture-independent files. If you
@ -131,15 +152,49 @@ Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/path/to/alternate' will choose an alternate location, as well as
influencing all other directory configuration variables that were
expressed in terms of `${prefix}' (or, put another way, all directories
specified during `configure' but not in terms of the common prefix must
each be overridden at install time for the entire installation to be
relocated). The approach of makefile variable overrides for each
directory variable is required by the GNU Coding Standards, and ideally
causes no recompilation. However, some platforms have known
limitations with the semantics of shared libraries that end up
requiring recompilation when using this method, particularly noticeable
in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/path/to/alternate' will prepend
`/path/to/alternate' before all installation paths. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time. For packages which support `DESTDIR', the
variable should remain undefined during `configure' and `make all', and
only be specified during `make install'.
Optional Features
=================
If the package supports it, you can cause programs to be installed If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package. `configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE They may also pay attention to `--with-PACKAGE' options, where PACKAGE
@ -152,6 +207,13 @@ find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations. `--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems Particular systems
================== ==================
@ -288,7 +350,7 @@ operates.
`configure' can determine that directory automatically. `configure' can determine that directory automatically.
`--prefix=DIR' `--prefix=DIR'
Use DIR as the installation prefix. *Note Installation Names:: Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning for more details, including other options available for fine-tuning
the installation locations. the installation locations.

View File

@ -25,6 +25,7 @@ changelog_etc = \
ChangeLog-2007 \ ChangeLog-2007 \
ChangeLog-2008 \ ChangeLog-2008 \
build-aux/ChangeLog-2007 \ build-aux/ChangeLog-2007 \
build-aux/update-copyright \
doc/ChangeLog-2007 \ doc/ChangeLog-2007 \
lib/ChangeLog-2007 \ lib/ChangeLog-2007 \
m4/ChangeLog-2007 \ m4/ChangeLog-2007 \
@ -40,6 +41,7 @@ changelog_etc = \
syntax_check_exceptions = \ syntax_check_exceptions = \
.x-sc_GPL_version \ .x-sc_GPL_version \
.x-sc_error_message_uppercase \
.x-sc_file_system \ .x-sc_file_system \
.x-sc_obsolete_symbols \ .x-sc_obsolete_symbols \
.x-sc_po_check \ .x-sc_po_check \
@ -48,8 +50,10 @@ syntax_check_exceptions = \
.x-sc_prohibit_stat_st_blocks \ .x-sc_prohibit_stat_st_blocks \
.x-sc_prohibit_strcmp \ .x-sc_prohibit_strcmp \
.x-sc_require_config_h \ .x-sc_require_config_h \
.x-sc_require_config_h_first \
.x-sc_space_tab \ .x-sc_space_tab \
.x-sc_sun_os_names \ .x-sc_sun_os_names \
.x-sc_system_h_headers \
.x-sc_trailing_blank \ .x-sc_trailing_blank \
.x-sc_unmarked_diagnostics \ .x-sc_unmarked_diagnostics \
.x-sc_useless_cpp_parens .x-sc_useless_cpp_parens

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.10c from Makefile.am. # Makefile.in generated by automake 1.11a from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -152,7 +152,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mgetgroups.m4 \ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mgetgroups.m4 \
$(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \ $(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \
$(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \ $(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \
$(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \ $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
$(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/mpsort.m4 \ $(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/mpsort.m4 \
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nanosleep.m4 \ $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nanosleep.m4 \
$(top_srcdir)/m4/netdb_h.m4 $(top_srcdir)/m4/netinet_in_h.m4 \ $(top_srcdir)/m4/netdb_h.m4 $(top_srcdir)/m4/netinet_in_h.m4 \
@ -191,15 +192,16 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
$(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
$(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
$(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio-safer.m4 \
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib-safer.m4 \
$(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/stpncpy.m4 \ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
$(top_srcdir)/m4/strcspn.m4 $(top_srcdir)/m4/strdup.m4 \ $(top_srcdir)/m4/stpncpy.m4 $(top_srcdir)/m4/strcspn.m4 \
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strftime.m4 \ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
$(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \ $(top_srcdir)/m4/strnumcmp.m4 $(top_srcdir)/m4/strpbrk.m4 \
$(top_srcdir)/m4/strstr.m4 $(top_srcdir)/m4/strtod.m4 \
$(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
$(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
$(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
@ -218,7 +220,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
$(top_srcdir)/m4/vasprintf-posix.m4 \ $(top_srcdir)/m4/vasprintf-posix.m4 \
$(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
$(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \
$(top_srcdir)/m4/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \
$(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
@ -342,6 +344,7 @@ FCNTL_H = @FCNTL_H@
FLOAT_H = @FLOAT_H@ FLOAT_H = @FLOAT_H@
FNMATCH_H = @FNMATCH_H@ FNMATCH_H = @FNMATCH_H@
GETADDRINFO_LIB = @GETADDRINFO_LIB@ GETADDRINFO_LIB = @GETADDRINFO_LIB@
GETHOSTNAME_LIB = @GETHOSTNAME_LIB@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GETOPT_H = @GETOPT_H@ GETOPT_H = @GETOPT_H@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@ -372,6 +375,7 @@ GNULIB_FLOORL = @GNULIB_FLOORL@
GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FOPEN = @GNULIB_FOPEN@
GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF = @GNULIB_FPRINTF@
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
GNULIB_FPURGE = @GNULIB_FPURGE@
GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTC = @GNULIB_FPUTC@
GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FPUTS = @GNULIB_FPUTS@
GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FREOPEN = @GNULIB_FREOPEN@
@ -438,6 +442,7 @@ GNULIB_MBSSEP = @GNULIB_MBSSEP@
GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSPN = @GNULIB_MBSSPN@
GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSSTR = @GNULIB_MBSSTR@
GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
GNULIB_MEMCHR = @GNULIB_MEMCHR@
GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMMEM = @GNULIB_MEMMEM@
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
@ -501,6 +506,7 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
GNULIB_TRUNC = @GNULIB_TRUNC@ GNULIB_TRUNC = @GNULIB_TRUNC@
GNULIB_TRUNCF = @GNULIB_TRUNCF@ GNULIB_TRUNCF = @GNULIB_TRUNCF@
GNULIB_TRUNCL = @GNULIB_TRUNCL@ GNULIB_TRUNCL = @GNULIB_TRUNCL@
GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_UNSETENV = @GNULIB_UNSETENV@
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
@ -530,6 +536,7 @@ HAVE_DECL_COSL = @HAVE_DECL_COSL@
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@ HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@
HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@ HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@
@ -605,6 +612,7 @@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINK = @HAVE_READLINK@
HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@ HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_RPMATCH = @HAVE_RPMATCH@
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SCANDIR = @HAVE_SCANDIR@
HAVE_SETENV = @HAVE_SETENV@ HAVE_SETENV = @HAVE_SETENV@
HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGACTION = @HAVE_SIGACTION@
@ -628,6 +636,7 @@ HAVE_STRTOULL = @HAVE_STRTOULL@
HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@ HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@
HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@
HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
@ -646,6 +655,7 @@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VASPRINTF = @HAVE_VASPRINTF@
HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@
HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCRTOMB = @HAVE_WCRTOMB@
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
@ -711,6 +721,32 @@ NEED_SETGID = @NEED_SETGID@
NETDB_H = @NETDB_H@ NETDB_H = @NETDB_H@
NETINET_IN_H = @NETINET_IN_H@ NETINET_IN_H = @NETINET_IN_H@
NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@ NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@
NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H = @NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H@
NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@
NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
NEXT_AS_FIRST_DIRECTIVE_NETDB_H = @NEXT_AS_FIRST_DIRECTIVE_NETDB_H@
NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H = @NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H@
NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@
NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@
NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@
@ -722,6 +758,7 @@ NEXT_NETDB_H = @NEXT_NETDB_H@
NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@ NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@
NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDARG_H = @NEXT_STDARG_H@
NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDIO_H = @NEXT_STDIO_H@
NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@
@ -738,6 +775,7 @@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
NO_INSTALL_PROGS_DEFAULT = @NO_INSTALL_PROGS_DEFAULT@ NO_INSTALL_PROGS_DEFAULT = @NO_INSTALL_PROGS_DEFAULT@
OBJEXT = @OBJEXT@ OBJEXT = @OBJEXT@
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@ OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
OPTIONAL_PKGLIB_PROGS = @OPTIONAL_PKGLIB_PROGS@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_NAME = @PACKAGE_NAME@
@ -762,6 +800,7 @@ REPLACE_CEILL = @REPLACE_CEILL@
REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CHOWN = @REPLACE_CHOWN@
REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSE = @REPLACE_CLOSE@
REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DPRINTF = @REPLACE_DPRINTF@
REPLACE_DUP2 = @REPLACE_DUP2@
REPLACE_FCHDIR = @REPLACE_FCHDIR@ REPLACE_FCHDIR = @REPLACE_FCHDIR@
REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCLOSE = @REPLACE_FCLOSE@
REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFLUSH = @REPLACE_FFLUSH@
@ -769,6 +808,7 @@ REPLACE_FLOORF = @REPLACE_FLOORF@
REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FLOORL = @REPLACE_FLOORL@
REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN = @REPLACE_FOPEN@
REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPRINTF = @REPLACE_FPRINTF@
REPLACE_FPURGE = @REPLACE_FPURGE@
REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREOPEN = @REPLACE_FREOPEN@
REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXP = @REPLACE_FREXP@
REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FREXPL = @REPLACE_FREXPL@
@ -799,11 +839,14 @@ REPLACE_MBSINIT = @REPLACE_MBSINIT@
REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
REPLACE_MEMCHR = @REPLACE_MEMCHR@
REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMMEM = @REPLACE_MEMMEM@
REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKDIR = @REPLACE_MKDIR@
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
REPLACE_MKTIME = @REPLACE_MKTIME@
REPLACE_NAN = @REPLACE_NAN@ REPLACE_NAN = @REPLACE_NAN@
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
REPLACE_NULL = @REPLACE_NULL@
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPEN = @REPLACE_OPEN@
REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PERROR = @REPLACE_PERROR@
@ -849,10 +892,12 @@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
STDARG_H = @STDARG_H@ STDARG_H = @STDARG_H@
STDBOOL_H = @STDBOOL_H@ STDBOOL_H = @STDBOOL_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@ STDINT_H = @STDINT_H@
STRIP = @STRIP@ STRIP = @STRIP@
SYS_IOCTL_H = @SYS_IOCTL_H@ SYS_IOCTL_H = @SYS_IOCTL_H@
SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@ SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@
SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
SYS_SELECT_H = @SYS_SELECT_H@ SYS_SELECT_H = @SYS_SELECT_H@
SYS_SOCKET_H = @SYS_SOCKET_H@ SYS_SOCKET_H = @SYS_SOCKET_H@
SYS_STAT_H = @SYS_STAT_H@ SYS_STAT_H = @SYS_STAT_H@
@ -863,6 +908,7 @@ U = @U@
UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
USE_ACL = @USE_ACL@ USE_ACL = @USE_ACL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
@ -943,6 +989,7 @@ changelog_etc = \
ChangeLog-2007 \ ChangeLog-2007 \
ChangeLog-2008 \ ChangeLog-2008 \
build-aux/ChangeLog-2007 \ build-aux/ChangeLog-2007 \
build-aux/update-copyright \
doc/ChangeLog-2007 \ doc/ChangeLog-2007 \
lib/ChangeLog-2007 \ lib/ChangeLog-2007 \
m4/ChangeLog-2007 \ m4/ChangeLog-2007 \
@ -958,6 +1005,7 @@ changelog_etc = \
syntax_check_exceptions = \ syntax_check_exceptions = \
.x-sc_GPL_version \ .x-sc_GPL_version \
.x-sc_error_message_uppercase \
.x-sc_file_system \ .x-sc_file_system \
.x-sc_obsolete_symbols \ .x-sc_obsolete_symbols \
.x-sc_po_check \ .x-sc_po_check \
@ -966,8 +1014,10 @@ syntax_check_exceptions = \
.x-sc_prohibit_stat_st_blocks \ .x-sc_prohibit_stat_st_blocks \
.x-sc_prohibit_strcmp \ .x-sc_prohibit_strcmp \
.x-sc_require_config_h \ .x-sc_require_config_h \
.x-sc_require_config_h_first \
.x-sc_space_tab \ .x-sc_space_tab \
.x-sc_sun_os_names \ .x-sc_sun_os_names \
.x-sc_system_h_headers \
.x-sc_trailing_blank \ .x-sc_trailing_blank \
.x-sc_unmarked_diagnostics \ .x-sc_unmarked_diagnostics \
.x-sc_useless_cpp_parens .x-sc_useless_cpp_parens
@ -1308,6 +1358,7 @@ distcheck: dist
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \ && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \ && $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \
@ -1330,7 +1381,9 @@ distcheck: dist
&& rm -rf "$$dc_destdir" \ && rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \ && $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \ && rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
$(am__remove_distdir) $(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \ @(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \

View File

@ -1,5 +1,67 @@
GNU coreutils NEWS -*- outline -*- GNU coreutils NEWS -*- outline -*-
* Noteworthy changes in release 7.5 (2009-08-20) [stable]
** Bug fixes
dd's oflag=direct option now works even when the size of the input
is not a multiple of e.g., 512 bytes.
dd now handles signals consistently even when they're received
before data copying has started.
install runs faster again with SELinux enabled
[introduced in coreutils-7.0]
ls -1U (with two or more arguments, at least one a nonempty directory)
would print entry names *before* the name of the containing directory.
Also fixed incorrect output of ls -1RU and ls -1sU.
[introduced in coreutils-7.0]
sort now correctly ignores fields whose ending position is specified
before the start position. Previously in numeric mode the remaining
part of the line after the start position was used as the sort key.
[This bug appears to have been present in "the beginning".]
truncate -s failed to skip all whitespace in the option argument in
some locales.
** New programs
stdbuf: A new program to run a command with modified stdio buffering
for its standard streams.
** Changes in behavior
ls --color: files with multiple hard links are no longer colored differently
by default. That can be enabled by changing the LS_COLORS environment
variable. You can control that using the MULTIHARDLINK dircolors input
variable which corresponds to the 'mh' LS_COLORS item. Note these variables
were renamed from 'HARDLINK' and 'hl' which were available since
coreutils-7.1 when this feature was introduced.
** Deprecated options
nl --page-increment: deprecated in favor of --line-increment, the new option
maintains the previous semantics and the same short option, -i.
** New features
chroot now accepts the options --userspec and --groups.
cp accepts a new option, --reflink: create a lightweight copy
using copy-on-write (COW). This is currently only supported within
a btrfs file system.
cp now preserves time stamps on symbolic links, when possible
sort accepts a new option, --human-numeric-sort (-h): sort numbers
while honoring human readable suffixes like KiB and MB etc.
tail --follow now uses inotify when possible, to be more responsive
to file changes and more efficient when monitoring many files.
* Noteworthy changes in release 7.4 (2009-05-07) [stable] * Noteworthy changes in release 7.4 (2009-05-07) [stable]
** Bug fixes ** Bug fixes

View File

@ -13,9 +13,9 @@ The programs that can be built with this package are:
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup 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 od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir
runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf
sleep sort split stat stty su sum sync tac tail tee test timeout touch tr sleep sort split stat stdbuf stty su sum sync tac tail tee test timeout
true truncate tsort tty uname unexpand uniq unlink uptime users vdir wc who touch tr true truncate tsort tty uname unexpand uniq unlink uptime users
whoami yes vdir wc who whoami yes
See the file NEWS for a list of major changes in the current release. See the file NEWS for a list of major changes in the current release.

View File

@ -75,6 +75,7 @@ Bernd Melchers melchers@cis.fu-berlin.de
Bernhard Baehr bernhard.baehr@gmx.de Bernhard Baehr bernhard.baehr@gmx.de
Bernhard Gabler bernhard@uni-koblenz.de Bernhard Gabler bernhard@uni-koblenz.de
Bernhard Rosenkraenzer bero@redhat.de Bernhard Rosenkraenzer bero@redhat.de
Bernhard Voelker bernhard.voelker@siemens-enterprise.com
Bert Deknuydt Bert.Deknuydt@esat.kuleuven.ac.be Bert Deknuydt Bert.Deknuydt@esat.kuleuven.ac.be
Bert Wesarg bert.wesarg@googlemail.com Bert Wesarg bert.wesarg@googlemail.com
Bill Peters peters@gaffel.as.arizona.edu Bill Peters peters@gaffel.as.arizona.edu
@ -112,6 +113,7 @@ Christophe LYON christophe.lyon@st.com
Chuck Hedrick hedrick@klinzhai.rutgers.edu Chuck Hedrick hedrick@klinzhai.rutgers.edu
Clark Morgan cmorgan@aracnet.com Clark Morgan cmorgan@aracnet.com
Clement Wang clem.wang@overture.com Clement Wang clem.wang@overture.com
Cliff Miller cbm@whatexit.org
Colin Plumb colin@nyx.net Colin Plumb colin@nyx.net
Colin Watson cjw44@riva.ucam.org Colin Watson cjw44@riva.ucam.org
Collin Rogowski collin@rogowski.de Collin Rogowski collin@rogowski.de
@ -276,6 +278,7 @@ Jim Dennis jimd@starshine.org
Joakim Rosqvist dvljrt@cs.umu.se Joakim Rosqvist dvljrt@cs.umu.se
Jochen Hein jochen@jochen.org Jochen Hein jochen@jochen.org
Joe Orton joe@manyfish.co.uk Joe Orton joe@manyfish.co.uk
Joel E. Denny jdenny@clemson.edu
Joerg Sonnenberger joerg@britannica.bec.de Joerg Sonnenberger joerg@britannica.bec.de
Joey Hess joeyh@debian.org Joey Hess joeyh@debian.org
Johan Boule bohan@bohan.dyndns.org Johan Boule bohan@bohan.dyndns.org
@ -299,6 +302,7 @@ Joshua Hudson joshudson@gmail.com
Josselin Mouette joss@debian.org Josselin Mouette joss@debian.org
Juan F. Codagnone juam@arnet.com.ar Juan F. Codagnone juam@arnet.com.ar
Juan M. Guerrero st001906@hrz1.hrz.tu-darmstadt.de Juan M. Guerrero st001906@hrz1.hrz.tu-darmstadt.de
Julian Bradfield jcb@inf.ed.ac.uk
Jungshik Shin jshin@pantheon.yale.edu Jungshik Shin jshin@pantheon.yale.edu
Jürgen Fluk louis@dachau.marco.de Jürgen Fluk louis@dachau.marco.de
Jurriaan thunder7@xs4all.nl Jurriaan thunder7@xs4all.nl
@ -396,6 +400,7 @@ Michael J. Croghan mcroghan@usatoday.com
Michael McFarland sidlon@yahoo.com Michael McFarland sidlon@yahoo.com
Michael McLagan mmclagan@invlogic.com Michael McLagan mmclagan@invlogic.com
Michael Piefel piefel@informatik.hu-berlin.de Michael Piefel piefel@informatik.hu-berlin.de
Michael Speer knomenet@gmail.com
Michael Steffens michael.steffens@s.netic.de Michael Steffens michael.steffens@s.netic.de
Michael Stone mstone@debian.org Michael Stone mstone@debian.org
Michael Stutz stutz@dsl.org Michael Stutz stutz@dsl.org

View File

@ -1,4 +1,4 @@
# generated automatically by aclocal 1.10c -*- Autoconf -*- # generated automatically by aclocal 1.11a -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
@ -13,8 +13,8 @@
m4_ifndef([AC_AUTOCONF_VERSION], m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63b.42-b26d5],, m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64.16-4cdf58],,
[m4_warning([this file was generated for autoconf 2.63b.42-b26d5. [m4_warning([this file was generated for autoconf 2.64.16-4cdf58.
You have another version of autoconf. It may work, but is not guaranteed to. You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely. If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])]) To do so, use the procedure documented by the package, typically `autoreconf'.])])
@ -31,10 +31,10 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
# generated from the m4 files accompanying Automake X.Y. # generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.) # (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION], AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.10c' [am__api_version='1.11a'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro. dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.10c], [], m4_if([$1], [1.11a], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
]) ])
@ -50,7 +50,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.10c])dnl [AM_AUTOMAKE_VERSION([1.11a])dnl
m4_ifndef([AC_AUTOCONF_VERSION], m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@ -1214,6 +1214,8 @@ m4_include([m4/mkdir-p.m4])
m4_include([m4/mkdir-slash.m4]) m4_include([m4/mkdir-slash.m4])
m4_include([m4/mkstemp.m4]) m4_include([m4/mkstemp.m4])
m4_include([m4/mktime.m4]) m4_include([m4/mktime.m4])
m4_include([m4/mmap-anon.m4])
m4_include([m4/mode_t.m4])
m4_include([m4/modechange.m4]) m4_include([m4/modechange.m4])
m4_include([m4/mountlist.m4]) m4_include([m4/mountlist.m4])
m4_include([m4/mpsort.m4]) m4_include([m4/mpsort.m4])
@ -1286,6 +1288,7 @@ m4_include([m4/stat-prog.m4])
m4_include([m4/stat-time.m4]) m4_include([m4/stat-time.m4])
m4_include([m4/stdarg.m4]) m4_include([m4/stdarg.m4])
m4_include([m4/stdbool.m4]) m4_include([m4/stdbool.m4])
m4_include([m4/stddef_h.m4])
m4_include([m4/stdint.m4]) m4_include([m4/stdint.m4])
m4_include([m4/stdint_h.m4]) m4_include([m4/stdint_h.m4])
m4_include([m4/stdio-safer.m4]) m4_include([m4/stdio-safer.m4])
@ -1303,6 +1306,7 @@ m4_include([m4/strndup.m4])
m4_include([m4/strnlen.m4]) m4_include([m4/strnlen.m4])
m4_include([m4/strnumcmp.m4]) m4_include([m4/strnumcmp.m4])
m4_include([m4/strpbrk.m4]) m4_include([m4/strpbrk.m4])
m4_include([m4/strstr.m4])
m4_include([m4/strtod.m4]) m4_include([m4/strtod.m4])
m4_include([m4/strtoimax.m4]) m4_include([m4/strtoimax.m4])
m4_include([m4/strtol.m4]) m4_include([m4/strtol.m4])
@ -1338,6 +1342,7 @@ m4_include([m4/utimes.m4])
m4_include([m4/vasnprintf.m4]) m4_include([m4/vasnprintf.m4])
m4_include([m4/vasprintf-posix.m4]) m4_include([m4/vasprintf-posix.m4])
m4_include([m4/vasprintf.m4]) m4_include([m4/vasprintf.m4])
m4_include([m4/version-etc.m4])
m4_include([m4/vfprintf-posix.m4]) m4_include([m4/vfprintf-posix.m4])
m4_include([m4/vprintf-posix.m4]) m4_include([m4/vprintf-posix.m4])
m4_include([m4/warnings.m4]) m4_include([m4/warnings.m4])

View File

@ -106,14 +106,14 @@ tests_base=tests
# Extra files from gnulib, which override files from other sources. # Extra files from gnulib, which override files from other sources.
gnulib_extra_files=" gnulib_extra_files="
$build_aux/install-sh $build_aux/install-sh
$build_aux/missing $build_aux/missing
$build_aux/mdate-sh $build_aux/mdate-sh
$build_aux/texinfo.tex $build_aux/texinfo.tex
$build_aux/depcomp $build_aux/depcomp
$build_aux/config.guess $build_aux/config.guess
$build_aux/config.sub $build_aux/config.sub
doc/INSTALL doc/INSTALL
" "
# Additional gnulib-tool options to use. Use "\newline" to break lines. # Additional gnulib-tool options to use. Use "\newline" to break lines.
@ -272,10 +272,10 @@ get_version() {
$app --version 2>&1 | $app --version 2>&1 |
sed -n 's/[^0-9.]*\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/p sed -n 's/[^0-9.]*\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/p
t done t done
d d
:done :done
q' q'
} }
check_versions() { check_versions() {
@ -313,7 +313,7 @@ print_versions() {
if ! printf "$buildreq" | check_versions; then if ! printf "$buildreq" | check_versions; then
test -f README-prereq && test -f README-prereq &&
echo "Please see README-prereq for notes on obtaining these prerequisite programs:" >&2 echo "See README-prereq for notes on obtaining these prerequisite programs:" >&2
echo echo
print_versions print_versions
exit 1 exit 1
@ -342,7 +342,7 @@ cleanup_gnulib() {
} }
git_modules_config () { git_modules_config () {
GIT_CONFIG=.gitmodules git config "$@" test -f .gitmodules && git config --file .gitmodules "$@"
} }
# Get gnulib files. # Get gnulib files.
@ -371,7 +371,7 @@ case ${GNULIB_SRCDIR--} in
# Redirect the gnulib submodule to the directory on the command line # Redirect the gnulib submodule to the directory on the command line
# if possible. # if possible.
if test -d "$GNULIB_SRCDIR"/.git && \ if test -d "$GNULIB_SRCDIR"/.git && \
git_modules_config submodule.gnulib.url >/dev/null; then git_modules_config submodule.gnulib.url >/dev/null; then
git submodule init git submodule init
GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd` GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
@ -419,10 +419,12 @@ update_po_files() {
new_po="$ref_po_dir/$po.po" new_po="$ref_po_dir/$po.po"
cksum_file="$ref_po_dir/$po.s1" cksum_file="$ref_po_dir/$po.s1"
if ! test -f "$cksum_file" || if ! test -f "$cksum_file" ||
! test -f "$po_dir/$po.po" || ! test -f "$po_dir/$po.po" ||
! ${SHA1SUM-sha1sum} -c --status "$cksum_file" < "$new_po" > /dev/null; then ! ${SHA1SUM-sha1sum} -c --status "$cksum_file" \
< "$new_po" > /dev/null; then
echo "updated $po_dir/$po.po..." echo "updated $po_dir/$po.po..."
cp "$new_po" "$po_dir/$po.po" && ${SHA1SUM-sha1sum} < "$new_po" > "$cksum_file" cp "$new_po" "$po_dir/$po.po" \
&& ${SHA1SUM-sha1sum} < "$new_po" > "$cksum_file"
fi fi
done done
} }
@ -456,45 +458,45 @@ symlink_to_dir()
# FIXME: for now, this does only one level # FIXME: for now, this does only one level
parent=`dirname "$dst_dir"` parent=`dirname "$dst_dir"`
for dot_ig in x $vc_ignore; do for dot_ig in x $vc_ignore; do
test $dot_ig = x && continue test $dot_ig = x && continue
ig=$parent/$dot_ig ig=$parent/$dot_ig
insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'` insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
done done
fi fi
if $copy; then if $copy; then
{ {
test ! -h "$dst" || { test ! -h "$dst" || {
echo "$0: rm -f $dst" && echo "$0: rm -f $dst" &&
rm -f "$dst" rm -f "$dst"
} }
} && } &&
test -f "$dst" && test -f "$dst" &&
cmp -s "$src" "$dst" || { cmp -s "$src" "$dst" || {
echo "$0: cp -fp $src $dst" && echo "$0: cp -fp $src $dst" &&
cp -fp "$src" "$dst" cp -fp "$src" "$dst"
} }
else else
test -h "$dst" && test -h "$dst" &&
src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 && src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 && dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
test "$src_i" = "$dst_i" || { test "$src_i" = "$dst_i" || {
dot_dots= dot_dots=
case $src in case $src in
/*) ;; /*) ;;
*) *)
case /$dst/ in case /$dst/ in
*//* | */../* | */./* | /*/*/*/*/*/) *//* | */../* | */./* | /*/*/*/*/*/)
echo >&2 "$0: invalid symlink calculation: $src -> $dst" echo >&2 "$0: invalid symlink calculation: $src -> $dst"
exit 1;; exit 1;;
/*/*/*/*/) dot_dots=../../../;; /*/*/*/*/) dot_dots=../../../;;
/*/*/*/) dot_dots=../../;; /*/*/*/) dot_dots=../../;;
/*/*/) dot_dots=../;; /*/*/) dot_dots=../;;
esac;; esac;;
esac esac
echo "$0: ln -fs $dot_dots$src $dst" && echo "$0: ln -fs $dot_dots$src $dst" &&
ln -fs "$dot_dots$src" "$dst" ln -fs "$dot_dots$src" "$dst"
} }
fi fi
} }
@ -524,29 +526,29 @@ cp_mark_as_generated()
if test -z "$c1"; then if test -z "$c1"; then
cmp -s "$cp_src" "$cp_dst" || { cmp -s "$cp_src" "$cp_dst" || {
# Copy the file first to get proper permissions if it # Copy the file first to get proper permissions if it
# doesn't already exist. Then overwrite the copy. # doesn't already exist. Then overwrite the copy.
echo "$0: cp -f $cp_src $cp_dst" && echo "$0: cp -f $cp_src $cp_dst" &&
rm -f "$cp_dst" && rm -f "$cp_dst" &&
cp "$cp_src" "$cp_dst-t" && cp "$cp_src" "$cp_dst-t" &&
sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" && sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
mv -f "$cp_dst-t" "$cp_dst" mv -f "$cp_dst-t" "$cp_dst"
} }
else else
# Copy the file first to get proper permissions if it # Copy the file first to get proper permissions if it
# doesn't already exist. Then overwrite the copy. # doesn't already exist. Then overwrite the copy.
cp "$cp_src" "$cp_dst-t" && cp "$cp_src" "$cp_dst-t" &&
( (
echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" && echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" && echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
echo '#line 1' && echo '#line 1' &&
sed "s!$bt_regex/!!g" "$cp_src" sed "s!$bt_regex/!!g" "$cp_src"
) > $cp_dst-t && ) > $cp_dst-t &&
if cmp -s "$cp_dst-t" "$cp_dst"; then if cmp -s "$cp_dst-t" "$cp_dst"; then
rm -f "$cp_dst-t" rm -f "$cp_dst-t"
else else
echo "$0: cp $cp_src $cp_dst # with edits" && echo "$0: cp $cp_src $cp_dst # with edits" &&
mv -f "$cp_dst-t" "$cp_dst" mv -f "$cp_dst-t" "$cp_dst"
fi fi
fi fi
fi fi
@ -558,7 +560,7 @@ version_controlled_file() {
found=no found=no
if test -d CVS; then if test -d CVS; then
grep -F "/$file/" $dir/CVS/Entries 2>/dev/null | grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
grep '^/[^/]*/[0-9]' > /dev/null && found=yes grep '^/[^/]*/[0-9]' > /dev/null && found=yes
elif test -d .git; then elif test -d .git; then
git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
elif test -d .svn; then elif test -d .svn; then
@ -580,35 +582,35 @@ slurp() {
esac esac
test -d $1/$dir/$file && continue test -d $1/$dir/$file && continue
for excluded_file in $excluded_files; do for excluded_file in $excluded_files; do
test "$dir/$file" = "$excluded_file" && continue 2 test "$dir/$file" = "$excluded_file" && continue 2
done done
if test $file = Makefile.am; then if test $file = Makefile.am; then
copied=$copied${sep}$gnulib_mk; sep=$nl copied=$copied${sep}$gnulib_mk; sep=$nl
remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g" remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
sed "$remove_intl" $1/$dir/$file | cmp - $dir/$gnulib_mk > /dev/null || { sed "$remove_intl" $1/$dir/$file | cmp - $dir/$gnulib_mk > /dev/null || {
echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." && echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
rm -f $dir/$gnulib_mk && rm -f $dir/$gnulib_mk &&
sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
} }
elif { test "${2+set}" = set && test -r $2/$dir/$file; } || elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
version_controlled_file $dir $file; then version_controlled_file $dir $file; then
echo "$0: $dir/$file overrides $1/$dir/$file" echo "$0: $dir/$file overrides $1/$dir/$file"
else else
copied=$copied$sep$file; sep=$nl copied=$copied$sep$file; sep=$nl
if test $file = gettext.m4; then if test $file = gettext.m4; then
echo "$0: patching m4/gettext.m4 to remove need for intl/* ..." echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
rm -f $dir/$file rm -f $dir/$file
sed ' sed '
/^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\ /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
AC_DEFUN([AM_INTL_SUBDIR], [ AC_DEFUN([AM_INTL_SUBDIR], [
/^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\ /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
AC_DEFUN([gt_INTL_SUBDIR_CORE], []) AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
$a\ $a\
AC_DEFUN([gl_LOCK_EARLY], []) AC_DEFUN([gl_LOCK_EARLY], [])
' $1/$dir/$file >$dir/$file ' $1/$dir/$file >$dir/$file
else else
cp_mark_as_generated $1/$dir/$file $dir/$file cp_mark_as_generated $1/$dir/$file $dir/$file
fi fi
fi || exit fi || exit
done done
@ -616,18 +618,18 @@ slurp() {
test $dot_ig = x && continue test $dot_ig = x && continue
ig=$dir/$dot_ig ig=$dir/$dot_ig
if test -n "$copied"; then if test -n "$copied"; then
insert_sorted_if_absent $ig "$copied" insert_sorted_if_absent $ig "$copied"
# If an ignored file name ends with .in.h, then also add # If an ignored file name ends with .in.h, then also add
# the name with just ".h". Many gnulib headers are generated, # the name with just ".h". Many gnulib headers are generated,
# e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc. # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
# Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'` f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
insert_sorted_if_absent $ig "$f" insert_sorted_if_absent $ig "$f"
# For files like sys_stat.in.h and sys_time.in.h, record as # For files like sys_stat.in.h and sys_time.in.h, record as
# ignorable the directory we might eventually create: sys/. # ignorable the directory we might eventually create: sys/.
f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'` f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
insert_sorted_if_absent $ig "$f" insert_sorted_if_absent $ig "$f"
fi fi
done done
done done
@ -733,7 +735,7 @@ if test $with_gettext = yes; then
/^XGETTEXT_OPTIONS *=/{ /^XGETTEXT_OPTIONS *=/{
s/$/ \\/ s/$/ \\/
a\ a\
'"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
} }
' po/Makevars.template >po/Makevars ' po/Makevars.template >po/Makevars
@ -745,9 +747,9 @@ if test $with_gettext = yes; then
/^subdir *=.*/s/=.*/= runtime-po/ /^subdir *=.*/s/=.*/= runtime-po/
/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
/^XGETTEXT_OPTIONS *=/{ /^XGETTEXT_OPTIONS *=/{
s/$/ \\/ s/$/ \\/
a\ a\
'"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
} }
' <po/Makevars.template >runtime-po/Makevars ' <po/Makevars.template >runtime-po/Makevars
@ -763,3 +765,7 @@ sed 's,\.\./\.\.,..,g' $m > $m-t
mv -f $m-t $m mv -f $m-t $m
echo "$0: done. Now you can run './configure'." echo "$0: done. Now you can run './configure'."
# Local Variables:
# indent-tabs-mode: nil
# End:

View File

@ -27,7 +27,6 @@ avoided_gnulib_modules='
# but leave them in for now to minimize changes. # but leave them in for now to minimize changes.
obsolete_gnulib_modules=' obsolete_gnulib_modules='
atexit atexit
memchr
memcmp memcmp
memcpy memcpy
memmove memmove
@ -103,7 +102,7 @@ gnulib_modules="
getline getline
getloadavg getloadavg
getndelim2 getndelim2
getopt getopt-gnu
getpagesize getpagesize
getpass-gnu getpass-gnu
gettext gettext
@ -141,6 +140,7 @@ gnulib_modules="
mbsalign mbsalign
mbswidth mbswidth
memcasecmp memcasecmp
memchr
memcmp2 memcmp2
mempcpy mempcpy
memrchr memrchr
@ -210,6 +210,7 @@ gnulib_modules="
unlink-busy unlink-busy
unlinkdir unlinkdir
unlocked-io unlocked-io
update-copyright
uptime uptime
useless-if-before-free useless-if-before-free
userspec userspec
@ -301,7 +302,7 @@ gnulib_tool_option_extras="--tests-base=$bt/gnulib-tests --with-tests"
# Build prerequisites # Build prerequisites
buildreq="\ buildreq="\
autoconf 2.61 autoconf 2.61
automake 1.10b automake 1.11
autopoint - autopoint -
bison - bison -
gettext - gettext -

File diff suppressed because it is too large Load Diff

View File

@ -32,7 +32,7 @@ AC_CONFIG_SRCDIR([src/ls.c])
AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([lib/config.h:lib/config.hin]) AC_CONFIG_HEADERS([lib/config.h:lib/config.hin])
AM_INIT_AUTOMAKE([1.10b dist-xz color-tests parallel-tests]) AM_INIT_AUTOMAKE([1.11 dist-xz color-tests parallel-tests])
AM_SILENT_RULES([yes]) # make --enable-silent-rules the default. AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
AC_PROG_CC_STDC AC_PROG_CC_STDC
@ -60,9 +60,11 @@ if test "$gl_gcc_warnings" = yes; then
gl_WARN_ADD([-Werror], [WERROR_CFLAGS]) gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
AC_SUBST([WERROR_CFLAGS]) AC_SUBST([WERROR_CFLAGS])
# Add many warnings, except some... nw=
# This, $nw, is the list of warnings we disable.
nw="$nw -Wdeclaration-after-statement" # too useful to forbid nw="$nw -Wdeclaration-after-statement" # too useful to forbid
nw="$nw -Waggregate-return" # anachronistic nw="$nw -Waggregate-return" # anachronistic
nw="$nw -Wlong-long" # C90 is anachronistic (lib/gethrxtime.h)
nw="$nw -Wc++-compat" # We don't care about C++ compilers nw="$nw -Wc++-compat" # We don't care about C++ compilers
nw="$nw -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib nw="$nw -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib
nw="$nw -Wtraditional" # Warns on #elif which we use often nw="$nw -Wtraditional" # Warns on #elif which we use often
@ -80,6 +82,7 @@ if test "$gl_gcc_warnings" = yes; then
nw="$nw -Wnested-externs" # use of XARGMATCH/verify_function__ nw="$nw -Wnested-externs" # use of XARGMATCH/verify_function__
nw="$nw -Wswitch-enum" # Too many warnings for now nw="$nw -Wswitch-enum" # Too many warnings for now
nw="$nw -Wswitch-default" # Too many warnings for now nw="$nw -Wswitch-default" # Too many warnings for now
nw="$nw -Wstack-protector" # not worth working around
# things I might fix soon: # things I might fix soon:
nw="$nw -Wfloat-equal" # sort.c, seq.c nw="$nw -Wfloat-equal" # sort.c, seq.c
nw="$nw -Wmissing-format-attribute" # copy.c nw="$nw -Wmissing-format-attribute" # copy.c
@ -97,6 +100,14 @@ if test "$gl_gcc_warnings" = yes; then
gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now
gl_WARN_ADD([-Wno-pointer-sign]) # Too many warnings for now gl_WARN_ADD([-Wno-pointer-sign]) # Too many warnings for now
gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
# Offenders in pre-fts remove.c; FIXME: remove upon remove.c rewrite
gl_WARN_ADD([-Wno-jump-misses-init])
# In spite of excluding -Wlogical-op above, it is enabled, as of
# gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
gl_WARN_ADD([-Wno-logical-op])
gl_WARN_ADD([-fdiagnostics-show-option]) gl_WARN_ADD([-fdiagnostics-show-option])
AC_SUBST([WARN_CFLAGS]) AC_SUBST([WARN_CFLAGS])
@ -314,6 +325,19 @@ if test $gl_cv_list_mounted_fs = yes && test $gl_cv_fs_space = yes; then
gl_ADD_PROG([optional_bin_progs], [df]) gl_ADD_PROG([optional_bin_progs], [df])
fi fi
# Limit stdbuf to ELF systems with GCC
optional_pkglib_progs=
AC_MSG_CHECKING([whether this is an ELF system])
AC_EGREP_CPP([yes], [#if __ELF__
yes
#endif], [elf_sys=yes], [elf_sys=no])
AC_MSG_RESULT([$elf_sys])
if test "$elf_sys" = "yes" && \
test "$GCC" = "yes"; then
gl_ADD_PROG([optional_bin_progs], [stdbuf])
gl_ADD_PROG([optional_pkglib_progs], [libstdbuf.so])
fi
############################################################################ ############################################################################
mk="$srcdir/src/Makefile.am" mk="$srcdir/src/Makefile.am"
# Extract all literal names from the definition of $(EXTRA_PROGRAMS) # Extract all literal names from the definition of $(EXTRA_PROGRAMS)
@ -386,6 +410,8 @@ MAN=`echo "$MAN"|sed 's/\@<:@\.1//'`
OPTIONAL_BIN_PROGS=`echo "$optional_bin_progs "|sed 's/ /\$(EXEEXT) /g;s/ $//'` OPTIONAL_BIN_PROGS=`echo "$optional_bin_progs "|sed 's/ /\$(EXEEXT) /g;s/ $//'`
AC_SUBST([OPTIONAL_BIN_PROGS]) AC_SUBST([OPTIONAL_BIN_PROGS])
OPTIONAL_PKGLIB_PROGS=`echo "$optional_pkglib_progs " | sed 's/ $//'`
AC_SUBST([OPTIONAL_PKGLIB_PROGS])
NO_INSTALL_PROGS_DEFAULT=$no_install_progs_default NO_INSTALL_PROGS_DEFAULT=$no_install_progs_default
AC_SUBST([NO_INSTALL_PROGS_DEFAULT]) AC_SUBST([NO_INSTALL_PROGS_DEFAULT])

View File

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

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.10c from Makefile.am. # Makefile.in generated by automake 1.11a from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -147,7 +147,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mgetgroups.m4 \ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mgetgroups.m4 \
$(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \ $(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \
$(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \ $(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \
$(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \ $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
$(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/mpsort.m4 \ $(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/mpsort.m4 \
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nanosleep.m4 \ $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nanosleep.m4 \
$(top_srcdir)/m4/netdb_h.m4 $(top_srcdir)/m4/netinet_in_h.m4 \ $(top_srcdir)/m4/netdb_h.m4 $(top_srcdir)/m4/netinet_in_h.m4 \
@ -186,15 +187,16 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
$(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
$(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
$(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio-safer.m4 \
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib-safer.m4 \
$(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/stpncpy.m4 \ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
$(top_srcdir)/m4/strcspn.m4 $(top_srcdir)/m4/strdup.m4 \ $(top_srcdir)/m4/stpncpy.m4 $(top_srcdir)/m4/strcspn.m4 \
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strftime.m4 \ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
$(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \ $(top_srcdir)/m4/strnumcmp.m4 $(top_srcdir)/m4/strpbrk.m4 \
$(top_srcdir)/m4/strstr.m4 $(top_srcdir)/m4/strtod.m4 \
$(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
$(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
$(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
@ -213,7 +215,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
$(top_srcdir)/m4/vasprintf-posix.m4 \ $(top_srcdir)/m4/vasprintf-posix.m4 \
$(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
$(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \
$(top_srcdir)/m4/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \
$(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
@ -320,6 +322,7 @@ FCNTL_H = @FCNTL_H@
FLOAT_H = @FLOAT_H@ FLOAT_H = @FLOAT_H@
FNMATCH_H = @FNMATCH_H@ FNMATCH_H = @FNMATCH_H@
GETADDRINFO_LIB = @GETADDRINFO_LIB@ GETADDRINFO_LIB = @GETADDRINFO_LIB@
GETHOSTNAME_LIB = @GETHOSTNAME_LIB@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GETOPT_H = @GETOPT_H@ GETOPT_H = @GETOPT_H@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@ -350,6 +353,7 @@ GNULIB_FLOORL = @GNULIB_FLOORL@
GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FOPEN = @GNULIB_FOPEN@
GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF = @GNULIB_FPRINTF@
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
GNULIB_FPURGE = @GNULIB_FPURGE@
GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTC = @GNULIB_FPUTC@
GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FPUTS = @GNULIB_FPUTS@
GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FREOPEN = @GNULIB_FREOPEN@
@ -416,6 +420,7 @@ GNULIB_MBSSEP = @GNULIB_MBSSEP@
GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSPN = @GNULIB_MBSSPN@
GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSSTR = @GNULIB_MBSSTR@
GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
GNULIB_MEMCHR = @GNULIB_MEMCHR@
GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMMEM = @GNULIB_MEMMEM@
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
@ -479,6 +484,7 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
GNULIB_TRUNC = @GNULIB_TRUNC@ GNULIB_TRUNC = @GNULIB_TRUNC@
GNULIB_TRUNCF = @GNULIB_TRUNCF@ GNULIB_TRUNCF = @GNULIB_TRUNCF@
GNULIB_TRUNCL = @GNULIB_TRUNCL@ GNULIB_TRUNCL = @GNULIB_TRUNCL@
GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_UNSETENV = @GNULIB_UNSETENV@
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
@ -508,6 +514,7 @@ HAVE_DECL_COSL = @HAVE_DECL_COSL@
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@ HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@
HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@ HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@
@ -583,6 +590,7 @@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINK = @HAVE_READLINK@
HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@ HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_RPMATCH = @HAVE_RPMATCH@
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SCANDIR = @HAVE_SCANDIR@
HAVE_SETENV = @HAVE_SETENV@ HAVE_SETENV = @HAVE_SETENV@
HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGACTION = @HAVE_SIGACTION@
@ -606,6 +614,7 @@ HAVE_STRTOULL = @HAVE_STRTOULL@
HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@ HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@
HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@
HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
@ -624,6 +633,7 @@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VASPRINTF = @HAVE_VASPRINTF@
HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@
HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCRTOMB = @HAVE_WCRTOMB@
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
@ -689,6 +699,32 @@ NEED_SETGID = @NEED_SETGID@
NETDB_H = @NETDB_H@ NETDB_H = @NETDB_H@
NETINET_IN_H = @NETINET_IN_H@ NETINET_IN_H = @NETINET_IN_H@
NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@ NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@
NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H = @NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H@
NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@
NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
NEXT_AS_FIRST_DIRECTIVE_NETDB_H = @NEXT_AS_FIRST_DIRECTIVE_NETDB_H@
NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H = @NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H@
NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@
NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@
NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@
@ -700,6 +736,7 @@ NEXT_NETDB_H = @NEXT_NETDB_H@
NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@ NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@
NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDARG_H = @NEXT_STDARG_H@
NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDIO_H = @NEXT_STDIO_H@
NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@
@ -716,6 +753,7 @@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
NO_INSTALL_PROGS_DEFAULT = @NO_INSTALL_PROGS_DEFAULT@ NO_INSTALL_PROGS_DEFAULT = @NO_INSTALL_PROGS_DEFAULT@
OBJEXT = @OBJEXT@ OBJEXT = @OBJEXT@
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@ OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
OPTIONAL_PKGLIB_PROGS = @OPTIONAL_PKGLIB_PROGS@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_NAME = @PACKAGE_NAME@
@ -740,6 +778,7 @@ REPLACE_CEILL = @REPLACE_CEILL@
REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CHOWN = @REPLACE_CHOWN@
REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSE = @REPLACE_CLOSE@
REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DPRINTF = @REPLACE_DPRINTF@
REPLACE_DUP2 = @REPLACE_DUP2@
REPLACE_FCHDIR = @REPLACE_FCHDIR@ REPLACE_FCHDIR = @REPLACE_FCHDIR@
REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCLOSE = @REPLACE_FCLOSE@
REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFLUSH = @REPLACE_FFLUSH@
@ -747,6 +786,7 @@ REPLACE_FLOORF = @REPLACE_FLOORF@
REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FLOORL = @REPLACE_FLOORL@
REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN = @REPLACE_FOPEN@
REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPRINTF = @REPLACE_FPRINTF@
REPLACE_FPURGE = @REPLACE_FPURGE@
REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREOPEN = @REPLACE_FREOPEN@
REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXP = @REPLACE_FREXP@
REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FREXPL = @REPLACE_FREXPL@
@ -777,11 +817,14 @@ REPLACE_MBSINIT = @REPLACE_MBSINIT@
REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
REPLACE_MEMCHR = @REPLACE_MEMCHR@
REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMMEM = @REPLACE_MEMMEM@
REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKDIR = @REPLACE_MKDIR@
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
REPLACE_MKTIME = @REPLACE_MKTIME@
REPLACE_NAN = @REPLACE_NAN@ REPLACE_NAN = @REPLACE_NAN@
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
REPLACE_NULL = @REPLACE_NULL@
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPEN = @REPLACE_OPEN@
REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PERROR = @REPLACE_PERROR@
@ -827,10 +870,12 @@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
STDARG_H = @STDARG_H@ STDARG_H = @STDARG_H@
STDBOOL_H = @STDBOOL_H@ STDBOOL_H = @STDBOOL_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@ STDINT_H = @STDINT_H@
STRIP = @STRIP@ STRIP = @STRIP@
SYS_IOCTL_H = @SYS_IOCTL_H@ SYS_IOCTL_H = @SYS_IOCTL_H@
SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@ SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@
SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
SYS_SELECT_H = @SYS_SELECT_H@ SYS_SELECT_H = @SYS_SELECT_H@
SYS_SOCKET_H = @SYS_SOCKET_H@ SYS_SOCKET_H = @SYS_SOCKET_H@
SYS_STAT_H = @SYS_STAT_H@ SYS_STAT_H = @SYS_STAT_H@
@ -841,6 +886,7 @@ U = @U@
UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
USE_ACL = @USE_ACL@ USE_ACL = @USE_ACL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@

File diff suppressed because it is too large Load Diff

View File

@ -105,6 +105,7 @@
* sort: (coreutils)sort invocation. Sort text files. * sort: (coreutils)sort invocation. Sort text files.
* split: (coreutils)split invocation. Split into fixed-size pieces. * split: (coreutils)split invocation. Split into fixed-size pieces.
* stat: (coreutils)stat invocation. Report file(system) status. * stat: (coreutils)stat invocation. Report file(system) status.
* stdbuf: (coreutils)stdbuf invocation. Modify stdio buffering.
* stty: (coreutils)stty invocation. Print/change terminal settings. * stty: (coreutils)stty invocation. Print/change terminal settings.
* su: (coreutils)su invocation. Modify user and group ID. * su: (coreutils)su invocation. Modify user and group ID.
* sum: (coreutils)sum invocation. Print traditional checksum. * sum: (coreutils)sum invocation. Print traditional checksum.
@ -197,7 +198,7 @@ Free Documentation License''.
* User information:: id logname whoami groups users who * User information:: id logname whoami groups users who
* System context:: date uname hostname hostid uptime * System context:: date uname hostname hostid uptime
* SELinux context:: chcon runcon * SELinux context:: chcon runcon
* Modified command invocation:: chroot env nice nohup su timeout * Modified command invocation:: chroot env nice nohup stdbuf su timeout
* Process control:: kill * Process control:: kill
* Delaying:: sleep * Delaying:: sleep
* Numeric operations:: factor seq * Numeric operations:: factor seq
@ -321,7 +322,7 @@ Special file types
* mkdir invocation:: Make directories * mkdir invocation:: Make directories
* mkfifo invocation:: Make FIFOs (named pipes) * mkfifo invocation:: Make FIFOs (named pipes)
* mknod invocation:: Make block or character special files * mknod invocation:: Make block or character special files
* readlink invocation:: Print the referent of a symbolic link * readlink invocation:: Print value of a symlink or canonical file name
* rmdir invocation:: Remove empty directories * rmdir invocation:: Remove empty directories
* unlink invocation:: Remove files via unlink syscall * unlink invocation:: Remove files via unlink syscall
@ -425,6 +426,7 @@ System context
* Examples of date:: Examples. * Examples of date:: Examples.
SELinux context SELinux context
* chcon invocation:: Change SELinux context of file * chcon invocation:: Change SELinux context of file
* runcon invocation:: Run a command in specified SELinux context * runcon invocation:: Run a command in specified SELinux context
@ -434,6 +436,7 @@ Modified command invocation
* env invocation:: Run a command in a modified environment * env invocation:: Run a command in a modified environment
* nice invocation:: Run a command with modified niceness * nice invocation:: Run a command with modified niceness
* nohup invocation:: Run a command immune to hangups * nohup invocation:: Run a command immune to hangups
* stdbuf invocation:: Run a command with modified I/O buffering
* su invocation:: Run a command with substitute user and group ID * su invocation:: Run a command with substitute user and group ID
* timeout invocation:: Run a command with a time limit * timeout invocation:: Run a command with a time limit
@ -1685,9 +1688,9 @@ Analogous to @option{--body-numbering}.
Analogous to @option{--body-numbering}. Analogous to @option{--body-numbering}.
@item -i @var{number} @item -i @var{number}
@itemx --page-increment=@var{number} @itemx --line-increment=@var{number}
@opindex -i @opindex -i
@opindex --page-increment @opindex --line-increment
Increment line numbers by @var{number} (default 1). Increment line numbers by @var{number} (default 1).
@item -l @var{number} @item -l @var{number}
@ -2004,7 +2007,7 @@ address.
@exitstatus @exitstatus
@node base64 invocation @node base64 invocation
@section @command{base64}: Transform data into printable data. @section @command{base64}: Transform data into printable data
@pindex base64 @pindex base64
@cindex base64 encoding @cindex base64 encoding
@ -2653,22 +2656,22 @@ The program accepts the following options. Also see @ref{Common options}.
@table @samp @table @samp
@item -c @var{n} @item -c @var{k}
@itemx --bytes=@var{n} @itemx --bytes=@var{k}
@opindex -c @opindex -c
@opindex --bytes @opindex --bytes
Print the first @var{n} bytes, instead of initial lines. Print the first @var{k} bytes, instead of initial lines.
However, if @var{n} starts with a @samp{-}, However, if @var{k} starts with a @samp{-},
print all but the last @var{n} bytes of each file. print all but the last @var{k} bytes of each file.
@multiplierSuffixes{n} @multiplierSuffixes{k}
@itemx -n @var{n} @itemx -n @var{k}
@itemx --lines=@var{n} @itemx --lines=@var{k}
@opindex -n @opindex -n
@opindex --lines @opindex --lines
Output the first @var{n} lines. Output the first @var{k} lines.
However, if @var{n} starts with a @samp{-}, However, if @var{k} starts with a @samp{-},
print all but the last @var{n} lines of each file. print all but the last @var{k} lines of each file.
Size multiplier suffixes are the same as with the @option{-c} option. Size multiplier suffixes are the same as with the @option{-c} option.
@item -q @item -q
@ -2738,14 +2741,14 @@ The program accepts the following options. Also see @ref{Common options}.
@table @samp @table @samp
@item -c @var{n} @item -c @var{k}
@itemx --bytes=@var{n} @itemx --bytes=@var{k}
@opindex -c @opindex -c
@opindex --bytes @opindex --bytes
Output the last @var{n} bytes, instead of final lines. Output the last @var{k} bytes, instead of final lines.
However, if @var{n} starts with a @samp{+}, start printing with the However, if @var{k} starts with a @samp{+}, start printing with the
@var{n}th byte from the start of each file, instead of from the end. @var{k}th byte from the start of each file, instead of from the end.
@multiplierSuffixes{n} @multiplierSuffixes{k}
@item -f @item -f
@itemx --follow[=@var{how}] @itemx --follow[=@var{how}]
@ -2850,13 +2853,13 @@ number of seconds between when tail prints the last pre-rotation lines
and when it prints the lines that have accumulated in the new log file. and when it prints the lines that have accumulated in the new log file.
This option is meaningful only when following by name. This option is meaningful only when following by name.
@itemx -n @var{n} @itemx -n @var{k}
@itemx --lines=@var{n} @itemx --lines=@var{k}
@opindex -n @opindex -n
@opindex --lines @opindex --lines
Output the last @var{n} lines. Output the last @var{k} lines.
However, if @var{n} starts with a @samp{+}, start printing with the However, if @var{k} starts with a @samp{+}, start printing with the
@var{n}th line from the start of each file, instead of from the end. @var{k}th line from the start of each file, instead of from the end.
Size multiplier suffixes are the same as with the @option{-c} option. Size multiplier suffixes are the same as with the @option{-c} option.
@item -q @item -q
@ -3721,7 +3724,9 @@ so portable shell scripts should specify global options first.
@vindex LC_CTYPE @vindex LC_CTYPE
Ignore leading blanks when finding sort keys in each line. Ignore leading blanks when finding sort keys in each line.
By default a blank is a space or a tab, but the @env{LC_CTYPE} locale By default a blank is a space or a tab, but the @env{LC_CTYPE} locale
can change this. can change this. Note blanks may be ignored by your locale's collating
rules, but without this option they will be significant for character
positions specified in keys with the @option{-k} option.
@item -d @item -d
@itemx --dictionary-order @itemx --dictionary-order
@ -3785,6 +3790,21 @@ Use this option only if there is no alternative; it is much slower than
@option{--numeric-sort} (@option{-n}) and it can lose information when @option{--numeric-sort} (@option{-n}) and it can lose information when
converting to floating point. converting to floating point.
@item -h
@itemx --human-numeric-sort
@itemx --sort=human-numeric
@opindex -h
@opindex --human-numeric-sort
@opindex --sort
@cindex human numeric sort
@vindex LC_NUMERIC
Sort numerically, as per the @option{--numeric-sort} option below, and in
addition handle IEC or SI suffixes like MiB, MB etc (@ref{Block size}).
Note a mixture of IEC and SI suffixes is not supported and will
be flagged as an error. Also the numbers must be abbreviated uniformly.
I.E. values with different precisions like 6000K and 5M will be sorted
incorrectly.
@item -i @item -i
@itemx --ignore-nonprinting @itemx --ignore-nonprinting
@opindex -i @opindex -i
@ -3916,7 +3936,7 @@ according to different rules; see below for details. Keys can span
multiple fields. multiple fields.
Example: To sort on the second field, use @option{--key=2,2} Example: To sort on the second field, use @option{--key=2,2}
(@option{-k 2,2}). See below for more examples. (@option{-k 2,2}). See below for more notes on keys and more examples.
@item --batch-size=@var{nmerge} @item --batch-size=@var{nmerge}
@opindex --batch-size @opindex --batch-size
@ -4085,15 +4105,15 @@ affect the meaning of character positions in field specifications in
obscure cases. The only fix is to add an explicit @option{-b}. obscure cases. The only fix is to add an explicit @option{-b}.
A position in a sort field specified with @option{-k} may have any A position in a sort field specified with @option{-k} may have any
of the option letters @samp{Mbdfinr} appended to it, in which case the of the option letters @samp{MbdfghinRrV} appended to it, in which case no
global ordering options are not used for that particular field. The global ordering options are inherited by that particular field. The
@option{-b} option may be independently attached to either or both of @option{-b} option may be independently attached to either or both of
the start and end positions of a field specification, and if it is the start and end positions of a field specification, and if it is
inherited from the global options it will be attached to both. inherited from the global options it will be attached to both.
If input lines can contain leading or adjacent blanks and @option{-t} If input lines can contain leading or adjacent blanks and @option{-t}
is not used, then @option{-k} is typically combined with @option{-b}, is not used, then @option{-k} is typically combined with @option{-b} or
@option{-g}, @option{-M}, or @option{-n}; otherwise the varying an option that implicitly ignores leading blanks (@samp{MghnV}) as otherwise
numbers of leading blanks in fields can cause confusing results. the varying numbers of leading blanks in fields can cause confusing results.
If the start position in a sort field specifier falls after the end of If the start position in a sort field specifier falls after the end of
the line or after the end field, the field is empty. If the @option{-b} the line or after the end field, the field is empty. If the @option{-b}
@ -4238,6 +4258,17 @@ by the sort operation.
@c printf 'c\n\nb\n\na\n'|perl -0pe 's/\n\n/\n\0/g'|sort -z|perl -0pe 's/\0/\n/g' @c printf 'c\n\nb\n\na\n'|perl -0pe 's/\n\n/\n\0/g'|sort -z|perl -0pe 's/\0/\n/g'
@c @end example @c @end example
@item
Use the common @acronym{DSU, Decorate Sort Undecorate} idiom to
sort lines according to their length.
@example
awk '@{print length, $0@}' /etc/passwd | sort -n | cut -f2- -d' '
@end example
In general this technique can be used to sort data that the @command{sort}
command does not support, or is inefficient at, sorting directly.
@item @item
Shuffle a list of directories, but preserve the order of files within Shuffle a list of directories, but preserve the order of files within
each directory. For instance, one could use this to generate a music each directory. For instance, one could use this to generate a music
@ -4565,7 +4596,7 @@ Columns are separated by a single TAB character.
@opindex -2 @opindex -2
@opindex -3 @opindex -3
The options @option{-1}, @option{-2}, and @option{-3} suppress printing of The options @option{-1}, @option{-2}, and @option{-3} suppress printing of
the corresponding columns. Also see @ref{Common options}. the corresponding columns (and separators). Also see @ref{Common options}.
Unlike some other comparison utilities, @command{comm} has an exit Unlike some other comparison utilities, @command{comm} has an exit
status that does not depend on the result of the comparison. status that does not depend on the result of the comparison.
@ -7373,6 +7404,9 @@ Make hard links instead of copies of non-directories.
@opindex -L @opindex -L
@opindex --dereference @opindex --dereference
Follow symbolic links when copying from them. Follow symbolic links when copying from them.
With this option, @command{cp} cannot create a symbolic link.
For example, a symlink (to regular file) in the source tree will be copied to
a regular file in the destination tree.
@item -n @item -n
@itemx --no-clobber @itemx --no-clobber
@ -7420,8 +7454,27 @@ not yet take advantage of that.
@itemx links @itemx links
Preserve in the destination files Preserve in the destination files
any links between corresponding source files. any links between corresponding source files.
@c Give examples illustrating how hard links are preserved. Note that with @option{-L} or @option{-H}, this option can convert
@c Also, show how soft links map to hard links with -L and -H. symbolic links to hard links. For example,
@example
$ mkdir c; : > a; ln -s a b; cp -aH a b c; ls -i1 c
74161745 a
74161745 b
@end example
@noindent
Note the inputs: @file{b} is a symlink to regular file @file{a},
yet the files in destination directory, @file{c/}, are hard-linked.
Since @option{-a} implies @option{--preserve=links}, and since @option{-H}
tells @command{cp} to dereference command line arguments, it sees two files
with the same inode number, and preserves the perceived hard link.
Here is a similar example that exercises @command{cp}'s @option{-L} option:
@smallexample
$ mkdir b c; (cd b; : > a; ln -s a b); cp -aL b c; ls -i1 c/b
74163295 a
74163295 b
@end smallexample
@itemx context @itemx context
Preserve SELinux security context of the file. @command{cp} will fail Preserve SELinux security context of the file. @command{cp} will fail
if the preserving of SELinux security context is not succesful. if the preserving of SELinux security context is not succesful.
@ -7490,6 +7543,15 @@ Also, it is not portable to use @option{-R} to copy symbolic links
unless you also specify @option{-P}, as @acronym{POSIX} allows unless you also specify @option{-P}, as @acronym{POSIX} allows
implementations that dereference symbolic links by default. implementations that dereference symbolic links by default.
@item --reflink
@opindex --reflink
Perform a lightweight, copy-on-write (COW) copy.
Copying with this option can succeed only on some relatively new file systems.
Once it has succeeded, beware that the source and destination files
share the same disk data blocks as long as they remain unmodified.
Thus, if a disk I/O error affects data blocks of one of the files,
the other suffers the exact same fate.
@item --remove-destination @item --remove-destination
@opindex --remove-destination @opindex --remove-destination
Remove each existing destination file before attempting to open it Remove each existing destination file before attempting to open it
@ -7808,6 +7870,10 @@ same time.
@opindex direct @opindex direct
@cindex direct I/O @cindex direct I/O
Use direct I/O for data, avoiding the buffer cache. Use direct I/O for data, avoiding the buffer cache.
Note that the kernel may impose restrictions on read or write buffer sizes.
For example, with an ext4 destination file system and a linux-based kernel,
using @samp{oflag=direct} will cause writes to fail with @code{EINVAL} if the
output buffer size is not a multiple of 512.
@item directory @item directory
@opindex directory @opindex directory
@ -8642,7 +8708,7 @@ Besides directories, other special file types include named pipes
* mkdir invocation:: Make directories. * mkdir invocation:: Make directories.
* mkfifo invocation:: Make FIFOs (named pipes). * mkfifo invocation:: Make FIFOs (named pipes).
* mknod invocation:: Make block or character special files. * mknod invocation:: Make block or character special files.
* readlink invocation:: Print the referent of a symbolic link. * readlink invocation:: Print value of a symlink or canonical file name.
* rmdir invocation:: Remove empty directories. * rmdir invocation:: Remove empty directories.
* unlink invocation:: Remove files via the unlink syscall * unlink invocation:: Remove files via the unlink syscall
@end menu @end menu
@ -9087,10 +9153,14 @@ Set the default SELinux security context to be used for created files.
@node readlink invocation @node readlink invocation
@section @command{readlink}: Print the referent of a symbolic link @section @command{readlink}: Print value of a symlink or canonical file name
@pindex readlink @pindex readlink
@cindex displaying value of a symbolic link @cindex displaying value of a symbolic link
@cindex canonical file name
@cindex canonicalize a file name
@pindex realpath
@findex realpath
@command{readlink} may work in one of two supported modes: @command{readlink} may work in one of two supported modes:
@ -9170,6 +9240,9 @@ Report error messages.
The @command{readlink} utility first appeared in OpenBSD 2.1. The @command{readlink} utility first appeared in OpenBSD 2.1.
There is a @command{realpath} command on some systems
which operates like @command{readlink} in canonicalize mode.
@exitstatus @exitstatus
@ -13066,186 +13139,14 @@ This section describes commands that print or change system-wide
information. information.
@menu @menu
* arch invocation:: Print machine hardware name.
* date invocation:: Print or set system date and time. * date invocation:: Print or set system date and time.
* arch invocation:: Print machine hardware name.
* uname invocation:: Print system information. * uname invocation:: Print system information.
* hostname invocation:: Print or set system name. * hostname invocation:: Print or set system name.
* hostid invocation:: Print numeric host identifier. * hostid invocation:: Print numeric host identifier.
* uptime invocation:: Print system uptime and load * uptime invocation:: Print system uptime and load.
@end menu @end menu
@node SELinux context
@chapter SELinux context
@cindex SELinux context
@cindex SELinux, context
@cindex commands for SELinux context
This section describes commands for operations with SELinux
contexts.
@menu
* chcon invocation:: Change SELinux context of file
* runcon invocation:: Run a command in specified SELinux context
@end menu
@node chcon invocation
@section @command{chcon}: Change SELinux context of file.
@pindex chcon
@cindex changing security context
@cindex change SELinux context
@command{chcon} changes the SELinux security context of the selected files.
Synopses:
@smallexample
chcon [@var{option}]@dots{} @var{context} @var{file}@dots{}
chcon [@var{option}]@dots{} [-u @var{user}] [-r @var{role}] [-l @var{range}] [-t @var{type}] @var{file}@dots{}
chcon [@var{option}]@dots{} --reference=@var{rfile} @var{file}@dots{}
@end smallexample
Change the SELinux security context of each @var{file} to @var{context}.
With @option{--reference}, change the security context of each @var{file}
to that of @var{rfile}.
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item -h
@itemx --no-dereference
@opindex -h
@opindex --no-dereference
@cindex no dereference
Affect symbolic links instead of any referenced file.
@item --reference=@var{rfile}
@opindex --reference
@cindex reference file
Use @var{rfile}'s security context rather than specifying a @var{context} value.
@item -R
@itemx --recursive
@opindex -R
@opindex --recursive
Operate on files and directories recursively.
@choptH
@xref{Traversing symlinks}.
@choptL
@xref{Traversing symlinks}.
@choptP
@xref{Traversing symlinks}.
@item -v
@itemx --verbose
@opindex -v
@opindex --verbose
@cindex diagnostic
Output a diagnostic for every file processed.
@item -u @var{user}
@itemx --user=@var{user}
@opindex -u
@opindex --user
Set user @var{user} in the target security context.
@item -r @var{role}
@itemx --role=@var{role}
@opindex -r
@opindex --role
Set role @var{role} in the target security context.
@item -t @var{type}
@itemx --type=@var{type}
@opindex -t
@opindex --type
Set type @var{type} in the target security context.
@item -l @var{range}
@itemx --range=@var{range}
@opindex -l
@opindex --range
Set range @var{range} in the target security context.
@end table
@exitstatus
@node runcon invocation
@section @command{runcon}: Run a command in specified SELinux context
@pindex runcon
@cindex run with security context
@command{runcon} runs file in specified SELinux security context.
Synopses:
@smallexample
runcon @var{context} @var{command} [@var{args}]
runcon [ -c ] [-u @var{user}] [-r @var{role}] [-t @var{type}] [-l @var{range}] @var{command} [@var{args}]
@end smallexample
Run @var{command} with completely-specified @var{context}, or with
current or transitioned security context modified by one or more of @var{level},
@var{role}, @var{type} and @var{user}.
If none of @option{-c}, @option{-t}, @option{-u}, @option{-r}, or @option{-l}
is specified, the first argument is used as the complete context.
Any additional arguments after @var{command}
are interpreted as arguments to the command.
With neither @var{context} nor @var{command}, print the current security context.
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item -c
@itemx --compute
@opindex -c
@opindex --compute
Compute process transition context before modifying.
@item -u @var{user}
@itemx --user=@var{user}
@opindex -u
@opindex --user
Set user @var{user} in the target security context.
@item -r @var{role}
@itemx --role=@var{role}
@opindex -r
@opindex --role
Set role @var{role} in the target security context.
@item -t @var{type}
@itemx --type=@var{type}
@opindex -t
@opindex --type
Set type @var{type} in the target security context.
@item -l @var{range}
@itemx --range=@var{range}
@opindex -l
@opindex --range
Set range @var{range} in the target security context.
@end table
@cindex exit status of @command{runcon}
Exit status:
@display
126 if @var{command} is found but cannot be invoked
127 if @command{runcon} itself fails or if @var{command} cannot be found
the exit status of @var{command} otherwise
@end display
@node date invocation @node date invocation
@section @command{date}: Print or set system date and time @section @command{date}: Print or set system date and time
@ -14053,7 +13954,7 @@ options}.
@node hostid invocation @node hostid invocation
@section @command{hostid}: Print numeric host identifier. @section @command{hostid}: Print numeric host identifier
@pindex hostid @pindex hostid
@cindex printing the host identifier @cindex printing the host identifier
@ -14107,6 +14008,178 @@ also include processes in the uninterruptible sleep state (that is,
those processes which are waiting for disk I/O). The Linux kernel those processes which are waiting for disk I/O). The Linux kernel
includes uninterruptible processes. includes uninterruptible processes.
@node SELinux context
@chapter SELinux context
@cindex SELinux context
@cindex SELinux, context
@cindex commands for SELinux context
This section describes commands for operations with SELinux
contexts.
@menu
* chcon invocation:: Change SELinux context of file
* runcon invocation:: Run a command in specified SELinux context
@end menu
@node chcon invocation
@section @command{chcon}: Change SELinux context of file
@pindex chcon
@cindex changing security context
@cindex change SELinux context
@command{chcon} changes the SELinux security context of the selected files.
Synopses:
@smallexample
chcon [@var{option}]@dots{} @var{context} @var{file}@dots{}
chcon [@var{option}]@dots{} [-u @var{user}] [-r @var{role}] [-l @var{range}] [-t @var{type}] @var{file}@dots{}
chcon [@var{option}]@dots{} --reference=@var{rfile} @var{file}@dots{}
@end smallexample
Change the SELinux security context of each @var{file} to @var{context}.
With @option{--reference}, change the security context of each @var{file}
to that of @var{rfile}.
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item -h
@itemx --no-dereference
@opindex -h
@opindex --no-dereference
@cindex no dereference
Affect symbolic links instead of any referenced file.
@item --reference=@var{rfile}
@opindex --reference
@cindex reference file
Use @var{rfile}'s security context rather than specifying a @var{context} value.
@item -R
@itemx --recursive
@opindex -R
@opindex --recursive
Operate on files and directories recursively.
@choptH
@xref{Traversing symlinks}.
@choptL
@xref{Traversing symlinks}.
@choptP
@xref{Traversing symlinks}.
@item -v
@itemx --verbose
@opindex -v
@opindex --verbose
@cindex diagnostic
Output a diagnostic for every file processed.
@item -u @var{user}
@itemx --user=@var{user}
@opindex -u
@opindex --user
Set user @var{user} in the target security context.
@item -r @var{role}
@itemx --role=@var{role}
@opindex -r
@opindex --role
Set role @var{role} in the target security context.
@item -t @var{type}
@itemx --type=@var{type}
@opindex -t
@opindex --type
Set type @var{type} in the target security context.
@item -l @var{range}
@itemx --range=@var{range}
@opindex -l
@opindex --range
Set range @var{range} in the target security context.
@end table
@exitstatus
@node runcon invocation
@section @command{runcon}: Run a command in specified SELinux context
@pindex runcon
@cindex run with security context
@command{runcon} runs file in specified SELinux security context.
Synopses:
@smallexample
runcon @var{context} @var{command} [@var{args}]
runcon [ -c ] [-u @var{user}] [-r @var{role}] [-t @var{type}] [-l @var{range}] @var{command} [@var{args}]
@end smallexample
Run @var{command} with completely-specified @var{context}, or with
current or transitioned security context modified by one or more of @var{level},
@var{role}, @var{type} and @var{user}.
If none of @option{-c}, @option{-t}, @option{-u}, @option{-r}, or @option{-l}
is specified, the first argument is used as the complete context.
Any additional arguments after @var{command}
are interpreted as arguments to the command.
With neither @var{context} nor @var{command}, print the current security context.
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item -c
@itemx --compute
@opindex -c
@opindex --compute
Compute process transition context before modifying.
@item -u @var{user}
@itemx --user=@var{user}
@opindex -u
@opindex --user
Set user @var{user} in the target security context.
@item -r @var{role}
@itemx --role=@var{role}
@opindex -r
@opindex --role
Set role @var{role} in the target security context.
@item -t @var{type}
@itemx --type=@var{type}
@opindex -t
@opindex --type
Set type @var{type} in the target security context.
@item -l @var{range}
@itemx --range=@var{range}
@opindex -l
@opindex --range
Set range @var{range} in the target security context.
@end table
@cindex exit status of @command{runcon}
Exit status:
@display
126 if @var{command} is found but cannot be invoked
127 if @command{runcon} itself fails or if @var{command} cannot be found
the exit status of @var{command} otherwise
@end display
@node Modified command invocation @node Modified command invocation
@chapter Modified command invocation @chapter Modified command invocation
@ -14123,6 +14196,7 @@ user, etc.
* env invocation:: Modify environment variables. * env invocation:: Modify environment variables.
* nice invocation:: Modify niceness. * nice invocation:: Modify niceness.
* nohup invocation:: Immunize to hangups. * nohup invocation:: Immunize to hangups.
* stdbuf invocation:: Modify buffering of standard streams.
* su invocation:: Modify user and group ID. * su invocation:: Modify user and group ID.
* timeout invocation:: Run with time limit. * timeout invocation:: Run with time limit.
@end menu @end menu
@ -14144,7 +14218,7 @@ underlying function is non-privileged due to lack of support in MS-Windows.}
Synopses: Synopses:
@example @example
chroot @var{newroot} [@var{command} [@var{args}]@dots{}] chroot @var{option} @var{newroot} [@var{command} [@var{args}]@dots{}]
chroot @var{option} chroot @var{option}
@end example @end example
@ -14157,8 +14231,25 @@ variable or @command{/bin/sh} if not set, invoked with the @option{-i} option.
@var{command} must not be a special built-in utility @var{command} must not be a special built-in utility
(@pxref{Special built-in utilities}). (@pxref{Special built-in utilities}).
The only options are @option{--help} and @option{--version}. @xref{Common The program accepts the following options. Also see @ref{Common options}.
options}. Options must precede operands. Options must precede operands.
@table @samp
@itemx --userspec=@var{user}[:@var{group}]
@opindex --userspec
By default, @var{command} is run with the same credentials
as the invoking process.
Use this option to run it as a different @var{user} and/or with a
different primary @var{group}.
@itemx --groups=@var{groups}
@opindex --groups
Use this option to specify the supplementary @var{groups} to be
used by the new process.
The items in the list (names or numeric IDs) must be separated by commas.
@end table
Here are a few tips to help avoid common problems in using chroot. Here are a few tips to help avoid common problems in using chroot.
To start with a simple example, make @var{command} refer to a statically To start with a simple example, make @var{command} refer to a statically
@ -14469,6 +14560,85 @@ the exit status of @var{command} otherwise
@end display @end display
@node stdbuf invocation
@section @command{stdbuf}: Run a command with modified I/O stream buffering
@pindex stdbuf
@cindex standard streams, buffering
@cindex line buffered
@command{stdbuf} allows one to modify the buffering operations of the
three standard I/O streams associated with a program. Synopsis:
@example
stdbuf @var{option}@dots{} @var{command}
@end example
Any additional @var{arg}s are passed as additional arguments to the
@var{command}.
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item -i @var{mode}
@itemx --input=@var{mode}
@opindex -i
@opindex --input
Adjust the standard input stream buffering.
@item -o @var{mode}
@itemx --output=@var{mode}
@opindex -o
@opindex --output
Adjust the standard output stream buffering.
@item -e @var{mode}
@itemx --error=@var{mode}
@opindex -e
@opindex --error
Adjust the standard error stream buffering.
@end table
The @var{mode} can be specified as follows:
@table @samp
@item L
Set the stream to line buffered mode.
In this mode data is coalesced until a newline is output or
input is read from any stream attached to a terminal device.
This option is invalid with standard input.
@item 0
Disable buffering of the selected stream.
In this mode data is output immediately and only the
amount of data requested is read from input.
@item @var{size}
Specify the size of the buffer to use in fully buffered mode.
@multiplierSuffixesNoBlocks{size}
@end table
NOTE: If @var{command} adjusts the buffering of its standard streams
(@command{tee} does for e.g.) then that will override corresponding settings
changed by @command{stdbuf}. Also some filters (like @command{dd} and
@command{cat} etc.) don't use streams for I/O, and are thus unaffected
by @command{stdbuf} settings.
@cindex exit status of @command{stdbuf}
Exit status:
@display
125 if @command{stdbuf} 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
@end display
@node su invocation @node su invocation
@section @command{su}: Run a command with substitute user and group ID @section @command{su}: Run a command with substitute user and group ID

View File

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

View File

@ -1,4 +1,4 @@
@set UPDATED 5 May 2009 @set UPDATED 18 August 2009
@set UPDATED-MONTH May 2009 @set UPDATED-MONTH August 2009
@set EDITION 7.4 @set EDITION 7.5
@set VERSION 7.4 @set VERSION 7.5

View File

@ -1,4 +1,4 @@
@set UPDATED 5 May 2009 @set UPDATED 18 August 2009
@set UPDATED-MONTH May 2009 @set UPDATED-MONTH August 2009
@set EDITION 7.4 @set EDITION 7.5
@set VERSION 7.4 @set VERSION 7.5

View File

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

View File

@ -8,6 +8,7 @@ SubDirCcFlags -DHAVE_CONFIG_H ;
SubDirSysHdrs $(SUBDIR) ; SubDirSysHdrs $(SUBDIR) ;
#SubDirSysHdrs $(SUBDIR) $(DOTDOT) ; #SubDirSysHdrs $(SUBDIR) $(DOTDOT) ;
UseLibraryHeaders iconv ;
StaticLibrary libfetish.a : StaticLibrary libfetish.a :
# __fpending.c # __fpending.c
@ -179,6 +180,7 @@ StaticLibrary libfetish.a :
# strcspn.c # strcspn.c
# strdup.c # strdup.c
strftime.c strftime.c
striconv.c
strintcmp.c strintcmp.c
stripslash.c stripslash.c
strnlen1.c strnlen1.c
@ -223,6 +225,7 @@ StaticLibrary libfetish.a :
xmemxfrm.c xmemxfrm.c
xnanosleep.c xnanosleep.c
xprintf.c xprintf.c
xstriconv.c
xstrndup.c xstrndup.c
xstrtod.c xstrtod.c
xstrtoimax.c xstrtoimax.c

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.10c from Makefile.am. # Makefile.in generated by automake 1.11a from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -26,7 +26,7 @@
# the same distribution terms as the rest of that program. # the same distribution terms as the rest of that program.
# #
# Generated by gnulib-tool. # Generated by gnulib-tool.
# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=canonicalize-lgpl --avoid=dummy --avoid=lock --no-libtool --macro-prefix=gl acl alloca announce-gen areadlink-with-size argmatch argv-iter assert atexit autobuild backupfile base64 c-strcase c-strtod c-strtold calloc canon-host canonicalize chown cloexec closein closeout config-h configmake crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 cycle-check d-ino d-type diacrit dirfd dirname dup2 error euidaccess exclude exitfail fchdir fcntl fcntl-safer fdl file-type fileblocks filemode filenamecat filevercmp fnmatch-gnu fopen-safer fprintftime fseeko fsusage ftello ftruncate fts gendocs getdate getgroups gethrxtime getline getloadavg getndelim2 getopt getpagesize getpass-gnu gettext gettime gettimeofday getugroups getusershell git-version-gen gitlog-to-changelog gnu-make gnumakefile gnupload group-member hard-locale hash hash-pjw host-os human idcache ignore-value inttostr inttypes isapipe lchmod lchown lib-ignore linebuffer link-follow long-options lstat maintainer-makefile malloc manywarnings mbrtowc mbsalign mbswidth memcasecmp memchr memcmp memcmp2 memcpy memmove mempcpy memrchr memset mgetgroups mkancesdirs mkdir mkdir-p mkstemp mktime modechange mountlist mpsort obstack pathmax perl physmem posix-shell posixtm posixver priv-set progname propername putenv quote quotearg raise randint randperm readlink readtokens readtokens0 readutmp realloc regex rename rename-dest-slash rmdir rmdir-errno root-dev-ino rpmatch safe-read same save-cwd savedir savewd selinux-at settime sig2str sigaction ssize_t stat-macros stat-time stdbool stdlib-safer stpcpy stpncpy strcspn strdup strftime strpbrk strtod strtoimax strtol strtoumax strverscmp sys_stat timespec tzset unicodeio unistd-safer unlink-busy unlinkdir unlocked-io uptime useless-if-before-free userspec utimecmp utimens vasprintf-posix vc-list-files verify verror version-etc-fsf warnings wcwidth winsz-ioctl winsz-termios write-any-file xalloc xfreopen xgetcwd xgethostname xmemcoll xnanosleep xprintf xprintf-posix xstrtod xstrtoimax xstrtol xstrtold xstrtoumax yesno # Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=canonicalize-lgpl --avoid=dummy --avoid=lock --no-libtool --macro-prefix=gl acl alloca announce-gen areadlink-with-size argmatch argv-iter assert atexit autobuild backupfile base64 c-strcase c-strtod c-strtold calloc canon-host canonicalize chown cloexec closein closeout config-h configmake crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 cycle-check d-ino d-type diacrit dirfd dirname dup2 error euidaccess exclude exitfail fchdir fcntl fcntl-safer fdl file-type fileblocks filemode filenamecat filevercmp fnmatch-gnu fopen-safer fprintftime fseeko fsusage ftello ftruncate fts gendocs getdate getgroups gethrxtime getline getloadavg getndelim2 getopt-gnu getpagesize getpass-gnu gettext gettime gettimeofday getugroups getusershell git-version-gen gitlog-to-changelog gnu-make gnumakefile gnupload group-member hard-locale hash hash-pjw host-os human idcache ignore-value inttostr inttypes isapipe lchmod lchown lib-ignore linebuffer link-follow long-options lstat maintainer-makefile malloc manywarnings mbrtowc mbsalign mbswidth memcasecmp memchr memcmp memcmp2 memcpy memmove mempcpy memrchr memset mgetgroups mkancesdirs mkdir mkdir-p mkstemp mktime modechange mountlist mpsort obstack pathmax perl physmem posix-shell posixtm posixver priv-set progname propername putenv quote quotearg raise randint randperm readlink readtokens readtokens0 readutmp realloc regex rename rename-dest-slash rmdir rmdir-errno root-dev-ino rpmatch safe-read same save-cwd savedir savewd selinux-at settime sig2str sigaction ssize_t stat-macros stat-time stdbool stdlib-safer stpcpy stpncpy strcspn strdup strftime strpbrk strtod strtoimax strtol strtoumax strverscmp sys_stat timespec tzset unicodeio unistd-safer unlink-busy unlinkdir unlocked-io update-copyright uptime useless-if-before-free userspec utimecmp utimens vasprintf-posix vc-list-files verify verror version-etc-fsf warnings wcwidth winsz-ioctl winsz-termios write-any-file xalloc xfreopen xgetcwd xgethostname xmemcoll xnanosleep xprintf xprintf-posix xstrtod xstrtoimax xstrtol xstrtold xstrtoumax yesno
@ -51,7 +51,7 @@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.hin $(srcdir)/gnulib.mk \ $(srcdir)/Makefile.in $(srcdir)/config.hin $(srcdir)/gnulib.mk \
TODO alloca.c euidaccess-stat.c euidaccess-stat.h fd-reopen.c \ alloca.c euidaccess-stat.c euidaccess-stat.h fd-reopen.c \
fd-reopen.h getdate.c memxfrm.c memxfrm.h strintcmp.c \ fd-reopen.h getdate.c memxfrm.c memxfrm.h strintcmp.c \
strnumcmp-in.h strnumcmp.c strnumcmp.h xfts.c xfts.h strnumcmp-in.h strnumcmp.c strnumcmp.h xfts.c xfts.h
subdir = lib subdir = lib
@ -149,7 +149,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mgetgroups.m4 \ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mgetgroups.m4 \
$(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \ $(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \
$(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \ $(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \
$(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \ $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
$(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/mpsort.m4 \ $(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/mpsort.m4 \
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nanosleep.m4 \ $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nanosleep.m4 \
$(top_srcdir)/m4/netdb_h.m4 $(top_srcdir)/m4/netinet_in_h.m4 \ $(top_srcdir)/m4/netdb_h.m4 $(top_srcdir)/m4/netinet_in_h.m4 \
@ -188,15 +189,16 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
$(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
$(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
$(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio-safer.m4 \
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib-safer.m4 \
$(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/stpncpy.m4 \ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
$(top_srcdir)/m4/strcspn.m4 $(top_srcdir)/m4/strdup.m4 \ $(top_srcdir)/m4/stpncpy.m4 $(top_srcdir)/m4/strcspn.m4 \
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strftime.m4 \ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
$(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \ $(top_srcdir)/m4/strnumcmp.m4 $(top_srcdir)/m4/strpbrk.m4 \
$(top_srcdir)/m4/strstr.m4 $(top_srcdir)/m4/strtod.m4 \
$(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
$(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
$(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
@ -215,7 +217,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
$(top_srcdir)/m4/vasprintf-posix.m4 \ $(top_srcdir)/m4/vasprintf-posix.m4 \
$(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
$(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \
$(top_srcdir)/m4/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \
$(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
@ -252,27 +254,27 @@ am_libcoreutils_a_OBJECTS = set-mode-acl.$(OBJEXT) copy-acl.$(OBJEXT) \
argv-iter.$(OBJEXT) base64.$(OBJEXT) c-ctype.$(OBJEXT) \ argv-iter.$(OBJEXT) base64.$(OBJEXT) c-ctype.$(OBJEXT) \
c-strcasecmp.$(OBJEXT) c-strncasecmp.$(OBJEXT) \ c-strcasecmp.$(OBJEXT) c-strncasecmp.$(OBJEXT) \
close-hook.$(OBJEXT) diacrit.$(OBJEXT) file-set.$(OBJEXT) \ close-hook.$(OBJEXT) diacrit.$(OBJEXT) file-set.$(OBJEXT) \
filevercmp.$(OBJEXT) fpurge.$(OBJEXT) freadahead.$(OBJEXT) \ filevercmp.$(OBJEXT) freadahead.$(OBJEXT) freading.$(OBJEXT) \
freading.$(OBJEXT) freadptr.$(OBJEXT) freadseek.$(OBJEXT) \ freadptr.$(OBJEXT) freadseek.$(OBJEXT) fseterr.$(OBJEXT) \
fseterr.$(OBJEXT) full-read.$(OBJEXT) full-write.$(OBJEXT) \ full-read.$(OBJEXT) full-write.$(OBJEXT) getdate.$(OBJEXT) \
getdate.$(OBJEXT) hash-pjw.$(OBJEXT) hash-triple.$(OBJEXT) \ hash-pjw.$(OBJEXT) hash-triple.$(OBJEXT) linebuffer.$(OBJEXT) \
linebuffer.$(OBJEXT) localcharset.$(OBJEXT) malloca.$(OBJEXT) \ localcharset.$(OBJEXT) malloca.$(OBJEXT) mbchar.$(OBJEXT) \
mbchar.$(OBJEXT) mbsalign.$(OBJEXT) mbscasecmp.$(OBJEXT) \ mbsalign.$(OBJEXT) mbscasecmp.$(OBJEXT) mbslen.$(OBJEXT) \
mbslen.$(OBJEXT) mbsstr.$(OBJEXT) mbswidth.$(OBJEXT) \ mbsstr.$(OBJEXT) mbswidth.$(OBJEXT) memchr2.$(OBJEXT) \
memchr2.$(OBJEXT) memcmp2.$(OBJEXT) openat-die.$(OBJEXT) \ memcmp2.$(OBJEXT) openat-die.$(OBJEXT) printf-frexp.$(OBJEXT) \
printf-frexp.$(OBJEXT) printf-frexpl.$(OBJEXT) \ printf-frexpl.$(OBJEXT) priv-set.$(OBJEXT) progname.$(OBJEXT) \
priv-set.$(OBJEXT) progname.$(OBJEXT) propername.$(OBJEXT) \ propername.$(OBJEXT) randint.$(OBJEXT) randperm.$(OBJEXT) \
randint.$(OBJEXT) randperm.$(OBJEXT) randread.$(OBJEXT) \ randread.$(OBJEXT) rand-isaac.$(OBJEXT) readtokens0.$(OBJEXT) \
rand-isaac.$(OBJEXT) readtokens0.$(OBJEXT) savewd.$(OBJEXT) \ savewd.$(OBJEXT) sockets.$(OBJEXT) striconv.$(OBJEXT) \
striconv.$(OBJEXT) strnlen1.$(OBJEXT) trim.$(OBJEXT) \ strnlen1.$(OBJEXT) trim.$(OBJEXT) unicodeio.$(OBJEXT) \
unicodeio.$(OBJEXT) unistr/u8-uctomb.$(OBJEXT) \ unistr/u8-uctomb.$(OBJEXT) unistr/u8-uctomb-aux.$(OBJEXT) \
unistr/u8-uctomb-aux.$(OBJEXT) uniwidth/width.$(OBJEXT) \ uniwidth/width.$(OBJEXT) verror.$(OBJEXT) \
verror.$(OBJEXT) version-etc.$(OBJEXT) \ version-etc.$(OBJEXT) version-etc-fsf.$(OBJEXT) \
version-etc-fsf.$(OBJEXT) xalloc-die.$(OBJEXT) \ xalloc-die.$(OBJEXT) xfreopen.$(OBJEXT) xgethostname.$(OBJEXT) \
xfreopen.$(OBJEXT) xgethostname.$(OBJEXT) xmemcoll.$(OBJEXT) \ xmemcoll.$(OBJEXT) xprintf.$(OBJEXT) xstriconv.$(OBJEXT) \
xprintf.$(OBJEXT) xstriconv.$(OBJEXT) xstrndup.$(OBJEXT) \ xstrndup.$(OBJEXT) xstrtoimax.$(OBJEXT) xstrtoumax.$(OBJEXT) \
xstrtoimax.$(OBJEXT) xstrtoumax.$(OBJEXT) xvasprintf.$(OBJEXT) \ xvasprintf.$(OBJEXT) xasprintf.$(OBJEXT) buffer-lcm.$(OBJEXT) \
xasprintf.$(OBJEXT) buffer-lcm.$(OBJEXT) xmemxfrm.$(OBJEXT) xmemxfrm.$(OBJEXT)
libcoreutils_a_OBJECTS = $(am_libcoreutils_a_OBJECTS) libcoreutils_a_OBJECTS = $(am_libcoreutils_a_OBJECTS)
LTLIBRARIES = $(noinst_LTLIBRARIES) LTLIBRARIES = $(noinst_LTLIBRARIES)
DEFAULT_INCLUDES = -I.@am__isrc@ DEFAULT_INCLUDES = -I.@am__isrc@
@ -385,6 +387,7 @@ FCNTL_H = @FCNTL_H@
FLOAT_H = @FLOAT_H@ FLOAT_H = @FLOAT_H@
FNMATCH_H = @FNMATCH_H@ FNMATCH_H = @FNMATCH_H@
GETADDRINFO_LIB = @GETADDRINFO_LIB@ GETADDRINFO_LIB = @GETADDRINFO_LIB@
GETHOSTNAME_LIB = @GETHOSTNAME_LIB@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GETOPT_H = @GETOPT_H@ GETOPT_H = @GETOPT_H@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@ -415,6 +418,7 @@ GNULIB_FLOORL = @GNULIB_FLOORL@
GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FOPEN = @GNULIB_FOPEN@
GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF = @GNULIB_FPRINTF@
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
GNULIB_FPURGE = @GNULIB_FPURGE@
GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTC = @GNULIB_FPUTC@
GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FPUTS = @GNULIB_FPUTS@
GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FREOPEN = @GNULIB_FREOPEN@
@ -481,6 +485,7 @@ GNULIB_MBSSEP = @GNULIB_MBSSEP@
GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSPN = @GNULIB_MBSSPN@
GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSSTR = @GNULIB_MBSSTR@
GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
GNULIB_MEMCHR = @GNULIB_MEMCHR@
GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMMEM = @GNULIB_MEMMEM@
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
@ -544,6 +549,7 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
GNULIB_TRUNC = @GNULIB_TRUNC@ GNULIB_TRUNC = @GNULIB_TRUNC@
GNULIB_TRUNCF = @GNULIB_TRUNCF@ GNULIB_TRUNCF = @GNULIB_TRUNCF@
GNULIB_TRUNCL = @GNULIB_TRUNCL@ GNULIB_TRUNCL = @GNULIB_TRUNCL@
GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_UNSETENV = @GNULIB_UNSETENV@
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
@ -573,6 +579,7 @@ HAVE_DECL_COSL = @HAVE_DECL_COSL@
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@ HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@
HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@ HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@
@ -648,6 +655,7 @@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINK = @HAVE_READLINK@
HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@ HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_RPMATCH = @HAVE_RPMATCH@
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SCANDIR = @HAVE_SCANDIR@
HAVE_SETENV = @HAVE_SETENV@ HAVE_SETENV = @HAVE_SETENV@
HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGACTION = @HAVE_SIGACTION@
@ -671,6 +679,7 @@ HAVE_STRTOULL = @HAVE_STRTOULL@
HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@ HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@
HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@
HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
@ -689,6 +698,7 @@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VASPRINTF = @HAVE_VASPRINTF@
HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@
HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCRTOMB = @HAVE_WCRTOMB@
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
@ -754,6 +764,32 @@ NEED_SETGID = @NEED_SETGID@
NETDB_H = @NETDB_H@ NETDB_H = @NETDB_H@
NETINET_IN_H = @NETINET_IN_H@ NETINET_IN_H = @NETINET_IN_H@
NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@ NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@
NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H = @NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H@
NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@
NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
NEXT_AS_FIRST_DIRECTIVE_NETDB_H = @NEXT_AS_FIRST_DIRECTIVE_NETDB_H@
NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H = @NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H@
NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@
NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@
NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@
@ -765,6 +801,7 @@ NEXT_NETDB_H = @NEXT_NETDB_H@
NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@ NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@
NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDARG_H = @NEXT_STDARG_H@
NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDIO_H = @NEXT_STDIO_H@
NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@
@ -781,6 +818,7 @@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
NO_INSTALL_PROGS_DEFAULT = @NO_INSTALL_PROGS_DEFAULT@ NO_INSTALL_PROGS_DEFAULT = @NO_INSTALL_PROGS_DEFAULT@
OBJEXT = @OBJEXT@ OBJEXT = @OBJEXT@
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@ OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
OPTIONAL_PKGLIB_PROGS = @OPTIONAL_PKGLIB_PROGS@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_NAME = @PACKAGE_NAME@
@ -805,6 +843,7 @@ REPLACE_CEILL = @REPLACE_CEILL@
REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CHOWN = @REPLACE_CHOWN@
REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSE = @REPLACE_CLOSE@
REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DPRINTF = @REPLACE_DPRINTF@
REPLACE_DUP2 = @REPLACE_DUP2@
REPLACE_FCHDIR = @REPLACE_FCHDIR@ REPLACE_FCHDIR = @REPLACE_FCHDIR@
REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCLOSE = @REPLACE_FCLOSE@
REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFLUSH = @REPLACE_FFLUSH@
@ -812,6 +851,7 @@ REPLACE_FLOORF = @REPLACE_FLOORF@
REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FLOORL = @REPLACE_FLOORL@
REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN = @REPLACE_FOPEN@
REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPRINTF = @REPLACE_FPRINTF@
REPLACE_FPURGE = @REPLACE_FPURGE@
REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREOPEN = @REPLACE_FREOPEN@
REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXP = @REPLACE_FREXP@
REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FREXPL = @REPLACE_FREXPL@
@ -842,11 +882,14 @@ REPLACE_MBSINIT = @REPLACE_MBSINIT@
REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
REPLACE_MEMCHR = @REPLACE_MEMCHR@
REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMMEM = @REPLACE_MEMMEM@
REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKDIR = @REPLACE_MKDIR@
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
REPLACE_MKTIME = @REPLACE_MKTIME@
REPLACE_NAN = @REPLACE_NAN@ REPLACE_NAN = @REPLACE_NAN@
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
REPLACE_NULL = @REPLACE_NULL@
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPEN = @REPLACE_OPEN@
REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PERROR = @REPLACE_PERROR@
@ -892,10 +935,12 @@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
STDARG_H = @STDARG_H@ STDARG_H = @STDARG_H@
STDBOOL_H = @STDBOOL_H@ STDBOOL_H = @STDBOOL_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@ STDINT_H = @STDINT_H@
STRIP = @STRIP@ STRIP = @STRIP@
SYS_IOCTL_H = @SYS_IOCTL_H@ SYS_IOCTL_H = @SYS_IOCTL_H@
SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@ SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@
SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
SYS_SELECT_H = @SYS_SELECT_H@ SYS_SELECT_H = @SYS_SELECT_H@
SYS_SOCKET_H = @SYS_SOCKET_H@ SYS_SOCKET_H = @SYS_SOCKET_H@
SYS_STAT_H = @SYS_STAT_H@ SYS_STAT_H = @SYS_STAT_H@
@ -906,6 +951,7 @@ U = @U@
UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
USE_ACL = @USE_ACL@ USE_ACL = @USE_ACL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
@ -1001,37 +1047,38 @@ noinst_LTLIBRARIES =
# mv $@-t $@ # mv $@-t $@
#EXTRA_DIST += script.in #EXTRA_DIST += script.in
#MOSTLYCLEANFILES += script script-t #MOSTLYCLEANFILES += script script-t
EXTRA_DIST = acl-internal.h acl.h acl_entries.c alloca.c alloca.in.h \ EXTRA_DIST = acl-internal.h acl.h acl_entries.c alignof.h alloca.c \
$(top_srcdir)/build-aux/announce-gen areadlink.h argmatch.c \ alloca.in.h $(top_srcdir)/build-aux/announce-gen areadlink.h \
argmatch.h arpa_inet.in.h atexit.c backupfile.c backupfile.h \ argmatch.c argmatch.h arpa_inet.in.h atexit.c backupfile.c \
btowc.c c-strtod.c c-strtod.h c-strtod.c c-strtod.h \ backupfile.h btowc.c c-strtod.c c-strtod.h c-strtod.c \
c-strtold.c calloc.c calloc.c canon-host.c canon-host.h \ c-strtod.h c-strtold.c calloc.c calloc.c canon-host.c \
canonicalize.c canonicalize.h pathmax.h chdir-long.c \ canon-host.h canonicalize.c canonicalize.h pathmax.h \
chdir-long.h chown.c fchown-stub.c cloexec.c cloexec.h close.c \ chdir-long.c chdir-long.h chown.c fchown-stub.c cloexec.c \
close-hook.h close-stream.c close-stream.h closein.c closein.h \ cloexec.h close.c close-hook.h close-stream.c close-stream.h \
closeout.c closeout.h md5.c md5.h sha1.c sha1.h sha256.c \ closein.c closein.h closeout.c closeout.h md5.c md5.h sha1.c \
sha256.h sha512.c sha512.h cycle-check.c cycle-check.h \ sha1.h sha256.c sha256.h sha512.c sha512.h cycle-check.c \
dev-ino.h dirent.in.h dirfd.c basename.c dirname.c dirname.h \ cycle-check.h dev-ino.h dirent.in.h dirfd.c basename.c \
stripslash.c dup2.c errno.in.h error.c error.h euidaccess.c \ dirname.c dirname.h stripslash.c dup2.c errno.in.h error.c \
exclude.c exclude.h exitfail.c exitfail.h fchdir.c fclose.c \ error.h euidaccess.c exclude.c exclude.h exitfail.c exitfail.h \
fcntl.in.h creat-safer.c fcntl--.h fcntl-safer.h open-safer.c \ fchdir.c fclose.c fcntl.in.h creat-safer.c fcntl--.h \
fflush.c stdio-impl.h file-set.h file-type.c file-type.h \ fcntl-safer.h open-safer.c fflush.c stdio-impl.h file-set.h \
fileblocks.c filemode.c filemode.h filenamecat.c filenamecat.h \ file-type.c file-type.h fileblocks.c filemode.c filemode.h \
filevercmp.h float.in.h fnmatch.c fnmatch.in.h fnmatch_loop.c \ filenamecat.c filenamecat.h filevercmp.h float.in.h fnmatch.c \
fopen-safer.c stdio--.h stdio-safer.h fpending.c fpending.h \ fnmatch.in.h fnmatch_loop.c fopen-safer.c stdio--.h \
fprintftime.c fprintftime.h fpucw.h fpurge.h stdio-impl.h \ stdio-safer.h fpending.c fpending.h fprintftime.c \
freadahead.h stdio-impl.h freading.h stdio-impl.h freadptr.h \ fprintftime.h fpucw.h fpurge.c stdio-impl.h freadahead.h \
stdio-impl.h freadseek.h stdio-impl.h frexp.c frexp.c frexpl.c \ stdio-impl.h freading.h stdio-impl.h freadptr.h stdio-impl.h \
fseeko.c stdio-impl.h fseterr.h stdio-impl.h fsusage.c \ freadseek.h stdio-impl.h frexp.c frexp.c frexpl.c fseeko.c \
fsusage.h ftello.c ftruncate.c fts-cycle.c fts.c fts_.h \ stdio-impl.h fseterr.h stdio-impl.h fsusage.c fsusage.h \
ftello.c ftruncate.c fts-cycle.c fts.c fts_.h \
$(top_srcdir)/build-aux/gendocs.sh gai_strerror.c \ $(top_srcdir)/build-aux/gendocs.sh gai_strerror.c \
getaddrinfo.c getcwd.c getdate.c getdate.h getdelim.c \ getaddrinfo.c getcwd.c getdate.c getdate.h getdelim.c \
getgroups.c gethostname.c gethrxtime.c gethrxtime.h xtime.h \ getgroups.c gethostname.c w32sock.h gethrxtime.c gethrxtime.h \
getline.c getloadavg.c getndelim2.c getndelim2.h getopt.c \ xtime.h getline.c getloadavg.c getndelim2.c getndelim2.h \
getopt.in.h getopt1.c getopt_int.h getpagesize.c getpass.c \ getopt.c getopt.in.h getopt1.c getopt_int.h getpagesize.c \
getpass.h $(top_srcdir)/build-aux/config.rpath gettime.c \ getpass.c getpass.h $(top_srcdir)/build-aux/config.rpath \
gettimeofday.c getugroups.c getugroups.h getusershell.c \ gettime.c gettimeofday.c getugroups.c getugroups.h \
$(top_srcdir)/build-aux/git-version-gen \ getusershell.c $(top_srcdir)/build-aux/git-version-gen \
$(top_srcdir)/build-aux/gitlog-to-changelog \ $(top_srcdir)/build-aux/gitlog-to-changelog \
$(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \ $(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \
group-member.c group-member.h hard-locale.c hard-locale.h \ group-member.c group-member.h hard-locale.c hard-locale.h \
@ -1051,9 +1098,10 @@ EXTRA_DIST = acl-internal.h acl.h acl_entries.c alloca.c alloca.in.h \
lstat.c $(top_srcdir)/maint.mk malloc.c malloc.c malloca.h \ lstat.c $(top_srcdir)/maint.mk malloc.c malloc.c malloca.h \
malloca.valgrind math.in.h mbchar.h mbrlen.c mbrtowc.c \ malloca.valgrind math.in.h mbchar.h mbrlen.c mbrtowc.c \
mbsinit.c mbsrtowcs-state.c mbsrtowcs.c str-kmp.h memcasecmp.c \ mbsinit.c mbsrtowcs-state.c mbsrtowcs.c str-kmp.h memcasecmp.c \
memcasecmp.h memchr.c memcmp.c memcmp2.h memcoll.c memcoll.h \ memcasecmp.h memchr.c memchr.valgrind memchr2.valgrind \
memcpy.c memmove.c mempcpy.c memrchr.c memset.c mgetgroups.c \ memcmp.c memcmp2.h memcoll.c memcoll.h memcpy.c memmove.c \
mgetgroups.h mkancesdirs.c mkancesdirs.h mkdir.c dirchownmod.c \ mempcpy.c memrchr.c memset.c mgetgroups.c mgetgroups.h \
mkancesdirs.c mkancesdirs.h mkdir.c dirchownmod.c \
dirchownmod.h mkdir-p.c mkdir-p.h mkstemp.c mktime.c \ dirchownmod.h mkdir-p.c mkdir-p.h mkstemp.c mktime.c \
modechange.c modechange.h mountlist.c mountlist.h mpsort.c \ modechange.c modechange.h mountlist.c mountlist.h mpsort.c \
mpsort.h nanosleep.c netdb.in.h netinet_in.in.h obstack.c \ mpsort.h nanosleep.c netdb.in.h netinet_in.in.h obstack.c \
@ -1071,11 +1119,12 @@ EXTRA_DIST = acl-internal.h acl.h acl_entries.c alloca.c alloca.in.h \
savedir.h select.c selinux-at.c selinux-at.h setenv.c \ savedir.h select.c selinux-at.c selinux-at.h setenv.c \
settime.c sig2str.c sig2str.h sig-handler.h sigaction.c \ settime.c sig2str.c sig2str.h sig-handler.h sigaction.c \
signal.in.h float+.h signbitd.c signbitf.c signbitl.c \ signal.in.h float+.h signbitd.c signbitf.c signbitl.c \
sigprocmask.c snprintf.c stat-macros.h stat-time.h stdarg.in.h \ sigprocmask.c snprintf.c w32sock.h stat-macros.h stat-time.h \
stdbool.in.h stdint.in.h stdio-write.c stdio.in.h stdlib.in.h \ stdarg.in.h stdbool.in.h stddef.in.h stdint.in.h stdio-write.c \
mkstemp-safer.c stdlib--.h stdlib-safer.h stpcpy.c stpncpy.c \ stdio.in.h stdlib.in.h mkstemp-safer.c stdlib--.h \
strcspn.c strdup.c strdup.c streq.h strerror.c strftime.c \ stdlib-safer.h stpcpy.c stpncpy.c strcspn.c strdup.c strdup.c \
strftime.h string.in.h strndup.c strnlen.c strpbrk.c strtod.c \ streq.h strerror.c strftime.c strftime.h string.in.h strndup.c \
strnlen.c strpbrk.c str-two-way.h strstr.c strtod.c \
strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \ strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
strtoumax.c strverscmp.c sys_select.in.h sys_socket.in.h \ strtoumax.c strverscmp.c sys_select.in.h sys_socket.in.h \
sys_stat.in.h sys_time.in.h tempname.c tempname.h time.in.h \ sys_stat.in.h sys_time.in.h tempname.c tempname.h time.in.h \
@ -1083,6 +1132,7 @@ EXTRA_DIST = acl-internal.h acl.h acl_entries.c alloca.c alloca.in.h \
fd-safer.c pipe-safer.c unistd--.h unistd-safer.h unistr.h \ fd-safer.c pipe-safer.c unistd--.h unistd-safer.h unistr.h \
unitypes.h localcharset.h uniwidth.h uniwidth/cjk.h \ unitypes.h localcharset.h uniwidth.h uniwidth/cjk.h \
unlinkdir.c unlinkdir.h unlocked-io.h unsetenv.c \ unlinkdir.c unlinkdir.h unlocked-io.h unsetenv.c \
$(top_srcdir)/build-aux/update-copyright \
$(top_srcdir)/build-aux/useless-if-before-free inttostr.h \ $(top_srcdir)/build-aux/useless-if-before-free inttostr.h \
userspec.c userspec.h utimecmp.c utimecmp.h utimens.c \ userspec.c userspec.h utimecmp.c utimecmp.h utimens.c \
utimens.h asnprintf.c float+.h printf-args.c printf-args.h \ utimens.h asnprintf.c float+.h printf-args.c printf-args.h \
@ -1100,9 +1150,9 @@ BUILT_SOURCES = $(ALLOCA_H) $(ARPA_INET_H) configmake.h $(DIRENT_H) \
iconv_open-irix.h iconv_open-osf.h $(INTTYPES_H) math.h \ iconv_open-irix.h iconv_open-osf.h $(INTTYPES_H) math.h \
$(NETDB_H) $(NETINET_IN_H) $(SELINUX_SELINUX_H) \ $(NETDB_H) $(NETINET_IN_H) $(SELINUX_SELINUX_H) \
$(SELINUX_CONTEXT_H) signal.h $(STDARG_H) $(STDBOOL_H) \ $(SELINUX_CONTEXT_H) signal.h $(STDARG_H) $(STDBOOL_H) \
$(STDINT_H) stdio.h stdlib.h string.h $(SYS_SELECT_H) \ $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h \
$(SYS_SOCKET_H) $(SYS_STAT_H) $(SYS_TIME_H) time.h unistd.h \ $(SYS_SELECT_H) $(SYS_SOCKET_H) $(SYS_STAT_H) $(SYS_TIME_H) \
$(WCHAR_H) $(WCTYPE_H) time.h unistd.h $(WCHAR_H) $(WCTYPE_H)
SUFFIXES = .sed .sin SUFFIXES = .sed .sin
MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \ MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \
arpa/inet.h-t dirent.h dirent.h-t errno.h errno.h-t fcntl.h \ arpa/inet.h-t dirent.h dirent.h-t errno.h errno.h-t fcntl.h \
@ -1113,11 +1163,11 @@ MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \
netinet/in.h netinet/in.h-t selinux/selinux.h \ netinet/in.h netinet/in.h-t selinux/selinux.h \
selinux/selinux.h-t selinux/context.h selinux/context.h-t \ selinux/selinux.h-t selinux/context.h selinux/context.h-t \
signal.h signal.h-t stdarg.h stdarg.h-t stdbool.h stdbool.h-t \ signal.h signal.h-t stdarg.h stdarg.h-t stdbool.h stdbool.h-t \
stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t \ stddef.h stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t \
string.h string.h-t sys/select.h sys/select.h-t sys/socket.h \ stdlib.h stdlib.h-t string.h string.h-t sys/select.h \
sys/socket.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \ sys/select.h-t sys/socket.h sys/socket.h-t sys/stat.h \
time.h time.h-t unistd.h unistd.h-t wchar.h wchar.h-t wctype.h \ sys/stat.h-t sys/time.h sys/time.h-t time.h time.h-t unistd.h \
wctype.h-t unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t
MOSTLYCLEANDIRS = arpa netinet selinux sys sys sys MOSTLYCLEANDIRS = arpa netinet selinux sys sys sys
CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \ CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
ref-del.sed ref-del.sed
@ -1128,27 +1178,28 @@ AM_CPPFLAGS =
AM_CFLAGS = $(WARN_CFLAGS) # $(WERROR_CFLAGS) AM_CFLAGS = $(WARN_CFLAGS) # $(WERROR_CFLAGS)
libcoreutils_a_SOURCES = set-mode-acl.c copy-acl.c file-has-acl.c \ libcoreutils_a_SOURCES = set-mode-acl.c copy-acl.c file-has-acl.c \
areadlink-with-size.c argv-iter.c argv-iter.h base64.h \ areadlink-with-size.c argv-iter.c argv-iter.h base64.h \
base64.c c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c \ base64.c bitrotate.h c-ctype.h c-ctype.c c-strcase.h \
c-strncasecmp.c close-hook.c diacrit.h diacrit.c file-set.c \ c-strcasecmp.c c-strncasecmp.c close-hook.c diacrit.h \
filevercmp.c fpurge.c freadahead.c freading.c freadptr.c \ diacrit.c file-set.c filevercmp.c freadahead.c freading.c \
freadseek.c fseterr.c full-read.h full-read.c full-write.h \ freadptr.c freadseek.c fseterr.c full-read.h full-read.c \
full-write.c getdate.y gettext.h hash-pjw.h hash-pjw.c \ full-write.h full-write.c getdate.y gettext.h hash-pjw.h \
hash-triple.c ignore-value.h linebuffer.h linebuffer.c \ hash-pjw.c hash-triple.c ignore-value.h linebuffer.h \
localcharset.h localcharset.c malloca.c mbchar.c mbiter.h \ linebuffer.c localcharset.h localcharset.c malloca.c mbchar.c \
mbsalign.c mbsalign.h mbscasecmp.c mbslen.c mbsstr.c \ mbiter.h mbsalign.c mbsalign.h mbscasecmp.c mbslen.c mbsstr.c \
mbswidth.h mbswidth.c mbuiter.h memchr2.h memchr2.c memcmp2.c \ mbswidth.h mbswidth.c mbuiter.h memchr2.h memchr2.c memcmp2.c \
openat-die.c printf-frexp.c printf-frexpl.c priv-set.c \ openat-die.c printf-frexp.c printf-frexpl.c priv-set.c \
progname.h progname.c propername.h propername.c randint.c \ progname.h progname.c propername.h propername.c randint.c \
randint.h randperm.c randperm.h randread.c randread.h \ randint.h randperm.c randperm.h randread.c randread.h \
rand-isaac.c rand-isaac.h readtokens0.h readtokens0.c savewd.h \ rand-isaac.c rand-isaac.h readtokens0.h readtokens0.c savewd.h \
savewd.c se-context.in.h se-selinux.in.h size_max.h striconv.h \ savewd.c se-context.in.h se-selinux.in.h size_max.h sockets.h \
striconv.c strnlen1.h strnlen1.c trim.c unicodeio.h \ sockets.c striconv.h striconv.c strnlen1.h strnlen1.c trim.c \
unicodeio.c unistr/u8-uctomb.c unistr/u8-uctomb-aux.c \ unicodeio.h unicodeio.c unistr/u8-uctomb.c \
uniwidth/width.c verify.h verror.h verror.c version-etc.h \ unistr/u8-uctomb-aux.c uniwidth/width.c verify.h verror.h \
version-etc.c version-etc-fsf.c xalloc-die.c xfreopen.c \ verror.c version-etc.h version-etc.c version-etc-fsf.c \
xfreopen.h xgethostname.h xgethostname.c xmemcoll.h xmemcoll.c \ xalloc-die.c xfreopen.c xfreopen.h xgethostname.h \
xprintf.h xprintf.c xsize.h xstriconv.h xstriconv.c xstrndup.h \ xgethostname.c xmemcoll.h xmemcoll.c xprintf.h xprintf.c \
xstrndup.c xstrtoimax.c xstrtoumax.c xvasprintf.h xvasprintf.c \ xsize.h xstriconv.h xstriconv.c xstrndup.h xstrndup.c \
xstrtoimax.c xstrtoumax.c xvasprintf.h xvasprintf.c \
xasprintf.c buffer-lcm.c buffer-lcm.h xmemxfrm.c xmemxfrm.h xasprintf.c buffer-lcm.c buffer-lcm.h xmemxfrm.c xmemxfrm.h
libcoreutils_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@ $(LIBOBJS) libcoreutils_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@ $(LIBOBJS)
libcoreutils_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@ $(LIBOBJS) libcoreutils_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@ $(LIBOBJS)
@ -1161,40 +1212,41 @@ EXTRA_libcoreutils_a_SOURCES = acl_entries.c alloca.c argmatch.c \
stripslash.c dup2.c error.c euidaccess.c exclude.c exitfail.c \ stripslash.c dup2.c error.c euidaccess.c exclude.c exitfail.c \
fchdir.c fclose.c creat-safer.c open-safer.c fflush.c \ fchdir.c fclose.c creat-safer.c open-safer.c fflush.c \
file-type.c fileblocks.c filemode.c filenamecat.c fnmatch.c \ file-type.c fileblocks.c filemode.c filenamecat.c fnmatch.c \
fnmatch_loop.c fopen-safer.c fpending.c fprintftime.c frexp.c \ fnmatch_loop.c fopen-safer.c fpending.c fprintftime.c fpurge.c \
frexp.c frexpl.c fseeko.c fsusage.c ftello.c ftruncate.c \ frexp.c frexp.c frexpl.c fseeko.c fsusage.c ftello.c \
fts-cycle.c fts.c gai_strerror.c getaddrinfo.c getcwd.c \ ftruncate.c fts-cycle.c fts.c gai_strerror.c getaddrinfo.c \
getdelim.c getgroups.c gethostname.c gethrxtime.c getline.c \ getcwd.c getdelim.c getgroups.c gethostname.c gethrxtime.c \
getloadavg.c getndelim2.c getopt.c getopt1.c getpagesize.c \ getline.c getloadavg.c getndelim2.c getopt.c getopt1.c \
getpass.c gettime.c gettimeofday.c getugroups.c getusershell.c \ getpagesize.c getpass.c gettime.c gettimeofday.c getugroups.c \
group-member.c hard-locale.c hash.c human.c i-ring.c \ getusershell.c group-member.c hard-locale.c hash.c human.c \
iconv_open.c idcache.c inet_ntop.c imaxtostr.c inttostr.c \ i-ring.c iconv_open.c idcache.c inet_ntop.c imaxtostr.c \
offtostr.c uinttostr.c umaxtostr.c isapipe.c isnan.c isnand.c \ inttostr.c offtostr.c uinttostr.c umaxtostr.c isapipe.c \
isnan.c isnanf.c isnan.c isnanl.c lchown.c long-options.c \ isnan.c isnand.c isnan.c isnanf.c isnan.c isnanl.c lchown.c \
lseek.c lstat.c malloc.c malloc.c mbrlen.c mbrtowc.c mbsinit.c \ long-options.c lseek.c lstat.c malloc.c malloc.c mbrlen.c \
mbsrtowcs-state.c mbsrtowcs.c memcasecmp.c memchr.c memcmp.c \ mbrtowc.c mbsinit.c mbsrtowcs-state.c mbsrtowcs.c memcasecmp.c \
memcoll.c memcpy.c memmove.c mempcpy.c memrchr.c memset.c \ memchr.c memcmp.c memcoll.c memcpy.c memmove.c mempcpy.c \
mgetgroups.c mkancesdirs.c mkdir.c dirchownmod.c mkdir-p.c \ memrchr.c memset.c mgetgroups.c mkancesdirs.c mkdir.c \
mkstemp.c mktime.c modechange.c mountlist.c mpsort.c \ dirchownmod.c mkdir-p.c mkstemp.c mktime.c modechange.c \
nanosleep.c obstack.c open.c at-func.c fchmodat.c fchownat.c \ mountlist.c mpsort.c nanosleep.c obstack.c open.c at-func.c \
fstatat.c mkdirat.c openat-proc.c openat.c physmem.c posixtm.c \ fchmodat.c fchownat.c fstatat.c mkdirat.c openat-proc.c \
posixver.c printf-frexp.c putenv.c quote.c quotearg.c raise.c \ openat.c physmem.c posixtm.c posixver.c printf-frexp.c \
readlink.c readtokens.c readutmp.c realloc.c realloc.c \ putenv.c quote.c quotearg.c raise.c readlink.c readtokens.c \
regcomp.c regex.c regex_internal.c regexec.c rename.c \ readutmp.c realloc.c realloc.c regcomp.c regex.c \
rename-dest-slash.c rmdir.c root-dev-ino.c rpmatch.c \ regex_internal.c regexec.c rename.c rename-dest-slash.c \
safe-read.c safe-write.c same.c save-cwd.c savedir.c select.c \ rmdir.c root-dev-ino.c rpmatch.c safe-read.c safe-write.c \
selinux-at.c setenv.c settime.c sig2str.c sigaction.c \ same.c save-cwd.c savedir.c select.c selinux-at.c setenv.c \
signbitd.c signbitf.c signbitl.c sigprocmask.c snprintf.c \ settime.c sig2str.c sigaction.c signbitd.c signbitf.c \
stdio-write.c mkstemp-safer.c stpcpy.c stpncpy.c strcspn.c \ signbitl.c sigprocmask.c snprintf.c stdio-write.c \
strdup.c strdup.c strerror.c strftime.c strndup.c strnlen.c \ mkstemp-safer.c stpcpy.c stpncpy.c strcspn.c strdup.c strdup.c \
strpbrk.c strtod.c strtoimax.c strtol.c strtoll.c strtoul.c \ strerror.c strftime.c strndup.c strnlen.c strpbrk.c strstr.c \
strtoull.c strtoumax.c strverscmp.c tempname.c time_r.c \ strtod.c strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
dup-safer.c fd-safer.c pipe-safer.c unlinkdir.c unsetenv.c \ strtoumax.c strverscmp.c tempname.c time_r.c dup-safer.c \
userspec.c utimecmp.c utimens.c asnprintf.c printf-args.c \ fd-safer.c pipe-safer.c unlinkdir.c unsetenv.c userspec.c \
printf-parse.c vasnprintf.c asprintf.c vasprintf.c vfprintf.c \ utimecmp.c utimens.c asnprintf.c printf-args.c printf-parse.c \
vprintf.c wcrtomb.c wcwidth.c write.c write-any-file.c \ vasnprintf.c asprintf.c vasprintf.c vfprintf.c vprintf.c \
xmalloc.c xgetcwd.c xnanosleep.c xstrtod.c xstrtol-error.c \ wcrtomb.c wcwidth.c write.c write-any-file.c xmalloc.c \
xstrtol.c xstrtoul.c xstrtod.c xstrtold.c yesno.c xgetcwd.c xnanosleep.c xstrtod.c xstrtol-error.c xstrtol.c \
xstrtoul.c xstrtod.c xstrtold.c yesno.c
GPERF = gperf GPERF = gperf
LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
charset_alias = $(DESTDIR)$(libdir)/charset.alias charset_alias = $(DESTDIR)$(libdir)/charset.alias
@ -1245,7 +1297,7 @@ stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
@rm -f stamp-h1 @rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status lib/config.h cd $(top_builddir) && $(SHELL) ./config.status lib/config.h
$(srcdir)/config.hin: $(am__configure_deps) $(srcdir)/config.hin: $(am__configure_deps)
$(am__cd) $(top_srcdir) && $(AUTOHEADER) ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
rm -f stamp-h1 rm -f stamp-h1
touch $@ touch $@
@ -1521,6 +1573,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signbitl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signbitl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigprocmask.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigprocmask.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockets.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdio-write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdio-write.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpcpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpcpy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpncpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpncpy.Po@am__quote@
@ -1534,6 +1587,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strpbrk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strpbrk.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strstr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtod.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtod.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoimax.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoimax.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtol.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtol.Po@am__quote@
@ -2237,7 +2291,7 @@ math.h: math.in.h
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \ sed -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''NEXT_MATH_H''@|$(NEXT_MATH_H)|g' \ -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
-e 's|@''GNULIB_CEILF''@|$(GNULIB_CEILF)|g' \ -e 's|@''GNULIB_CEILF''@|$(GNULIB_CEILF)|g' \
-e 's|@''GNULIB_CEILL''@|$(GNULIB_CEILL)|g' \ -e 's|@''GNULIB_CEILL''@|$(GNULIB_CEILL)|g' \
-e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \ -e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \
@ -2386,6 +2440,20 @@ stdbool.h: stdbool.in.h
} > $@-t } > $@-t
mv $@-t $@ mv $@-t $@
# We need the following in order to create <stddef.h> when the system
# doesn't have one that works with the given compiler.
stddef.h: stddef.in.h
rm -f $@-t $@
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
-e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
-e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
< $(srcdir)/stddef.in.h; \
} > $@-t
mv $@-t $@
# We need the following in order to create <stdint.h> when the system # We need the following in order to create <stdint.h> when the system
# doesn't have one that works with the given compiler. # doesn't have one that works with the given compiler.
stdint.h: stdint.in.h stdint.h: stdint.in.h
@ -2451,6 +2519,7 @@ stdio.h: stdio.in.h
-e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \ -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
-e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \ -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
-e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \ -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
-e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
-e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \ -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
-e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \ -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
-e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \ -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
@ -2488,6 +2557,8 @@ stdio.h: stdio.in.h
-e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
-e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
-e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
-e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
-e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
-e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
-e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
-e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
@ -2570,6 +2641,7 @@ string.h: string.in.h
-e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \ -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
-e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \ -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
-e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \ -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
-e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
-e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \ -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
-e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
-e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
@ -2606,6 +2678,7 @@ string.h: string.in.h
-e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \ -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
-e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
-e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
-e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
-e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
-e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
-e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
@ -2661,6 +2734,8 @@ sys/socket.h: sys_socket.in.h
-e 's|@''GNULIB_SHUTDOWN''@|$(GNULIB_SHUTDOWN)|g' \ -e 's|@''GNULIB_SHUTDOWN''@|$(GNULIB_SHUTDOWN)|g' \
-e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \
-e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \ -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \
-e 's|@''HAVE_STRUCT_SOCKADDR_STORAGE''@|$(HAVE_STRUCT_SOCKADDR_STORAGE)|g' \
-e 's|@''HAVE_SA_FAMILY_T''@|$(HAVE_SA_FAMILY_T)|g' \
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
< $(srcdir)/sys_socket.in.h; \ < $(srcdir)/sys_socket.in.h; \
} > $@-t } > $@-t
@ -2711,6 +2786,7 @@ time.h: time.in.h
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's|@NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
-e 's|@REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
-e 's|@REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
-e 's|@REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
-e 's|@REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \ -e 's|@REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \
-e 's|@REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
@ -2749,6 +2825,7 @@ unistd.h: unistd.in.h
-e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \ -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
-e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
-e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
-e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
-e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \ -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
-e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \ -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
-e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
@ -2769,6 +2846,7 @@ unistd.h: unistd.in.h
-e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
-e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
-e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
-e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
-e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
-e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
-e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
@ -2776,6 +2854,7 @@ unistd.h: unistd.in.h
-e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
-e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
-e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
-e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
< $(srcdir)/unistd.in.h; \ < $(srcdir)/unistd.in.h; \
} > $@-t } > $@-t

View File

@ -1,40 +0,0 @@
Things to do to hash.c:
Always use curly braces around statements in if/else/while/do/etc.
that span more than a line -- even around multiline simple statements
or single-line simple statements preceded by a comment line.
Never have lines longer than 80 chars.
Remove ^L characters. We don't want/need such crutches.
Get a good (smart) pagination filter. I have one (a perl script)
that usually does a decent job for me -- I called it something
like stdc-print and think I sent you an early verison.
I don't like the name `cursor'. I much prefer short names
like `p' for index variables. I doubt I'll change all of them,
but thought you should know why some will probably end up changing.
#define USE_OBSTACK somewhere
Fix this comment. Depending on system and application...
Mention fragmentation.
+#if USE_OBSTACK
+ /* Whenever obstacks are used, it is possible to allocate all overflowed
+ entries into a single stack, so they all can be freed in a single
+ operation. It is not clear if the speedup is worth the trouble. */
+ struct obstack entry_stack;
+#endif
assert (bucket_limit - bucket == n_buckets) ?
remove.c: s/done/successful or ok
-----
Copyright (C) 1998 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice
and this notice are preserved.

View File

@ -0,0 +1,56 @@
/* -*- buffer-read-only: t -*- vi: set ro: */
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
#line 1
/* Determine alignment of types.
Copyright (C) 2003-2004, 2006, 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, 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, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
#ifndef _ALIGNOF_H
#define _ALIGNOF_H
#include <stddef.h>
/* Determine the alignment of a structure slot (field) of a given type,
at compile time. Note that the result depends on the ABI.
Note: The result cannot be used as a value for an 'enum' constant,
due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */
#if defined __cplusplus
template <class type> struct alignof_helper { char __slot1; type __slot2; };
# define alignof_slot(type) offsetof (alignof_helper<type>, __slot2)
#else
# define alignof_slot(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
#endif
/* Determine the good alignment of a object of the given type at compile time.
Note that this is not necessarily the same as alignof_slot(type).
For example, with GNU C on x86 platforms: alignof_type(double) = 8, but
- when -malign-double is not specified: alignof_slot(double) = 4,
- when -malign-double is specified: alignof_slot(double) = 8.
Note: The result cannot be used as a value for an 'enum' constant,
due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */
#if defined __GNUC__
# define alignof_type __alignof__
#else
# define alignof_type alignof_slot
#endif
/* alignof is an alias for alignof_slot semantics, since that's what most
callers need.
Note: The result cannot be used as a value for an 'enum' constant,
due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */
#define alignof alignof_slot
#endif /* _ALIGNOF_H */

View File

@ -1,5 +1,5 @@
/* Iterate over arguments from argv or --files0-from=FILE /* Iterate over arguments from argv or --files0-from=FILE
Copyright (C) 2008 Free Software Foundation, Inc. Copyright (C) 2008-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -109,9 +109,3 @@ argv_iter_free (struct argv_iterator *ai)
free (ai->tok); free (ai->tok);
free (ai); free (ai);
} }
/*
* Local variables:
* indent-tabs-mode: nil
* End:
*/

View File

@ -0,0 +1,126 @@
/* bitrotate.h - Rotate bits in integers
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/>. */
/* Written by Simon Josefsson <simon@josefsson.org>, 2008. */
#ifndef _GL_BITROTATE_H
#define _GL_BITROTATE_H
#include <limits.h>
#include <stdint.h>
#include <sys/types.h>
#ifdef UINT64_MAX
/* Given an unsigned 64-bit argument X, return the value corresponding
to rotating the bits N steps to the left. N must be between 1 and
63 inclusive. */
static inline uint64_t
rotl64 (uint64_t x, int n)
{
return ((x << n) | (x >> (64 - n))) & UINT64_MAX;
}
/* Given an unsigned 64-bit argument X, return the value corresponding
to rotating the bits N steps to the right. N must be between 1 to
63 inclusive.*/
static inline uint64_t
rotr64 (uint64_t x, int n)
{
return ((x >> n) | (x << (64 - n))) & UINT64_MAX;
}
#endif
/* Given an unsigned 32-bit argument X, return the value corresponding
to rotating the bits N steps to the left. N must be between 1 and
31 inclusive. */
static inline uint32_t
rotl32 (uint32_t x, int n)
{
return ((x << n) | (x >> (32 - n))) & UINT32_MAX;
}
/* Given an unsigned 32-bit argument X, return the value corresponding
to rotating the bits N steps to the right. N must be between 1 to
31 inclusive.*/
static inline uint32_t
rotr32 (uint32_t x, int n)
{
return ((x >> n) | (x << (32 - n))) & UINT32_MAX;
}
/* Given a size_t argument X, return the value corresponding
to rotating the bits N steps to the left. N must be between 1 and
(CHAR_BIT * sizeof (size_t) - 1) inclusive. */
static inline size_t
rotl_sz (size_t x, int n)
{
return ((x << n) | (x >> ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX;
}
/* Given a size_t argument X, return the value corresponding
to rotating the bits N steps to the right. N must be between 1 to
(CHAR_BIT * sizeof (size_t) - 1) inclusive. */
static inline size_t
rotr_sz (size_t x, int n)
{
return ((x >> n) | (x << ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX;
}
/* Given an unsigned 16-bit argument X, return the value corresponding
to rotating the bits N steps to the left. N must be between 1 to
15 inclusive, but on most relevant targets N can also be 0 and 16
because 'int' is at least 32 bits and the arguments must widen
before shifting. */
static inline uint16_t
rotl16 (uint16_t x, int n)
{
return ((x << n) | (x >> (16 - n))) & UINT16_MAX;
}
/* Given an unsigned 16-bit argument X, return the value corresponding
to rotating the bits N steps to the right. N must be in 1 to 15
inclusive, but on most relevant targets N can also be 0 and 16
because 'int' is at least 32 bits and the arguments must widen
before shifting. */
static inline uint16_t
rotr16 (uint16_t x, int n)
{
return ((x >> n) | (x << (16 - n))) & UINT16_MAX;
}
/* Given an unsigned 8-bit argument X, return the value corresponding
to rotating the bits N steps to the left. N must be between 1 to 7
inclusive, but on most relevant targets N can also be 0 and 8
because 'int' is at least 32 bits and the arguments must widen
before shifting. */
static inline uint8_t
rotl8 (uint8_t x, int n)
{
return ((x << n) | (x >> (8 - n))) & UINT8_MAX;
}
/* Given an unsigned 8-bit argument X, return the value corresponding
to rotating the bits N steps to the right. N must be in 1 to 7
inclusive, but on most relevant targets N can also be 0 and 8
because 'int' is at least 32 bits and the arguments must widen
before shifting. */
static inline uint8_t
rotr8 (uint8_t x, int n)
{
return ((x >> n) | (x << (8 - n))) & UINT8_MAX;
}
#endif /* _GL_BITROTATE_H */

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -167,6 +167,9 @@
/* Define to 1 when using the gnulib module fts. */ /* Define to 1 when using the gnulib module fts. */
#undef GNULIB_FTS #undef GNULIB_FTS
/* Define to 1 when using the gnulib module getopt-gnu. */
#undef GNULIB_GETOPT_GNU
/* Define to 1 when using the gnulib module ioctl. */ /* Define to 1 when using the gnulib module ioctl. */
#undef GNULIB_IOCTL #undef GNULIB_IOCTL
@ -356,6 +359,10 @@
*/ */
#undef HAVE_DCGETTEXT #undef HAVE_DCGETTEXT
/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
*/
#undef HAVE_DECL_ALARM
/* Define to 1 if you have the declaration of `canonicalize_file_name', and to /* Define to 1 if you have the declaration of `canonicalize_file_name', and to
0 if you don't. */ 0 if you don't. */
#undef HAVE_DECL_CANONICALIZE_FILE_NAME #undef HAVE_DECL_CANONICALIZE_FILE_NAME
@ -843,6 +850,12 @@
*/ */
#undef HAVE_INLINE #undef HAVE_INLINE
/* Define to 1 if you have usable inotify support. */
#undef HAVE_INOTIFY
/* Define to 1 if you have the `inotify_init' function. */
#undef HAVE_INOTIFY_INIT
/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */ /* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
#undef HAVE_INTMAX_T #undef HAVE_INTMAX_T
@ -960,6 +973,10 @@
/* Define if the 'malloc' function is POSIX compliant. */ /* Define if the 'malloc' function is POSIX compliant. */
#undef HAVE_MALLOC_POSIX #undef HAVE_MALLOC_POSIX
/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
config.h and <sys/mman.h>. */
#undef HAVE_MAP_ANONYMOUS
/* Define to 1 if you have the `matchpathcon_init_prefix' function. */ /* Define to 1 if you have the `matchpathcon_init_prefix' function. */
#undef HAVE_MATCHPATHCON_INIT_PREFIX #undef HAVE_MATCHPATHCON_INIT_PREFIX
@ -1014,6 +1031,9 @@
/* Define to 1 if you have the <mntent.h> header file. */ /* Define to 1 if you have the <mntent.h> header file. */
#undef HAVE_MNTENT_H #undef HAVE_MNTENT_H
/* Define to 1 if you have the `mprotect' function. */
#undef HAVE_MPROTECT
/* Define to 1 if you have the `nanotime' function. */ /* Define to 1 if you have the `nanotime' function. */
#undef HAVE_NANOTIME #undef HAVE_NANOTIME
@ -1111,6 +1131,9 @@
/* Define to 1 if you have run the test for working tzset. */ /* Define to 1 if you have run the test for working tzset. */
#undef HAVE_RUN_TZSET_TEST #undef HAVE_RUN_TZSET_TEST
/* Define to 1 if the system has the type `sa_family_t'. */
#undef HAVE_SA_FAMILY_T
/* Define to 1 if you have the <search.h> header file. */ /* Define to 1 if you have the <search.h> header file. */
#undef HAVE_SEARCH_H #undef HAVE_SEARCH_H
@ -1183,6 +1206,9 @@
/* Define to 1 if stdbool.h conforms to C99. */ /* Define to 1 if stdbool.h conforms to C99. */
#undef HAVE_STDBOOL_H #undef HAVE_STDBOOL_H
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
/* Define to 1 if you have the <stdint.h> header file. */ /* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H #undef HAVE_STDINT_H
@ -1264,137 +1290,140 @@
headers. */ headers. */
#undef HAVE_STRUCT_DIRENT_D_TYPE #undef HAVE_STRUCT_DIRENT_D_TYPE
/* Define to 1 if `struct fsstat' is a member of `f_fstypename'. */ /* Define to 1 if `f_fstypename' is a member of `struct fsstat'. */
#undef HAVE_STRUCT_FSSTAT_F_FSTYPENAME #undef HAVE_STRUCT_FSSTAT_F_FSTYPENAME
/* Define to 1 if `struct nlist' is a member of `n_un.n_name'. */ /* Define to 1 if `n_un.n_name' is a member of `struct nlist'. */
#undef HAVE_STRUCT_NLIST_N_UN_N_NAME #undef HAVE_STRUCT_NLIST_N_UN_N_NAME
/* Define to 1 if the system has the type `struct random_data'. */ /* Define to 1 if the system has the type `struct random_data'. */
#undef HAVE_STRUCT_RANDOM_DATA #undef HAVE_STRUCT_RANDOM_DATA
/* Define to 1 if `struct sigaction' is a member of `sa_sigaction'. */ /* Define to 1 if `sa_sigaction' is a member of `struct sigaction'. */
#undef HAVE_STRUCT_SIGACTION_SA_SIGACTION #undef HAVE_STRUCT_SIGACTION_SA_SIGACTION
/* Define to 1 if `struct sockaddr' is a member of `sa_len'. */ /* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
#undef HAVE_STRUCT_SOCKADDR_SA_LEN #undef HAVE_STRUCT_SOCKADDR_SA_LEN
/* Define to 1 if `struct spwd' is a member of `sp_pwdp'. */ /* Define to 1 if the system has the type `struct sockaddr_storage'. */
#undef HAVE_STRUCT_SOCKADDR_STORAGE
/* Define to 1 if `sp_pwdp' is a member of `struct spwd'. */
#undef HAVE_STRUCT_SPWD_SP_PWDP #undef HAVE_STRUCT_SPWD_SP_PWDP
/* Define to 1 if `struct statfs' is a member of `f_fstypename'. */ /* Define to 1 if `f_fstypename' is a member of `struct statfs'. */
#undef HAVE_STRUCT_STATFS_F_FSTYPENAME #undef HAVE_STRUCT_STATFS_F_FSTYPENAME
/* Define to 1 if `struct statfs' is a member of `f_namelen'. */ /* Define to 1 if `f_namelen' is a member of `struct statfs'. */
#undef HAVE_STRUCT_STATFS_F_NAMELEN #undef HAVE_STRUCT_STATFS_F_NAMELEN
/* Define to 1 if `struct statfs' is a member of `f_type'. */ /* Define to 1 if `f_type' is a member of `struct statfs'. */
#undef HAVE_STRUCT_STATFS_F_TYPE #undef HAVE_STRUCT_STATFS_F_TYPE
/* Define to 1 if `struct statvfs' is a member of `f_basetype'. */ /* Define to 1 if `f_basetype' is a member of `struct statvfs'. */
#undef HAVE_STRUCT_STATVFS_F_BASETYPE #undef HAVE_STRUCT_STATVFS_F_BASETYPE
/* Define to 1 if `struct statvfs' is a member of `f_fstypename'. */ /* Define to 1 if `f_fstypename' is a member of `struct statvfs'. */
#undef HAVE_STRUCT_STATVFS_F_FSTYPENAME #undef HAVE_STRUCT_STATVFS_F_FSTYPENAME
/* Define to 1 if `struct statvfs' is a member of `f_namemax'. */ /* Define to 1 if `f_namemax' is a member of `struct statvfs'. */
#undef HAVE_STRUCT_STATVFS_F_NAMEMAX #undef HAVE_STRUCT_STATVFS_F_NAMEMAX
/* Define to 1 if `struct statvfs' is a member of `f_type'. */ /* Define to 1 if `f_type' is a member of `struct statvfs'. */
#undef HAVE_STRUCT_STATVFS_F_TYPE #undef HAVE_STRUCT_STATVFS_F_TYPE
/* Define to 1 if `struct stat' is a member of `st_atimensec'. */ /* Define to 1 if `st_atimensec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIMENSEC #undef HAVE_STRUCT_STAT_ST_ATIMENSEC
/* Define to 1 if `struct stat' is a member of `st_atimespec.tv_nsec'. */ /* Define to 1 if `st_atimespec.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
/* Define to 1 if `struct stat' is a member of `st_atim.st__tim.tv_nsec'. */ /* Define to 1 if `st_atim.st__tim.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC #undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
/* Define to 1 if `struct stat' is a member of `st_atim.tv_nsec'. */ /* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC #undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
/* Define to 1 if `struct stat' is a member of `st_author'. */ /* Define to 1 if `st_author' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_AUTHOR #undef HAVE_STRUCT_STAT_ST_AUTHOR
/* Define to 1 if `struct stat' is a member of `st_birthtimensec'. */ /* Define to 1 if `st_birthtimensec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC #undef HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC
/* Define to 1 if `struct stat' is a member of `st_birthtimespec.tv_nsec'. */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC
/* Define to 1 if `struct stat' is a member of `st_birthtim.tv_nsec'. */ /* Define to 1 if `st_birthtim.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC #undef HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC
/* Define to 1 if `struct stat' is a member of `st_blocks'. */ /* Define to 1 if `st_blocks' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLOCKS #undef HAVE_STRUCT_STAT_ST_BLOCKS
/* Define to 1 if `struct tm' is a member of `tm_zone'. */ /* Define to 1 if `tm_zone' is a member of `struct tm'. */
#undef HAVE_STRUCT_TM_TM_ZONE #undef HAVE_STRUCT_TM_TM_ZONE
/* Define if struct utimbuf is declared -- usually in <utime.h>. Some systems /* Define if struct utimbuf is declared -- usually in <utime.h>. Some systems
have utime.h but don't declare the struct anywhere. */ have utime.h but don't declare the struct anywhere. */
#undef HAVE_STRUCT_UTIMBUF #undef HAVE_STRUCT_UTIMBUF
/* Define to 1 if `struct utmpx' is a member of `ut_exit'. */ /* Define to 1 if `ut_exit' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_EXIT #undef HAVE_STRUCT_UTMPX_UT_EXIT
/* Define to 1 if `struct utmpx' is a member of `ut_exit.e_exit'. */ /* Define to 1 if `ut_exit.e_exit' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT
/* Define to 1 if `struct utmpx' is a member of `ut_exit.e_termination'. */ /* Define to 1 if `ut_exit.e_termination' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION
/* Define to 1 if `struct utmpx' is a member of `ut_exit.ut_exit'. */ /* Define to 1 if `ut_exit.ut_exit' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT
/* Define to 1 if `struct utmpx' is a member of `ut_exit.ut_termination'. */ /* Define to 1 if `ut_exit.ut_termination' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION
/* Define to 1 if `struct utmpx' is a member of `ut_id'. */ /* Define to 1 if `ut_id' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_ID #undef HAVE_STRUCT_UTMPX_UT_ID
/* Define to 1 if `struct utmpx' is a member of `ut_name'. */ /* Define to 1 if `ut_name' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_NAME #undef HAVE_STRUCT_UTMPX_UT_NAME
/* Define to 1 if `struct utmpx' is a member of `ut_pid'. */ /* Define to 1 if `ut_pid' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_PID #undef HAVE_STRUCT_UTMPX_UT_PID
/* Define to 1 if `struct utmpx' is a member of `ut_type'. */ /* Define to 1 if `ut_type' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_TYPE #undef HAVE_STRUCT_UTMPX_UT_TYPE
/* Define to 1 if `struct utmpx' is a member of `ut_user'. */ /* Define to 1 if `ut_user' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_USER #undef HAVE_STRUCT_UTMPX_UT_USER
/* Define to 1 if `struct utmp' is a member of `ut_exit'. */ /* Define to 1 if `ut_exit' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_EXIT #undef HAVE_STRUCT_UTMP_UT_EXIT
/* Define to 1 if `struct utmp' is a member of `ut_exit.e_exit'. */ /* Define to 1 if `ut_exit.e_exit' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT #undef HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT
/* Define to 1 if `struct utmp' is a member of `ut_exit.e_termination'. */ /* Define to 1 if `ut_exit.e_termination' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION #undef HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION
/* Define to 1 if `struct utmp' is a member of `ut_exit.ut_exit'. */ /* Define to 1 if `ut_exit.ut_exit' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT
/* Define to 1 if `struct utmp' is a member of `ut_exit.ut_termination'. */ /* Define to 1 if `ut_exit.ut_termination' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION
/* Define to 1 if `struct utmp' is a member of `ut_id'. */ /* Define to 1 if `ut_id' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_ID #undef HAVE_STRUCT_UTMP_UT_ID
/* Define to 1 if `struct utmp' is a member of `ut_name'. */ /* Define to 1 if `ut_name' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_NAME #undef HAVE_STRUCT_UTMP_UT_NAME
/* Define to 1 if `struct utmp' is a member of `ut_pid'. */ /* Define to 1 if `ut_pid' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_PID #undef HAVE_STRUCT_UTMP_UT_PID
/* Define to 1 if `struct utmp' is a member of `ut_type'. */ /* Define to 1 if `ut_type' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_TYPE #undef HAVE_STRUCT_UTMP_UT_TYPE
/* Define to 1 if `struct utmp' is a member of `ut_user'. */ /* Define to 1 if `ut_user' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_USER #undef HAVE_STRUCT_UTMP_UT_USER
/* Define to 1 if you have the `strverscmp' function. */ /* Define to 1 if you have the `strverscmp' function. */
@ -1452,6 +1481,9 @@
/* Define to 1 if you have the <sys/loadavg.h> header file. */ /* Define to 1 if you have the <sys/loadavg.h> header file. */
#undef HAVE_SYS_LOADAVG_H #undef HAVE_SYS_LOADAVG_H
/* Define to 1 if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H
/* Define to 1 if you have the <sys/mntent.h> header file. */ /* Define to 1 if you have the <sys/mntent.h> header file. */
#undef HAVE_SYS_MNTENT_H #undef HAVE_SYS_MNTENT_H
@ -1680,6 +1712,9 @@
/* Define to 1 if you have the `__fsetlocking' function. */ /* Define to 1 if you have the `__fsetlocking' function. */
#undef HAVE___FSETLOCKING #undef HAVE___FSETLOCKING
/* Define HOST_NAME_MAX when <limits.h> does not define it. */
#undef HOST_NAME_MAX
/* The host operating system. */ /* The host operating system. */
#undef HOST_OPERATING_SYSTEM #undef HOST_OPERATING_SYSTEM
@ -1734,6 +1769,9 @@
/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */ /* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
#undef MALLOC_0_IS_NONNULL #undef MALLOC_0_IS_NONNULL
/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
#undef MAP_ANONYMOUS
/* Define if the mbrtowc function has the NULL string argument bug. */ /* Define if the mbrtowc function has the NULL string argument bug. */
#undef MBRTOWC_NULL_ARG_BUG #undef MBRTOWC_NULL_ARG_BUG
@ -1850,6 +1888,9 @@
/* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* Define to 1 if your C compiler doesn't accept -c and -o together. */
#undef NO_MINUS_C_MINUS_O #undef NO_MINUS_C_MINUS_O
/* Define to 1 if the nlist n_name member is a pointer */
#undef N_NAME_POINTER
/* Define to 1 if open() fails to recognize a trailing slash. */ /* Define to 1 if open() fails to recognize a trailing slash. */
#undef OPEN_TRAILING_SLASH_BUG #undef OPEN_TRAILING_SLASH_BUG
@ -1862,6 +1903,15 @@
/* Define to the full name of this package. */ /* Define to the full name of this package. */
#undef PACKAGE_NAME #undef PACKAGE_NAME
/* String identifying the packager of this software */
#undef PACKAGE_PACKAGER
/* Packager info for bug reports (URL/e-mail/...) */
#undef PACKAGE_PACKAGER_BUG_REPORTS
/* Packager-specific version information */
#undef PACKAGE_PACKAGER_VERSION
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#undef PACKAGE_STRING #undef PACKAGE_STRING
@ -1890,6 +1940,10 @@
/* Define if <inttypes.h> exists and defines unusable PRI* macros. */ /* Define if <inttypes.h> exists and defines unusable PRI* macros. */
#undef PRI_MACROS_BROKEN #undef PRI_MACROS_BROKEN
/* Define to the type that is the result of default argument promotions of
type mode_t. */
#undef PROMOTED_MODE_T
/* Define to 1 if the C compiler supports function prototypes. */ /* Define to 1 if the C compiler supports function prototypes. */
#undef PROTOTYPES #undef PROTOTYPES
@ -1905,6 +1959,9 @@
like the one from SunOS 4.1.1_U1. */ like the one from SunOS 4.1.1_U1. */
#undef RENAME_TRAILING_SLASH_BUG #undef RENAME_TRAILING_SLASH_BUG
/* Define to 1 if dup2 returns 0 instead of the target fd. */
#undef REPLACE_DUP2
/* Define this to 1 if strerror is broken. */ /* Define this to 1 if strerror is broken. */
#undef REPLACE_STRERROR #undef REPLACE_STRERROR
@ -1928,7 +1985,9 @@
/* Define as the maximum value of type 'size_t', if the system doesn't define /* Define as the maximum value of type 'size_t', if the system doesn't define
it. */ it. */
#undef SIZE_MAX #ifndef SIZE_MAX
# undef SIZE_MAX
#endif
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
'size_t'. */ 'size_t'. */
@ -2191,9 +2250,6 @@
/* Define to `unsigned int' if <sys/types.h> does not define. */ /* Define to `unsigned int' if <sys/types.h> does not define. */
#undef minor_t #undef minor_t
/* Define to rpl_mktime if the replacement function should be used. */
#undef mktime
/* Define to `int' if <sys/types.h> does not define. */ /* Define to `int' if <sys/types.h> does not define. */
#undef mode_t #undef mode_t

View File

@ -1,6 +1,7 @@
/* Duplicate an open file descriptor to a specified file descriptor. /* Duplicate an open file descriptor to a specified file descriptor.
Copyright (C) 1999, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 1999, 2004, 2005, 2006, 2007, 2009 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -25,7 +26,45 @@
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#ifndef F_DUPFD #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
#endif
#if REPLACE_DUP2
# undef dup2
int
rpl_dup2 (int fd, int desired_fd)
{
int result;
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
/* If fd is closed, mingw hangs on dup2 (fd, fd). If fd is open,
dup2 (fd, fd) returns 0, but all further attempts to use fd in
future dup2 calls will hang. */
if (fd == desired_fd)
{
if ((HANDLE) _get_osfhandle (fd) == INVALID_HANDLE_VALUE)
{
errno = EBADF;
return -1;
}
return fd;
}
# endif
result = dup2 (fd, desired_fd);
if (result == 0)
result = desired_fd;
return result;
}
#else /* !REPLACE_DUP2 */
/* On older platforms, dup2 did not exist. */
# ifndef F_DUPFD
static int static int
dupfd (int fd, int desired_fd) dupfd (int fd, int desired_fd)
{ {
@ -41,7 +80,7 @@ dupfd (int fd, int desired_fd)
return r; return r;
} }
} }
#endif # endif
int int
dup2 (int fd, int desired_fd) dup2 (int fd, int desired_fd)
@ -49,9 +88,10 @@ dup2 (int fd, int desired_fd)
if (fd == desired_fd) if (fd == desired_fd)
return fd; return fd;
close (desired_fd); close (desired_fd);
#ifdef F_DUPFD # ifdef F_DUPFD
return fcntl (fd, F_DUPFD, desired_fd); return fcntl (fd, F_DUPFD, desired_fd);
#else # else
return dupfd (fd, desired_fd); return dupfd (fd, desired_fd);
#endif # endif
} }
#endif /* !REPLACE_DUP2 */

View File

@ -3,7 +3,7 @@
#line 1 #line 1
/* A POSIX-like <errno.h>. /* A POSIX-like <errno.h>.
Copyright (C) 2008 Free Software Foundation, Inc. Copyright (C) 2008-2009 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -148,6 +148,11 @@
# define GNULIB_defined_ENOTSUP 1 # define GNULIB_defined_ENOTSUP 1
# endif # endif
# ifndef ESTALE
# define ESTALE 2009
# define GNULIB_defined_ESTALE 1
# endif
# ifndef ECANCELED # ifndef ECANCELED
# define ECANCELED 2008 # define ECANCELED 2008
# define GNULIB_defined_ECANCELED 1 # define GNULIB_defined_ECANCELED 1

View File

@ -1,5 +1,5 @@
/* Error handler for noninteractive utilities /* Error handler for noninteractive utilities
Copyright (C) 1990-1998, 2000-2007 Free Software Foundation, Inc. Copyright (C) 1990-1998, 2000-2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -85,6 +85,8 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
#else /* not _LIBC */ #else /* not _LIBC */
# include <fcntl.h>
# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
# ifndef HAVE_DECL_STRERROR_R # ifndef HAVE_DECL_STRERROR_R
"this configure-time declaration test was not run" "this configure-time declaration test was not run"
@ -236,6 +238,12 @@ error (int status, int errnum, const char *message, ...)
0); 0);
#endif #endif
#if !_LIBC && defined F_GETFL
/* POSIX states that fflush (stdout) after fclose is unspecified; it
is safe in glibc, but not on all other platforms. fflush (NULL)
is always defined, but too draconian. */
if (0 <= fcntl (1, F_GETFL))
#endif
fflush (stdout); fflush (stdout);
#ifdef _LIBC #ifdef _LIBC
_IO_flockfile (stderr); _IO_flockfile (stderr);
@ -295,6 +303,12 @@ error_at_line (int status, int errnum, const char *file_name,
0); 0);
#endif #endif
#if !_LIBC && defined F_GETFL
/* POSIX states that fflush (stdout) after fclose is unspecified; it
is safe in glibc, but not on all other platforms. fflush (NULL)
is always defined, but too draconian. */
if (0 <= fcntl (1, F_GETFL))
#endif
fflush (stdout); fflush (stdout);
#ifdef _LIBC #ifdef _LIBC
_IO_flockfile (stderr); _IO_flockfile (stderr);

View File

@ -2,7 +2,7 @@
This function is probably useful only for choosing whether to issue This function is probably useful only for choosing whether to issue
a prompt in an implementation of POSIX-specified rm. a prompt in an implementation of POSIX-specified rm.
Copyright (C) 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,7 +1,7 @@
/* exclude.c -- exclude file names /* exclude.c -- exclude file names
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003, Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003,
2004, 2005, 2006, 2007 Free Software Foundation, Inc. 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -16,7 +16,10 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Written by Paul Eggert <eggert@twinsun.com> */ /* Written by Paul Eggert <eggert@twinsun.com>
and Sergey Poznyakoff <gray@gnu.org>.
Thanks to Phil Proudman <phil@proudman51.freeserve.co.uk>
for improvement suggestions. */
#include <config.h> #include <config.h>
@ -30,6 +33,8 @@
#include <string.h> #include <string.h>
#include "exclude.h" #include "exclude.h"
#include "hash.h"
#include "mbuiter.h"
#include "fnmatch.h" #include "fnmatch.h"
#include "xalloc.h" #include "xalloc.h"
#include "verify.h" #include "verify.h"
@ -54,6 +59,14 @@ verify (((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS)
| FNM_CASEFOLD | FNM_EXTMATCH)) | FNM_CASEFOLD | FNM_EXTMATCH))
== 0); == 0);
/* Exclusion patterns are grouped into a singly-linked list of
"exclusion segments". Each segment represents a set of patterns
that can be matches using the same algorithm. Non-wildcard
patterns are kept in hash tables, to speed up searches. Wildcard
patterns are stored as arrays of patterns. */
/* An exclude pattern-options pair. The options are fnmatch options /* An exclude pattern-options pair. The options are fnmatch options
ORed with EXCLUDE_* options. */ ORed with EXCLUDE_* options. */
@ -63,15 +76,63 @@ struct patopts
int options; int options;
}; };
/* An exclude list, of pattern-options pairs. */ /* An array of pattern-options pairs. */
struct exclude struct exclude_pattern
{ {
struct patopts *exclude; struct patopts *exclude;
size_t exclude_alloc; size_t exclude_alloc;
size_t exclude_count; size_t exclude_count;
}; };
enum exclude_type
{
exclude_hash, /* a hash table of excluded names */
exclude_pattern /* an array of exclude patterns */
};
struct exclude_segment
{
struct exclude_segment *next; /* next segment in list */
enum exclude_type type; /* type of this segment */
int options; /* common options for this segment */
union
{
Hash_table *table; /* for type == exclude_hash */
struct exclude_pattern pat; /* for type == exclude_pattern */
} v;
};
/* The exclude structure keeps a singly-linked list of exclude segments */
struct exclude
{
struct exclude_segment *head, *tail;
};
/* Return true if str has wildcard characters */
bool
fnmatch_pattern_has_wildcards (const char *str, int options)
{
char *cset = "\\?*[]";
if (options & FNM_NOESCAPE)
cset++;
while (*str)
{
size_t n = strcspn (str, cset);
if (str[n] == 0)
break;
else if (str[n] == '\\')
{
str += n + 1;
if (*str)
str++;
}
else
return true;
}
return false;
}
/* Return a newly allocated and empty exclude list. */ /* Return a newly allocated and empty exclude list. */
struct exclude * struct exclude *
@ -80,12 +141,122 @@ new_exclude (void)
return xzalloc (sizeof *new_exclude ()); return xzalloc (sizeof *new_exclude ());
} }
/* Free the storage associated with an exclude list. */ /* Calculate the hash of string. */
static size_t
string_hasher (void const *data, size_t n_buckets)
{
char const *p = data;
return hash_string (p, n_buckets);
}
/* Ditto, for case-insensitive hashes */
static size_t
string_hasher_ci (void const *data, size_t n_buckets)
{
char const *p = data;
mbui_iterator_t iter;
size_t value = 0;
for (mbui_init (iter, p); mbui_avail (iter); mbui_advance (iter))
{
mbchar_t m = mbui_cur (iter);
wchar_t wc;
if (m.wc_valid)
wc = towlower (m.wc);
else
wc = *m.ptr;
value = (value * 31 + wc) % n_buckets;
}
return value;
}
/* compare two strings for equality */
static bool
string_compare (void const *data1, void const *data2)
{
char const *p1 = data1;
char const *p2 = data2;
return strcmp (p1, p2) == 0;
}
/* compare two strings for equality, case-insensitive */
static bool
string_compare_ci (void const *data1, void const *data2)
{
char const *p1 = data1;
char const *p2 = data2;
return mbscasecmp (p1, p2) == 0;
}
static void
string_free (void *data)
{
free (data);
}
/* Create new exclude segment of given TYPE and OPTIONS, and attach it
to the tail of list in EX */
struct exclude_segment *
new_exclude_segment (struct exclude *ex, enum exclude_type type, int options)
{
struct exclude_segment *sp = xzalloc (sizeof (struct exclude_segment));
sp->type = type;
sp->options = options;
switch (type)
{
case exclude_pattern:
break;
case exclude_hash:
sp->v.table = hash_initialize (0, NULL,
(options & FNM_CASEFOLD) ?
string_hasher_ci
: string_hasher,
(options & FNM_CASEFOLD) ?
string_compare_ci
: string_compare,
string_free);
break;
}
if (ex->tail)
ex->tail->next = sp;
else
ex->head = sp;
ex->tail = sp;
return sp;
}
/* Free a single exclude segment */
static void
free_exclude_segment (struct exclude_segment *seg)
{
switch (seg->type)
{
case exclude_pattern:
free (seg->v.pat.exclude);
break;
case exclude_hash:
hash_free (seg->v.table);
break;
}
free (seg);
}
/* Free the storage associated with an exclude list. */
void void
free_exclude (struct exclude *ex) free_exclude (struct exclude *ex)
{ {
free (ex->exclude); struct exclude_segment *seg;
for (seg = ex->head; seg; )
{
struct exclude_segment *next = seg->next;
free_exclude_segment (seg);
seg = next;
}
free (ex); free (ex);
} }
@ -155,36 +326,113 @@ exclude_fnmatch (char const *pattern, char const *f, int options)
return matched; return matched;
} }
/* Return true if the exclude_pattern segment SEG excludes F. */
bool
excluded_file_pattern_p (struct exclude_segment const *seg, char const *f)
{
size_t exclude_count = seg->v.pat.exclude_count;
struct patopts const *exclude = seg->v.pat.exclude;
size_t i;
bool excluded = !! (exclude[0].options & EXCLUDE_INCLUDE);
/* Scan through the options, until they change excluded */
for (i = 0; i < exclude_count; i++)
{
char const *pattern = exclude[i].pattern;
int options = exclude[i].options;
if (excluded != exclude_fnmatch (pattern, f, options))
return !excluded;
}
return excluded;
}
/* Return true if the exclude_hash segment SEG excludes F.
BUFFER is an auxiliary storage of the same length as F (with nul
terminator included) */
bool
excluded_file_name_p (struct exclude_segment const *seg, char const *f,
char *buffer)
{
int options = seg->options;
bool excluded = !! (options & EXCLUDE_INCLUDE);
Hash_table *table = seg->v.table;
do
{
/* initialize the pattern */
strcpy (buffer, f);
while (1)
{
if (hash_lookup (table, buffer))
return !excluded;
if (options & FNM_LEADING_DIR)
{
char *p = strrchr (buffer, '/');
if (p)
{
*p = 0;
continue;
}
}
break;
}
if (!(options & EXCLUDE_ANCHORED))
{
f = strchr (f, '/');
if (f)
f++;
}
else
break;
}
while (f);
return excluded;
}
/* Return true if EX excludes F. */ /* Return true if EX excludes F. */
bool bool
excluded_file_name (struct exclude const *ex, char const *f) excluded_file_name (struct exclude const *ex, char const *f)
{ {
size_t exclude_count = ex->exclude_count; struct exclude_segment *seg;
bool excluded;
char *filename = NULL;
/* If no options are given, the default is to include. */ /* If no patterns are given, the default is to include. */
if (exclude_count == 0) if (!ex->head)
return false; return false;
else
/* Otherwise, the default is the opposite of the first option. */
excluded = !! (ex->head->options & EXCLUDE_INCLUDE);
/* Scan through the segments, seeing whether they change status from
excluded to included or vice versa. */
for (seg = ex->head; seg; seg = seg->next)
{ {
struct patopts const *exclude = ex->exclude; bool rc;
size_t i;
/* Otherwise, the default is the opposite of the first option. */ switch (seg->type)
bool excluded = !! (exclude[0].options & EXCLUDE_INCLUDE);
/* Scan through the options, seeing whether they change F from
excluded to included or vice versa. */
for (i = 0; i < exclude_count; i++)
{ {
char const *pattern = exclude[i].pattern; case exclude_pattern:
int options = exclude[i].options; rc = excluded_file_pattern_p (seg, f);
if (excluded == !! (options & EXCLUDE_INCLUDE)) break;
excluded ^= exclude_fnmatch (pattern, f, options);
}
return excluded; case exclude_hash:
if (!filename)
filename = xmalloc (strlen (f) + 1);
rc = excluded_file_name_p (seg, f, filename);
break;
}
if (rc != excluded)
{
excluded = rc;
break;
}
} }
free (filename);
return excluded;
} }
/* Append to EX the exclusion PATTERN with OPTIONS. */ /* Append to EX the exclusion PATTERN with OPTIONS. */
@ -192,15 +440,46 @@ excluded_file_name (struct exclude const *ex, char const *f)
void void
add_exclude (struct exclude *ex, char const *pattern, int options) add_exclude (struct exclude *ex, char const *pattern, int options)
{ {
struct patopts *patopts; struct exclude_segment *seg;
if (ex->exclude_count == ex->exclude_alloc) if ((options & EXCLUDE_WILDCARDS)
ex->exclude = x2nrealloc (ex->exclude, &ex->exclude_alloc, && fnmatch_pattern_has_wildcards (pattern, options))
sizeof *ex->exclude); {
struct exclude_pattern *pat;
struct patopts *patopts;
patopts = &ex->exclude[ex->exclude_count++]; if (ex->tail && ex->tail->type == exclude_pattern
patopts->pattern = pattern; && ((ex->tail->options & EXCLUDE_INCLUDE) ==
patopts->options = options; (options & EXCLUDE_INCLUDE)))
seg = ex->tail;
else
seg = new_exclude_segment (ex, exclude_pattern, options);
pat = &seg->v.pat;
if (pat->exclude_count == pat->exclude_alloc)
pat->exclude = x2nrealloc (pat->exclude, &pat->exclude_alloc,
sizeof *pat->exclude);
patopts = &pat->exclude[pat->exclude_count++];
patopts->pattern = pattern;
patopts->options = options;
}
else
{
char *str, *p;
#define EXCLUDE_HASH_FLAGS (EXCLUDE_INCLUDE|EXCLUDE_ANCHORED|\
FNM_LEADING_DIR|FNM_CASEFOLD)
if (ex->tail && ex->tail->type == exclude_hash
&& ((ex->tail->options & EXCLUDE_HASH_FLAGS) ==
(options & EXCLUDE_HASH_FLAGS)))
seg = ex->tail;
else
seg = new_exclude_segment (ex, exclude_hash, options);
str = xstrdup (pattern);
p = hash_insert (seg->v.table, str);
if (p != str)
free (str);
}
} }
/* Use ADD_FUNC to append to EX the patterns in FILE_NAME, each with /* Use ADD_FUNC to append to EX the patterns in FILE_NAME, each with

View File

@ -1,7 +1,7 @@
/* exclude.h -- declarations for excluding file names /* exclude.h -- declarations for excluding file names
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003, 2005, Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003, 2005,
2006 Free Software Foundation, Inc. 2006, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -16,7 +16,8 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Written by Paul Eggert <eggert@twinsun.com> */ /* Written by Paul Eggert <eggert@twinsun.com>
and Sergey Poznyakoff <gray@gnu.org> */
/* Exclude options, which can be ORed with fnmatch options. */ /* Exclude options, which can be ORed with fnmatch options. */
@ -33,6 +34,8 @@
struct exclude; struct exclude;
bool fnmatch_pattern_has_wildcards (const char *, int);
struct exclude *new_exclude (void); struct exclude *new_exclude (void);
void free_exclude (struct exclude *); void free_exclude (struct exclude *);
void add_exclude (struct exclude *, char const *, int); void add_exclude (struct exclude *, char const *, int);

View File

@ -1,5 +1,5 @@
/* fchdir replacement. /* fchdir replacement.
Copyright (C) 2006-2008 Free Software Foundation, Inc. Copyright (C) 2006-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -172,13 +172,19 @@ rpl_dup (int oldfd)
return newfd; return newfd;
} }
/* Our <unistd.h> replacement overrides dup2 twice; be sure to pick
the one we want. */
#if REPLACE_DUP2
# undef dup2
# define dup2 rpl_dup2
#endif
int int
rpl_dup2 (int oldfd, int newfd) rpl_dup2_fchdir (int oldfd, int newfd)
#undef dup2
{ {
int retval = dup2 (oldfd, newfd); int retval = dup2 (oldfd, newfd);
if (retval >= 0 && oldfd >= 0 && newfd >= 0 && newfd != oldfd) if (retval >= 0 && newfd != oldfd)
{ {
ensure_dirs_slot (newfd); ensure_dirs_slot (newfd);
if (newfd < dirs_allocated) if (newfd < dirs_allocated)

View File

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

View File

@ -25,7 +25,6 @@
#include <unistd.h> #include <unistd.h>
#include "freading.h" #include "freading.h"
#include "fpurge.h"
#include "stdio-impl.h" #include "stdio-impl.h"

View File

@ -1,7 +1,7 @@
/* -*- buffer-read-only: t -*- vi: set ro: */ /* -*- buffer-read-only: t -*- vi: set ro: */
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
#line 1 #line 1
/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007 /* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2009
Free Software Foundation, Inc. Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@ -92,7 +92,7 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
# define isblank(c) ((c) == ' ' || (c) == '\t') # define isblank(c) ((c) == ' ' || (c) == '\t')
# endif # endif
# define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) # define STREQ(s1, s2) (strcmp (s1, s2) == 0)
# if defined _LIBC || WIDE_CHAR_SUPPORT # if defined _LIBC || WIDE_CHAR_SUPPORT
/* The GNU C library provides support for user-defined character classes /* The GNU C library provides support for user-defined character classes

View File

@ -17,7 +17,7 @@
#include <config.h> #include <config.h>
/* Specification. */ /* Specification. */
#include "fpurge.h" #include <stdio.h>
#if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7 */ #if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7 */
# include <stdio_ext.h> # include <stdio_ext.h>
@ -35,7 +35,7 @@ fpurge (FILE *fp)
/* The __fpurge function does not have a return value. */ /* The __fpurge function does not have a return value. */
return 0; return 0;
#elif HAVE_FPURGE /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X */ #elif HAVE_FPURGE /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin 1.7 */
/* Call the system's fpurge function. */ /* Call the system's fpurge function. */
# undef fpurge # undef fpurge
@ -49,7 +49,7 @@ fpurge (FILE *fp)
<stdio.h> on BSD systems says: <stdio.h> on BSD systems says:
"The following always hold: if _flags & __SRD, _w is 0." "The following always hold: if _flags & __SRD, _w is 0."
If this invariant is not fulfilled and the stream is read-write but If this invariant is not fulfilled and the stream is read-write but
currently writing, subsequent putc or fputc calls will write directly currently reading, subsequent putc or fputc calls will write directly
into the buffer, although they shouldn't be allowed to. */ into the buffer, although they shouldn't be allowed to. */
if ((fp_->_flags & __SRD) != 0) if ((fp_->_flags & __SRD) != 0)
fp_->_w = 0; fp_->_w = 0;

View File

@ -1,38 +0,0 @@
/* Flushing buffers of a FILE stream.
Copyright (C) 2007 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/>. */
#ifndef _GL_FPURGE_H
#define _GL_FPURGE_H
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Discard all pending buffered I/O on the stream STREAM.
STREAM must not be wide-character oriented.
Return 0 if successful. Upon error, return -1 and set errno. */
#if HAVE_FPURGE
# define fpurge rpl_fpurge
#endif
extern int fpurge (FILE *stream);
#ifdef __cplusplus
}
#endif
#endif /* _GL_FPURGE_H */

View File

@ -82,7 +82,7 @@ rpl_fseeko (FILE *fp, off_t offset, int whence)
&& ((fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) == 0 && ((fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) == 0
|| fp->__bufpos == fp->__bufread)) || fp->__bufpos == fp->__bufread))
#elif defined __QNX__ /* QNX */ #elif defined __QNX__ /* QNX */
if ((fp->_Mode & _MWRITE ? fp->_Next == fp->_Buf : fp->_Next == fp->_Rend) if ((fp->_Mode & 0x2000 /* _MWRITE */ ? fp->_Next == fp->_Buf : fp->_Next == fp->_Rend)
&& fp->_Rback == fp->_Back + sizeof (fp->_Back) && fp->_Rback == fp->_Back + sizeof (fp->_Back)
&& fp->_Rsave == NULL) && fp->_Rsave == NULL)
#elif defined __MINT__ /* Atari FreeMiNT */ #elif defined __MINT__ /* Atari FreeMiNT */

View File

@ -932,7 +932,9 @@ next: tmp = p;
SET(FTS_STOP); SET(FTS_STOP);
return (NULL); return (NULL);
} }
free_dir(sp);
fts_load(sp, p); fts_load(sp, p);
setup_dir(sp);
goto check_for_dir; goto check_for_dir;
} }

View File

@ -1,5 +1,5 @@
/* A Bison parser, made by GNU Bison 2.4. */ /* A Bison parser, made by GNU Bison 2.4.1. */
/* Skeleton implementation for Bison's Yacc-like parsers in C /* Skeleton implementation for Bison's Yacc-like parsers in C
@ -46,7 +46,7 @@
#define YYBISON 1 #define YYBISON 1
/* Bison version. */ /* Bison version. */
#define YYBISON_VERSION "2.4" #define YYBISON_VERSION "2.4.1"
/* Skeleton name. */ /* Skeleton name. */
#define YYSKELETON_NAME "yacc.c" #define YYSKELETON_NAME "yacc.c"

View File

@ -2,8 +2,8 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
#line 1 #line 1
/* getdelim.c --- Implementation of replacement getdelim function. /* getdelim.c --- Implementation of replacement getdelim function.
Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006, 2007, 2008 Free Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006, 2007,
Software Foundation, Inc. 2008, 2009 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as modify it under the terms of the GNU General Public License as
@ -27,12 +27,10 @@
#include <stdio.h> #include <stdio.h>
#include <limits.h> #include <limits.h>
#include <stdint.h>
#include <stdlib.h> #include <stdlib.h>
#include <errno.h> #include <errno.h>
#ifndef SIZE_MAX
# define SIZE_MAX ((size_t) -1)
#endif
#ifndef SSIZE_MAX #ifndef SSIZE_MAX
# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2)) # define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
#endif #endif

View File

@ -1,6 +1,6 @@
/* gethostname emulation for SysV and POSIX.1. /* gethostname emulation for SysV and POSIX.1.
Copyright (C) 1992, 2003, 2006, 2008 Free Software Foundation, Inc. Copyright (C) 1992, 2003, 2006, 2008, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -15,10 +15,14 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* David MacKenzie <djm@gnu.ai.mit.edu> */ /* David MacKenzie <djm@gnu.ai.mit.edu>
Windows port by Simon Josefsson <simon@josefsson.org> */
#include <config.h> #include <config.h>
#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
/* Unix API. */
/* Specification. */ /* Specification. */
#include <unistd.h> #include <unistd.h>
@ -54,3 +58,47 @@ gethostname (char *name, size_t len)
#endif #endif
return 0; return 0;
} }
#else
/* Native Windows API. Which primitive to choose?
- gethostname() requires linking with -lws2_32.
- GetComputerName() does not return the right kind of hostname.
- GetComputerNameEx(ComputerNameDnsHostname,...) returns the right hostname,
but it is hard to use portably:
- It requires defining _WIN32_WINNT to at least 0x0500.
- With mingw, it also requires
"#define GetComputerNameEx GetComputerNameExA".
- With older versions of mingw, none of the declarations are present at
all, not even of the enum value ComputerNameDnsHostname.
So we use gethostname(). Linking with -lws2_32 is the least evil. */
#define WIN32_LEAN_AND_MEAN
/* Get winsock2.h. */
#include <unistd.h>
/* Get INT_MAX. */
#include <limits.h>
/* Get set_winsock_errno. */
#include "w32sock.h"
#include "sockets.h"
#undef gethostname
int
rpl_gethostname (char *name, size_t len)
{
int r;
if (len > INT_MAX)
len = INT_MAX;
gl_sockets_startup (SOCKETS_1_1);
r = gethostname (name, (int) len);
if (r < 0)
set_winsock_errno ();
return r;
}
#endif

View File

@ -44,8 +44,8 @@
otherwise, no load average is available. otherwise, no load average is available.
HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults
to this. to this.
NLIST_STRUCT Include nlist.h, not a.out.h, and NLIST_STRUCT Include nlist.h, not a.out.h.
the nlist n_name element is a pointer, N_NAME_POINTER The nlist n_name element is a pointer,
not an array. not an array.
HAVE_STRUCT_NLIST_N_UN_N_NAME `n_un.n_name' is member of `struct nlist'. HAVE_STRUCT_NLIST_N_UN_N_NAME `n_un.n_name' is member of `struct nlist'.
LINUX_LDAV_FILE [__linux__, __CYGWIN__]: File containing LINUX_LDAV_FILE [__linux__, __CYGWIN__]: File containing
@ -900,7 +900,7 @@ getloadavg (double loadavg[], int nelem)
if (offset == 0) if (offset == 0)
{ {
# ifndef sgi # ifndef sgi
# ifndef NLIST_STRUCT # if ! defined NLIST_STRUCT || ! defined N_NAME_POINTER
strcpy (nl[0].n_name, LDAV_SYMBOL); strcpy (nl[0].n_name, LDAV_SYMBOL);
strcpy (nl[1].n_name, ""); strcpy (nl[1].n_name, "");
# else /* NLIST_STRUCT */ # else /* NLIST_STRUCT */

View File

@ -3,7 +3,7 @@
#line 1 #line 1
/* Provide gettimeofday for systems that don't have it or for which it's broken. /* Provide gettimeofday for systems that don't have it or for which it's broken.
Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007 Free Software Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2009 Free Software
Foundation, Inc. Foundation, Inc.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@ -114,7 +114,7 @@ rpl_gettimeofday (struct timeval *restrict tv, void *restrict tz)
struct tm save = *localtime_buffer_addr; struct tm save = *localtime_buffer_addr;
# endif # endif
int result = gettimeofday (tv, tz); int result = gettimeofday (tv, (struct timezone *) tz);
# if GETTIMEOFDAY_CLOBBERS_LOCALTIME # if GETTIMEOFDAY_CLOBBERS_LOCALTIME
*localtime_buffer_addr = save; *localtime_buffer_addr = save;

View File

@ -1,6 +1,6 @@
/* getugroups.c -- return a list of the groups a user is in /* getugroups.c -- return a list of the groups a user is in
Copyright (C) 1990, 1991, 1998-2000, 2003-2008 Free Software Foundation. Copyright (C) 1990, 1991, 1998-2000, 2003-2009 Free Software Foundation.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -36,7 +36,7 @@ struct group *getgrent (void);
#include <string.h> #include <string.h>
#define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) #define STREQ(s1, s2) (strcmp (s1, s2) == 0)
/* Like `getgroups', but for user USERNAME instead of for the current /* Like `getgroups', but for user USERNAME instead of for the current
process. Store at most MAXCOUNT group IDs in the GROUPLIST array. process. Store at most MAXCOUNT group IDs in the GROUPLIST array.

View File

@ -9,7 +9,7 @@
# the same distribution terms as the rest of that program. # the same distribution terms as the rest of that program.
# #
# Generated by gnulib-tool. # Generated by gnulib-tool.
# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=canonicalize-lgpl --avoid=dummy --avoid=lock --no-libtool --macro-prefix=gl acl alloca announce-gen areadlink-with-size argmatch argv-iter assert atexit autobuild backupfile base64 c-strcase c-strtod c-strtold calloc canon-host canonicalize chown cloexec closein closeout config-h configmake crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 cycle-check d-ino d-type diacrit dirfd dirname dup2 error euidaccess exclude exitfail fchdir fcntl fcntl-safer fdl file-type fileblocks filemode filenamecat filevercmp fnmatch-gnu fopen-safer fprintftime fseeko fsusage ftello ftruncate fts gendocs getdate getgroups gethrxtime getline getloadavg getndelim2 getopt getpagesize getpass-gnu gettext gettime gettimeofday getugroups getusershell git-version-gen gitlog-to-changelog gnu-make gnumakefile gnupload group-member hard-locale hash hash-pjw host-os human idcache ignore-value inttostr inttypes isapipe lchmod lchown lib-ignore linebuffer link-follow long-options lstat maintainer-makefile malloc manywarnings mbrtowc mbsalign mbswidth memcasecmp memchr memcmp memcmp2 memcpy memmove mempcpy memrchr memset mgetgroups mkancesdirs mkdir mkdir-p mkstemp mktime modechange mountlist mpsort obstack pathmax perl physmem posix-shell posixtm posixver priv-set progname propername putenv quote quotearg raise randint randperm readlink readtokens readtokens0 readutmp realloc regex rename rename-dest-slash rmdir rmdir-errno root-dev-ino rpmatch safe-read same save-cwd savedir savewd selinux-at settime sig2str sigaction ssize_t stat-macros stat-time stdbool stdlib-safer stpcpy stpncpy strcspn strdup strftime strpbrk strtod strtoimax strtol strtoumax strverscmp sys_stat timespec tzset unicodeio unistd-safer unlink-busy unlinkdir unlocked-io uptime useless-if-before-free userspec utimecmp utimens vasprintf-posix vc-list-files verify verror version-etc-fsf warnings wcwidth winsz-ioctl winsz-termios write-any-file xalloc xfreopen xgetcwd xgethostname xmemcoll xnanosleep xprintf xprintf-posix xstrtod xstrtoimax xstrtol xstrtold xstrtoumax yesno # Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=canonicalize-lgpl --avoid=dummy --avoid=lock --no-libtool --macro-prefix=gl acl alloca announce-gen areadlink-with-size argmatch argv-iter assert atexit autobuild backupfile base64 c-strcase c-strtod c-strtold calloc canon-host canonicalize chown cloexec closein closeout config-h configmake crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 cycle-check d-ino d-type diacrit dirfd dirname dup2 error euidaccess exclude exitfail fchdir fcntl fcntl-safer fdl file-type fileblocks filemode filenamecat filevercmp fnmatch-gnu fopen-safer fprintftime fseeko fsusage ftello ftruncate fts gendocs getdate getgroups gethrxtime getline getloadavg getndelim2 getopt-gnu getpagesize getpass-gnu gettext gettime gettimeofday getugroups getusershell git-version-gen gitlog-to-changelog gnu-make gnumakefile gnupload group-member hard-locale hash hash-pjw host-os human idcache ignore-value inttostr inttypes isapipe lchmod lchown lib-ignore linebuffer link-follow long-options lstat maintainer-makefile malloc manywarnings mbrtowc mbsalign mbswidth memcasecmp memchr memcmp memcmp2 memcpy memmove mempcpy memrchr memset mgetgroups mkancesdirs mkdir mkdir-p mkstemp mktime modechange mountlist mpsort obstack pathmax perl physmem posix-shell posixtm posixver priv-set progname propername putenv quote quotearg raise randint randperm readlink readtokens readtokens0 readutmp realloc regex rename rename-dest-slash rmdir rmdir-errno root-dev-ino rpmatch safe-read same save-cwd savedir savewd selinux-at settime sig2str sigaction ssize_t stat-macros stat-time stdbool stdlib-safer stpcpy stpncpy strcspn strdup strftime strpbrk strtod strtoimax strtol strtoumax strverscmp sys_stat timespec tzset unicodeio unistd-safer unlink-busy unlinkdir unlocked-io update-copyright uptime useless-if-before-free userspec utimecmp utimens vasprintf-posix vc-list-files verify verror version-etc-fsf warnings wcwidth winsz-ioctl winsz-termios write-any-file xalloc xfreopen xgetcwd xgethostname xmemcoll xnanosleep xprintf xprintf-posix xstrtod xstrtoimax xstrtol xstrtold xstrtoumax yesno
AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
@ -46,6 +46,13 @@ EXTRA_libcoreutils_a_SOURCES += acl_entries.c
## end gnulib module acl ## end gnulib module acl
## begin gnulib module alignof
EXTRA_DIST += alignof.h
## end gnulib module alignof
## begin gnulib module alloca ## begin gnulib module alloca
@ -157,6 +164,12 @@ libcoreutils_a_SOURCES += base64.h base64.c
## end gnulib module base64 ## end gnulib module base64
## begin gnulib module bitrotate
libcoreutils_a_SOURCES += bitrotate.h
## end gnulib module bitrotate
## begin gnulib module btowc ## begin gnulib module btowc
@ -728,9 +741,10 @@ EXTRA_DIST += fpucw.h
## begin gnulib module fpurge ## begin gnulib module fpurge
libcoreutils_a_SOURCES += fpurge.c
EXTRA_DIST += fpurge.h stdio-impl.h EXTRA_DIST += fpurge.c stdio-impl.h
EXTRA_libcoreutils_a_SOURCES += fpurge.c
## end gnulib module fpurge ## end gnulib module fpurge
@ -906,7 +920,7 @@ EXTRA_libcoreutils_a_SOURCES += getgroups.c
## begin gnulib module gethostname ## begin gnulib module gethostname
EXTRA_DIST += gethostname.c EXTRA_DIST += gethostname.c w32sock.h
EXTRA_libcoreutils_a_SOURCES += gethostname.c EXTRA_libcoreutils_a_SOURCES += gethostname.c
@ -948,7 +962,7 @@ EXTRA_libcoreutils_a_SOURCES += getndelim2.c
## end gnulib module getndelim2 ## end gnulib module getndelim2
## begin gnulib module getopt ## begin gnulib module getopt-posix
BUILT_SOURCES += $(GETOPT_H) BUILT_SOURCES += $(GETOPT_H)
@ -965,7 +979,7 @@ EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h
EXTRA_libcoreutils_a_SOURCES += getopt.c getopt1.c EXTRA_libcoreutils_a_SOURCES += getopt.c getopt1.c
## end gnulib module getopt ## end gnulib module getopt-posix
## begin gnulib module getpagesize ## begin gnulib module getpagesize
@ -1486,7 +1500,7 @@ math.h: math.in.h
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \ sed -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''NEXT_MATH_H''@|$(NEXT_MATH_H)|g' \ -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
-e 's|@''GNULIB_CEILF''@|$(GNULIB_CEILF)|g' \ -e 's|@''GNULIB_CEILF''@|$(GNULIB_CEILF)|g' \
-e 's|@''GNULIB_CEILL''@|$(GNULIB_CEILL)|g' \ -e 's|@''GNULIB_CEILL''@|$(GNULIB_CEILL)|g' \
-e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \ -e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \
@ -1652,7 +1666,7 @@ EXTRA_libcoreutils_a_SOURCES += memcasecmp.c
## begin gnulib module memchr ## begin gnulib module memchr
EXTRA_DIST += memchr.c EXTRA_DIST += memchr.c memchr.valgrind
EXTRA_libcoreutils_a_SOURCES += memchr.c EXTRA_libcoreutils_a_SOURCES += memchr.c
@ -1662,6 +1676,8 @@ EXTRA_libcoreutils_a_SOURCES += memchr.c
libcoreutils_a_SOURCES += memchr2.h memchr2.c libcoreutils_a_SOURCES += memchr2.h memchr2.c
EXTRA_DIST += memchr2.valgrind
## end gnulib module memchr2 ## end gnulib module memchr2
## begin gnulib module memcmp ## begin gnulib module memcmp
@ -2357,6 +2373,14 @@ EXTRA_libcoreutils_a_SOURCES += snprintf.c
## end gnulib module snprintf ## end gnulib module snprintf
## begin gnulib module sockets
libcoreutils_a_SOURCES += sockets.h sockets.c
EXTRA_DIST += w32sock.h
## end gnulib module sockets
## begin gnulib module stat-macros ## begin gnulib module stat-macros
@ -2410,6 +2434,29 @@ EXTRA_DIST += stdbool.in.h
## end gnulib module stdbool ## end gnulib module stdbool
## begin gnulib module stddef
BUILT_SOURCES += $(STDDEF_H)
# We need the following in order to create <stddef.h> when the system
# doesn't have one that works with the given compiler.
stddef.h: stddef.in.h
rm -f $@-t $@
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
-e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
-e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
< $(srcdir)/stddef.in.h; \
} > $@-t
mv $@-t $@
MOSTLYCLEANFILES += stddef.h stddef.h-t
EXTRA_DIST += stddef.in.h
## end gnulib module stddef
## begin gnulib module stdint ## begin gnulib module stdint
BUILT_SOURCES += $(STDINT_H) BUILT_SOURCES += $(STDINT_H)
@ -2488,6 +2535,7 @@ stdio.h: stdio.in.h
-e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \ -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
-e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \ -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
-e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \ -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
-e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
-e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \ -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
-e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \ -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
-e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \ -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
@ -2525,6 +2573,8 @@ stdio.h: stdio.in.h
-e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
-e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
-e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
-e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
-e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
-e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
-e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
-e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
@ -2714,6 +2764,7 @@ string.h: string.in.h
-e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \ -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
-e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \ -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
-e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \ -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
-e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
-e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \ -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
-e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
-e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
@ -2750,6 +2801,7 @@ string.h: string.in.h
-e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \ -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
-e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
-e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
-e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
-e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
-e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
-e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
@ -2799,6 +2851,15 @@ EXTRA_libcoreutils_a_SOURCES += strpbrk.c
## end gnulib module strpbrk ## end gnulib module strpbrk
## begin gnulib module strstr-simple
EXTRA_DIST += str-two-way.h strstr.c
EXTRA_libcoreutils_a_SOURCES += strstr.c
## end gnulib module strstr-simple
## begin gnulib module strtod ## begin gnulib module strtod
LIBS += $(POW_LIB) LIBS += $(POW_LIB)
@ -2930,6 +2991,8 @@ sys/socket.h: sys_socket.in.h
-e 's|@''GNULIB_SHUTDOWN''@|$(GNULIB_SHUTDOWN)|g' \ -e 's|@''GNULIB_SHUTDOWN''@|$(GNULIB_SHUTDOWN)|g' \
-e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \
-e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \ -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \
-e 's|@''HAVE_STRUCT_SOCKADDR_STORAGE''@|$(HAVE_STRUCT_SOCKADDR_STORAGE)|g' \
-e 's|@''HAVE_SA_FAMILY_T''@|$(HAVE_SA_FAMILY_T)|g' \
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
< $(srcdir)/sys_socket.in.h; \ < $(srcdir)/sys_socket.in.h; \
} > $@-t } > $@-t
@ -3018,6 +3081,7 @@ time.h: time.in.h
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's|@NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
-e 's|@REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
-e 's|@REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
-e 's|@REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
-e 's|@REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \ -e 's|@REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \
-e 's|@REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
@ -3101,6 +3165,7 @@ unistd.h: unistd.in.h
-e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \ -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
-e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
-e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
-e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
-e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \ -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
-e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \ -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
-e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
@ -3121,6 +3186,7 @@ unistd.h: unistd.in.h
-e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
-e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
-e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
-e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
-e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
-e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
-e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
@ -3128,6 +3194,7 @@ unistd.h: unistd.in.h
-e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
-e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
-e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
-e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
< $(srcdir)/unistd.in.h; \ < $(srcdir)/unistd.in.h; \
} > $@-t } > $@-t
@ -3207,6 +3274,13 @@ EXTRA_libcoreutils_a_SOURCES += unsetenv.c
## end gnulib module unsetenv ## end gnulib module unsetenv
## begin gnulib module update-copyright
EXTRA_DIST += $(top_srcdir)/build-aux/update-copyright
## end gnulib module update-copyright
## begin gnulib module useless-if-before-free ## begin gnulib module useless-if-before-free

View File

@ -1,7 +1,7 @@
/* hash - hashing table processing. /* hash - hashing table processing.
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007 Free Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007,
Software Foundation, Inc. 2009 Free Software Foundation, Inc.
Written by Jim Meyering, 1992. Written by Jim Meyering, 1992.
@ -26,9 +26,11 @@
#include <config.h> #include <config.h>
#include "hash.h" #include "hash.h"
#include "bitrotate.h"
#include "xalloc.h" #include "xalloc.h"
#include <limits.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -42,9 +44,11 @@
# endif # endif
#endif #endif
#ifndef SIZE_MAX struct hash_entry
# define SIZE_MAX ((size_t) -1) {
#endif void *data;
struct hash_entry *next;
};
struct hash_table struct hash_table
{ {
@ -57,7 +61,7 @@ struct hash_table
size_t n_buckets_used; size_t n_buckets_used;
size_t n_entries; size_t n_entries;
/* Tuning arguments, kept in a physicaly separate structure. */ /* Tuning arguments, kept in a physically separate structure. */
const Hash_tuning *tuning; const Hash_tuning *tuning;
/* Three functions are given to `hash_initialize', see the documentation /* Three functions are given to `hash_initialize', see the documentation
@ -81,7 +85,7 @@ struct hash_table
}; };
/* A hash table contains many internal entries, each holding a pointer to /* A hash table contains many internal entries, each holding a pointer to
some user provided data (also called a user entry). An entry indistinctly some user-provided data (also called a user entry). An entry indistinctly
refers to both the internal entry and its associated user entry. A user refers to both the internal entry and its associated user entry. A user
entry contents may be hashed by a randomization function (the hashing entry contents may be hashed by a randomization function (the hashing
function, or just `hasher' for short) into a number (or `slot') between 0 function, or just `hasher' for short) into a number (or `slot') between 0
@ -257,7 +261,7 @@ hash_lookup (const Hash_table *table, const void *entry)
return NULL; return NULL;
for (cursor = bucket; cursor; cursor = cursor->next) for (cursor = bucket; cursor; cursor = cursor->next)
if (table->comparator (entry, cursor->data)) if (entry == cursor->data || table->comparator (entry, cursor->data))
return cursor->data; return cursor->data;
return NULL; return NULL;
@ -268,7 +272,9 @@ hash_lookup (const Hash_table *table, const void *entry)
/* The functions in this page traverse the hash table and process the /* The functions in this page traverse the hash table and process the
contained entries. For the traversal to work properly, the hash table contained entries. For the traversal to work properly, the hash table
should not be resized nor modified while any particular entry is being should not be resized nor modified while any particular entry is being
processed. In particular, entries should not be added or removed. */ processed. In particular, entries should not be added, and an entry
may be removed only if there is no shrink threshold and the entry being
removed has already been passed to hash_get_next. */
/* Return the first data in the table, or NULL if the table is empty. */ /* Return the first data in the table, or NULL if the table is empty. */
@ -365,7 +371,7 @@ hash_do_for_each (const Hash_table *table, Hash_processor processor,
{ {
for (cursor = bucket; cursor; cursor = cursor->next) for (cursor = bucket; cursor; cursor = cursor->next)
{ {
if (!(*processor) (cursor->data, processor_data)) if (! processor (cursor->data, processor_data))
return counter; return counter;
counter++; counter++;
} }
@ -391,10 +397,8 @@ hash_do_for_each (const Hash_table *table, Hash_processor processor,
size_t size_t
hash_string (const char *string, size_t n_buckets) hash_string (const char *string, size_t n_buckets)
{ {
# define ROTATE_LEFT(Value, Shift) \
((Value) << (Shift) | (Value) >> ((sizeof (size_t) * CHAR_BIT) - (Shift)))
# define HASH_ONE_CHAR(Value, Byte) \ # define HASH_ONE_CHAR(Value, Byte) \
((Byte) + ROTATE_LEFT (Value, 7)) ((Byte) + rotl_sz (Value, 7))
size_t value = 0; size_t value = 0;
unsigned char ch; unsigned char ch;
@ -403,7 +407,6 @@ hash_string (const char *string, size_t n_buckets)
value = HASH_ONE_CHAR (value, ch); value = HASH_ONE_CHAR (value, ch);
return value % n_buckets; return value % n_buckets;
# undef ROTATE_LEFT
# undef HASH_ONE_CHAR # undef HASH_ONE_CHAR
} }
@ -459,7 +462,7 @@ next_prime (size_t candidate)
/* Make it definitely odd. */ /* Make it definitely odd. */
candidate |= 1; candidate |= 1;
while (!is_prime (candidate)) while (SIZE_MAX != candidate && !is_prime (candidate))
candidate += 2; candidate += 2;
return candidate; return candidate;
@ -471,6 +474,27 @@ hash_reset_tuning (Hash_tuning *tuning)
*tuning = default_tuning; *tuning = default_tuning;
} }
/* If the user passes a NULL hasher, we hash the raw pointer. */
static size_t
raw_hasher (const void *data, size_t n)
{
/* When hashing unique pointers, it is often the case that they were
generated by malloc and thus have the property that the low-order
bits are 0. As this tends to give poorer performance with small
tables, we rotate the pointer value before performing division,
in an attempt to improve hash quality. */
size_t val = rotr_sz ((size_t) data, 3);
return val % n;
}
/* If the user passes a NULL comparator, we use pointer comparison. */
static bool
raw_comparator (const void *a, const void *b)
{
return a == b;
}
/* For the given hash TABLE, check the user supplied tuning structure for /* For the given hash TABLE, check the user supplied tuning structure for
reasonable values, and return true if there is no gross error with it. reasonable values, and return true if there is no gross error with it.
Otherwise, definitively reset the TUNING field to some acceptable default Otherwise, definitively reset the TUNING field to some acceptable default
@ -481,12 +505,15 @@ static bool
check_tuning (Hash_table *table) check_tuning (Hash_table *table)
{ {
const Hash_tuning *tuning = table->tuning; const Hash_tuning *tuning = table->tuning;
if (tuning == &default_tuning)
return true;
/* Be a bit stricter than mathematics would require, so that /* Be a bit stricter than mathematics would require, so that
rounding errors in size calculations do not cause allocations to rounding errors in size calculations do not cause allocations to
fail to grow or shrink as they should. The smallest allocation fail to grow or shrink as they should. The smallest allocation
is 11 (due to next_prime's algorithm), so an epsilon of 0.1 is 11 (due to next_prime's algorithm), so an epsilon of 0.1
should be good enough. */ should be good enough. */
{
float epsilon = 0.1f; float epsilon = 0.1f;
if (epsilon < tuning->growth_threshold if (epsilon < tuning->growth_threshold
@ -497,11 +524,32 @@ check_tuning (Hash_table *table)
&& tuning->shrink_factor <= 1 && tuning->shrink_factor <= 1
&& tuning->shrink_threshold + epsilon < tuning->growth_threshold) && tuning->shrink_threshold + epsilon < tuning->growth_threshold)
return true; return true;
}
table->tuning = &default_tuning; table->tuning = &default_tuning;
return false; return false;
} }
/* Compute the size of the bucket array for the given CANDIDATE and
TUNING, or return 0 if there is no possible way to allocate that
many entries. */
static size_t
compute_bucket_size (size_t candidate, const Hash_tuning *tuning)
{
if (!tuning->is_n_buckets)
{
float new_candidate = candidate / tuning->growth_threshold;
if (SIZE_MAX <= new_candidate)
return 0;
candidate = new_candidate;
}
candidate = next_prime (candidate);
if (xalloc_oversized (candidate, sizeof (struct hash_entry *)))
return 0;
return candidate;
}
/* Allocate and return a new hash table, or NULL upon failure. The initial /* Allocate and return a new hash table, or NULL upon failure. The initial
number of buckets is automatically selected so as to _guarantee_ that you number of buckets is automatically selected so as to _guarantee_ that you
may insert at least CANDIDATE different user entries before any growth of may insert at least CANDIDATE different user entries before any growth of
@ -513,17 +561,20 @@ check_tuning (Hash_table *table)
TUNING points to a structure of user-supplied values, in case some fine TUNING points to a structure of user-supplied values, in case some fine
tuning is wanted over the default behavior of the hasher. If TUNING is tuning is wanted over the default behavior of the hasher. If TUNING is
NULL, the default tuning parameters are used instead. NULL, the default tuning parameters are used instead. If TUNING is
provided but the values requested are out of bounds or might cause
rounding errors, return NULL.
The user-supplied HASHER function should be provided. It accepts two The user-supplied HASHER function, when not NULL, accepts two
arguments ENTRY and TABLE_SIZE. It computes, by hashing ENTRY contents, a arguments ENTRY and TABLE_SIZE. It computes, by hashing ENTRY contents, a
slot number for that entry which should be in the range 0..TABLE_SIZE-1. slot number for that entry which should be in the range 0..TABLE_SIZE-1.
This slot number is then returned. This slot number is then returned.
The user-supplied COMPARATOR function should be provided. It accepts two The user-supplied COMPARATOR function, when not NULL, accepts two
arguments pointing to user data, it then returns true for a pair of entries arguments pointing to user data, it then returns true for a pair of entries
that compare equal, or false otherwise. This function is internally called that compare equal, or false otherwise. This function is internally called
on entries which are already known to hash to the same bucket index. on entries which are already known to hash to the same bucket index,
but which are distinct pointers.
The user-supplied DATA_FREER function, when not NULL, may be later called The user-supplied DATA_FREER function, when not NULL, may be later called
with the user data as an argument, just before the entry containing the with the user data as an argument, just before the entry containing the
@ -540,8 +591,10 @@ hash_initialize (size_t candidate, const Hash_tuning *tuning,
{ {
Hash_table *table; Hash_table *table;
if (hasher == NULL || comparator == NULL) if (hasher == NULL)
return NULL; hasher = raw_hasher;
if (comparator == NULL)
comparator = raw_comparator;
table = malloc (sizeof *table); table = malloc (sizeof *table);
if (table == NULL) if (table == NULL)
@ -560,18 +613,8 @@ hash_initialize (size_t candidate, const Hash_tuning *tuning,
goto fail; goto fail;
} }
if (!tuning->is_n_buckets) table->n_buckets = compute_bucket_size (candidate, tuning);
{ if (!table->n_buckets)
float new_candidate = candidate / tuning->growth_threshold;
if (SIZE_MAX <= new_candidate)
goto fail;
candidate = new_candidate;
}
if (xalloc_oversized (candidate, sizeof *table->bucket))
goto fail;
table->n_buckets = next_prime (candidate);
if (xalloc_oversized (table->n_buckets, sizeof *table->bucket))
goto fail; goto fail;
table->bucket = calloc (table->n_buckets, sizeof *table->bucket); table->bucket = calloc (table->n_buckets, sizeof *table->bucket);
@ -616,7 +659,7 @@ hash_clear (Hash_table *table)
for (cursor = bucket->next; cursor; cursor = next) for (cursor = bucket->next; cursor; cursor = next)
{ {
if (table->data_freer) if (table->data_freer)
(*table->data_freer) (cursor->data); table->data_freer (cursor->data);
cursor->data = NULL; cursor->data = NULL;
next = cursor->next; next = cursor->next;
@ -628,7 +671,7 @@ hash_clear (Hash_table *table)
/* Free the bucket head. */ /* Free the bucket head. */
if (table->data_freer) if (table->data_freer)
(*table->data_freer) (bucket->data); table->data_freer (bucket->data);
bucket->data = NULL; bucket->data = NULL;
bucket->next = NULL; bucket->next = NULL;
} }
@ -658,9 +701,7 @@ hash_free (Hash_table *table)
if (bucket->data) if (bucket->data)
{ {
for (cursor = bucket; cursor; cursor = cursor->next) for (cursor = bucket; cursor; cursor = cursor->next)
{ table->data_freer (cursor->data);
(*table->data_freer) (cursor->data);
}
} }
} }
} }
@ -697,7 +738,7 @@ hash_free (Hash_table *table)
/* Insertion and deletion. */ /* Insertion and deletion. */
/* Get a new hash entry for a bucket overflow, possibly by reclying a /* Get a new hash entry for a bucket overflow, possibly by recycling a
previously freed one. If this is not possible, allocate a new one. */ previously freed one. If this is not possible, allocate a new one. */
static struct hash_entry * static struct hash_entry *
@ -757,7 +798,7 @@ hash_find_entry (Hash_table *table, const void *entry,
return NULL; return NULL;
/* See if the entry is the first in the bucket. */ /* See if the entry is the first in the bucket. */
if ((*table->comparator) (entry, bucket->data)) if (entry == bucket->data || table->comparator (entry, bucket->data))
{ {
void *data = bucket->data; void *data = bucket->data;
@ -784,7 +825,8 @@ hash_find_entry (Hash_table *table, const void *entry,
/* Scan the bucket overflow. */ /* Scan the bucket overflow. */
for (cursor = bucket; cursor->next; cursor = cursor->next) for (cursor = bucket; cursor->next; cursor = cursor->next)
{ {
if ((*table->comparator) (entry, cursor->next->data)) if (entry == cursor->next->data
|| table->comparator (entry, cursor->next->data))
{ {
void *data = cursor->next->data; void *data = cursor->next->data;
@ -806,102 +848,185 @@ hash_find_entry (Hash_table *table, const void *entry,
return NULL; return NULL;
} }
/* Internal helper, to move entries from SRC to DST. Both tables must
share the same free entry list. If SAFE, only move overflow
entries, saving bucket heads for later, so that no allocations will
occur. Return false if the free entry list is exhausted and an
allocation fails. */
static bool
transfer_entries (Hash_table *dst, Hash_table *src, bool safe)
{
struct hash_entry *bucket;
struct hash_entry *cursor;
struct hash_entry *next;
for (bucket = src->bucket; bucket < src->bucket_limit; bucket++)
if (bucket->data)
{
void *data;
struct hash_entry *new_bucket;
/* Within each bucket, transfer overflow entries first and
then the bucket head, to minimize memory pressure. After
all, the only time we might allocate is when moving the
bucket head, but moving overflow entries first may create
free entries that can be recycled by the time we finally
get to the bucket head. */
for (cursor = bucket->next; cursor; cursor = next)
{
data = cursor->data;
new_bucket = (dst->bucket + dst->hasher (data, dst->n_buckets));
if (! (new_bucket < dst->bucket_limit))
abort ();
next = cursor->next;
if (new_bucket->data)
{
/* Merely relink an existing entry, when moving from a
bucket overflow into a bucket overflow. */
cursor->next = new_bucket->next;
new_bucket->next = cursor;
}
else
{
/* Free an existing entry, when moving from a bucket
overflow into a bucket header. */
new_bucket->data = data;
dst->n_buckets_used++;
free_entry (dst, cursor);
}
}
/* Now move the bucket head. Be sure that if we fail due to
allocation failure that the src table is in a consistent
state. */
data = bucket->data;
bucket->next = NULL;
if (safe)
continue;
new_bucket = (dst->bucket + dst->hasher (data, dst->n_buckets));
if (! (new_bucket < dst->bucket_limit))
abort ();
if (new_bucket->data)
{
/* Allocate or recycle an entry, when moving from a bucket
header into a bucket overflow. */
struct hash_entry *new_entry = allocate_entry (dst);
if (new_entry == NULL)
return false;
new_entry->data = data;
new_entry->next = new_bucket->next;
new_bucket->next = new_entry;
}
else
{
/* Move from one bucket header to another. */
new_bucket->data = data;
dst->n_buckets_used++;
}
bucket->data = NULL;
src->n_buckets_used--;
}
return true;
}
/* For an already existing hash table, change the number of buckets through /* For an already existing hash table, change the number of buckets through
specifying CANDIDATE. The contents of the hash table are preserved. The specifying CANDIDATE. The contents of the hash table are preserved. The
new number of buckets is automatically selected so as to _guarantee_ that new number of buckets is automatically selected so as to _guarantee_ that
the table may receive at least CANDIDATE different user entries, including the table may receive at least CANDIDATE different user entries, including
those already in the table, before any other growth of the hash table size those already in the table, before any other growth of the hash table size
occurs. If TUNING->IS_N_BUCKETS is true, then CANDIDATE specifies the occurs. If TUNING->IS_N_BUCKETS is true, then CANDIDATE specifies the
exact number of buckets desired. */ exact number of buckets desired. Return true iff the rehash succeeded. */
bool bool
hash_rehash (Hash_table *table, size_t candidate) hash_rehash (Hash_table *table, size_t candidate)
{ {
Hash_table storage;
Hash_table *new_table; Hash_table *new_table;
struct hash_entry *bucket; size_t new_size = compute_bucket_size (candidate, table->tuning);
struct hash_entry *cursor;
struct hash_entry *next;
new_table = hash_initialize (candidate, table->tuning, table->hasher, if (!new_size)
table->comparator, table->data_freer);
if (new_table == NULL)
return false; return false;
if (new_size == table->n_buckets)
return true;
new_table = &storage;
new_table->bucket = calloc (new_size, sizeof *new_table->bucket);
if (new_table->bucket == NULL)
return false;
new_table->n_buckets = new_size;
new_table->bucket_limit = new_table->bucket + new_size;
new_table->n_buckets_used = 0;
new_table->n_entries = 0;
new_table->tuning = table->tuning;
new_table->hasher = table->hasher;
new_table->comparator = table->comparator;
new_table->data_freer = table->data_freer;
/* In order for the transfer to successfully complete, we need
additional overflow entries when distinct buckets in the old
table collide into a common bucket in the new table. The worst
case possible is a hasher that gives a good spread with the old
size, but returns a constant with the new size; if we were to
guarantee table->n_buckets_used-1 free entries in advance, then
the transfer would be guaranteed to not allocate memory.
However, for large tables, a guarantee of no further allocation
introduces a lot of extra memory pressure, all for an unlikely
corner case (most rehashes reduce, rather than increase, the
number of overflow entries needed). So, we instead ensure that
the transfer process can be reversed if we hit a memory
allocation failure mid-transfer. */
/* Merely reuse the extra old space into the new table. */ /* Merely reuse the extra old space into the new table. */
#if USE_OBSTACK #if USE_OBSTACK
obstack_free (&new_table->entry_stack, NULL);
new_table->entry_stack = table->entry_stack; new_table->entry_stack = table->entry_stack;
#endif #endif
new_table->free_entry_list = table->free_entry_list; new_table->free_entry_list = table->free_entry_list;
for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) if (transfer_entries (new_table, table, false))
if (bucket->data) {
for (cursor = bucket; cursor; cursor = next) /* Entries transferred successfully; tie up the loose ends. */
{ free (table->bucket);
void *data = cursor->data; table->bucket = new_table->bucket;
struct hash_entry *new_bucket table->bucket_limit = new_table->bucket_limit;
= (new_table->bucket table->n_buckets = new_table->n_buckets;
+ new_table->hasher (data, new_table->n_buckets)); table->n_buckets_used = new_table->n_buckets_used;
table->free_entry_list = new_table->free_entry_list;
/* table->n_entries and table->entry_stack already hold their value. */
return true;
}
if (! (new_bucket < new_table->bucket_limit)) /* We've allocated new_table->bucket (and possibly some entries),
abort (); exhausted the free list, and moved some but not all entries into
new_table. We must undo the partial move before returning
failure. The only way to get into this situation is if new_table
uses fewer buckets than the old table, so we will reclaim some
free entries as overflows in the new table are put back into
distinct buckets in the old table.
next = cursor->next; There are some pathological cases where a single pass through the
table requires more intermediate overflow entries than using two
if (new_bucket->data) passes. Two passes give worse cache performance and takes
{ longer, but at this point, we're already out of memory, so slow
if (cursor == bucket) and safe is better than failure. */
{
/* Allocate or recycle an entry, when moving from a bucket
header into a bucket overflow. */
struct hash_entry *new_entry = allocate_entry (new_table);
if (new_entry == NULL)
return false;
new_entry->data = data;
new_entry->next = new_bucket->next;
new_bucket->next = new_entry;
}
else
{
/* Merely relink an existing entry, when moving from a
bucket overflow into a bucket overflow. */
cursor->next = new_bucket->next;
new_bucket->next = cursor;
}
}
else
{
/* Free an existing entry, when moving from a bucket
overflow into a bucket header. Also take care of the
simple case of moving from a bucket header into a bucket
header. */
new_bucket->data = data;
new_table->n_buckets_used++;
if (cursor != bucket)
free_entry (new_table, cursor);
}
}
free (table->bucket);
table->bucket = new_table->bucket;
table->bucket_limit = new_table->bucket_limit;
table->n_buckets = new_table->n_buckets;
table->n_buckets_used = new_table->n_buckets_used;
table->free_entry_list = new_table->free_entry_list; table->free_entry_list = new_table->free_entry_list;
if (! (transfer_entries (table, new_table, true)
&& transfer_entries (table, new_table, false)))
abort ();
/* table->n_entries already holds its value. */ /* table->n_entries already holds its value. */
#if USE_OBSTACK free (new_table->bucket);
table->entry_stack = new_table->entry_stack; return false;
#endif
free (new_table);
return true;
} }
/* If ENTRY matches an entry already in the hash table, return the pointer /* If ENTRY matches an entry already in the hash table, return the pointer
to the entry from the table. Otherwise, insert ENTRY and return ENTRY. to the entry from the table. Otherwise, insert ENTRY and return ENTRY.
Return NULL if the storage required for insertion cannot be allocated. */ Return NULL if the storage required for insertion cannot be allocated.
This implementation does not support duplicate entries or insertion of
NULL. */
void * void *
hash_insert (Hash_table *table, const void *entry) hash_insert (Hash_table *table, const void *entry)
@ -917,30 +1042,6 @@ hash_insert (Hash_table *table, const void *entry)
if ((data = hash_find_entry (table, entry, &bucket, false)) != NULL) if ((data = hash_find_entry (table, entry, &bucket, false)) != NULL)
return data; return data;
/* ENTRY is not matched, it should be inserted. */
if (bucket->data)
{
struct hash_entry *new_entry = allocate_entry (table);
if (new_entry == NULL)
return NULL;
/* Add ENTRY in the overflow of the bucket. */
new_entry->data = (void *) entry;
new_entry->next = bucket->next;
bucket->next = new_entry;
table->n_entries++;
return (void *) entry;
}
/* Add ENTRY right in the bucket head. */
bucket->data = (void *) entry;
table->n_entries++;
table->n_buckets_used++;
/* If the growth threshold of the buckets in use has been reached, increase /* If the growth threshold of the buckets in use has been reached, increase
the table size and rehash. There's no point in checking the number of the table size and rehash. There's no point in checking the number of
entries: if the hashing function is ill-conditioned, rehashing is not entries: if the hashing function is ill-conditioned, rehashing is not
@ -967,10 +1068,38 @@ hash_insert (Hash_table *table, const void *entry)
/* If the rehash fails, arrange to return NULL. */ /* If the rehash fails, arrange to return NULL. */
if (!hash_rehash (table, candidate)) if (!hash_rehash (table, candidate))
entry = NULL; return NULL;
/* Update the bucket we are interested in. */
if (hash_find_entry (table, entry, &bucket, false) != NULL)
abort ();
} }
} }
/* ENTRY is not matched, it should be inserted. */
if (bucket->data)
{
struct hash_entry *new_entry = allocate_entry (table);
if (new_entry == NULL)
return NULL;
/* Add ENTRY in the overflow of the bucket. */
new_entry->data = (void *) entry;
new_entry->next = bucket->next;
bucket->next = new_entry;
table->n_entries++;
return (void *) entry;
}
/* Add ENTRY right in the bucket head. */
bucket->data = (void *) entry;
table->n_entries++;
table->n_buckets_used++;
return (void *) entry; return (void *) entry;
} }
@ -1012,7 +1141,25 @@ hash_delete (Hash_table *table, const void *entry)
: (table->n_buckets * tuning->shrink_factor : (table->n_buckets * tuning->shrink_factor
* tuning->growth_threshold)); * tuning->growth_threshold));
hash_rehash (table, candidate); if (!hash_rehash (table, candidate))
{
/* Failure to allocate memory in an attempt to
shrink the table is not fatal. But since memory
is low, we can at least be kind and free any
spare entries, rather than keeping them tied up
in the free entry list. */
#if ! USE_OBSTACK
struct hash_entry *cursor = table->free_entry_list;
struct hash_entry *next;
while (cursor)
{
next = cursor->next;
free (cursor);
cursor = next;
}
table->free_entry_list = NULL;
#endif
}
} }
} }
} }
@ -1027,9 +1174,9 @@ hash_delete (Hash_table *table, const void *entry)
void void
hash_print (const Hash_table *table) hash_print (const Hash_table *table)
{ {
struct hash_entry const *bucket; struct hash_entry *bucket = (struct hash_entry *) table->bucket;
for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) for ( ; bucket < table->bucket_limit; bucket++)
{ {
struct hash_entry *cursor; struct hash_entry *cursor;

View File

@ -1,5 +1,5 @@
/* hash - hashing table processing. /* hash - hashing table processing.
Copyright (C) 1998, 1999, 2001, 2003 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2001, 2003, 2009 Free Software Foundation, Inc.
Written by Jim Meyering <meyering@ascend.com>, 1998. Written by Jim Meyering <meyering@ascend.com>, 1998.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -26,17 +26,22 @@
# include <stdio.h> # include <stdio.h>
# include <stdbool.h> # include <stdbool.h>
/* The warn_unused_result attribute appeared first in gcc-3.4.0 */
# ifndef __attribute__
# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
# define __attribute__(x)
# endif
# endif
# ifndef ATTRIBUTE_WUR
# define ATTRIBUTE_WUR __attribute__ ((__warn_unused_result__))
# endif
typedef size_t (*Hash_hasher) (const void *, size_t); typedef size_t (*Hash_hasher) (const void *, size_t);
typedef bool (*Hash_comparator) (const void *, const void *); typedef bool (*Hash_comparator) (const void *, const void *);
typedef void (*Hash_data_freer) (void *); typedef void (*Hash_data_freer) (void *);
typedef bool (*Hash_processor) (void *, void *); typedef bool (*Hash_processor) (void *, void *);
struct hash_entry
{
void *data;
struct hash_entry *next;
};
struct hash_tuning struct hash_tuning
{ {
/* This structure is mainly used for `hash_initialize', see the block /* This structure is mainly used for `hash_initialize', see the block
@ -75,13 +80,13 @@ size_t hash_string (const char *, size_t);
void hash_reset_tuning (Hash_tuning *); void hash_reset_tuning (Hash_tuning *);
Hash_table *hash_initialize (size_t, const Hash_tuning *, Hash_table *hash_initialize (size_t, const Hash_tuning *,
Hash_hasher, Hash_comparator, Hash_hasher, Hash_comparator,
Hash_data_freer); Hash_data_freer) ATTRIBUTE_WUR;
void hash_clear (Hash_table *); void hash_clear (Hash_table *);
void hash_free (Hash_table *); void hash_free (Hash_table *);
/* Insertion and deletion. */ /* Insertion and deletion. */
bool hash_rehash (Hash_table *, size_t); bool hash_rehash (Hash_table *, size_t) ATTRIBUTE_WUR;
void *hash_insert (Hash_table *, const void *); void *hash_insert (Hash_table *, const void *) ATTRIBUTE_WUR;
void *hash_delete (Hash_table *, const void *); void *hash_delete (Hash_table *, const void *);
#endif #endif

View File

@ -1,4 +1,4 @@
/* ANSI-C code produced by gperf version 3.0.4 */ /* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -m 10 ./iconv_open-aix.gperf */ /* Command-line: gperf -m 10 ./iconv_open-aix.gperf */
/* Computed positions: -k'4,$' */ /* Computed positions: -k'4,$' */
@ -229,7 +229,7 @@ static const struct mapping mappings[] =
#ifdef __GNUC__ #ifdef __GNUC__
__inline __inline
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ #ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__)) __attribute__ ((__gnu_inline__))
#endif #endif
#endif #endif

View File

@ -1,4 +1,4 @@
/* ANSI-C code produced by gperf version 3.0.4 */ /* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -m 10 ./iconv_open-hpux.gperf */ /* Command-line: gperf -m 10 ./iconv_open-hpux.gperf */
/* Computed positions: -k'4,$' */ /* Computed positions: -k'4,$' */
@ -272,7 +272,7 @@ static const struct mapping mappings[] =
#ifdef __GNUC__ #ifdef __GNUC__
__inline __inline
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ #ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__)) __attribute__ ((__gnu_inline__))
#endif #endif
#endif #endif

View File

@ -1,4 +1,4 @@
/* ANSI-C code produced by gperf version 3.0.4 */ /* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -m 10 ./iconv_open-irix.gperf */ /* Command-line: gperf -m 10 ./iconv_open-irix.gperf */
/* Computed positions: -k'1,$' */ /* Computed positions: -k'1,$' */
@ -172,7 +172,7 @@ static const struct mapping mappings[] =
#ifdef __GNUC__ #ifdef __GNUC__
__inline __inline
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ #ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__)) __attribute__ ((__gnu_inline__))
#endif #endif
#endif #endif

View File

@ -1,4 +1,4 @@
/* ANSI-C code produced by gperf version 3.0.4 */ /* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -m 10 ./iconv_open-osf.gperf */ /* Command-line: gperf -m 10 ./iconv_open-osf.gperf */
/* Computed positions: -k'4,$' */ /* Computed positions: -k'4,$' */
@ -251,7 +251,7 @@ static const struct mapping mappings[] =
#ifdef __GNUC__ #ifdef __GNUC__
__inline __inline
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ #ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__)) __attribute__ ((__gnu_inline__))
#endif #endif
#endif #endif

View File

@ -22,7 +22,7 @@
#endif #endif
/* The include_next requires a split double-inclusion guard. */ /* The include_next requires a split double-inclusion guard. */
#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_MATH_H@ #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
#ifndef _GL_MATH_H #ifndef _GL_MATH_H
#define _GL_MATH_H #define _GL_MATH_H
@ -148,7 +148,8 @@ extern long double ceill (long double x);
#endif #endif
#if @GNULIB_MATHL@ || !@HAVE_DECL_COSL@ #if @GNULIB_MATHL@ || (!@HAVE_DECL_COSL@ && !defined cosl)
# undef cosl
extern long double cosl (long double x); extern long double cosl (long double x);
#endif #endif
#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK #if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
@ -237,7 +238,8 @@ extern long double ldexpl (long double x, int exp);
#endif #endif
#if @GNULIB_MATHL@ || !@HAVE_DECL_LOGL@ #if @GNULIB_MATHL@ || (!@HAVE_DECL_LOGL@ && !defined logl)
# undef logl
extern long double logl (long double x); extern long double logl (long double x);
#endif #endif
#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK #if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
@ -292,7 +294,8 @@ extern long double roundl (long double x);
#endif #endif
#if @GNULIB_MATHL@ || !@HAVE_DECL_SINL@ #if @GNULIB_MATHL@ || (!@HAVE_DECL_SINL@ && !defined sinl)
# undef sinl
extern long double sinl (long double x); extern long double sinl (long double x);
#endif #endif
#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK #if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK

View File

@ -3,7 +3,7 @@
#line 1 #line 1
/* Declaration of functions and data types used for MD5 sum computing /* Declaration of functions and data types used for MD5 sum computing
library functions. library functions.
Copyright (C) 1995-1997,1999,2000,2001,2004,2005,2006,2008 Copyright (C) 1995-1997,1999,2000,2001,2004,2005,2006,2008,2009
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -57,6 +57,10 @@
# define __md5_stream md5_stream # define __md5_stream md5_stream
#endif #endif
# ifdef __cplusplus
extern "C" {
# endif
/* Structure to save state of computation between the single steps. */ /* Structure to save state of computation between the single steps. */
struct md5_ctx struct md5_ctx
{ {
@ -118,4 +122,8 @@ extern int __md5_stream (FILE *stream, void *resblock) __THROW;
extern void *__md5_buffer (const char *buffer, size_t len, extern void *__md5_buffer (const char *buffer, size_t len,
void *resblock) __THROW; void *resblock) __THROW;
# ifdef __cplusplus
}
# endif
#endif /* md5.h */ #endif /* md5.h */

View File

@ -0,0 +1,14 @@
# Suppress a valgrind message about use of uninitialized memory in memchr().
# POSIX states that when the character is found, memchr must not read extra
# bytes in an overestimated length (for example, where memchr is used to
# implement strnlen). However, we use a safe word read to provide a speedup.
{
memchr-value4
Memcheck:Value4
fun:rpl_memchr
}
{
memchr-value8
Memcheck:Value8
fun:rpl_memchr
}

View File

@ -0,0 +1,14 @@
# Suppress a valgrind message about use of uninitialized memory in memchr2().
# Like memchr, it is safe to overestimate the length when the terminator
# is guaranteed to be found. In this case, we may end up reading a word
# that is partially uninitialized, but this use is OK for a speedup.
{
memchr2-value4
Memcheck:Value4
fun:memchr2
}
{
memchr2-value8
Memcheck:Value8
fun:memchr2
}

View File

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

View File

@ -1,5 +1,5 @@
/* Get a list of all group IDs associated with a specified user ID. /* Get a list of all group IDs associated with a specified user ID.
Copyright (C) 2007 Free Software Foundation, Inc. Copyright (C) 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
/* Invoke open, but avoid some glitches. /* Invoke open, but avoid some glitches.
Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2008-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -35,13 +35,9 @@ open_safer (char const *file, int flags, ...)
va_list ap; va_list ap;
va_start (ap, flags); va_start (ap, flags);
/* Assume mode_t promotes to int if and only if it is smaller. /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
This assumption isn't guaranteed by the C standard, but we creates crashing code when 'mode_t' is smaller than 'int'. */
don't know of any real-world counterexamples. */ mode = va_arg (ap, PROMOTED_MODE_T);
if (sizeof (mode_t) < sizeof (int))
mode = va_arg (ap, int);
else
mode = va_arg (ap, mode_t);
va_end (ap); va_end (ap);
} }

View File

@ -1,5 +1,5 @@
/* Open a descriptor to a file. /* Open a descriptor to a file.
Copyright (C) 2007-2008 Free Software Foundation, Inc. Copyright (C) 2007-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -51,12 +51,9 @@ open (const char *filename, int flags, ...)
va_list arg; va_list arg;
va_start (arg, flags); va_start (arg, flags);
/* If mode_t is narrower than int, use the promoted type (int), /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
not mode_t. Use sizeof to guess whether mode_t is narrower; creates crashing code when 'mode_t' is smaller than 'int'. */
we don't know of any practical counterexamples. */ mode = va_arg (arg, PROMOTED_MODE_T);
mode = (sizeof (mode_t) < sizeof (int)
? va_arg (arg, int)
: va_arg (arg, mode_t));
va_end (arg); va_end (arg);
} }

View File

@ -1,5 +1,5 @@
/* provide a replacement openat function /* provide a replacement openat function
Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -47,12 +47,9 @@ openat (int fd, char const *file, int flags, ...)
va_list arg; va_list arg;
va_start (arg, flags); va_start (arg, flags);
/* If mode_t is narrower than int, use the promoted type (int), /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
not mode_t. Use sizeof to guess whether mode_t is narrower; creates crashing code when 'mode_t' is smaller than 'int'. */
we don't know of any practical counterexamples. */ mode = va_arg (arg, PROMOTED_MODE_T);
mode = (sizeof (mode_t) < sizeof (int)
? va_arg (arg, int)
: va_arg (arg, mode_t));
va_end (arg); va_end (arg);
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
/* Prototypes for openat-style fd-relative SELinux functions /* Prototypes for openat-style fd-relative SELinux functions
Copyright (C) 2007 Free Software Foundation, Inc. Copyright (C) 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,36 @@
#include <selinux/selinux.h> #include <selinux/selinux.h>
#include <selinux/context.h> #include <selinux/context.h>
int getfileconat (int fd, char const *file, security_context_t *con); /* These are the dir-fd-relative variants of the functions without the
int lgetfileconat (int fd, char const *file, security_context_t *con); "at" suffix. For example, getfileconat (AT_FDCWD, file, &c) is usually
int setfileconat (int fd, char const *file, security_context_t con); equivalent to getfilecon (file, &c). The emulation is accomplished
int lsetfileconat (int fd, char const *file, security_context_t con); by first attempting getfilecon ("/proc/self/fd/DIRFD/FILE", &c).
Failing that, simulate it via save_cwd/fchdir/getfilecon/restore_cwd.
If either the save_cwd or the restore_cwd fails (relatively unlikely),
then give a diagnostic and exit nonzero. */
/* dir-fd-relative getfilecon. Set *CON to the SELinux security context
of the file specified by DIRFD and FILE and return the length of *CON.
DIRFD and FILE are interpreted as for fstatat[*]. A non-NULL *CON
must be freed with freecon. Upon error, set *CON to NULL, set errno
and return -1.
[*] with flags=0 here, with flags=AT_SYMLINK_NOFOLLOW for lgetfileconat */
int getfileconat (int dirfd, char const *file, security_context_t *con);
/* dir-fd-relative lgetfilecon. This function is just like getfileconat,
except when DIRFD and FILE specify a symlink: lgetfileconat operates on
the symlink, while getfileconat operates on the referent of the symlink. */
int lgetfileconat (int dirfd, char const *file, security_context_t *con);
/* dir-fd-relative setfilecon. Set the SELinux security context of
the file specified by DIRFD and FILE to CON. DIRFD and FILE are
interpreted as for fstatat[*]. Upon success, return 0.
Otherwise, return -1 and set errno. */
int setfileconat (int dirfd, char const *file, security_context_t con);
/* dir-fd-relative lsetfilecon. This function is just like setfileconat,
except that rather than dereferencing a symlink, this function affects it. */
/* dir-fd-relative lsetfilecon. This function is just like setfileconat,
except when DIRFD and FILE specify a symlink: lsetfileconat operates on
the symlink, while setfileconat operates on the referent of the symlink. */
int lsetfileconat (int dirfd, char const *file, security_context_t con);

View File

@ -3,7 +3,7 @@
#line 1 #line 1
/* Declarations of functions and data types used for SHA1 sum /* Declarations of functions and data types used for SHA1 sum
library functions. library functions.
Copyright (C) 2000, 2001, 2003, 2005, 2006, 2008 Copyright (C) 2000, 2001, 2003, 2005, 2006, 2008, 2009
Free Software Foundation, Inc. Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
@ -26,6 +26,10 @@
# include <stdio.h> # include <stdio.h>
# include <stdint.h> # include <stdint.h>
# ifdef __cplusplus
extern "C" {
# endif
#define SHA1_DIGEST_SIZE 20 #define SHA1_DIGEST_SIZE 20
/* Structure to save state of computation between the single steps. */ /* Structure to save state of computation between the single steps. */
@ -84,4 +88,8 @@ extern int sha1_stream (FILE *stream, void *resblock);
digest. */ digest. */
extern void *sha1_buffer (const char *buffer, size_t len, void *resblock); extern void *sha1_buffer (const char *buffer, size_t len, void *resblock);
# ifdef __cplusplus
}
# endif
#endif #endif

View File

@ -1,6 +1,6 @@
/* Declarations of functions and data types used for SHA256 and SHA224 sum /* Declarations of functions and data types used for SHA256 and SHA224 sum
library functions. library functions.
Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -21,6 +21,10 @@
# include <stdio.h> # include <stdio.h>
# include <stdint.h> # include <stdint.h>
# ifdef __cplusplus
extern "C" {
# endif
/* Structure to save state of computation between the single steps. */ /* Structure to save state of computation between the single steps. */
struct sha256_ctx struct sha256_ctx
{ {
@ -80,4 +84,8 @@ extern int sha224_stream (FILE *stream, void *resblock);
extern void *sha256_buffer (const char *buffer, size_t len, void *resblock); extern void *sha256_buffer (const char *buffer, size_t len, void *resblock);
extern void *sha224_buffer (const char *buffer, size_t len, void *resblock); extern void *sha224_buffer (const char *buffer, size_t len, void *resblock);
# ifdef __cplusplus
}
# endif
#endif #endif

View File

@ -1,6 +1,6 @@
/* Declarations of functions and data types used for SHA512 and SHA384 sum /* Declarations of functions and data types used for SHA512 and SHA384 sum
library functions. library functions.
Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -22,6 +22,10 @@
# include "u64.h" # include "u64.h"
# ifdef __cplusplus
extern "C" {
# endif
/* Structure to save state of computation between the single steps. */ /* Structure to save state of computation between the single steps. */
struct sha512_ctx struct sha512_ctx
{ {
@ -84,4 +88,8 @@ extern int sha384_stream (FILE *stream, void *resblock);
extern void *sha512_buffer (const char *buffer, size_t len, void *resblock); extern void *sha512_buffer (const char *buffer, size_t len, void *resblock);
extern void *sha384_buffer (const char *buffer, size_t len, void *resblock); extern void *sha384_buffer (const char *buffer, size_t len, void *resblock);
# ifdef __cplusplus
}
# endif
#endif #endif

View File

@ -0,0 +1,118 @@
/* sockets.c --- wrappers for Windows socket functions
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/>. */
/* Written by Simon Josefsson */
#include <config.h>
/* Specification. */
#include "sockets.h"
#if WINDOWS_SOCKETS
/* This includes winsock2.h on MinGW. */
#include <sys/socket.h>
#include "close-hook.h"
/* Get set_winsock_errno, FD_TO_SOCKET etc. */
#include "w32sock.h"
static int
close_fd_maybe_socket (int fd, const struct close_hook *remaining_list)
{
SOCKET sock;
WSANETWORKEVENTS ev;
/* Test whether fd refers to a socket. */
sock = FD_TO_SOCKET (fd);
ev.lNetworkEvents = 0xDEADBEEF;
WSAEnumNetworkEvents (sock, NULL, &ev);
if (ev.lNetworkEvents != 0xDEADBEEF)
{
/* fd refers to a socket. */
/* FIXME: other applications, like squid, use an undocumented
_free_osfhnd free function. But this is not enough: The 'osfile'
flags for fd also needs to be cleared, but it is hard to access it.
Instead, here we just close twice the file descriptor. */
if (closesocket (sock))
{
set_winsock_errno ();
return -1;
}
else
{
/* This call frees the file descriptor and does a
CloseHandle ((HANDLE) _get_osfhandle (fd)), which fails. */
_close (fd);
return 0;
}
}
else
/* Some other type of file descriptor. */
return execute_close_hooks (fd, remaining_list);
}
static struct close_hook close_sockets_hook;
static int initialized_sockets_version /* = 0 */;
#endif
int
gl_sockets_startup (int version)
{
#if WINDOWS_SOCKETS
if (version > initialized_sockets_version)
{
WSADATA data;
int err;
err = WSAStartup (version, &data);
if (err != 0)
return 1;
if (data.wVersion < version)
return 2;
if (initialized_sockets_version == 0)
register_close_hook (close_fd_maybe_socket, &close_sockets_hook);
initialized_sockets_version = version;
}
#endif
return 0;
}
int
gl_sockets_cleanup (void)
{
#if WINDOWS_SOCKETS
int err;
initialized_sockets_version = 0;
unregister_close_hook (&close_sockets_hook);
err = WSACleanup ();
if (err != 0)
return 1;
#endif
return 0;
}

View File

@ -0,0 +1,51 @@
/* sockets.h - wrappers for Windows socket functions
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/>. */
/* Written by Simon Josefsson */
#ifndef SOCKETS_H
# define SOCKETS_H 1
#define SOCKETS_1_0 0x100 /* don't use - does not work on Windows XP */
#define SOCKETS_1_1 0x101
#define SOCKETS_2_0 0x200 /* don't use - does not work on Windows XP */
#define SOCKETS_2_1 0x201
#define SOCKETS_2_2 0x202
int gl_sockets_startup (int version);
int gl_sockets_cleanup (void);
/* This function is useful it you create a socket using gnulib's
Winsock wrappers but needs to pass on the socket handle to some
other library that only accepts sockets. */
#if WINDOWS_SOCKETS
#include <sys/socket.h>
static inline SOCKET
gl_fd_to_handle (int fd)
{
return _get_osfhandle (fd);
}
#else
#define gl_fd_to_handle(x) (x)
#endif /* WINDOWS_SOCKETS */
#endif /* SOCKETS_H */

View File

@ -0,0 +1,89 @@
/* -*- buffer-read-only: t -*- vi: set ro: */
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
#line 1
/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
Copyright (C) 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, 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, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/* Written by Eric Blake. */
/*
* POSIX 2008 <stddef.h> for platforms that have issues.
* <http://www.opengroup.org/susv3xbd/stddef.h.html>
*/
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
#endif
#if defined __need_wchar_t || defined __need_size_t \
|| defined __need_ptrdiff_t || defined __need_NULL \
|| defined __need_wint_t
/* Special invocation convention inside gcc header files. In
particular, gcc provides a version of <stddef.h> that blindly
redefines NULL even when __need_wint_t was defined, even though
wint_t is not normally provided by <stddef.h>. Hence, we must
remember if special invocation has ever been used to obtain wint_t,
in which case we need to clean up NULL yet again. */
# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
# ifdef __need_wint_t
# undef _GL_STDDEF_H
# define _GL_STDDEF_WINT_T
# endif
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
# endif
#else
/* Normal invocation convention. */
# ifndef _GL_STDDEF_H
/* The include_next requires a split double-inclusion guard. */
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
# ifndef _GL_STDDEF_H
# define _GL_STDDEF_H
/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */
#if @REPLACE_NULL@
# undef NULL
# ifdef __cplusplus
/* ISO C++ says that the macro NULL must expand to an integer constant
expression, hence '((void *) 0)' is not allowed in C++. */
# if __GNUG__ >= 3
/* GNU C++ has a __null macro that behaves like an integer ('int' or
'long') but has the same size as a pointer. Use that, to avoid
warnings. */
# define NULL __null
# else
# define NULL 0L
# endif
# else
# define NULL ((void *) 0)
# endif
#endif
/* Some platforms lack wchar_t. */
#if !@HAVE_WCHAR_T@
# define wchar_t int
#endif
# endif /* _GL_STDDEF_H */
# endif /* _GL_STDDEF_H */
#endif /* __need_XXX */

View File

@ -1,5 +1,5 @@
/* POSIX compatible FILE stream write function. /* POSIX compatible FILE stream write function.
Copyright (C) 2008 Free Software Foundation, Inc. Copyright (C) 2008-2009 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008. Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -63,6 +63,7 @@
} }
# if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */ # if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */
# if !DEPENDS_ON_LIBINTL /* avoid collision with intl/printf.c */
int int
printf (const char *format, ...) printf (const char *format, ...)
{ {
@ -75,6 +76,7 @@ printf (const char *format, ...)
return retval; return retval;
} }
# endif
# endif # endif
# if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */ # if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */
@ -92,7 +94,7 @@ fprintf (FILE *stream, const char *format, ...)
} }
# endif # endif
# if !REPLACE_VFPRINTF_POSIX /* avoid collision with vprintf.c */ # if !REPLACE_VPRINTF_POSIX /* avoid collision with vprintf.c */
int int
vprintf (const char *format, va_list args) vprintf (const char *format, va_list args)
{ {
@ -100,7 +102,7 @@ vprintf (const char *format, va_list args)
} }
# endif # endif
# if !REPLACE_VPRINTF_POSIX /* avoid collision with vfprintf.c */ # if !REPLACE_VFPRINTF_POSIX /* avoid collision with vfprintf.c */
int int
vfprintf (FILE *stream, const char *format, va_list args) vfprintf (FILE *stream, const char *format, va_list args)
#undef vfprintf #undef vfprintf

View File

@ -3,7 +3,7 @@
#line 1 #line 1
/* A GNU-like <stdio.h>. /* A GNU-like <stdio.h>.
Copyright (C) 2004, 2007-2008 Free Software Foundation, Inc. Copyright (C) 2004, 2007-2009 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -410,6 +410,27 @@ extern long rpl_ftell (FILE *fp);
fflush (f)) fflush (f))
#endif #endif
#if @GNULIB_FPURGE@
# if @REPLACE_FPURGE@
# define fpurge rpl_fpurge
# endif
# if @REPLACE_FPURGE@ || !@HAVE_DECL_FPURGE@
/* Discard all pending buffered I/O data on STREAM.
STREAM must not be wide-character oriented.
When discarding pending output, the file position is set back to where it
was before the write calls. When discarding pending input, the file
position is advanced to match the end of the previously read input.
Return 0 if successful. Upon error, return -1 and set errno. */
extern int fpurge (FILE *gl_stream);
# endif
#elif defined GNULIB_POSIXCHECK
# undef fpurge
# define fpurge(f) \
(GL_LINK_WARNING ("fpurge is not always present - " \
"use gnulib module fpurge for portability"), \
fpurge (f))
#endif
#if @GNULIB_FCLOSE@ #if @GNULIB_FCLOSE@
# if @REPLACE_FCLOSE@ # if @REPLACE_FCLOSE@
# define fclose rpl_fclose # define fclose rpl_fclose

View File

@ -35,6 +35,8 @@
#ifndef _GL_STDLIB_H #ifndef _GL_STDLIB_H
#define _GL_STDLIB_H #define _GL_STDLIB_H
/* NetBSD 5.0 mis-defines NULL. */
#include <stddef.h>
/* Solaris declares getloadavg() in <sys/loadavg.h>. */ /* Solaris declares getloadavg() in <sys/loadavg.h>. */
#if @GNULIB_GETLOADAVG@ && @HAVE_SYS_LOADAVG_H@ #if @GNULIB_GETLOADAVG@ && @HAVE_SYS_LOADAVG_H@

View File

@ -0,0 +1,432 @@
/* -*- buffer-read-only: t -*- vi: set ro: */
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
#line 1
/* Byte-wise substring search, using the Two-Way algorithm.
Copyright (C) 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Eric Blake <ebb9@byu.net>, 2008.
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, 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, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/* Before including this file, you need to include <config.h> and
<string.h>, and define:
RESULT_TYPE A macro that expands to the return type.
AVAILABLE(h, h_l, j, n_l)
A macro that returns nonzero if there are
at least N_L bytes left starting at H[J].
H is 'unsigned char *', H_L, J, and N_L
are 'size_t'; H_L is an lvalue. For
NUL-terminated searches, H_L can be
modified each iteration to avoid having
to compute the end of H up front.
For case-insensitivity, you may optionally define:
CMP_FUNC(p1, p2, l) A macro that returns 0 iff the first L
characters of P1 and P2 are equal.
CANON_ELEMENT(c) A macro that canonicalizes an element right after
it has been fetched from one of the two strings.
The argument is an 'unsigned char'; the result
must be an 'unsigned char' as well.
This file undefines the macros documented above, and defines
LONG_NEEDLE_THRESHOLD.
*/
#include <limits.h>
#include <stdint.h>
/* We use the Two-Way string matching algorithm, which guarantees
linear complexity with constant space. Additionally, for long
needles, we also use a bad character shift table similar to the
Boyer-Moore algorithm to achieve improved (potentially sub-linear)
performance.
See http://www-igm.univ-mlv.fr/~lecroq/string/node26.html#SECTION00260
and http://en.wikipedia.org/wiki/Boyer-Moore_string_search_algorithm
*/
/* Point at which computing a bad-byte shift table is likely to be
worthwhile. Small needles should not compute a table, since it
adds (1 << CHAR_BIT) + NEEDLE_LEN computations of preparation for a
speedup no greater than a factor of NEEDLE_LEN. The larger the
needle, the better the potential performance gain. On the other
hand, on non-POSIX systems with CHAR_BIT larger than eight, the
memory required for the table is prohibitive. */
#if CHAR_BIT < 10
# define LONG_NEEDLE_THRESHOLD 32U
#else
# define LONG_NEEDLE_THRESHOLD SIZE_MAX
#endif
#ifndef MAX
# define MAX(a, b) ((a < b) ? (b) : (a))
#endif
#ifndef CANON_ELEMENT
# define CANON_ELEMENT(c) c
#endif
#ifndef CMP_FUNC
# define CMP_FUNC memcmp
#endif
/* Perform a critical factorization of NEEDLE, of length NEEDLE_LEN.
Return the index of the first byte in the right half, and set
*PERIOD to the global period of the right half.
The global period of a string is the smallest index (possibly its
length) at which all remaining bytes in the string are repetitions
of the prefix (the last repetition may be a subset of the prefix).
When NEEDLE is factored into two halves, a local period is the
length of the smallest word that shares a suffix with the left half
and shares a prefix with the right half. All factorizations of a
non-empty NEEDLE have a local period of at least 1 and no greater
than NEEDLE_LEN.
A critical factorization has the property that the local period
equals the global period. All strings have at least one critical
factorization with the left half smaller than the global period.
Given an ordered alphabet, a critical factorization can be computed
in linear time, with 2 * NEEDLE_LEN comparisons, by computing the
larger of two ordered maximal suffixes. The ordered maximal
suffixes are determined by lexicographic comparison of
periodicity. */
static size_t
critical_factorization (const unsigned char *needle, size_t needle_len,
size_t *period)
{
/* Index of last byte of left half, or SIZE_MAX. */
size_t max_suffix, max_suffix_rev;
size_t j; /* Index into NEEDLE for current candidate suffix. */
size_t k; /* Offset into current period. */
size_t p; /* Intermediate period. */
unsigned char a, b; /* Current comparison bytes. */
/* Invariants:
0 <= j < NEEDLE_LEN - 1
-1 <= max_suffix{,_rev} < j (treating SIZE_MAX as if it were signed)
min(max_suffix, max_suffix_rev) < global period of NEEDLE
1 <= p <= global period of NEEDLE
p == global period of the substring NEEDLE[max_suffix{,_rev}+1...j]
1 <= k <= p
*/
/* Perform lexicographic search. */
max_suffix = SIZE_MAX;
j = 0;
k = p = 1;
while (j + k < needle_len)
{
a = CANON_ELEMENT (needle[j + k]);
b = CANON_ELEMENT (needle[max_suffix + k]);
if (a < b)
{
/* Suffix is smaller, period is entire prefix so far. */
j += k;
k = 1;
p = j - max_suffix;
}
else if (a == b)
{
/* Advance through repetition of the current period. */
if (k != p)
++k;
else
{
j += p;
k = 1;
}
}
else /* b < a */
{
/* Suffix is larger, start over from current location. */
max_suffix = j++;
k = p = 1;
}
}
*period = p;
/* Perform reverse lexicographic search. */
max_suffix_rev = SIZE_MAX;
j = 0;
k = p = 1;
while (j + k < needle_len)
{
a = CANON_ELEMENT (needle[j + k]);
b = CANON_ELEMENT (needle[max_suffix_rev + k]);
if (b < a)
{
/* Suffix is smaller, period is entire prefix so far. */
j += k;
k = 1;
p = j - max_suffix_rev;
}
else if (a == b)
{
/* Advance through repetition of the current period. */
if (k != p)
++k;
else
{
j += p;
k = 1;
}
}
else /* a < b */
{
/* Suffix is larger, start over from current location. */
max_suffix_rev = j++;
k = p = 1;
}
}
/* Choose the longer suffix. Return the first byte of the right
half, rather than the last byte of the left half. */
if (max_suffix_rev + 1 < max_suffix + 1)
return max_suffix + 1;
*period = p;
return max_suffix_rev + 1;
}
/* Return the first location of non-empty NEEDLE within HAYSTACK, or
NULL. HAYSTACK_LEN is the minimum known length of HAYSTACK. This
method is optimized for NEEDLE_LEN < LONG_NEEDLE_THRESHOLD.
Performance is guaranteed to be linear, with an initialization cost
of 2 * NEEDLE_LEN comparisons.
If AVAILABLE does not modify HAYSTACK_LEN (as in memmem), then at
most 2 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching.
If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 *
HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching. */
static RETURN_TYPE
two_way_short_needle (const unsigned char *haystack, size_t haystack_len,
const unsigned char *needle, size_t needle_len)
{
size_t i; /* Index into current byte of NEEDLE. */
size_t j; /* Index into current window of HAYSTACK. */
size_t period; /* The period of the right half of needle. */
size_t suffix; /* The index of the right half of needle. */
/* Factor the needle into two halves, such that the left half is
smaller than the global period, and the right half is
periodic (with a period as large as NEEDLE_LEN - suffix). */
suffix = critical_factorization (needle, needle_len, &period);
/* Perform the search. Each iteration compares the right half
first. */
if (CMP_FUNC (needle, needle + period, suffix) == 0)
{
/* Entire needle is periodic; a mismatch can only advance by the
period, so use memory to avoid rescanning known occurrences
of the period. */
size_t memory = 0;
j = 0;
while (AVAILABLE (haystack, haystack_len, j, needle_len))
{
/* Scan for matches in right half. */
i = MAX (suffix, memory);
while (i < needle_len && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
++i;
if (needle_len <= i)
{
/* Scan for matches in left half. */
i = suffix - 1;
while (memory < i + 1 && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
--i;
if (i + 1 < memory + 1)
return (RETURN_TYPE) (haystack + j);
/* No match, so remember how many repetitions of period
on the right half were scanned. */
j += period;
memory = needle_len - period;
}
else
{
j += i - suffix + 1;
memory = 0;
}
}
}
else
{
/* The two halves of needle are distinct; no extra memory is
required, and any mismatch results in a maximal shift. */
period = MAX (suffix, needle_len - suffix) + 1;
j = 0;
while (AVAILABLE (haystack, haystack_len, j, needle_len))
{
/* Scan for matches in right half. */
i = suffix;
while (i < needle_len && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
++i;
if (needle_len <= i)
{
/* Scan for matches in left half. */
i = suffix - 1;
while (i != SIZE_MAX && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
--i;
if (i == SIZE_MAX)
return (RETURN_TYPE) (haystack + j);
j += period;
}
else
j += i - suffix + 1;
}
}
return NULL;
}
/* Return the first location of non-empty NEEDLE within HAYSTACK, or
NULL. HAYSTACK_LEN is the minimum known length of HAYSTACK. This
method is optimized for LONG_NEEDLE_THRESHOLD <= NEEDLE_LEN.
Performance is guaranteed to be linear, with an initialization cost
of 3 * NEEDLE_LEN + (1 << CHAR_BIT) operations.
If AVAILABLE does not modify HAYSTACK_LEN (as in memmem), then at
most 2 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching,
and sublinear performance O(HAYSTACK_LEN / NEEDLE_LEN) is possible.
If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 *
HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching, and
sublinear performance is not possible. */
static RETURN_TYPE
two_way_long_needle (const unsigned char *haystack, size_t haystack_len,
const unsigned char *needle, size_t needle_len)
{
size_t i; /* Index into current byte of NEEDLE. */
size_t j; /* Index into current window of HAYSTACK. */
size_t period; /* The period of the right half of needle. */
size_t suffix; /* The index of the right half of needle. */
size_t shift_table[1U << CHAR_BIT]; /* See below. */
/* Factor the needle into two halves, such that the left half is
smaller than the global period, and the right half is
periodic (with a period as large as NEEDLE_LEN - suffix). */
suffix = critical_factorization (needle, needle_len, &period);
/* Populate shift_table. For each possible byte value c,
shift_table[c] is the distance from the last occurrence of c to
the end of NEEDLE, or NEEDLE_LEN if c is absent from the NEEDLE.
shift_table[NEEDLE[NEEDLE_LEN - 1]] contains the only 0. */
for (i = 0; i < 1U << CHAR_BIT; i++)
shift_table[i] = needle_len;
for (i = 0; i < needle_len; i++)
shift_table[CANON_ELEMENT (needle[i])] = needle_len - i - 1;
/* Perform the search. Each iteration compares the right half
first. */
if (CMP_FUNC (needle, needle + period, suffix) == 0)
{
/* Entire needle is periodic; a mismatch can only advance by the
period, so use memory to avoid rescanning known occurrences
of the period. */
size_t memory = 0;
size_t shift;
j = 0;
while (AVAILABLE (haystack, haystack_len, j, needle_len))
{
/* Check the last byte first; if it does not match, then
shift to the next possible match location. */
shift = shift_table[CANON_ELEMENT (haystack[j + needle_len - 1])];
if (0 < shift)
{
if (memory && shift < period)
{
/* Since needle is periodic, but the last period has
a byte out of place, there can be no match until
after the mismatch. */
shift = needle_len - period;
memory = 0;
}
j += shift;
continue;
}
/* Scan for matches in right half. The last byte has
already been matched, by virtue of the shift table. */
i = MAX (suffix, memory);
while (i < needle_len - 1 && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
++i;
if (needle_len - 1 <= i)
{
/* Scan for matches in left half. */
i = suffix - 1;
while (memory < i + 1 && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
--i;
if (i + 1 < memory + 1)
return (RETURN_TYPE) (haystack + j);
/* No match, so remember how many repetitions of period
on the right half were scanned. */
j += period;
memory = needle_len - period;
}
else
{
j += i - suffix + 1;
memory = 0;
}
}
}
else
{
/* The two halves of needle are distinct; no extra memory is
required, and any mismatch results in a maximal shift. */
size_t shift;
period = MAX (suffix, needle_len - suffix) + 1;
j = 0;
while (AVAILABLE (haystack, haystack_len, j, needle_len))
{
/* Check the last byte first; if it does not match, then
shift to the next possible match location. */
shift = shift_table[CANON_ELEMENT (haystack[j + needle_len - 1])];
if (0 < shift)
{
j += shift;
continue;
}
/* Scan for matches in right half. The last byte has
already been matched, by virtue of the shift table. */
i = suffix;
while (i < needle_len - 1 && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
++i;
if (needle_len - 1 <= i)
{
/* Scan for matches in left half. */
i = suffix - 1;
while (i != SIZE_MAX && (CANON_ELEMENT (needle[i])
== CANON_ELEMENT (haystack[i + j])))
--i;
if (i == SIZE_MAX)
return (RETURN_TYPE) (haystack + j);
j += period;
}
else
j += i - suffix + 1;
}
}
return NULL;
}
#undef AVAILABLE
#undef CANON_ELEMENT
#undef CMP_FUNC
#undef MAX
#undef RETURN_TYPE

View File

@ -313,7 +313,13 @@ rpl_strerror (int n)
break; break;
# endif # endif
# if GNULIB_defined_ # if GNULIB_defined_ESTALE
case ESTALE:
msg = "Stale NFS file handle";
break;
# endif
# if GNULIB_defined_ECANCELED
case ECANCELED: case ECANCELED:
msg = "Operation canceled"; msg = "Operation canceled";
break; break;

View File

@ -3,7 +3,7 @@
#line 1 #line 1
/* A GNU-like <string.h>. /* A GNU-like <string.h>.
Copyright (C) 1995-1996, 2001-2008 Free Software Foundation, Inc. Copyright (C) 1995-1996, 2001-2009 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -31,6 +31,8 @@
#ifndef _GL_STRING_H #ifndef _GL_STRING_H
#define _GL_STRING_H #define _GL_STRING_H
/* NetBSD 5.0 mis-defines NULL. */
#include <stddef.h>
#ifndef __attribute__ #ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */ /* This feature is available in gcc versions 2.5 and later. */
@ -52,6 +54,21 @@ extern "C" {
#endif #endif
/* Return the first instance of C within N bytes of S, or NULL. */
#if @GNULIB_MEMCHR@
# if @REPLACE_MEMCHR@
# define memchr rpl_memchr
extern void *memchr (void const *__s, int __c, size_t __n)
__attribute__ ((__pure__));
# endif
#elif defined GNULIB_POSIXCHECK
# undef memchr
# define memchr(s,c,n) \
(GL_LINK_WARNING ("memchr has platform-specific bugs - " \
"use gnulib module memchr for portability" ), \
memchr (s, c, n))
#endif
/* Return the first occurrence of NEEDLE in HAYSTACK. */ /* Return the first occurrence of NEEDLE in HAYSTACK. */
#if @GNULIB_MEMMEM@ #if @GNULIB_MEMMEM@
# if @REPLACE_MEMMEM@ # if @REPLACE_MEMMEM@

View File

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

View File

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

View File

@ -0,0 +1,86 @@
/* -*- buffer-read-only: t -*- vi: set ro: */
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
#line 1
/* Copyright (C) 1991,92,93,94,96,97,98,2000,2004,2007,2008 Free Software
Foundation, Inc.
This file is part of the GNU C Library.
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, 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, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/* This particular implementation was written by Eric Blake, 2008. */
#ifndef _LIBC
# include <config.h>
#endif
/* Specification of strstr. */
#include <string.h>
#include <stdbool.h>
#ifndef _LIBC
# define __builtin_expect(expr, val) (expr)
#endif
#define RETURN_TYPE char *
#define AVAILABLE(h, h_l, j, n_l) \
(!memchr ((h) + (h_l), '\0', (j) + (n_l) - (h_l)) \
&& ((h_l) = (j) + (n_l)))
#include "str-two-way.h"
/* Return the first occurrence of NEEDLE in HAYSTACK. Return HAYSTACK
if NEEDLE is empty, otherwise NULL if NEEDLE is not found in
HAYSTACK. */
char *
strstr (const char *haystack_start, const char *needle_start)
{
const char *haystack = haystack_start;
const char *needle = needle_start;
size_t needle_len; /* Length of NEEDLE. */
size_t haystack_len; /* Known minimum length of HAYSTACK. */
bool ok = true; /* True if NEEDLE is prefix of HAYSTACK. */
/* Determine length of NEEDLE, and in the process, make sure
HAYSTACK is at least as long (no point processing all of a long
NEEDLE if HAYSTACK is too short). */
while (*haystack && *needle)
ok &= *haystack++ == *needle++;
if (*needle)
return NULL;
if (ok)
return (char *) haystack_start;
/* Reduce the size of haystack using strchr, since it has a smaller
linear coefficient than the Two-Way algorithm. */
needle_len = needle - needle_start;
haystack = strchr (haystack_start + 1, *needle_start);
if (!haystack || __builtin_expect (needle_len == 1, 0))
return (char *) haystack;
needle -= needle_len;
haystack_len = (haystack > haystack_start + needle_len ? 1
: needle_len + haystack_start - haystack);
/* Perform the search. Abstract memory is considered to be an array
of 'unsigned char' values, not an array of 'char' values. See
ISO C 99 section 6.2.6.1. */
if (needle_len < LONG_NEEDLE_THRESHOLD)
return two_way_short_needle ((const unsigned char *) haystack,
haystack_len,
(const unsigned char *) needle, needle_len);
return two_way_long_needle ((const unsigned char *) haystack, haystack_len,
(const unsigned char *) needle, needle_len);
}
#undef LONG_NEEDLE_THRESHOLD

View File

@ -45,9 +45,13 @@
# include <sys/types.h> # include <sys/types.h>
/* On OSF/1 4.0, <sys/select.h> provides only a forward declaration /* On OSF/1 4.0, <sys/select.h> provides only a forward declaration
of 'struct timeval', and no definition of this type.. */ of 'struct timeval', and no definition of this type. */
# include <sys/time.h> # include <sys/time.h>
/* On Solaris 10, <sys/select.h> provides an FD_ZERO implementation
that relies on memset(), but without including <string.h>. */
# include <string.h>
/* The include_next requires a split double-inclusion guard. */ /* The include_next requires a split double-inclusion guard. */
# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@ # @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@

View File

@ -46,6 +46,30 @@
#ifndef _GL_SYS_SOCKET_H #ifndef _GL_SYS_SOCKET_H
#define _GL_SYS_SOCKET_H #define _GL_SYS_SOCKET_H
#if !@HAVE_SA_FAMILY_T@
typedef unsigned short sa_family_t;
#endif
#if !@HAVE_STRUCT_SOCKADDR_STORAGE@
# include <alignof.h>
/* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on
2009-05-08, licensed under LGPLv2.1+, plus portability fixes. */
# define __ss_aligntype unsigned long int
# define _SS_SIZE 256
# define _SS_PADSIZE \
(_SS_SIZE - ((sizeof (sa_family_t) >= alignof (__ss_aligntype) \
? sizeof (sa_family_t) \
: alignof (__ss_aligntype)) \
+ sizeof (__ss_aligntype)))
struct sockaddr_storage
{
sa_family_t ss_family; /* Address family, etc. */
__ss_aligntype __ss_align; /* Force desired alignment. */
char __ss_padding[_SS_PADSIZE];
};
#endif
#if @HAVE_SYS_SOCKET_H@ #if @HAVE_SYS_SOCKET_H@
/* A platform that has <sys/socket.h>. */ /* A platform that has <sys/socket.h>. */

View File

@ -1,7 +1,7 @@
/* tempname.c - generate the name of a temporary file. /* tempname.c - generate the name of a temporary file.
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2005, 2006, 2007 Free Software Foundation, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009 Free Software Foundation,
Inc. Inc.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

View File

@ -1,6 +1,6 @@
/* Create a temporary file or directory. /* Create a temporary file or directory.
Copyright (C) 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify 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 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