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:
parent
fb086488a9
commit
b5dc2c1535
@ -76,6 +76,7 @@ sleep: Jim Meyering, Paul Eggert
|
||||
sort: Mike Haertel, Paul Eggert
|
||||
split: Torbjörn Granlund, Richard M. Stallman
|
||||
stat: Michael Meskes
|
||||
stdbuf: Pádraig Brady
|
||||
stty: David MacKenzie
|
||||
su: David MacKenzie
|
||||
sum: Kayvan Aghaiepour, David MacKenzie
|
||||
|
@ -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>
|
||||
|
||||
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
|
||||
* NEWS (Build-related): Mention make check fixes.
|
||||
|
||||
|
@ -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
|
||||
modification, are permitted provided the copyright notice
|
||||
|
@ -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
|
||||
modification, are permitted provided the copyright notice
|
||||
|
@ -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
|
||||
modification, are permitted provided the copyright notice
|
||||
|
@ -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
|
||||
modification, are permitted provided the copyright notice
|
||||
|
@ -4,8 +4,10 @@ Installation Instructions
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
Copying and distribution of this file, with or without modification,
|
||||
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
|
||||
==================
|
||||
@ -13,7 +15,11 @@ Basic Installation
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
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
|
||||
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
|
||||
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
|
||||
`./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.
|
||||
|
||||
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
|
||||
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
|
||||
files that `configure' created (so you can compile the package for
|
||||
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
|
||||
with the distribution.
|
||||
|
||||
6. Often, you can also type `make uninstall' to remove the installed
|
||||
files again.
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
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
|
||||
=====================
|
||||
@ -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
|
||||
directory where you want the object files and executables to go and run
|
||||
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
|
||||
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
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
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
|
||||
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
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
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
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the 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
|
||||
`--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
|
||||
==================
|
||||
|
||||
@ -288,7 +350,7 @@ operates.
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--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
|
||||
the installation locations.
|
||||
|
||||
|
@ -25,6 +25,7 @@ changelog_etc = \
|
||||
ChangeLog-2007 \
|
||||
ChangeLog-2008 \
|
||||
build-aux/ChangeLog-2007 \
|
||||
build-aux/update-copyright \
|
||||
doc/ChangeLog-2007 \
|
||||
lib/ChangeLog-2007 \
|
||||
m4/ChangeLog-2007 \
|
||||
@ -40,6 +41,7 @@ changelog_etc = \
|
||||
|
||||
syntax_check_exceptions = \
|
||||
.x-sc_GPL_version \
|
||||
.x-sc_error_message_uppercase \
|
||||
.x-sc_file_system \
|
||||
.x-sc_obsolete_symbols \
|
||||
.x-sc_po_check \
|
||||
@ -48,8 +50,10 @@ syntax_check_exceptions = \
|
||||
.x-sc_prohibit_stat_st_blocks \
|
||||
.x-sc_prohibit_strcmp \
|
||||
.x-sc_require_config_h \
|
||||
.x-sc_require_config_h_first \
|
||||
.x-sc_space_tab \
|
||||
.x-sc_sun_os_names \
|
||||
.x-sc_system_h_headers \
|
||||
.x-sc_trailing_blank \
|
||||
.x-sc_unmarked_diagnostics \
|
||||
.x-sc_useless_cpp_parens
|
||||
|
@ -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@
|
||||
|
||||
# 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/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.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/multiarch.m4 $(top_srcdir)/m4/nanosleep.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/stat-prog.m4 $(top_srcdir)/m4/stat-time.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/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
|
||||
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
|
||||
$(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/stpncpy.m4 \
|
||||
$(top_srcdir)/m4/strcspn.m4 $(top_srcdir)/m4/strdup.m4 \
|
||||
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strftime.m4 \
|
||||
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
|
||||
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
|
||||
$(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
|
||||
$(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
|
||||
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio-safer.m4 \
|
||||
$(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib-safer.m4 \
|
||||
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
|
||||
$(top_srcdir)/m4/stpncpy.m4 $(top_srcdir)/m4/strcspn.m4 \
|
||||
$(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
|
||||
$(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \
|
||||
$(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.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/strtoll.m4 $(top_srcdir)/m4/strtoul.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/utimes.m4 $(top_srcdir)/m4/vasnprintf.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/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \
|
||||
$(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
|
||||
@ -342,6 +344,7 @@ FCNTL_H = @FCNTL_H@
|
||||
FLOAT_H = @FLOAT_H@
|
||||
FNMATCH_H = @FNMATCH_H@
|
||||
GETADDRINFO_LIB = @GETADDRINFO_LIB@
|
||||
GETHOSTNAME_LIB = @GETHOSTNAME_LIB@
|
||||
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GETOPT_H = @GETOPT_H@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
@ -372,6 +375,7 @@ GNULIB_FLOORL = @GNULIB_FLOORL@
|
||||
GNULIB_FOPEN = @GNULIB_FOPEN@
|
||||
GNULIB_FPRINTF = @GNULIB_FPRINTF@
|
||||
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
|
||||
GNULIB_FPURGE = @GNULIB_FPURGE@
|
||||
GNULIB_FPUTC = @GNULIB_FPUTC@
|
||||
GNULIB_FPUTS = @GNULIB_FPUTS@
|
||||
GNULIB_FREOPEN = @GNULIB_FREOPEN@
|
||||
@ -438,6 +442,7 @@ GNULIB_MBSSEP = @GNULIB_MBSSEP@
|
||||
GNULIB_MBSSPN = @GNULIB_MBSSPN@
|
||||
GNULIB_MBSSTR = @GNULIB_MBSSTR@
|
||||
GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
|
||||
GNULIB_MEMCHR = @GNULIB_MEMCHR@
|
||||
GNULIB_MEMMEM = @GNULIB_MEMMEM@
|
||||
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
|
||||
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
|
||||
@ -501,6 +506,7 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
|
||||
GNULIB_TRUNC = @GNULIB_TRUNC@
|
||||
GNULIB_TRUNCF = @GNULIB_TRUNCF@
|
||||
GNULIB_TRUNCL = @GNULIB_TRUNCL@
|
||||
GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
|
||||
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
|
||||
GNULIB_UNSETENV = @GNULIB_UNSETENV@
|
||||
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
|
||||
@ -530,6 +536,7 @@ HAVE_DECL_COSL = @HAVE_DECL_COSL@
|
||||
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
|
||||
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
|
||||
HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
|
||||
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
|
||||
HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@
|
||||
HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
|
||||
HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@
|
||||
@ -605,6 +612,7 @@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
|
||||
HAVE_READLINK = @HAVE_READLINK@
|
||||
HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
|
||||
HAVE_RPMATCH = @HAVE_RPMATCH@
|
||||
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
|
||||
HAVE_SCANDIR = @HAVE_SCANDIR@
|
||||
HAVE_SETENV = @HAVE_SETENV@
|
||||
HAVE_SIGACTION = @HAVE_SIGACTION@
|
||||
@ -628,6 +636,7 @@ HAVE_STRTOULL = @HAVE_STRTOULL@
|
||||
HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@
|
||||
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
|
||||
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_STRVERSCMP = @HAVE_STRVERSCMP@
|
||||
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_VDPRINTF = @HAVE_VDPRINTF@
|
||||
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
||||
HAVE_WCHAR_T = @HAVE_WCHAR_T@
|
||||
HAVE_WCRTOMB = @HAVE_WCRTOMB@
|
||||
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
|
||||
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
|
||||
@ -711,6 +721,32 @@ NEED_SETGID = @NEED_SETGID@
|
||||
NETDB_H = @NETDB_H@
|
||||
NETINET_IN_H = @NETINET_IN_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_ERRNO_H = @NEXT_ERRNO_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_SIGNAL_H = @NEXT_SIGNAL_H@
|
||||
NEXT_STDARG_H = @NEXT_STDARG_H@
|
||||
NEXT_STDDEF_H = @NEXT_STDDEF_H@
|
||||
NEXT_STDINT_H = @NEXT_STDINT_H@
|
||||
NEXT_STDIO_H = @NEXT_STDIO_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@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
OPTIONAL_PKGLIB_PROGS = @OPTIONAL_PKGLIB_PROGS@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
@ -762,6 +800,7 @@ REPLACE_CEILL = @REPLACE_CEILL@
|
||||
REPLACE_CHOWN = @REPLACE_CHOWN@
|
||||
REPLACE_CLOSE = @REPLACE_CLOSE@
|
||||
REPLACE_DPRINTF = @REPLACE_DPRINTF@
|
||||
REPLACE_DUP2 = @REPLACE_DUP2@
|
||||
REPLACE_FCHDIR = @REPLACE_FCHDIR@
|
||||
REPLACE_FCLOSE = @REPLACE_FCLOSE@
|
||||
REPLACE_FFLUSH = @REPLACE_FFLUSH@
|
||||
@ -769,6 +808,7 @@ REPLACE_FLOORF = @REPLACE_FLOORF@
|
||||
REPLACE_FLOORL = @REPLACE_FLOORL@
|
||||
REPLACE_FOPEN = @REPLACE_FOPEN@
|
||||
REPLACE_FPRINTF = @REPLACE_FPRINTF@
|
||||
REPLACE_FPURGE = @REPLACE_FPURGE@
|
||||
REPLACE_FREOPEN = @REPLACE_FREOPEN@
|
||||
REPLACE_FREXP = @REPLACE_FREXP@
|
||||
REPLACE_FREXPL = @REPLACE_FREXPL@
|
||||
@ -799,11 +839,14 @@ REPLACE_MBSINIT = @REPLACE_MBSINIT@
|
||||
REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
|
||||
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
|
||||
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
|
||||
REPLACE_MEMCHR = @REPLACE_MEMCHR@
|
||||
REPLACE_MEMMEM = @REPLACE_MEMMEM@
|
||||
REPLACE_MKDIR = @REPLACE_MKDIR@
|
||||
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
|
||||
REPLACE_MKTIME = @REPLACE_MKTIME@
|
||||
REPLACE_NAN = @REPLACE_NAN@
|
||||
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
|
||||
REPLACE_NULL = @REPLACE_NULL@
|
||||
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
|
||||
REPLACE_OPEN = @REPLACE_OPEN@
|
||||
REPLACE_PERROR = @REPLACE_PERROR@
|
||||
@ -849,10 +892,12 @@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
||||
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
|
||||
STDARG_H = @STDARG_H@
|
||||
STDBOOL_H = @STDBOOL_H@
|
||||
STDDEF_H = @STDDEF_H@
|
||||
STDINT_H = @STDINT_H@
|
||||
STRIP = @STRIP@
|
||||
SYS_IOCTL_H = @SYS_IOCTL_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_SOCKET_H = @SYS_SOCKET_H@
|
||||
SYS_STAT_H = @SYS_STAT_H@
|
||||
@ -863,6 +908,7 @@ U = @U@
|
||||
UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_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_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
|
||||
USE_ACL = @USE_ACL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
@ -943,6 +989,7 @@ changelog_etc = \
|
||||
ChangeLog-2007 \
|
||||
ChangeLog-2008 \
|
||||
build-aux/ChangeLog-2007 \
|
||||
build-aux/update-copyright \
|
||||
doc/ChangeLog-2007 \
|
||||
lib/ChangeLog-2007 \
|
||||
m4/ChangeLog-2007 \
|
||||
@ -958,6 +1005,7 @@ changelog_etc = \
|
||||
|
||||
syntax_check_exceptions = \
|
||||
.x-sc_GPL_version \
|
||||
.x-sc_error_message_uppercase \
|
||||
.x-sc_file_system \
|
||||
.x-sc_obsolete_symbols \
|
||||
.x-sc_po_check \
|
||||
@ -966,8 +1014,10 @@ syntax_check_exceptions = \
|
||||
.x-sc_prohibit_stat_st_blocks \
|
||||
.x-sc_prohibit_strcmp \
|
||||
.x-sc_require_config_h \
|
||||
.x-sc_require_config_h_first \
|
||||
.x-sc_space_tab \
|
||||
.x-sc_sun_os_names \
|
||||
.x-sc_system_h_headers \
|
||||
.x-sc_trailing_blank \
|
||||
.x-sc_unmarked_diagnostics \
|
||||
.x-sc_useless_cpp_parens
|
||||
@ -1308,6 +1358,7 @@ distcheck: dist
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
@ -1330,7 +1381,9 @@ distcheck: dist
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
|
@ -1,5 +1,67 @@
|
||||
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]
|
||||
|
||||
** Bug fixes
|
||||
|
@ -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
|
||||
od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir
|
||||
runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf
|
||||
sleep sort split stat stty su sum sync tac tail tee test timeout touch tr
|
||||
true truncate tsort tty uname unexpand uniq unlink uptime users vdir wc who
|
||||
whoami yes
|
||||
sleep sort split stat stdbuf stty su sum sync tac tail tee test timeout
|
||||
touch tr true truncate tsort tty uname unexpand uniq unlink uptime users
|
||||
vdir wc who whoami yes
|
||||
|
||||
See the file NEWS for a list of major changes in the current release.
|
||||
|
||||
|
@ -75,6 +75,7 @@ Bernd Melchers melchers@cis.fu-berlin.de
|
||||
Bernhard Baehr bernhard.baehr@gmx.de
|
||||
Bernhard Gabler bernhard@uni-koblenz.de
|
||||
Bernhard Rosenkraenzer bero@redhat.de
|
||||
Bernhard Voelker bernhard.voelker@siemens-enterprise.com
|
||||
Bert Deknuydt Bert.Deknuydt@esat.kuleuven.ac.be
|
||||
Bert Wesarg bert.wesarg@googlemail.com
|
||||
Bill Peters peters@gaffel.as.arizona.edu
|
||||
@ -112,6 +113,7 @@ Christophe LYON christophe.lyon@st.com
|
||||
Chuck Hedrick hedrick@klinzhai.rutgers.edu
|
||||
Clark Morgan cmorgan@aracnet.com
|
||||
Clement Wang clem.wang@overture.com
|
||||
Cliff Miller cbm@whatexit.org
|
||||
Colin Plumb colin@nyx.net
|
||||
Colin Watson cjw44@riva.ucam.org
|
||||
Collin Rogowski collin@rogowski.de
|
||||
@ -276,6 +278,7 @@ Jim Dennis jimd@starshine.org
|
||||
Joakim Rosqvist dvljrt@cs.umu.se
|
||||
Jochen Hein jochen@jochen.org
|
||||
Joe Orton joe@manyfish.co.uk
|
||||
Joel E. Denny jdenny@clemson.edu
|
||||
Joerg Sonnenberger joerg@britannica.bec.de
|
||||
Joey Hess joeyh@debian.org
|
||||
Johan Boule bohan@bohan.dyndns.org
|
||||
@ -299,6 +302,7 @@ Joshua Hudson joshudson@gmail.com
|
||||
Josselin Mouette joss@debian.org
|
||||
Juan F. Codagnone juam@arnet.com.ar
|
||||
Juan M. Guerrero st001906@hrz1.hrz.tu-darmstadt.de
|
||||
Julian Bradfield jcb@inf.ed.ac.uk
|
||||
Jungshik Shin jshin@pantheon.yale.edu
|
||||
Jürgen Fluk louis@dachau.marco.de
|
||||
Jurriaan thunder7@xs4all.nl
|
||||
@ -396,6 +400,7 @@ Michael J. Croghan mcroghan@usatoday.com
|
||||
Michael McFarland sidlon@yahoo.com
|
||||
Michael McLagan mmclagan@invlogic.com
|
||||
Michael Piefel piefel@informatik.hu-berlin.de
|
||||
Michael Speer knomenet@gmail.com
|
||||
Michael Steffens michael.steffens@s.netic.de
|
||||
Michael Stone mstone@debian.org
|
||||
Michael Stutz stutz@dsl.org
|
||||
|
17
src/bin/coreutils/aclocal.m4
vendored
17
src/bin/coreutils/aclocal.m4
vendored
@ -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,
|
||||
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
@ -13,8 +13,8 @@
|
||||
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63b.42-b26d5],,
|
||||
[m4_warning([this file was generated for autoconf 2.63b.42-b26d5.
|
||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64.16-4cdf58],,
|
||||
[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.
|
||||
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'.])])
|
||||
@ -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.
|
||||
# (This private macro should not be called outside this file.)
|
||||
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 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
|
||||
])
|
||||
|
||||
@ -50,7 +50,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||
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_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_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/mkstemp.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/mountlist.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/stdarg.m4])
|
||||
m4_include([m4/stdbool.m4])
|
||||
m4_include([m4/stddef_h.m4])
|
||||
m4_include([m4/stdint.m4])
|
||||
m4_include([m4/stdint_h.m4])
|
||||
m4_include([m4/stdio-safer.m4])
|
||||
@ -1303,6 +1306,7 @@ m4_include([m4/strndup.m4])
|
||||
m4_include([m4/strnlen.m4])
|
||||
m4_include([m4/strnumcmp.m4])
|
||||
m4_include([m4/strpbrk.m4])
|
||||
m4_include([m4/strstr.m4])
|
||||
m4_include([m4/strtod.m4])
|
||||
m4_include([m4/strtoimax.m4])
|
||||
m4_include([m4/strtol.m4])
|
||||
@ -1338,6 +1342,7 @@ m4_include([m4/utimes.m4])
|
||||
m4_include([m4/vasnprintf.m4])
|
||||
m4_include([m4/vasprintf-posix.m4])
|
||||
m4_include([m4/vasprintf.m4])
|
||||
m4_include([m4/version-etc.m4])
|
||||
m4_include([m4/vfprintf-posix.m4])
|
||||
m4_include([m4/vprintf-posix.m4])
|
||||
m4_include([m4/warnings.m4])
|
||||
|
@ -106,14 +106,14 @@ tests_base=tests
|
||||
|
||||
# Extra files from gnulib, which override files from other sources.
|
||||
gnulib_extra_files="
|
||||
$build_aux/install-sh
|
||||
$build_aux/missing
|
||||
$build_aux/mdate-sh
|
||||
$build_aux/texinfo.tex
|
||||
$build_aux/depcomp
|
||||
$build_aux/config.guess
|
||||
$build_aux/config.sub
|
||||
doc/INSTALL
|
||||
$build_aux/install-sh
|
||||
$build_aux/missing
|
||||
$build_aux/mdate-sh
|
||||
$build_aux/texinfo.tex
|
||||
$build_aux/depcomp
|
||||
$build_aux/config.guess
|
||||
$build_aux/config.sub
|
||||
doc/INSTALL
|
||||
"
|
||||
|
||||
# Additional gnulib-tool options to use. Use "\newline" to break lines.
|
||||
@ -272,10 +272,10 @@ get_version() {
|
||||
|
||||
$app --version 2>&1 |
|
||||
sed -n 's/[^0-9.]*\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/p
|
||||
t done
|
||||
d
|
||||
:done
|
||||
q'
|
||||
t done
|
||||
d
|
||||
:done
|
||||
q'
|
||||
}
|
||||
|
||||
check_versions() {
|
||||
@ -313,7 +313,7 @@ print_versions() {
|
||||
|
||||
if ! printf "$buildreq" | check_versions; then
|
||||
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
|
||||
print_versions
|
||||
exit 1
|
||||
@ -342,7 +342,7 @@ cleanup_gnulib() {
|
||||
}
|
||||
|
||||
git_modules_config () {
|
||||
GIT_CONFIG=.gitmodules git config "$@"
|
||||
test -f .gitmodules && git config --file .gitmodules "$@"
|
||||
}
|
||||
|
||||
# Get gnulib files.
|
||||
@ -371,7 +371,7 @@ case ${GNULIB_SRCDIR--} in
|
||||
# Redirect the gnulib submodule to the directory on the command line
|
||||
# if possible.
|
||||
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
|
||||
GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
|
||||
git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
|
||||
@ -419,10 +419,12 @@ update_po_files() {
|
||||
new_po="$ref_po_dir/$po.po"
|
||||
cksum_file="$ref_po_dir/$po.s1"
|
||||
if ! test -f "$cksum_file" ||
|
||||
! test -f "$po_dir/$po.po" ||
|
||||
! ${SHA1SUM-sha1sum} -c --status "$cksum_file" < "$new_po" > /dev/null; then
|
||||
! test -f "$po_dir/$po.po" ||
|
||||
! ${SHA1SUM-sha1sum} -c --status "$cksum_file" \
|
||||
< "$new_po" > /dev/null; then
|
||||
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
|
||||
done
|
||||
}
|
||||
@ -456,45 +458,45 @@ symlink_to_dir()
|
||||
# FIXME: for now, this does only one level
|
||||
parent=`dirname "$dst_dir"`
|
||||
for dot_ig in x $vc_ignore; do
|
||||
test $dot_ig = x && continue
|
||||
ig=$parent/$dot_ig
|
||||
insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
|
||||
test $dot_ig = x && continue
|
||||
ig=$parent/$dot_ig
|
||||
insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
|
||||
done
|
||||
fi
|
||||
|
||||
if $copy; then
|
||||
{
|
||||
test ! -h "$dst" || {
|
||||
echo "$0: rm -f $dst" &&
|
||||
rm -f "$dst"
|
||||
}
|
||||
test ! -h "$dst" || {
|
||||
echo "$0: rm -f $dst" &&
|
||||
rm -f "$dst"
|
||||
}
|
||||
} &&
|
||||
test -f "$dst" &&
|
||||
cmp -s "$src" "$dst" || {
|
||||
echo "$0: cp -fp $src $dst" &&
|
||||
cp -fp "$src" "$dst"
|
||||
echo "$0: cp -fp $src $dst" &&
|
||||
cp -fp "$src" "$dst"
|
||||
}
|
||||
else
|
||||
test -h "$dst" &&
|
||||
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 &&
|
||||
test "$src_i" = "$dst_i" || {
|
||||
dot_dots=
|
||||
case $src in
|
||||
/*) ;;
|
||||
*)
|
||||
case /$dst/ in
|
||||
*//* | */../* | */./* | /*/*/*/*/*/)
|
||||
echo >&2 "$0: invalid symlink calculation: $src -> $dst"
|
||||
exit 1;;
|
||||
/*/*/*/*/) dot_dots=../../../;;
|
||||
/*/*/*/) dot_dots=../../;;
|
||||
/*/*/) dot_dots=../;;
|
||||
esac;;
|
||||
esac
|
||||
dot_dots=
|
||||
case $src in
|
||||
/*) ;;
|
||||
*)
|
||||
case /$dst/ in
|
||||
*//* | */../* | */./* | /*/*/*/*/*/)
|
||||
echo >&2 "$0: invalid symlink calculation: $src -> $dst"
|
||||
exit 1;;
|
||||
/*/*/*/*/) dot_dots=../../../;;
|
||||
/*/*/*/) dot_dots=../../;;
|
||||
/*/*/) dot_dots=../;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
echo "$0: ln -fs $dot_dots$src $dst" &&
|
||||
ln -fs "$dot_dots$src" "$dst"
|
||||
echo "$0: ln -fs $dot_dots$src $dst" &&
|
||||
ln -fs "$dot_dots$src" "$dst"
|
||||
}
|
||||
fi
|
||||
}
|
||||
@ -524,29 +526,29 @@ cp_mark_as_generated()
|
||||
|
||||
if test -z "$c1"; then
|
||||
cmp -s "$cp_src" "$cp_dst" || {
|
||||
# Copy the file first to get proper permissions if it
|
||||
# doesn't already exist. Then overwrite the copy.
|
||||
echo "$0: cp -f $cp_src $cp_dst" &&
|
||||
rm -f "$cp_dst" &&
|
||||
cp "$cp_src" "$cp_dst-t" &&
|
||||
sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
|
||||
mv -f "$cp_dst-t" "$cp_dst"
|
||||
# Copy the file first to get proper permissions if it
|
||||
# doesn't already exist. Then overwrite the copy.
|
||||
echo "$0: cp -f $cp_src $cp_dst" &&
|
||||
rm -f "$cp_dst" &&
|
||||
cp "$cp_src" "$cp_dst-t" &&
|
||||
sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
|
||||
mv -f "$cp_dst-t" "$cp_dst"
|
||||
}
|
||||
else
|
||||
# Copy the file first to get proper permissions if it
|
||||
# doesn't already exist. Then overwrite the copy.
|
||||
cp "$cp_src" "$cp_dst-t" &&
|
||||
(
|
||||
echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
|
||||
echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
|
||||
echo '#line 1' &&
|
||||
sed "s!$bt_regex/!!g" "$cp_src"
|
||||
echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
|
||||
echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
|
||||
echo '#line 1' &&
|
||||
sed "s!$bt_regex/!!g" "$cp_src"
|
||||
) > $cp_dst-t &&
|
||||
if cmp -s "$cp_dst-t" "$cp_dst"; then
|
||||
rm -f "$cp_dst-t"
|
||||
rm -f "$cp_dst-t"
|
||||
else
|
||||
echo "$0: cp $cp_src $cp_dst # with edits" &&
|
||||
mv -f "$cp_dst-t" "$cp_dst"
|
||||
echo "$0: cp $cp_src $cp_dst # with edits" &&
|
||||
mv -f "$cp_dst-t" "$cp_dst"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@ -558,7 +560,7 @@ version_controlled_file() {
|
||||
found=no
|
||||
if test -d CVS; then
|
||||
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
|
||||
git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
|
||||
elif test -d .svn; then
|
||||
@ -580,35 +582,35 @@ slurp() {
|
||||
esac
|
||||
test -d $1/$dir/$file && continue
|
||||
for excluded_file in $excluded_files; do
|
||||
test "$dir/$file" = "$excluded_file" && continue 2
|
||||
test "$dir/$file" = "$excluded_file" && continue 2
|
||||
done
|
||||
if test $file = Makefile.am; then
|
||||
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 || {
|
||||
echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
|
||||
rm -f $dir/$gnulib_mk &&
|
||||
sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
|
||||
}
|
||||
echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
|
||||
rm -f $dir/$gnulib_mk &&
|
||||
sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
|
||||
}
|
||||
elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
|
||||
version_controlled_file $dir $file; then
|
||||
echo "$0: $dir/$file overrides $1/$dir/$file"
|
||||
version_controlled_file $dir $file; then
|
||||
echo "$0: $dir/$file overrides $1/$dir/$file"
|
||||
else
|
||||
copied=$copied$sep$file; sep=$nl
|
||||
if test $file = gettext.m4; then
|
||||
echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
|
||||
rm -f $dir/$file
|
||||
sed '
|
||||
/^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
|
||||
AC_DEFUN([AM_INTL_SUBDIR], [
|
||||
/^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
|
||||
AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
|
||||
$a\
|
||||
AC_DEFUN([gl_LOCK_EARLY], [])
|
||||
' $1/$dir/$file >$dir/$file
|
||||
else
|
||||
cp_mark_as_generated $1/$dir/$file $dir/$file
|
||||
fi
|
||||
copied=$copied$sep$file; sep=$nl
|
||||
if test $file = gettext.m4; then
|
||||
echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
|
||||
rm -f $dir/$file
|
||||
sed '
|
||||
/^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
|
||||
AC_DEFUN([AM_INTL_SUBDIR], [
|
||||
/^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
|
||||
AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
|
||||
$a\
|
||||
AC_DEFUN([gl_LOCK_EARLY], [])
|
||||
' $1/$dir/$file >$dir/$file
|
||||
else
|
||||
cp_mark_as_generated $1/$dir/$file $dir/$file
|
||||
fi
|
||||
fi || exit
|
||||
done
|
||||
|
||||
@ -616,18 +618,18 @@ slurp() {
|
||||
test $dot_ig = x && continue
|
||||
ig=$dir/$dot_ig
|
||||
if test -n "$copied"; then
|
||||
insert_sorted_if_absent $ig "$copied"
|
||||
# If an ignored file name ends with .in.h, then also add
|
||||
# the name with just ".h". Many gnulib headers are generated,
|
||||
# e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
|
||||
# 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/'`
|
||||
insert_sorted_if_absent $ig "$f"
|
||||
insert_sorted_if_absent $ig "$copied"
|
||||
# If an ignored file name ends with .in.h, then also add
|
||||
# the name with just ".h". Many gnulib headers are generated,
|
||||
# e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
|
||||
# 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/'`
|
||||
insert_sorted_if_absent $ig "$f"
|
||||
|
||||
# For files like sys_stat.in.h and sys_time.in.h, record as
|
||||
# ignorable the directory we might eventually create: sys/.
|
||||
f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
|
||||
insert_sorted_if_absent $ig "$f"
|
||||
# For files like sys_stat.in.h and sys_time.in.h, record as
|
||||
# ignorable the directory we might eventually create: sys/.
|
||||
f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
|
||||
insert_sorted_if_absent $ig "$f"
|
||||
fi
|
||||
done
|
||||
done
|
||||
@ -733,7 +735,7 @@ if test $with_gettext = yes; then
|
||||
/^XGETTEXT_OPTIONS *=/{
|
||||
s/$/ \\/
|
||||
a\
|
||||
'"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
|
||||
'"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
|
||||
}
|
||||
' po/Makevars.template >po/Makevars
|
||||
|
||||
@ -745,9 +747,9 @@ if test $with_gettext = yes; then
|
||||
/^subdir *=.*/s/=.*/= runtime-po/
|
||||
/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
|
||||
/^XGETTEXT_OPTIONS *=/{
|
||||
s/$/ \\/
|
||||
a\
|
||||
'"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
|
||||
s/$/ \\/
|
||||
a\
|
||||
'"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
|
||||
}
|
||||
' <po/Makevars.template >runtime-po/Makevars
|
||||
|
||||
@ -763,3 +765,7 @@ sed 's,\.\./\.\.,..,g' $m > $m-t
|
||||
mv -f $m-t $m
|
||||
|
||||
echo "$0: done. Now you can run './configure'."
|
||||
|
||||
# Local Variables:
|
||||
# indent-tabs-mode: nil
|
||||
# End:
|
||||
|
@ -27,7 +27,6 @@ avoided_gnulib_modules='
|
||||
# but leave them in for now to minimize changes.
|
||||
obsolete_gnulib_modules='
|
||||
atexit
|
||||
memchr
|
||||
memcmp
|
||||
memcpy
|
||||
memmove
|
||||
@ -103,7 +102,7 @@ gnulib_modules="
|
||||
getline
|
||||
getloadavg
|
||||
getndelim2
|
||||
getopt
|
||||
getopt-gnu
|
||||
getpagesize
|
||||
getpass-gnu
|
||||
gettext
|
||||
@ -141,6 +140,7 @@ gnulib_modules="
|
||||
mbsalign
|
||||
mbswidth
|
||||
memcasecmp
|
||||
memchr
|
||||
memcmp2
|
||||
mempcpy
|
||||
memrchr
|
||||
@ -210,6 +210,7 @@ gnulib_modules="
|
||||
unlink-busy
|
||||
unlinkdir
|
||||
unlocked-io
|
||||
update-copyright
|
||||
uptime
|
||||
useless-if-before-free
|
||||
userspec
|
||||
@ -301,7 +302,7 @@ gnulib_tool_option_extras="--tests-base=$bt/gnulib-tests --with-tests"
|
||||
# Build prerequisites
|
||||
buildreq="\
|
||||
autoconf 2.61
|
||||
automake 1.10b
|
||||
automake 1.11
|
||||
autopoint -
|
||||
bison -
|
||||
gettext -
|
||||
|
3126
src/bin/coreutils/configure
vendored
3126
src/bin/coreutils/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -32,7 +32,7 @@ AC_CONFIG_SRCDIR([src/ls.c])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_HEADERS([lib/config.h:lib/config.hin])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.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.
|
||||
|
||||
AC_PROG_CC_STDC
|
||||
@ -60,9 +60,11 @@ if test "$gl_gcc_warnings" = yes; then
|
||||
gl_WARN_ADD([-Werror], [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 -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 -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib
|
||||
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 -Wswitch-enum" # 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:
|
||||
nw="$nw -Wfloat-equal" # sort.c, seq.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-pointer-sign]) # 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])
|
||||
|
||||
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])
|
||||
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"
|
||||
# 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/ $//'`
|
||||
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
|
||||
AC_SUBST([NO_INSTALL_PROGS_DEFAULT])
|
||||
|
||||
|
@ -2002,8 +2002,7 @@
|
||||
|
||||
-----
|
||||
|
||||
Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 2001-2009 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without
|
||||
modification, are permitted provided the copyright notice
|
||||
|
@ -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@
|
||||
|
||||
# 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/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.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/multiarch.m4 $(top_srcdir)/m4/nanosleep.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/stat-prog.m4 $(top_srcdir)/m4/stat-time.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/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
|
||||
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
|
||||
$(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/stpncpy.m4 \
|
||||
$(top_srcdir)/m4/strcspn.m4 $(top_srcdir)/m4/strdup.m4 \
|
||||
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strftime.m4 \
|
||||
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
|
||||
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
|
||||
$(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
|
||||
$(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
|
||||
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio-safer.m4 \
|
||||
$(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib-safer.m4 \
|
||||
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
|
||||
$(top_srcdir)/m4/stpncpy.m4 $(top_srcdir)/m4/strcspn.m4 \
|
||||
$(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
|
||||
$(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \
|
||||
$(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.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/strtoll.m4 $(top_srcdir)/m4/strtoul.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/utimes.m4 $(top_srcdir)/m4/vasnprintf.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/vprintf-posix.m4 $(top_srcdir)/m4/warnings.m4 \
|
||||
$(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
|
||||
@ -320,6 +322,7 @@ FCNTL_H = @FCNTL_H@
|
||||
FLOAT_H = @FLOAT_H@
|
||||
FNMATCH_H = @FNMATCH_H@
|
||||
GETADDRINFO_LIB = @GETADDRINFO_LIB@
|
||||
GETHOSTNAME_LIB = @GETHOSTNAME_LIB@
|
||||
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GETOPT_H = @GETOPT_H@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
@ -350,6 +353,7 @@ GNULIB_FLOORL = @GNULIB_FLOORL@
|
||||
GNULIB_FOPEN = @GNULIB_FOPEN@
|
||||
GNULIB_FPRINTF = @GNULIB_FPRINTF@
|
||||
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
|
||||
GNULIB_FPURGE = @GNULIB_FPURGE@
|
||||
GNULIB_FPUTC = @GNULIB_FPUTC@
|
||||
GNULIB_FPUTS = @GNULIB_FPUTS@
|
||||
GNULIB_FREOPEN = @GNULIB_FREOPEN@
|
||||
@ -416,6 +420,7 @@ GNULIB_MBSSEP = @GNULIB_MBSSEP@
|
||||
GNULIB_MBSSPN = @GNULIB_MBSSPN@
|
||||
GNULIB_MBSSTR = @GNULIB_MBSSTR@
|
||||
GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
|
||||
GNULIB_MEMCHR = @GNULIB_MEMCHR@
|
||||
GNULIB_MEMMEM = @GNULIB_MEMMEM@
|
||||
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
|
||||
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
|
||||
@ -479,6 +484,7 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
|
||||
GNULIB_TRUNC = @GNULIB_TRUNC@
|
||||
GNULIB_TRUNCF = @GNULIB_TRUNCF@
|
||||
GNULIB_TRUNCL = @GNULIB_TRUNCL@
|
||||
GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
|
||||
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
|
||||
GNULIB_UNSETENV = @GNULIB_UNSETENV@
|
||||
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
|
||||
@ -508,6 +514,7 @@ HAVE_DECL_COSL = @HAVE_DECL_COSL@
|
||||
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
|
||||
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
|
||||
HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
|
||||
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
|
||||
HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@
|
||||
HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
|
||||
HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@
|
||||
@ -583,6 +590,7 @@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
|
||||
HAVE_READLINK = @HAVE_READLINK@
|
||||
HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
|
||||
HAVE_RPMATCH = @HAVE_RPMATCH@
|
||||
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
|
||||
HAVE_SCANDIR = @HAVE_SCANDIR@
|
||||
HAVE_SETENV = @HAVE_SETENV@
|
||||
HAVE_SIGACTION = @HAVE_SIGACTION@
|
||||
@ -606,6 +614,7 @@ HAVE_STRTOULL = @HAVE_STRTOULL@
|
||||
HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@
|
||||
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
|
||||
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_STRVERSCMP = @HAVE_STRVERSCMP@
|
||||
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_VDPRINTF = @HAVE_VDPRINTF@
|
||||
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
||||
HAVE_WCHAR_T = @HAVE_WCHAR_T@
|
||||
HAVE_WCRTOMB = @HAVE_WCRTOMB@
|
||||
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
|
||||
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
|
||||
@ -689,6 +699,32 @@ NEED_SETGID = @NEED_SETGID@
|
||||
NETDB_H = @NETDB_H@
|
||||
NETINET_IN_H = @NETINET_IN_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_ERRNO_H = @NEXT_ERRNO_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_SIGNAL_H = @NEXT_SIGNAL_H@
|
||||
NEXT_STDARG_H = @NEXT_STDARG_H@
|
||||
NEXT_STDDEF_H = @NEXT_STDDEF_H@
|
||||
NEXT_STDINT_H = @NEXT_STDINT_H@
|
||||
NEXT_STDIO_H = @NEXT_STDIO_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@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
OPTIONAL_PKGLIB_PROGS = @OPTIONAL_PKGLIB_PROGS@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
@ -740,6 +778,7 @@ REPLACE_CEILL = @REPLACE_CEILL@
|
||||
REPLACE_CHOWN = @REPLACE_CHOWN@
|
||||
REPLACE_CLOSE = @REPLACE_CLOSE@
|
||||
REPLACE_DPRINTF = @REPLACE_DPRINTF@
|
||||
REPLACE_DUP2 = @REPLACE_DUP2@
|
||||
REPLACE_FCHDIR = @REPLACE_FCHDIR@
|
||||
REPLACE_FCLOSE = @REPLACE_FCLOSE@
|
||||
REPLACE_FFLUSH = @REPLACE_FFLUSH@
|
||||
@ -747,6 +786,7 @@ REPLACE_FLOORF = @REPLACE_FLOORF@
|
||||
REPLACE_FLOORL = @REPLACE_FLOORL@
|
||||
REPLACE_FOPEN = @REPLACE_FOPEN@
|
||||
REPLACE_FPRINTF = @REPLACE_FPRINTF@
|
||||
REPLACE_FPURGE = @REPLACE_FPURGE@
|
||||
REPLACE_FREOPEN = @REPLACE_FREOPEN@
|
||||
REPLACE_FREXP = @REPLACE_FREXP@
|
||||
REPLACE_FREXPL = @REPLACE_FREXPL@
|
||||
@ -777,11 +817,14 @@ REPLACE_MBSINIT = @REPLACE_MBSINIT@
|
||||
REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
|
||||
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
|
||||
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
|
||||
REPLACE_MEMCHR = @REPLACE_MEMCHR@
|
||||
REPLACE_MEMMEM = @REPLACE_MEMMEM@
|
||||
REPLACE_MKDIR = @REPLACE_MKDIR@
|
||||
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
|
||||
REPLACE_MKTIME = @REPLACE_MKTIME@
|
||||
REPLACE_NAN = @REPLACE_NAN@
|
||||
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
|
||||
REPLACE_NULL = @REPLACE_NULL@
|
||||
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
|
||||
REPLACE_OPEN = @REPLACE_OPEN@
|
||||
REPLACE_PERROR = @REPLACE_PERROR@
|
||||
@ -827,10 +870,12 @@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
||||
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
|
||||
STDARG_H = @STDARG_H@
|
||||
STDBOOL_H = @STDBOOL_H@
|
||||
STDDEF_H = @STDDEF_H@
|
||||
STDINT_H = @STDINT_H@
|
||||
STRIP = @STRIP@
|
||||
SYS_IOCTL_H = @SYS_IOCTL_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_SOCKET_H = @SYS_SOCKET_H@
|
||||
SYS_STAT_H = @SYS_STAT_H@
|
||||
@ -841,6 +886,7 @@ U = @U@
|
||||
UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_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_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
|
||||
USE_ACL = @USE_ACL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -105,6 +105,7 @@
|
||||
* sort: (coreutils)sort invocation. Sort text files.
|
||||
* split: (coreutils)split invocation. Split into fixed-size pieces.
|
||||
* stat: (coreutils)stat invocation. Report file(system) status.
|
||||
* stdbuf: (coreutils)stdbuf invocation. Modify stdio buffering.
|
||||
* stty: (coreutils)stty invocation. Print/change terminal settings.
|
||||
* su: (coreutils)su invocation. Modify user and group ID.
|
||||
* sum: (coreutils)sum invocation. Print traditional checksum.
|
||||
@ -197,7 +198,7 @@ Free Documentation License''.
|
||||
* User information:: id logname whoami groups users who
|
||||
* System context:: date uname hostname hostid uptime
|
||||
* 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
|
||||
* Delaying:: sleep
|
||||
* Numeric operations:: factor seq
|
||||
@ -321,7 +322,7 @@ Special file types
|
||||
* mkdir invocation:: Make directories
|
||||
* mkfifo invocation:: Make FIFOs (named pipes)
|
||||
* 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
|
||||
* unlink invocation:: Remove files via unlink syscall
|
||||
|
||||
@ -425,6 +426,7 @@ System context
|
||||
* Examples of date:: Examples.
|
||||
|
||||
SELinux context
|
||||
|
||||
* chcon invocation:: Change SELinux context of file
|
||||
* 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
|
||||
* nice invocation:: Run a command with modified niceness
|
||||
* 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
|
||||
* timeout invocation:: Run a command with a time limit
|
||||
|
||||
@ -1685,9 +1688,9 @@ Analogous to @option{--body-numbering}.
|
||||
Analogous to @option{--body-numbering}.
|
||||
|
||||
@item -i @var{number}
|
||||
@itemx --page-increment=@var{number}
|
||||
@itemx --line-increment=@var{number}
|
||||
@opindex -i
|
||||
@opindex --page-increment
|
||||
@opindex --line-increment
|
||||
Increment line numbers by @var{number} (default 1).
|
||||
|
||||
@item -l @var{number}
|
||||
@ -2004,7 +2007,7 @@ address.
|
||||
@exitstatus
|
||||
|
||||
@node base64 invocation
|
||||
@section @command{base64}: Transform data into printable data.
|
||||
@section @command{base64}: Transform data into printable data
|
||||
|
||||
@pindex base64
|
||||
@cindex base64 encoding
|
||||
@ -2653,22 +2656,22 @@ The program accepts the following options. Also see @ref{Common options}.
|
||||
|
||||
@table @samp
|
||||
|
||||
@item -c @var{n}
|
||||
@itemx --bytes=@var{n}
|
||||
@item -c @var{k}
|
||||
@itemx --bytes=@var{k}
|
||||
@opindex -c
|
||||
@opindex --bytes
|
||||
Print the first @var{n} bytes, instead of initial lines.
|
||||
However, if @var{n} starts with a @samp{-},
|
||||
print all but the last @var{n} bytes of each file.
|
||||
@multiplierSuffixes{n}
|
||||
Print the first @var{k} bytes, instead of initial lines.
|
||||
However, if @var{k} starts with a @samp{-},
|
||||
print all but the last @var{k} bytes of each file.
|
||||
@multiplierSuffixes{k}
|
||||
|
||||
@itemx -n @var{n}
|
||||
@itemx --lines=@var{n}
|
||||
@itemx -n @var{k}
|
||||
@itemx --lines=@var{k}
|
||||
@opindex -n
|
||||
@opindex --lines
|
||||
Output the first @var{n} lines.
|
||||
However, if @var{n} starts with a @samp{-},
|
||||
print all but the last @var{n} lines of each file.
|
||||
Output the first @var{k} lines.
|
||||
However, if @var{k} starts with a @samp{-},
|
||||
print all but the last @var{k} lines of each file.
|
||||
Size multiplier suffixes are the same as with the @option{-c} option.
|
||||
|
||||
@item -q
|
||||
@ -2738,14 +2741,14 @@ The program accepts the following options. Also see @ref{Common options}.
|
||||
|
||||
@table @samp
|
||||
|
||||
@item -c @var{n}
|
||||
@itemx --bytes=@var{n}
|
||||
@item -c @var{k}
|
||||
@itemx --bytes=@var{k}
|
||||
@opindex -c
|
||||
@opindex --bytes
|
||||
Output the last @var{n} bytes, instead of final lines.
|
||||
However, if @var{n} starts with a @samp{+}, start printing with the
|
||||
@var{n}th byte from the start of each file, instead of from the end.
|
||||
@multiplierSuffixes{n}
|
||||
Output the last @var{k} bytes, instead of final lines.
|
||||
However, if @var{k} starts with a @samp{+}, start printing with the
|
||||
@var{k}th byte from the start of each file, instead of from the end.
|
||||
@multiplierSuffixes{k}
|
||||
|
||||
@item -f
|
||||
@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.
|
||||
This option is meaningful only when following by name.
|
||||
|
||||
@itemx -n @var{n}
|
||||
@itemx --lines=@var{n}
|
||||
@itemx -n @var{k}
|
||||
@itemx --lines=@var{k}
|
||||
@opindex -n
|
||||
@opindex --lines
|
||||
Output the last @var{n} lines.
|
||||
However, if @var{n} starts with a @samp{+}, start printing with the
|
||||
@var{n}th line from the start of each file, instead of from the end.
|
||||
Output the last @var{k} lines.
|
||||
However, if @var{k} starts with a @samp{+}, start printing with the
|
||||
@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.
|
||||
|
||||
@item -q
|
||||
@ -3721,7 +3724,9 @@ so portable shell scripts should specify global options first.
|
||||
@vindex LC_CTYPE
|
||||
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
|
||||
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
|
||||
@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
|
||||
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
|
||||
@itemx --ignore-nonprinting
|
||||
@opindex -i
|
||||
@ -3916,7 +3936,7 @@ according to different rules; see below for details. Keys can span
|
||||
multiple fields.
|
||||
|
||||
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}
|
||||
@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}.
|
||||
|
||||
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
|
||||
global ordering options are not used for that particular field. The
|
||||
of the option letters @samp{MbdfghinRrV} appended to it, in which case no
|
||||
global ordering options are inherited by that particular field. The
|
||||
@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
|
||||
inherited from the global options it will be attached to both.
|
||||
If input lines can contain leading or adjacent blanks and @option{-t}
|
||||
is not used, then @option{-k} is typically combined with @option{-b},
|
||||
@option{-g}, @option{-M}, or @option{-n}; otherwise the varying
|
||||
numbers of leading blanks in fields can cause confusing results.
|
||||
is not used, then @option{-k} is typically combined with @option{-b} or
|
||||
an option that implicitly ignores leading blanks (@samp{MghnV}) as otherwise
|
||||
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
|
||||
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 @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
|
||||
Shuffle a list of directories, but preserve the order of files within
|
||||
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 -3
|
||||
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
|
||||
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 --dereference
|
||||
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
|
||||
@itemx --no-clobber
|
||||
@ -7420,8 +7454,27 @@ not yet take advantage of that.
|
||||
@itemx links
|
||||
Preserve in the destination files
|
||||
any links between corresponding source files.
|
||||
@c Give examples illustrating how hard links are preserved.
|
||||
@c Also, show how soft links map to hard links with -L and -H.
|
||||
Note that with @option{-L} or @option{-H}, this option can convert
|
||||
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
|
||||
Preserve SELinux security context of the file. @command{cp} will fail
|
||||
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
|
||||
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
|
||||
@opindex --remove-destination
|
||||
Remove each existing destination file before attempting to open it
|
||||
@ -7808,6 +7870,10 @@ same time.
|
||||
@opindex direct
|
||||
@cindex direct I/O
|
||||
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
|
||||
@opindex directory
|
||||
@ -8642,7 +8708,7 @@ Besides directories, other special file types include named pipes
|
||||
* mkdir invocation:: Make directories.
|
||||
* mkfifo invocation:: Make FIFOs (named pipes).
|
||||
* 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.
|
||||
* unlink invocation:: Remove files via the unlink syscall
|
||||
@end menu
|
||||
@ -9087,10 +9153,14 @@ Set the default SELinux security context to be used for created files.
|
||||
|
||||
|
||||
@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
|
||||
@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:
|
||||
|
||||
@ -9170,6 +9240,9 @@ Report error messages.
|
||||
|
||||
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
|
||||
|
||||
|
||||
@ -13066,186 +13139,14 @@ This section describes commands that print or change system-wide
|
||||
information.
|
||||
|
||||
@menu
|
||||
* arch invocation:: Print machine hardware name.
|
||||
* date invocation:: Print or set system date and time.
|
||||
* arch invocation:: Print machine hardware name.
|
||||
* uname invocation:: Print system information.
|
||||
* hostname invocation:: Print or set system name.
|
||||
* hostid invocation:: Print numeric host identifier.
|
||||
* uptime invocation:: Print system uptime and load
|
||||
* uptime invocation:: Print system uptime and load.
|
||||
@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
|
||||
@section @command{date}: Print or set system date and time
|
||||
|
||||
@ -14053,7 +13954,7 @@ options}.
|
||||
|
||||
|
||||
@node hostid invocation
|
||||
@section @command{hostid}: Print numeric host identifier.
|
||||
@section @command{hostid}: Print numeric host identifier
|
||||
|
||||
@pindex hostid
|
||||
@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
|
||||
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
|
||||
@chapter Modified command invocation
|
||||
|
||||
@ -14123,6 +14196,7 @@ user, etc.
|
||||
* env invocation:: Modify environment variables.
|
||||
* nice invocation:: Modify niceness.
|
||||
* nohup invocation:: Immunize to hangups.
|
||||
* stdbuf invocation:: Modify buffering of standard streams.
|
||||
* su invocation:: Modify user and group ID.
|
||||
* timeout invocation:: Run with time limit.
|
||||
@end menu
|
||||
@ -14144,7 +14218,7 @@ underlying function is non-privileged due to lack of support in MS-Windows.}
|
||||
Synopses:
|
||||
|
||||
@example
|
||||
chroot @var{newroot} [@var{command} [@var{args}]@dots{}]
|
||||
chroot @var{option} @var{newroot} [@var{command} [@var{args}]@dots{}]
|
||||
chroot @var{option}
|
||||
@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
|
||||
(@pxref{Special built-in utilities}).
|
||||
|
||||
The only options are @option{--help} and @option{--version}. @xref{Common
|
||||
options}. Options must precede operands.
|
||||
The program accepts the following options. Also see @ref{Common options}.
|
||||
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.
|
||||
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
|
||||
|
||||
|
||||
@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
|
||||
@section @command{su}: Run a command with substitute user and group ID
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
@c File mode bits
|
||||
|
||||
@c Copyright (C) 1994, 1996, 1999-2001, 2003-2006, 2008
|
||||
@c Free Software Foundation, Inc.
|
||||
@c Copyright (C) 1994, 1996, 1999-2001, 2003-2006,
|
||||
@c 2008-2009 Free Software Foundation, Inc.
|
||||
|
||||
@c Permission is granted to copy, distribute and/or modify this document
|
||||
@c under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
|
@ -1,4 +1,4 @@
|
||||
@set UPDATED 5 May 2009
|
||||
@set UPDATED-MONTH May 2009
|
||||
@set EDITION 7.4
|
||||
@set VERSION 7.4
|
||||
@set UPDATED 18 August 2009
|
||||
@set UPDATED-MONTH August 2009
|
||||
@set EDITION 7.5
|
||||
@set VERSION 7.5
|
||||
|
@ -1,4 +1,4 @@
|
||||
@set UPDATED 5 May 2009
|
||||
@set UPDATED-MONTH May 2009
|
||||
@set EDITION 7.4
|
||||
@set VERSION 7.4
|
||||
@set UPDATED 18 August 2009
|
||||
@set UPDATED-MONTH August 2009
|
||||
@set EDITION 7.5
|
||||
@set VERSION 7.5
|
||||
|
@ -8746,8 +8746,7 @@
|
||||
|
||||
-----
|
||||
|
||||
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 2000-2009 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without
|
||||
modification, are permitted provided the copyright notice
|
||||
|
@ -8,6 +8,7 @@ SubDirCcFlags -DHAVE_CONFIG_H ;
|
||||
|
||||
SubDirSysHdrs $(SUBDIR) ;
|
||||
#SubDirSysHdrs $(SUBDIR) $(DOTDOT) ;
|
||||
UseLibraryHeaders iconv ;
|
||||
|
||||
StaticLibrary libfetish.a :
|
||||
# __fpending.c
|
||||
@ -179,6 +180,7 @@ StaticLibrary libfetish.a :
|
||||
# strcspn.c
|
||||
# strdup.c
|
||||
strftime.c
|
||||
striconv.c
|
||||
strintcmp.c
|
||||
stripslash.c
|
||||
strnlen1.c
|
||||
@ -223,6 +225,7 @@ StaticLibrary libfetish.a :
|
||||
xmemxfrm.c
|
||||
xnanosleep.c
|
||||
xprintf.c
|
||||
xstriconv.c
|
||||
xstrndup.c
|
||||
xstrtod.c
|
||||
xstrtoimax.c
|
||||
|
@ -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@
|
||||
|
||||
# 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.
|
||||
#
|
||||
# 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@
|
||||
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(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 \
|
||||
strnumcmp-in.h strnumcmp.c strnumcmp.h xfts.c xfts.h
|
||||
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/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.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/multiarch.m4 $(top_srcdir)/m4/nanosleep.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/stat-prog.m4 $(top_srcdir)/m4/stat-time.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/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
|
||||
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
|
||||
$(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/stpncpy.m4 \
|
||||
$(top_srcdir)/m4/strcspn.m4 $(top_srcdir)/m4/strdup.m4 \
|
||||
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strftime.m4 \
|
||||
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
|
||||
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
|
||||
$(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
|
||||
$(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
|
||||
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio-safer.m4 \
|
||||
$(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib-safer.m4 \
|
||||
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
|
||||
$(top_srcdir)/m4/stpncpy.m4 $(top_srcdir)/m4/strcspn.m4 \
|
||||
$(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
|
||||
$(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \
|
||||
$(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.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/strtoll.m4 $(top_srcdir)/m4/strtoul.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/utimes.m4 $(top_srcdir)/m4/vasnprintf.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/vprintf-posix.m4 $(top_srcdir)/m4/warnings.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) \
|
||||
c-strcasecmp.$(OBJEXT) c-strncasecmp.$(OBJEXT) \
|
||||
close-hook.$(OBJEXT) diacrit.$(OBJEXT) file-set.$(OBJEXT) \
|
||||
filevercmp.$(OBJEXT) fpurge.$(OBJEXT) freadahead.$(OBJEXT) \
|
||||
freading.$(OBJEXT) freadptr.$(OBJEXT) freadseek.$(OBJEXT) \
|
||||
fseterr.$(OBJEXT) full-read.$(OBJEXT) full-write.$(OBJEXT) \
|
||||
getdate.$(OBJEXT) hash-pjw.$(OBJEXT) hash-triple.$(OBJEXT) \
|
||||
linebuffer.$(OBJEXT) localcharset.$(OBJEXT) malloca.$(OBJEXT) \
|
||||
mbchar.$(OBJEXT) mbsalign.$(OBJEXT) mbscasecmp.$(OBJEXT) \
|
||||
mbslen.$(OBJEXT) mbsstr.$(OBJEXT) mbswidth.$(OBJEXT) \
|
||||
memchr2.$(OBJEXT) memcmp2.$(OBJEXT) openat-die.$(OBJEXT) \
|
||||
printf-frexp.$(OBJEXT) printf-frexpl.$(OBJEXT) \
|
||||
priv-set.$(OBJEXT) progname.$(OBJEXT) propername.$(OBJEXT) \
|
||||
randint.$(OBJEXT) randperm.$(OBJEXT) randread.$(OBJEXT) \
|
||||
rand-isaac.$(OBJEXT) readtokens0.$(OBJEXT) savewd.$(OBJEXT) \
|
||||
striconv.$(OBJEXT) strnlen1.$(OBJEXT) trim.$(OBJEXT) \
|
||||
unicodeio.$(OBJEXT) unistr/u8-uctomb.$(OBJEXT) \
|
||||
unistr/u8-uctomb-aux.$(OBJEXT) uniwidth/width.$(OBJEXT) \
|
||||
verror.$(OBJEXT) version-etc.$(OBJEXT) \
|
||||
version-etc-fsf.$(OBJEXT) xalloc-die.$(OBJEXT) \
|
||||
xfreopen.$(OBJEXT) xgethostname.$(OBJEXT) xmemcoll.$(OBJEXT) \
|
||||
xprintf.$(OBJEXT) xstriconv.$(OBJEXT) xstrndup.$(OBJEXT) \
|
||||
xstrtoimax.$(OBJEXT) xstrtoumax.$(OBJEXT) xvasprintf.$(OBJEXT) \
|
||||
xasprintf.$(OBJEXT) buffer-lcm.$(OBJEXT) xmemxfrm.$(OBJEXT)
|
||||
filevercmp.$(OBJEXT) freadahead.$(OBJEXT) freading.$(OBJEXT) \
|
||||
freadptr.$(OBJEXT) freadseek.$(OBJEXT) fseterr.$(OBJEXT) \
|
||||
full-read.$(OBJEXT) full-write.$(OBJEXT) getdate.$(OBJEXT) \
|
||||
hash-pjw.$(OBJEXT) hash-triple.$(OBJEXT) linebuffer.$(OBJEXT) \
|
||||
localcharset.$(OBJEXT) malloca.$(OBJEXT) mbchar.$(OBJEXT) \
|
||||
mbsalign.$(OBJEXT) mbscasecmp.$(OBJEXT) mbslen.$(OBJEXT) \
|
||||
mbsstr.$(OBJEXT) mbswidth.$(OBJEXT) memchr2.$(OBJEXT) \
|
||||
memcmp2.$(OBJEXT) openat-die.$(OBJEXT) printf-frexp.$(OBJEXT) \
|
||||
printf-frexpl.$(OBJEXT) priv-set.$(OBJEXT) progname.$(OBJEXT) \
|
||||
propername.$(OBJEXT) randint.$(OBJEXT) randperm.$(OBJEXT) \
|
||||
randread.$(OBJEXT) rand-isaac.$(OBJEXT) readtokens0.$(OBJEXT) \
|
||||
savewd.$(OBJEXT) sockets.$(OBJEXT) striconv.$(OBJEXT) \
|
||||
strnlen1.$(OBJEXT) trim.$(OBJEXT) unicodeio.$(OBJEXT) \
|
||||
unistr/u8-uctomb.$(OBJEXT) unistr/u8-uctomb-aux.$(OBJEXT) \
|
||||
uniwidth/width.$(OBJEXT) verror.$(OBJEXT) \
|
||||
version-etc.$(OBJEXT) version-etc-fsf.$(OBJEXT) \
|
||||
xalloc-die.$(OBJEXT) xfreopen.$(OBJEXT) xgethostname.$(OBJEXT) \
|
||||
xmemcoll.$(OBJEXT) xprintf.$(OBJEXT) xstriconv.$(OBJEXT) \
|
||||
xstrndup.$(OBJEXT) xstrtoimax.$(OBJEXT) xstrtoumax.$(OBJEXT) \
|
||||
xvasprintf.$(OBJEXT) xasprintf.$(OBJEXT) buffer-lcm.$(OBJEXT) \
|
||||
xmemxfrm.$(OBJEXT)
|
||||
libcoreutils_a_OBJECTS = $(am_libcoreutils_a_OBJECTS)
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||
@ -385,6 +387,7 @@ FCNTL_H = @FCNTL_H@
|
||||
FLOAT_H = @FLOAT_H@
|
||||
FNMATCH_H = @FNMATCH_H@
|
||||
GETADDRINFO_LIB = @GETADDRINFO_LIB@
|
||||
GETHOSTNAME_LIB = @GETHOSTNAME_LIB@
|
||||
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GETOPT_H = @GETOPT_H@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
@ -415,6 +418,7 @@ GNULIB_FLOORL = @GNULIB_FLOORL@
|
||||
GNULIB_FOPEN = @GNULIB_FOPEN@
|
||||
GNULIB_FPRINTF = @GNULIB_FPRINTF@
|
||||
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
|
||||
GNULIB_FPURGE = @GNULIB_FPURGE@
|
||||
GNULIB_FPUTC = @GNULIB_FPUTC@
|
||||
GNULIB_FPUTS = @GNULIB_FPUTS@
|
||||
GNULIB_FREOPEN = @GNULIB_FREOPEN@
|
||||
@ -481,6 +485,7 @@ GNULIB_MBSSEP = @GNULIB_MBSSEP@
|
||||
GNULIB_MBSSPN = @GNULIB_MBSSPN@
|
||||
GNULIB_MBSSTR = @GNULIB_MBSSTR@
|
||||
GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
|
||||
GNULIB_MEMCHR = @GNULIB_MEMCHR@
|
||||
GNULIB_MEMMEM = @GNULIB_MEMMEM@
|
||||
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
|
||||
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
|
||||
@ -544,6 +549,7 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
|
||||
GNULIB_TRUNC = @GNULIB_TRUNC@
|
||||
GNULIB_TRUNCF = @GNULIB_TRUNCF@
|
||||
GNULIB_TRUNCL = @GNULIB_TRUNCL@
|
||||
GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
|
||||
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
|
||||
GNULIB_UNSETENV = @GNULIB_UNSETENV@
|
||||
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
|
||||
@ -573,6 +579,7 @@ HAVE_DECL_COSL = @HAVE_DECL_COSL@
|
||||
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
|
||||
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
|
||||
HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
|
||||
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
|
||||
HAVE_DECL_FREEADDRINFO = @HAVE_DECL_FREEADDRINFO@
|
||||
HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
|
||||
HAVE_DECL_GAI_STRERROR = @HAVE_DECL_GAI_STRERROR@
|
||||
@ -648,6 +655,7 @@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
|
||||
HAVE_READLINK = @HAVE_READLINK@
|
||||
HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
|
||||
HAVE_RPMATCH = @HAVE_RPMATCH@
|
||||
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
|
||||
HAVE_SCANDIR = @HAVE_SCANDIR@
|
||||
HAVE_SETENV = @HAVE_SETENV@
|
||||
HAVE_SIGACTION = @HAVE_SIGACTION@
|
||||
@ -671,6 +679,7 @@ HAVE_STRTOULL = @HAVE_STRTOULL@
|
||||
HAVE_STRUCT_ADDRINFO = @HAVE_STRUCT_ADDRINFO@
|
||||
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
|
||||
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_STRVERSCMP = @HAVE_STRVERSCMP@
|
||||
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_VDPRINTF = @HAVE_VDPRINTF@
|
||||
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
||||
HAVE_WCHAR_T = @HAVE_WCHAR_T@
|
||||
HAVE_WCRTOMB = @HAVE_WCRTOMB@
|
||||
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
|
||||
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
|
||||
@ -754,6 +764,32 @@ NEED_SETGID = @NEED_SETGID@
|
||||
NETDB_H = @NETDB_H@
|
||||
NETINET_IN_H = @NETINET_IN_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_ERRNO_H = @NEXT_ERRNO_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_SIGNAL_H = @NEXT_SIGNAL_H@
|
||||
NEXT_STDARG_H = @NEXT_STDARG_H@
|
||||
NEXT_STDDEF_H = @NEXT_STDDEF_H@
|
||||
NEXT_STDINT_H = @NEXT_STDINT_H@
|
||||
NEXT_STDIO_H = @NEXT_STDIO_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@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
OPTIONAL_PKGLIB_PROGS = @OPTIONAL_PKGLIB_PROGS@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
@ -805,6 +843,7 @@ REPLACE_CEILL = @REPLACE_CEILL@
|
||||
REPLACE_CHOWN = @REPLACE_CHOWN@
|
||||
REPLACE_CLOSE = @REPLACE_CLOSE@
|
||||
REPLACE_DPRINTF = @REPLACE_DPRINTF@
|
||||
REPLACE_DUP2 = @REPLACE_DUP2@
|
||||
REPLACE_FCHDIR = @REPLACE_FCHDIR@
|
||||
REPLACE_FCLOSE = @REPLACE_FCLOSE@
|
||||
REPLACE_FFLUSH = @REPLACE_FFLUSH@
|
||||
@ -812,6 +851,7 @@ REPLACE_FLOORF = @REPLACE_FLOORF@
|
||||
REPLACE_FLOORL = @REPLACE_FLOORL@
|
||||
REPLACE_FOPEN = @REPLACE_FOPEN@
|
||||
REPLACE_FPRINTF = @REPLACE_FPRINTF@
|
||||
REPLACE_FPURGE = @REPLACE_FPURGE@
|
||||
REPLACE_FREOPEN = @REPLACE_FREOPEN@
|
||||
REPLACE_FREXP = @REPLACE_FREXP@
|
||||
REPLACE_FREXPL = @REPLACE_FREXPL@
|
||||
@ -842,11 +882,14 @@ REPLACE_MBSINIT = @REPLACE_MBSINIT@
|
||||
REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
|
||||
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
|
||||
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
|
||||
REPLACE_MEMCHR = @REPLACE_MEMCHR@
|
||||
REPLACE_MEMMEM = @REPLACE_MEMMEM@
|
||||
REPLACE_MKDIR = @REPLACE_MKDIR@
|
||||
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
|
||||
REPLACE_MKTIME = @REPLACE_MKTIME@
|
||||
REPLACE_NAN = @REPLACE_NAN@
|
||||
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
|
||||
REPLACE_NULL = @REPLACE_NULL@
|
||||
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
|
||||
REPLACE_OPEN = @REPLACE_OPEN@
|
||||
REPLACE_PERROR = @REPLACE_PERROR@
|
||||
@ -892,10 +935,12 @@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
||||
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
|
||||
STDARG_H = @STDARG_H@
|
||||
STDBOOL_H = @STDBOOL_H@
|
||||
STDDEF_H = @STDDEF_H@
|
||||
STDINT_H = @STDINT_H@
|
||||
STRIP = @STRIP@
|
||||
SYS_IOCTL_H = @SYS_IOCTL_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_SOCKET_H = @SYS_SOCKET_H@
|
||||
SYS_STAT_H = @SYS_STAT_H@
|
||||
@ -906,6 +951,7 @@ U = @U@
|
||||
UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_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_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
|
||||
USE_ACL = @USE_ACL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
@ -1001,37 +1047,38 @@ noinst_LTLIBRARIES =
|
||||
# mv $@-t $@
|
||||
#EXTRA_DIST += script.in
|
||||
#MOSTLYCLEANFILES += script script-t
|
||||
EXTRA_DIST = acl-internal.h acl.h acl_entries.c alloca.c alloca.in.h \
|
||||
$(top_srcdir)/build-aux/announce-gen areadlink.h argmatch.c \
|
||||
argmatch.h arpa_inet.in.h atexit.c backupfile.c backupfile.h \
|
||||
btowc.c c-strtod.c c-strtod.h c-strtod.c c-strtod.h \
|
||||
c-strtold.c calloc.c calloc.c canon-host.c canon-host.h \
|
||||
canonicalize.c canonicalize.h pathmax.h chdir-long.c \
|
||||
chdir-long.h chown.c fchown-stub.c cloexec.c cloexec.h close.c \
|
||||
close-hook.h close-stream.c close-stream.h closein.c closein.h \
|
||||
closeout.c closeout.h md5.c md5.h sha1.c sha1.h sha256.c \
|
||||
sha256.h sha512.c sha512.h cycle-check.c cycle-check.h \
|
||||
dev-ino.h dirent.in.h dirfd.c basename.c dirname.c dirname.h \
|
||||
stripslash.c dup2.c errno.in.h error.c error.h euidaccess.c \
|
||||
exclude.c exclude.h exitfail.c exitfail.h fchdir.c fclose.c \
|
||||
fcntl.in.h creat-safer.c fcntl--.h fcntl-safer.h open-safer.c \
|
||||
fflush.c stdio-impl.h file-set.h file-type.c file-type.h \
|
||||
fileblocks.c filemode.c filemode.h filenamecat.c filenamecat.h \
|
||||
filevercmp.h float.in.h fnmatch.c fnmatch.in.h fnmatch_loop.c \
|
||||
fopen-safer.c stdio--.h stdio-safer.h fpending.c fpending.h \
|
||||
fprintftime.c fprintftime.h fpucw.h fpurge.h stdio-impl.h \
|
||||
freadahead.h stdio-impl.h freading.h stdio-impl.h freadptr.h \
|
||||
stdio-impl.h freadseek.h stdio-impl.h frexp.c frexp.c frexpl.c \
|
||||
fseeko.c stdio-impl.h fseterr.h stdio-impl.h fsusage.c \
|
||||
fsusage.h ftello.c ftruncate.c fts-cycle.c fts.c fts_.h \
|
||||
EXTRA_DIST = acl-internal.h acl.h acl_entries.c alignof.h alloca.c \
|
||||
alloca.in.h $(top_srcdir)/build-aux/announce-gen areadlink.h \
|
||||
argmatch.c argmatch.h arpa_inet.in.h atexit.c backupfile.c \
|
||||
backupfile.h btowc.c c-strtod.c c-strtod.h c-strtod.c \
|
||||
c-strtod.h c-strtold.c calloc.c calloc.c canon-host.c \
|
||||
canon-host.h canonicalize.c canonicalize.h pathmax.h \
|
||||
chdir-long.c chdir-long.h chown.c fchown-stub.c cloexec.c \
|
||||
cloexec.h close.c close-hook.h close-stream.c close-stream.h \
|
||||
closein.c closein.h closeout.c closeout.h md5.c md5.h sha1.c \
|
||||
sha1.h sha256.c sha256.h sha512.c sha512.h cycle-check.c \
|
||||
cycle-check.h dev-ino.h dirent.in.h dirfd.c basename.c \
|
||||
dirname.c dirname.h stripslash.c dup2.c errno.in.h error.c \
|
||||
error.h euidaccess.c exclude.c exclude.h exitfail.c exitfail.h \
|
||||
fchdir.c fclose.c fcntl.in.h creat-safer.c fcntl--.h \
|
||||
fcntl-safer.h open-safer.c fflush.c stdio-impl.h file-set.h \
|
||||
file-type.c file-type.h fileblocks.c filemode.c filemode.h \
|
||||
filenamecat.c filenamecat.h filevercmp.h float.in.h fnmatch.c \
|
||||
fnmatch.in.h fnmatch_loop.c fopen-safer.c stdio--.h \
|
||||
stdio-safer.h fpending.c fpending.h fprintftime.c \
|
||||
fprintftime.h fpucw.h fpurge.c stdio-impl.h freadahead.h \
|
||||
stdio-impl.h freading.h stdio-impl.h freadptr.h stdio-impl.h \
|
||||
freadseek.h stdio-impl.h frexp.c frexp.c frexpl.c fseeko.c \
|
||||
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 \
|
||||
getaddrinfo.c getcwd.c getdate.c getdate.h getdelim.c \
|
||||
getgroups.c gethostname.c gethrxtime.c gethrxtime.h xtime.h \
|
||||
getline.c getloadavg.c getndelim2.c getndelim2.h getopt.c \
|
||||
getopt.in.h getopt1.c getopt_int.h getpagesize.c getpass.c \
|
||||
getpass.h $(top_srcdir)/build-aux/config.rpath gettime.c \
|
||||
gettimeofday.c getugroups.c getugroups.h getusershell.c \
|
||||
$(top_srcdir)/build-aux/git-version-gen \
|
||||
getgroups.c gethostname.c w32sock.h gethrxtime.c gethrxtime.h \
|
||||
xtime.h getline.c getloadavg.c getndelim2.c getndelim2.h \
|
||||
getopt.c getopt.in.h getopt1.c getopt_int.h getpagesize.c \
|
||||
getpass.c getpass.h $(top_srcdir)/build-aux/config.rpath \
|
||||
gettime.c gettimeofday.c getugroups.c getugroups.h \
|
||||
getusershell.c $(top_srcdir)/build-aux/git-version-gen \
|
||||
$(top_srcdir)/build-aux/gitlog-to-changelog \
|
||||
$(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \
|
||||
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 \
|
||||
malloca.valgrind math.in.h mbchar.h mbrlen.c mbrtowc.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 \
|
||||
memcpy.c memmove.c mempcpy.c memrchr.c memset.c mgetgroups.c \
|
||||
mgetgroups.h mkancesdirs.c mkancesdirs.h mkdir.c dirchownmod.c \
|
||||
memcasecmp.h memchr.c memchr.valgrind memchr2.valgrind \
|
||||
memcmp.c memcmp2.h memcoll.c memcoll.h memcpy.c memmove.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 \
|
||||
modechange.c modechange.h mountlist.c mountlist.h mpsort.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 \
|
||||
settime.c sig2str.c sig2str.h sig-handler.h sigaction.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 \
|
||||
stdbool.in.h stdint.in.h stdio-write.c stdio.in.h stdlib.in.h \
|
||||
mkstemp-safer.c stdlib--.h stdlib-safer.h stpcpy.c stpncpy.c \
|
||||
strcspn.c strdup.c strdup.c streq.h strerror.c strftime.c \
|
||||
strftime.h string.in.h strndup.c strnlen.c strpbrk.c strtod.c \
|
||||
sigprocmask.c snprintf.c w32sock.h stat-macros.h stat-time.h \
|
||||
stdarg.in.h stdbool.in.h stddef.in.h stdint.in.h stdio-write.c \
|
||||
stdio.in.h stdlib.in.h mkstemp-safer.c stdlib--.h \
|
||||
stdlib-safer.h stpcpy.c stpncpy.c strcspn.c strdup.c strdup.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 \
|
||||
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 \
|
||||
@ -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 \
|
||||
unitypes.h localcharset.h uniwidth.h uniwidth/cjk.h \
|
||||
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 \
|
||||
userspec.c userspec.h utimecmp.c utimecmp.h utimens.c \
|
||||
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 \
|
||||
$(NETDB_H) $(NETINET_IN_H) $(SELINUX_SELINUX_H) \
|
||||
$(SELINUX_CONTEXT_H) signal.h $(STDARG_H) $(STDBOOL_H) \
|
||||
$(STDINT_H) stdio.h stdlib.h string.h $(SYS_SELECT_H) \
|
||||
$(SYS_SOCKET_H) $(SYS_STAT_H) $(SYS_TIME_H) time.h unistd.h \
|
||||
$(WCHAR_H) $(WCTYPE_H)
|
||||
$(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h \
|
||||
$(SYS_SELECT_H) $(SYS_SOCKET_H) $(SYS_STAT_H) $(SYS_TIME_H) \
|
||||
time.h unistd.h $(WCHAR_H) $(WCTYPE_H)
|
||||
SUFFIXES = .sed .sin
|
||||
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 \
|
||||
@ -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 \
|
||||
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 \
|
||||
stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t \
|
||||
string.h string.h-t sys/select.h sys/select.h-t sys/socket.h \
|
||||
sys/socket.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \
|
||||
time.h time.h-t unistd.h unistd.h-t wchar.h wchar.h-t wctype.h \
|
||||
wctype.h-t
|
||||
stddef.h stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t \
|
||||
stdlib.h stdlib.h-t string.h string.h-t sys/select.h \
|
||||
sys/select.h-t sys/socket.h sys/socket.h-t sys/stat.h \
|
||||
sys/stat.h-t sys/time.h sys/time.h-t time.h time.h-t unistd.h \
|
||||
unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t
|
||||
MOSTLYCLEANDIRS = arpa netinet selinux sys sys sys
|
||||
CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
|
||||
ref-del.sed
|
||||
@ -1128,27 +1178,28 @@ AM_CPPFLAGS =
|
||||
AM_CFLAGS = $(WARN_CFLAGS) # $(WERROR_CFLAGS)
|
||||
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 \
|
||||
base64.c c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c \
|
||||
c-strncasecmp.c close-hook.c diacrit.h diacrit.c file-set.c \
|
||||
filevercmp.c fpurge.c freadahead.c freading.c freadptr.c \
|
||||
freadseek.c fseterr.c full-read.h full-read.c full-write.h \
|
||||
full-write.c getdate.y gettext.h hash-pjw.h hash-pjw.c \
|
||||
hash-triple.c ignore-value.h linebuffer.h linebuffer.c \
|
||||
localcharset.h localcharset.c malloca.c mbchar.c mbiter.h \
|
||||
mbsalign.c mbsalign.h mbscasecmp.c mbslen.c mbsstr.c \
|
||||
base64.c bitrotate.h c-ctype.h c-ctype.c c-strcase.h \
|
||||
c-strcasecmp.c c-strncasecmp.c close-hook.c diacrit.h \
|
||||
diacrit.c file-set.c filevercmp.c freadahead.c freading.c \
|
||||
freadptr.c freadseek.c fseterr.c full-read.h full-read.c \
|
||||
full-write.h full-write.c getdate.y gettext.h hash-pjw.h \
|
||||
hash-pjw.c hash-triple.c ignore-value.h linebuffer.h \
|
||||
linebuffer.c localcharset.h localcharset.c malloca.c mbchar.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 \
|
||||
openat-die.c printf-frexp.c printf-frexpl.c priv-set.c \
|
||||
progname.h progname.c propername.h propername.c randint.c \
|
||||
randint.h randperm.c randperm.h randread.c randread.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 \
|
||||
striconv.c strnlen1.h strnlen1.c trim.c unicodeio.h \
|
||||
unicodeio.c unistr/u8-uctomb.c unistr/u8-uctomb-aux.c \
|
||||
uniwidth/width.c verify.h verror.h verror.c version-etc.h \
|
||||
version-etc.c version-etc-fsf.c xalloc-die.c xfreopen.c \
|
||||
xfreopen.h xgethostname.h xgethostname.c xmemcoll.h xmemcoll.c \
|
||||
xprintf.h xprintf.c xsize.h xstriconv.h xstriconv.c xstrndup.h \
|
||||
xstrndup.c xstrtoimax.c xstrtoumax.c xvasprintf.h xvasprintf.c \
|
||||
savewd.c se-context.in.h se-selinux.in.h size_max.h sockets.h \
|
||||
sockets.c striconv.h striconv.c strnlen1.h strnlen1.c trim.c \
|
||||
unicodeio.h unicodeio.c unistr/u8-uctomb.c \
|
||||
unistr/u8-uctomb-aux.c uniwidth/width.c verify.h verror.h \
|
||||
verror.c version-etc.h version-etc.c version-etc-fsf.c \
|
||||
xalloc-die.c xfreopen.c xfreopen.h xgethostname.h \
|
||||
xgethostname.c xmemcoll.h xmemcoll.c xprintf.h xprintf.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
|
||||
libcoreutils_a_LIBADD = $(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 \
|
||||
fchdir.c fclose.c creat-safer.c open-safer.c fflush.c \
|
||||
file-type.c fileblocks.c filemode.c filenamecat.c fnmatch.c \
|
||||
fnmatch_loop.c fopen-safer.c fpending.c fprintftime.c frexp.c \
|
||||
frexp.c frexpl.c fseeko.c fsusage.c ftello.c ftruncate.c \
|
||||
fts-cycle.c fts.c gai_strerror.c getaddrinfo.c getcwd.c \
|
||||
getdelim.c getgroups.c gethostname.c gethrxtime.c getline.c \
|
||||
getloadavg.c getndelim2.c getopt.c getopt1.c getpagesize.c \
|
||||
getpass.c gettime.c gettimeofday.c getugroups.c getusershell.c \
|
||||
group-member.c hard-locale.c hash.c human.c i-ring.c \
|
||||
iconv_open.c idcache.c inet_ntop.c imaxtostr.c inttostr.c \
|
||||
offtostr.c uinttostr.c umaxtostr.c isapipe.c isnan.c isnand.c \
|
||||
isnan.c isnanf.c isnan.c isnanl.c lchown.c long-options.c \
|
||||
lseek.c lstat.c malloc.c malloc.c mbrlen.c mbrtowc.c mbsinit.c \
|
||||
mbsrtowcs-state.c mbsrtowcs.c memcasecmp.c memchr.c memcmp.c \
|
||||
memcoll.c memcpy.c memmove.c mempcpy.c memrchr.c memset.c \
|
||||
mgetgroups.c mkancesdirs.c mkdir.c dirchownmod.c mkdir-p.c \
|
||||
mkstemp.c mktime.c modechange.c mountlist.c mpsort.c \
|
||||
nanosleep.c obstack.c open.c at-func.c fchmodat.c fchownat.c \
|
||||
fstatat.c mkdirat.c openat-proc.c openat.c physmem.c posixtm.c \
|
||||
posixver.c printf-frexp.c putenv.c quote.c quotearg.c raise.c \
|
||||
readlink.c readtokens.c readutmp.c realloc.c realloc.c \
|
||||
regcomp.c regex.c regex_internal.c regexec.c rename.c \
|
||||
rename-dest-slash.c rmdir.c root-dev-ino.c rpmatch.c \
|
||||
safe-read.c safe-write.c same.c save-cwd.c savedir.c select.c \
|
||||
selinux-at.c setenv.c settime.c sig2str.c sigaction.c \
|
||||
signbitd.c signbitf.c signbitl.c sigprocmask.c snprintf.c \
|
||||
stdio-write.c mkstemp-safer.c stpcpy.c stpncpy.c strcspn.c \
|
||||
strdup.c strdup.c strerror.c strftime.c strndup.c strnlen.c \
|
||||
strpbrk.c strtod.c strtoimax.c strtol.c strtoll.c strtoul.c \
|
||||
strtoull.c strtoumax.c strverscmp.c tempname.c time_r.c \
|
||||
dup-safer.c fd-safer.c pipe-safer.c unlinkdir.c unsetenv.c \
|
||||
userspec.c utimecmp.c utimens.c asnprintf.c printf-args.c \
|
||||
printf-parse.c vasnprintf.c asprintf.c vasprintf.c vfprintf.c \
|
||||
vprintf.c wcrtomb.c wcwidth.c write.c write-any-file.c \
|
||||
xmalloc.c xgetcwd.c xnanosleep.c xstrtod.c xstrtol-error.c \
|
||||
xstrtol.c xstrtoul.c xstrtod.c xstrtold.c yesno.c
|
||||
fnmatch_loop.c fopen-safer.c fpending.c fprintftime.c fpurge.c \
|
||||
frexp.c frexp.c frexpl.c fseeko.c fsusage.c ftello.c \
|
||||
ftruncate.c fts-cycle.c fts.c gai_strerror.c getaddrinfo.c \
|
||||
getcwd.c getdelim.c getgroups.c gethostname.c gethrxtime.c \
|
||||
getline.c getloadavg.c getndelim2.c getopt.c getopt1.c \
|
||||
getpagesize.c getpass.c gettime.c gettimeofday.c getugroups.c \
|
||||
getusershell.c group-member.c hard-locale.c hash.c human.c \
|
||||
i-ring.c iconv_open.c idcache.c inet_ntop.c imaxtostr.c \
|
||||
inttostr.c offtostr.c uinttostr.c umaxtostr.c isapipe.c \
|
||||
isnan.c isnand.c isnan.c isnanf.c isnan.c isnanl.c lchown.c \
|
||||
long-options.c lseek.c lstat.c malloc.c malloc.c mbrlen.c \
|
||||
mbrtowc.c mbsinit.c mbsrtowcs-state.c mbsrtowcs.c memcasecmp.c \
|
||||
memchr.c memcmp.c memcoll.c memcpy.c memmove.c mempcpy.c \
|
||||
memrchr.c memset.c mgetgroups.c mkancesdirs.c mkdir.c \
|
||||
dirchownmod.c mkdir-p.c mkstemp.c mktime.c modechange.c \
|
||||
mountlist.c mpsort.c nanosleep.c obstack.c open.c at-func.c \
|
||||
fchmodat.c fchownat.c fstatat.c mkdirat.c openat-proc.c \
|
||||
openat.c physmem.c posixtm.c posixver.c printf-frexp.c \
|
||||
putenv.c quote.c quotearg.c raise.c readlink.c readtokens.c \
|
||||
readutmp.c realloc.c realloc.c regcomp.c regex.c \
|
||||
regex_internal.c regexec.c rename.c rename-dest-slash.c \
|
||||
rmdir.c root-dev-ino.c rpmatch.c safe-read.c safe-write.c \
|
||||
same.c save-cwd.c savedir.c select.c selinux-at.c setenv.c \
|
||||
settime.c sig2str.c sigaction.c signbitd.c signbitf.c \
|
||||
signbitl.c sigprocmask.c snprintf.c stdio-write.c \
|
||||
mkstemp-safer.c stpcpy.c stpncpy.c strcspn.c strdup.c strdup.c \
|
||||
strerror.c strftime.c strndup.c strnlen.c strpbrk.c strstr.c \
|
||||
strtod.c strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
|
||||
strtoumax.c strverscmp.c tempname.c time_r.c dup-safer.c \
|
||||
fd-safer.c pipe-safer.c unlinkdir.c unsetenv.c userspec.c \
|
||||
utimecmp.c utimens.c asnprintf.c printf-args.c printf-parse.c \
|
||||
vasnprintf.c asprintf.c vasprintf.c vfprintf.c vprintf.c \
|
||||
wcrtomb.c wcwidth.c write.c write-any-file.c xmalloc.c \
|
||||
xgetcwd.c xnanosleep.c xstrtod.c xstrtol-error.c xstrtol.c \
|
||||
xstrtoul.c xstrtod.c xstrtold.c yesno.c
|
||||
GPERF = gperf
|
||||
LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
|
||||
charset_alias = $(DESTDIR)$(libdir)/charset.alias
|
||||
@ -1245,7 +1297,7 @@ stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status lib/config.h
|
||||
$(srcdir)/config.hin: $(am__configure_deps)
|
||||
$(am__cd) $(top_srcdir) && $(AUTOHEADER)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
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)/sigprocmask.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)/stpcpy.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)/strnlen1.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)/strtoimax.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! */' && \
|
||||
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|@''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_CEILL''@|$(GNULIB_CEILL)|g' \
|
||||
-e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \
|
||||
@ -2386,6 +2440,20 @@ stdbool.h: stdbool.in.h
|
||||
} > $@-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
|
||||
# doesn't have one that works with the given compiler.
|
||||
stdint.h: stdint.in.h
|
||||
@ -2451,6 +2519,7 @@ stdio.h: stdio.in.h
|
||||
-e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
|
||||
-e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|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_FPUTC''@|$(GNULIB_FPUTC)|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_FTELL''@|$(REPLACE_FTELL)|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|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|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_MBSSEP''@|$(GNULIB_MBSSEP)|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_MEMPCPY''@|$(GNULIB_MEMPCPY)|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_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|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_STRCASESTR''@|$(REPLACE_STRCASESTR)|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|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_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)' \
|
||||
< $(srcdir)/sys_socket.in.h; \
|
||||
} > $@-t
|
||||
@ -2711,6 +2786,7 @@ time.h: time.in.h
|
||||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@NEXT_TIME_H''@|$(NEXT_TIME_H)|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_STRPTIME''@|$(REPLACE_STRPTIME)|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_READLINK''@|$(GNULIB_READLINK)|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_WRITE''@|$(GNULIB_WRITE)|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|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|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_GETCWD''@|$(REPLACE_GETCWD)|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_WRITE''@|$(REPLACE_WRITE)|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)' \
|
||||
< $(srcdir)/unistd.in.h; \
|
||||
} > $@-t
|
||||
|
@ -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.
|
56
src/bin/coreutils/lib/alignof.h
Normal file
56
src/bin/coreutils/lib/alignof.h
Normal 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 */
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
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);
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*/
|
||||
|
126
src/bin/coreutils/lib/bitrotate.h
Normal file
126
src/bin/coreutils/lib/bitrotate.h
Normal 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 */
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -167,6 +167,9 @@
|
||||
/* Define to 1 when using the gnulib module 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. */
|
||||
#undef GNULIB_IOCTL
|
||||
|
||||
@ -356,6 +359,10 @@
|
||||
*/
|
||||
#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
|
||||
0 if you don't. */
|
||||
#undef HAVE_DECL_CANONICALIZE_FILE_NAME
|
||||
@ -843,6 +850,12 @@
|
||||
*/
|
||||
#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>. */
|
||||
#undef HAVE_INTMAX_T
|
||||
|
||||
@ -960,6 +973,10 @@
|
||||
/* Define if the 'malloc' function is POSIX compliant. */
|
||||
#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. */
|
||||
#undef HAVE_MATCHPATHCON_INIT_PREFIX
|
||||
|
||||
@ -1014,6 +1031,9 @@
|
||||
/* Define to 1 if you have the <mntent.h> header file. */
|
||||
#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. */
|
||||
#undef HAVE_NANOTIME
|
||||
|
||||
@ -1111,6 +1131,9 @@
|
||||
/* Define to 1 if you have run the test for working tzset. */
|
||||
#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. */
|
||||
#undef HAVE_SEARCH_H
|
||||
|
||||
@ -1183,6 +1206,9 @@
|
||||
/* Define to 1 if stdbool.h conforms to C99. */
|
||||
#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. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
@ -1264,137 +1290,140 @@
|
||||
headers. */
|
||||
#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
|
||||
|
||||
/* 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
|
||||
|
||||
/* Define to 1 if the system has the type `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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* Define if struct utimbuf is declared -- usually in <utime.h>. Some systems
|
||||
have utime.h but don't declare the struct anywhere. */
|
||||
#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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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. */
|
||||
#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. */
|
||||
#undef HAVE_SYS_MNTENT_H
|
||||
|
||||
@ -1680,6 +1712,9 @@
|
||||
/* Define to 1 if you have the `__fsetlocking' function. */
|
||||
#undef HAVE___FSETLOCKING
|
||||
|
||||
/* Define HOST_NAME_MAX when <limits.h> does not define it. */
|
||||
#undef HOST_NAME_MAX
|
||||
|
||||
/* The 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. */
|
||||
#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. */
|
||||
#undef MBRTOWC_NULL_ARG_BUG
|
||||
|
||||
@ -1850,6 +1888,9 @@
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#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. */
|
||||
#undef OPEN_TRAILING_SLASH_BUG
|
||||
|
||||
@ -1862,6 +1903,15 @@
|
||||
/* Define to the full name of this package. */
|
||||
#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. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
@ -1890,6 +1940,10 @@
|
||||
/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
|
||||
#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. */
|
||||
#undef PROTOTYPES
|
||||
|
||||
@ -1905,6 +1959,9 @@
|
||||
like the one from SunOS 4.1.1_U1. */
|
||||
#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. */
|
||||
#undef REPLACE_STRERROR
|
||||
|
||||
@ -1928,7 +1985,9 @@
|
||||
|
||||
/* Define as the maximum value of type 'size_t', if the system doesn't define
|
||||
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
|
||||
'size_t'. */
|
||||
@ -2191,9 +2250,6 @@
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#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. */
|
||||
#undef mode_t
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -25,7 +26,45 @@
|
||||
#include <errno.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
|
||||
dupfd (int fd, int desired_fd)
|
||||
{
|
||||
@ -41,7 +80,7 @@ dupfd (int fd, int desired_fd)
|
||||
return r;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
|
||||
int
|
||||
dup2 (int fd, int desired_fd)
|
||||
@ -49,9 +88,10 @@ dup2 (int fd, int desired_fd)
|
||||
if (fd == desired_fd)
|
||||
return fd;
|
||||
close (desired_fd);
|
||||
#ifdef F_DUPFD
|
||||
# ifdef F_DUPFD
|
||||
return fcntl (fd, F_DUPFD, desired_fd);
|
||||
#else
|
||||
# else
|
||||
return dupfd (fd, desired_fd);
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
#endif /* !REPLACE_DUP2 */
|
||||
|
@ -3,7 +3,7 @@
|
||||
#line 1
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -148,6 +148,11 @@
|
||||
# define GNULIB_defined_ENOTSUP 1
|
||||
# endif
|
||||
|
||||
# ifndef ESTALE
|
||||
# define ESTALE 2009
|
||||
# define GNULIB_defined_ESTALE 1
|
||||
# endif
|
||||
|
||||
# ifndef ECANCELED
|
||||
# define ECANCELED 2008
|
||||
# define GNULIB_defined_ECANCELED 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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 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 */
|
||||
|
||||
# include <fcntl.h>
|
||||
|
||||
# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
|
||||
# ifndef HAVE_DECL_STRERROR_R
|
||||
"this configure-time declaration test was not run"
|
||||
@ -236,6 +238,12 @@ error (int status, int errnum, const char *message, ...)
|
||||
0);
|
||||
#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);
|
||||
#ifdef _LIBC
|
||||
_IO_flockfile (stderr);
|
||||
@ -295,6 +303,12 @@ error_at_line (int status, int errnum, const char *file_name,
|
||||
0);
|
||||
#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);
|
||||
#ifdef _LIBC
|
||||
_IO_flockfile (stderr);
|
||||
|
@ -2,7 +2,7 @@
|
||||
This function is probably useful only for choosing whether to issue
|
||||
a prompt in an implementation of POSIX-specified rm.
|
||||
|
||||
Copyright (C) 2005, 2006 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* exclude.c -- exclude file names
|
||||
|
||||
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
|
||||
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
|
||||
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>
|
||||
|
||||
@ -30,6 +33,8 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "exclude.h"
|
||||
#include "hash.h"
|
||||
#include "mbuiter.h"
|
||||
#include "fnmatch.h"
|
||||
#include "xalloc.h"
|
||||
#include "verify.h"
|
||||
@ -54,6 +59,14 @@ verify (((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS)
|
||||
| FNM_CASEFOLD | FNM_EXTMATCH))
|
||||
== 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
|
||||
ORed with EXCLUDE_* options. */
|
||||
|
||||
@ -63,15 +76,63 @@ struct patopts
|
||||
int options;
|
||||
};
|
||||
|
||||
/* An exclude list, of pattern-options pairs. */
|
||||
/* An array of pattern-options pairs. */
|
||||
|
||||
struct exclude
|
||||
struct exclude_pattern
|
||||
{
|
||||
struct patopts *exclude;
|
||||
size_t exclude_alloc;
|
||||
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. */
|
||||
|
||||
struct exclude *
|
||||
@ -80,12 +141,122 @@ new_exclude (void)
|
||||
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
|
||||
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);
|
||||
}
|
||||
|
||||
@ -155,36 +326,113 @@ exclude_fnmatch (char const *pattern, char const *f, int options)
|
||||
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. */
|
||||
|
||||
bool
|
||||
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 (exclude_count == 0)
|
||||
/* If no patterns are given, the default is to include. */
|
||||
if (!ex->head)
|
||||
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;
|
||||
size_t i;
|
||||
bool rc;
|
||||
|
||||
/* Otherwise, the default is the opposite of the first option. */
|
||||
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++)
|
||||
switch (seg->type)
|
||||
{
|
||||
char const *pattern = exclude[i].pattern;
|
||||
int options = exclude[i].options;
|
||||
if (excluded == !! (options & EXCLUDE_INCLUDE))
|
||||
excluded ^= exclude_fnmatch (pattern, f, options);
|
||||
}
|
||||
case exclude_pattern:
|
||||
rc = excluded_file_pattern_p (seg, f);
|
||||
break;
|
||||
|
||||
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. */
|
||||
@ -192,15 +440,46 @@ excluded_file_name (struct exclude const *ex, char const *f)
|
||||
void
|
||||
add_exclude (struct exclude *ex, char const *pattern, int options)
|
||||
{
|
||||
struct patopts *patopts;
|
||||
struct exclude_segment *seg;
|
||||
|
||||
if (ex->exclude_count == ex->exclude_alloc)
|
||||
ex->exclude = x2nrealloc (ex->exclude, &ex->exclude_alloc,
|
||||
sizeof *ex->exclude);
|
||||
if ((options & EXCLUDE_WILDCARDS)
|
||||
&& fnmatch_pattern_has_wildcards (pattern, options))
|
||||
{
|
||||
struct exclude_pattern *pat;
|
||||
struct patopts *patopts;
|
||||
|
||||
patopts = &ex->exclude[ex->exclude_count++];
|
||||
patopts->pattern = pattern;
|
||||
patopts->options = options;
|
||||
if (ex->tail && ex->tail->type == exclude_pattern
|
||||
&& ((ex->tail->options & EXCLUDE_INCLUDE) ==
|
||||
(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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* exclude.h -- declarations for excluding file names
|
||||
|
||||
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
|
||||
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
|
||||
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. */
|
||||
|
||||
@ -33,6 +34,8 @@
|
||||
|
||||
struct exclude;
|
||||
|
||||
bool fnmatch_pattern_has_wildcards (const char *, int);
|
||||
|
||||
struct exclude *new_exclude (void);
|
||||
void free_exclude (struct exclude *);
|
||||
void add_exclude (struct exclude *, char const *, int);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -172,13 +172,19 @@ rpl_dup (int oldfd)
|
||||
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
|
||||
rpl_dup2 (int oldfd, int newfd)
|
||||
#undef dup2
|
||||
rpl_dup2_fchdir (int oldfd, int newfd)
|
||||
{
|
||||
int retval = dup2 (oldfd, newfd);
|
||||
|
||||
if (retval >= 0 && oldfd >= 0 && newfd >= 0 && newfd != oldfd)
|
||||
if (retval >= 0 && newfd != oldfd)
|
||||
{
|
||||
ensure_dirs_slot (newfd);
|
||||
if (newfd < dirs_allocated)
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -25,7 +25,6 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include "freading.h"
|
||||
#include "fpurge.h"
|
||||
|
||||
#include "stdio-impl.h"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* -*- buffer-read-only: t -*- vi: set ro: */
|
||||
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
|
||||
#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.
|
||||
|
||||
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')
|
||||
# endif
|
||||
|
||||
# define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
|
||||
# define STREQ(s1, s2) (strcmp (s1, s2) == 0)
|
||||
|
||||
# if defined _LIBC || WIDE_CHAR_SUPPORT
|
||||
/* The GNU C library provides support for user-defined character classes
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include <config.h>
|
||||
|
||||
/* Specification. */
|
||||
#include "fpurge.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7 */
|
||||
# include <stdio_ext.h>
|
||||
@ -35,7 +35,7 @@ fpurge (FILE *fp)
|
||||
/* The __fpurge function does not have a return value. */
|
||||
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. */
|
||||
# undef fpurge
|
||||
@ -49,7 +49,7 @@ fpurge (FILE *fp)
|
||||
<stdio.h> on BSD systems says:
|
||||
"The following always hold: if _flags & __SRD, _w is 0."
|
||||
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. */
|
||||
if ((fp_->_flags & __SRD) != 0)
|
||||
fp_->_w = 0;
|
||||
|
@ -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 */
|
@ -82,7 +82,7 @@ rpl_fseeko (FILE *fp, off_t offset, int whence)
|
||||
&& ((fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) == 0
|
||||
|| fp->__bufpos == fp->__bufread))
|
||||
#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->_Rsave == NULL)
|
||||
#elif defined __MINT__ /* Atari FreeMiNT */
|
||||
|
@ -932,7 +932,9 @@ next: tmp = p;
|
||||
SET(FTS_STOP);
|
||||
return (NULL);
|
||||
}
|
||||
free_dir(sp);
|
||||
fts_load(sp, p);
|
||||
setup_dir(sp);
|
||||
goto check_for_dir;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
#define YYBISON 1
|
||||
|
||||
/* Bison version. */
|
||||
#define YYBISON_VERSION "2.4"
|
||||
#define YYBISON_VERSION "2.4.1"
|
||||
|
||||
/* Skeleton name. */
|
||||
#define YYSKELETON_NAME "yacc.c"
|
||||
|
@ -2,8 +2,8 @@
|
||||
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
|
||||
#line 1
|
||||
/* getdelim.c --- Implementation of replacement getdelim function.
|
||||
Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006, 2007, 2008 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006, 2007,
|
||||
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
|
||||
@ -27,12 +27,10 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifndef SIZE_MAX
|
||||
# define SIZE_MAX ((size_t) -1)
|
||||
#endif
|
||||
#ifndef SSIZE_MAX
|
||||
# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
|
||||
#endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
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
|
||||
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>
|
||||
|
||||
#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
|
||||
/* Unix API. */
|
||||
|
||||
/* Specification. */
|
||||
#include <unistd.h>
|
||||
|
||||
@ -54,3 +58,47 @@ gethostname (char *name, size_t len)
|
||||
#endif
|
||||
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
|
||||
|
@ -44,8 +44,8 @@
|
||||
otherwise, no load average is available.
|
||||
HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults
|
||||
to this.
|
||||
NLIST_STRUCT Include nlist.h, not a.out.h, and
|
||||
the nlist n_name element is a pointer,
|
||||
NLIST_STRUCT Include nlist.h, not a.out.h.
|
||||
N_NAME_POINTER The nlist n_name element is a pointer,
|
||||
not an array.
|
||||
HAVE_STRUCT_NLIST_N_UN_N_NAME `n_un.n_name' is member of `struct nlist'.
|
||||
LINUX_LDAV_FILE [__linux__, __CYGWIN__]: File containing
|
||||
@ -900,7 +900,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
if (offset == 0)
|
||||
{
|
||||
# ifndef sgi
|
||||
# ifndef NLIST_STRUCT
|
||||
# if ! defined NLIST_STRUCT || ! defined N_NAME_POINTER
|
||||
strcpy (nl[0].n_name, LDAV_SYMBOL);
|
||||
strcpy (nl[1].n_name, "");
|
||||
# else /* NLIST_STRUCT */
|
||||
|
@ -3,7 +3,7 @@
|
||||
#line 1
|
||||
/* 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.
|
||||
|
||||
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;
|
||||
# endif
|
||||
|
||||
int result = gettimeofday (tv, tz);
|
||||
int result = gettimeofday (tv, (struct timezone *) tz);
|
||||
|
||||
# if GETTIMEOFDAY_CLOBBERS_LOCALTIME
|
||||
*localtime_buffer_addr = save;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -36,7 +36,7 @@ struct group *getgrent (void);
|
||||
|
||||
#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
|
||||
process. Store at most MAXCOUNT group IDs in the GROUPLIST array.
|
||||
|
@ -9,7 +9,7 @@
|
||||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# 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
|
||||
|
||||
@ -46,6 +46,13 @@ EXTRA_libcoreutils_a_SOURCES += acl_entries.c
|
||||
|
||||
## end gnulib module acl
|
||||
|
||||
## begin gnulib module alignof
|
||||
|
||||
|
||||
EXTRA_DIST += alignof.h
|
||||
|
||||
## end gnulib module alignof
|
||||
|
||||
## begin gnulib module alloca
|
||||
|
||||
|
||||
@ -157,6 +164,12 @@ libcoreutils_a_SOURCES += base64.h base64.c
|
||||
|
||||
## end gnulib module base64
|
||||
|
||||
## begin gnulib module bitrotate
|
||||
|
||||
libcoreutils_a_SOURCES += bitrotate.h
|
||||
|
||||
## end gnulib module bitrotate
|
||||
|
||||
## begin gnulib module btowc
|
||||
|
||||
|
||||
@ -728,9 +741,10 @@ EXTRA_DIST += fpucw.h
|
||||
|
||||
## 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
|
||||
|
||||
@ -906,7 +920,7 @@ EXTRA_libcoreutils_a_SOURCES += getgroups.c
|
||||
## begin gnulib module gethostname
|
||||
|
||||
|
||||
EXTRA_DIST += gethostname.c
|
||||
EXTRA_DIST += gethostname.c w32sock.h
|
||||
|
||||
EXTRA_libcoreutils_a_SOURCES += gethostname.c
|
||||
|
||||
@ -948,7 +962,7 @@ EXTRA_libcoreutils_a_SOURCES += getndelim2.c
|
||||
|
||||
## end gnulib module getndelim2
|
||||
|
||||
## begin gnulib module getopt
|
||||
## begin gnulib module getopt-posix
|
||||
|
||||
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
|
||||
|
||||
## end gnulib module getopt
|
||||
## end gnulib module getopt-posix
|
||||
|
||||
## begin gnulib module getpagesize
|
||||
|
||||
@ -1486,7 +1500,7 @@ math.h: math.in.h
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||||
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|@''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_CEILL''@|$(GNULIB_CEILL)|g' \
|
||||
-e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \
|
||||
@ -1652,7 +1666,7 @@ EXTRA_libcoreutils_a_SOURCES += memcasecmp.c
|
||||
## begin gnulib module memchr
|
||||
|
||||
|
||||
EXTRA_DIST += memchr.c
|
||||
EXTRA_DIST += memchr.c memchr.valgrind
|
||||
|
||||
EXTRA_libcoreutils_a_SOURCES += memchr.c
|
||||
|
||||
@ -1662,6 +1676,8 @@ EXTRA_libcoreutils_a_SOURCES += memchr.c
|
||||
|
||||
libcoreutils_a_SOURCES += memchr2.h memchr2.c
|
||||
|
||||
EXTRA_DIST += memchr2.valgrind
|
||||
|
||||
## end gnulib module memchr2
|
||||
|
||||
## begin gnulib module memcmp
|
||||
@ -2357,6 +2373,14 @@ EXTRA_libcoreutils_a_SOURCES += snprintf.c
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
@ -2410,6 +2434,29 @@ EXTRA_DIST += stdbool.in.h
|
||||
|
||||
## 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
|
||||
|
||||
BUILT_SOURCES += $(STDINT_H)
|
||||
@ -2488,6 +2535,7 @@ stdio.h: stdio.in.h
|
||||
-e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
|
||||
-e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|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_FPUTC''@|$(GNULIB_FPUTC)|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_FTELL''@|$(REPLACE_FTELL)|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|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|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_MBSSEP''@|$(GNULIB_MBSSEP)|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_MEMPCPY''@|$(GNULIB_MEMPCPY)|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_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|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_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
|
||||
-e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
|
||||
@ -2799,6 +2851,15 @@ EXTRA_libcoreutils_a_SOURCES += strpbrk.c
|
||||
|
||||
## 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
|
||||
|
||||
LIBS += $(POW_LIB)
|
||||
@ -2930,6 +2991,8 @@ sys/socket.h: sys_socket.in.h
|
||||
-e 's|@''GNULIB_SHUTDOWN''@|$(GNULIB_SHUTDOWN)|g' \
|
||||
-e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_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)' \
|
||||
< $(srcdir)/sys_socket.in.h; \
|
||||
} > $@-t
|
||||
@ -3018,6 +3081,7 @@ time.h: time.in.h
|
||||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@NEXT_TIME_H''@|$(NEXT_TIME_H)|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_STRPTIME''@|$(REPLACE_STRPTIME)|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_READLINK''@|$(GNULIB_READLINK)|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_WRITE''@|$(GNULIB_WRITE)|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|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|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_GETCWD''@|$(REPLACE_GETCWD)|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_WRITE''@|$(REPLACE_WRITE)|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)' \
|
||||
< $(srcdir)/unistd.in.h; \
|
||||
} > $@-t
|
||||
@ -3207,6 +3274,13 @@ EXTRA_libcoreutils_a_SOURCES += unsetenv.c
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* hash - hashing table processing.
|
||||
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007,
|
||||
2009 Free Software Foundation, Inc.
|
||||
|
||||
Written by Jim Meyering, 1992.
|
||||
|
||||
@ -26,9 +26,11 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "hash.h"
|
||||
|
||||
#include "bitrotate.h"
|
||||
#include "xalloc.h"
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@ -42,9 +44,11 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef SIZE_MAX
|
||||
# define SIZE_MAX ((size_t) -1)
|
||||
#endif
|
||||
struct hash_entry
|
||||
{
|
||||
void *data;
|
||||
struct hash_entry *next;
|
||||
};
|
||||
|
||||
struct hash_table
|
||||
{
|
||||
@ -57,7 +61,7 @@ struct hash_table
|
||||
size_t n_buckets_used;
|
||||
size_t n_entries;
|
||||
|
||||
/* Tuning arguments, kept in a physicaly separate structure. */
|
||||
/* Tuning arguments, kept in a physically separate structure. */
|
||||
const Hash_tuning *tuning;
|
||||
|
||||
/* 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
|
||||
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
|
||||
entry contents may be hashed by a randomization function (the hashing
|
||||
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;
|
||||
|
||||
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 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
|
||||
contained entries. For the traversal to work properly, the hash table
|
||||
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. */
|
||||
|
||||
@ -365,7 +371,7 @@ hash_do_for_each (const Hash_table *table, Hash_processor processor,
|
||||
{
|
||||
for (cursor = bucket; cursor; cursor = cursor->next)
|
||||
{
|
||||
if (!(*processor) (cursor->data, processor_data))
|
||||
if (! processor (cursor->data, processor_data))
|
||||
return counter;
|
||||
counter++;
|
||||
}
|
||||
@ -391,10 +397,8 @@ hash_do_for_each (const Hash_table *table, Hash_processor processor,
|
||||
size_t
|
||||
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) \
|
||||
((Byte) + ROTATE_LEFT (Value, 7))
|
||||
((Byte) + rotl_sz (Value, 7))
|
||||
|
||||
size_t value = 0;
|
||||
unsigned char ch;
|
||||
@ -403,7 +407,6 @@ hash_string (const char *string, size_t n_buckets)
|
||||
value = HASH_ONE_CHAR (value, ch);
|
||||
return value % n_buckets;
|
||||
|
||||
# undef ROTATE_LEFT
|
||||
# undef HASH_ONE_CHAR
|
||||
}
|
||||
|
||||
@ -459,7 +462,7 @@ next_prime (size_t candidate)
|
||||
/* Make it definitely odd. */
|
||||
candidate |= 1;
|
||||
|
||||
while (!is_prime (candidate))
|
||||
while (SIZE_MAX != candidate && !is_prime (candidate))
|
||||
candidate += 2;
|
||||
|
||||
return candidate;
|
||||
@ -471,6 +474,27 @@ hash_reset_tuning (Hash_tuning *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
|
||||
reasonable values, and return true if there is no gross error with it.
|
||||
Otherwise, definitively reset the TUNING field to some acceptable default
|
||||
@ -481,12 +505,15 @@ static bool
|
||||
check_tuning (Hash_table *table)
|
||||
{
|
||||
const Hash_tuning *tuning = table->tuning;
|
||||
if (tuning == &default_tuning)
|
||||
return true;
|
||||
|
||||
/* Be a bit stricter than mathematics would require, so that
|
||||
rounding errors in size calculations do not cause allocations to
|
||||
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
|
||||
should be good enough. */
|
||||
{
|
||||
float epsilon = 0.1f;
|
||||
|
||||
if (epsilon < tuning->growth_threshold
|
||||
@ -497,11 +524,32 @@ check_tuning (Hash_table *table)
|
||||
&& tuning->shrink_factor <= 1
|
||||
&& tuning->shrink_threshold + epsilon < tuning->growth_threshold)
|
||||
return true;
|
||||
}
|
||||
|
||||
table->tuning = &default_tuning;
|
||||
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
|
||||
number of buckets is automatically selected so as to _guarantee_ that you
|
||||
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 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
|
||||
slot number for that entry which should be in the range 0..TABLE_SIZE-1.
|
||||
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
|
||||
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
|
||||
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;
|
||||
|
||||
if (hasher == NULL || comparator == NULL)
|
||||
return NULL;
|
||||
if (hasher == NULL)
|
||||
hasher = raw_hasher;
|
||||
if (comparator == NULL)
|
||||
comparator = raw_comparator;
|
||||
|
||||
table = malloc (sizeof *table);
|
||||
if (table == NULL)
|
||||
@ -560,18 +613,8 @@ hash_initialize (size_t candidate, const Hash_tuning *tuning,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!tuning->is_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))
|
||||
table->n_buckets = compute_bucket_size (candidate, tuning);
|
||||
if (!table->n_buckets)
|
||||
goto fail;
|
||||
|
||||
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)
|
||||
{
|
||||
if (table->data_freer)
|
||||
(*table->data_freer) (cursor->data);
|
||||
table->data_freer (cursor->data);
|
||||
cursor->data = NULL;
|
||||
|
||||
next = cursor->next;
|
||||
@ -628,7 +671,7 @@ hash_clear (Hash_table *table)
|
||||
|
||||
/* Free the bucket head. */
|
||||
if (table->data_freer)
|
||||
(*table->data_freer) (bucket->data);
|
||||
table->data_freer (bucket->data);
|
||||
bucket->data = NULL;
|
||||
bucket->next = NULL;
|
||||
}
|
||||
@ -658,9 +701,7 @@ hash_free (Hash_table *table)
|
||||
if (bucket->data)
|
||||
{
|
||||
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. */
|
||||
|
||||
/* 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. */
|
||||
|
||||
static struct hash_entry *
|
||||
@ -757,7 +798,7 @@ hash_find_entry (Hash_table *table, const void *entry,
|
||||
return NULL;
|
||||
|
||||
/* 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;
|
||||
|
||||
@ -784,7 +825,8 @@ hash_find_entry (Hash_table *table, const void *entry,
|
||||
/* Scan the bucket overflow. */
|
||||
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;
|
||||
|
||||
@ -806,102 +848,185 @@ hash_find_entry (Hash_table *table, const void *entry,
|
||||
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
|
||||
specifying CANDIDATE. The contents of the hash table are preserved. The
|
||||
new number of buckets is automatically selected so as to _guarantee_ that
|
||||
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
|
||||
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
|
||||
hash_rehash (Hash_table *table, size_t candidate)
|
||||
{
|
||||
Hash_table storage;
|
||||
Hash_table *new_table;
|
||||
struct hash_entry *bucket;
|
||||
struct hash_entry *cursor;
|
||||
struct hash_entry *next;
|
||||
size_t new_size = compute_bucket_size (candidate, table->tuning);
|
||||
|
||||
new_table = hash_initialize (candidate, table->tuning, table->hasher,
|
||||
table->comparator, table->data_freer);
|
||||
if (new_table == NULL)
|
||||
if (!new_size)
|
||||
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. */
|
||||
#if USE_OBSTACK
|
||||
obstack_free (&new_table->entry_stack, NULL);
|
||||
new_table->entry_stack = table->entry_stack;
|
||||
#endif
|
||||
new_table->free_entry_list = table->free_entry_list;
|
||||
|
||||
for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
|
||||
if (bucket->data)
|
||||
for (cursor = bucket; cursor; cursor = next)
|
||||
{
|
||||
void *data = cursor->data;
|
||||
struct hash_entry *new_bucket
|
||||
= (new_table->bucket
|
||||
+ new_table->hasher (data, new_table->n_buckets));
|
||||
if (transfer_entries (new_table, table, false))
|
||||
{
|
||||
/* Entries transferred successfully; tie up the loose ends. */
|
||||
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->n_entries and table->entry_stack already hold their value. */
|
||||
return true;
|
||||
}
|
||||
|
||||
if (! (new_bucket < new_table->bucket_limit))
|
||||
abort ();
|
||||
/* We've allocated new_table->bucket (and possibly some entries),
|
||||
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;
|
||||
|
||||
if (new_bucket->data)
|
||||
{
|
||||
if (cursor == bucket)
|
||||
{
|
||||
/* 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;
|
||||
There are some pathological cases where a single pass through the
|
||||
table requires more intermediate overflow entries than using two
|
||||
passes. Two passes give worse cache performance and takes
|
||||
longer, but at this point, we're already out of memory, so slow
|
||||
and safe is better than failure. */
|
||||
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. */
|
||||
#if USE_OBSTACK
|
||||
table->entry_stack = new_table->entry_stack;
|
||||
#endif
|
||||
free (new_table);
|
||||
|
||||
return true;
|
||||
free (new_table->bucket);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 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.
|
||||
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 *
|
||||
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)
|
||||
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
|
||||
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
|
||||
@ -967,10 +1068,38 @@ hash_insert (Hash_table *table, const void *entry)
|
||||
|
||||
/* If the rehash fails, arrange to return NULL. */
|
||||
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;
|
||||
}
|
||||
|
||||
@ -1012,7 +1141,25 @@ hash_delete (Hash_table *table, const void *entry)
|
||||
: (table->n_buckets * tuning->shrink_factor
|
||||
* 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
|
||||
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;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
@ -26,17 +26,22 @@
|
||||
# include <stdio.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 bool (*Hash_comparator) (const void *, const void *);
|
||||
typedef void (*Hash_data_freer) (void *);
|
||||
typedef bool (*Hash_processor) (void *, void *);
|
||||
|
||||
struct hash_entry
|
||||
{
|
||||
void *data;
|
||||
struct hash_entry *next;
|
||||
};
|
||||
|
||||
struct hash_tuning
|
||||
{
|
||||
/* 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 *);
|
||||
Hash_table *hash_initialize (size_t, const Hash_tuning *,
|
||||
Hash_hasher, Hash_comparator,
|
||||
Hash_data_freer);
|
||||
Hash_data_freer) ATTRIBUTE_WUR;
|
||||
void hash_clear (Hash_table *);
|
||||
void hash_free (Hash_table *);
|
||||
|
||||
/* Insertion and deletion. */
|
||||
bool hash_rehash (Hash_table *, size_t);
|
||||
void *hash_insert (Hash_table *, const void *);
|
||||
bool hash_rehash (Hash_table *, size_t) ATTRIBUTE_WUR;
|
||||
void *hash_insert (Hash_table *, const void *) ATTRIBUTE_WUR;
|
||||
void *hash_delete (Hash_table *, const void *);
|
||||
|
||||
#endif
|
||||
|
@ -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 */
|
||||
/* Computed positions: -k'4,$' */
|
||||
|
||||
@ -229,7 +229,7 @@ static const struct mapping mappings[] =
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
|
||||
#ifdef __GNUC_STDC_INLINE__
|
||||
__attribute__ ((__gnu_inline__))
|
||||
#endif
|
||||
#endif
|
||||
|
@ -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 */
|
||||
/* Computed positions: -k'4,$' */
|
||||
|
||||
@ -272,7 +272,7 @@ static const struct mapping mappings[] =
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
|
||||
#ifdef __GNUC_STDC_INLINE__
|
||||
__attribute__ ((__gnu_inline__))
|
||||
#endif
|
||||
#endif
|
||||
|
@ -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 */
|
||||
/* Computed positions: -k'1,$' */
|
||||
|
||||
@ -172,7 +172,7 @@ static const struct mapping mappings[] =
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
|
||||
#ifdef __GNUC_STDC_INLINE__
|
||||
__attribute__ ((__gnu_inline__))
|
||||
#endif
|
||||
#endif
|
||||
|
@ -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 */
|
||||
/* Computed positions: -k'4,$' */
|
||||
|
||||
@ -251,7 +251,7 @@ static const struct mapping mappings[] =
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
|
||||
#ifdef __GNUC_STDC_INLINE__
|
||||
__attribute__ ((__gnu_inline__))
|
||||
#endif
|
||||
#endif
|
||||
|
@ -22,7 +22,7 @@
|
||||
#endif
|
||||
|
||||
/* 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
|
||||
#define _GL_MATH_H
|
||||
@ -148,7 +148,8 @@ extern long double ceill (long double x);
|
||||
#endif
|
||||
|
||||
|
||||
#if @GNULIB_MATHL@ || !@HAVE_DECL_COSL@
|
||||
#if @GNULIB_MATHL@ || (!@HAVE_DECL_COSL@ && !defined cosl)
|
||||
# undef cosl
|
||||
extern long double cosl (long double x);
|
||||
#endif
|
||||
#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
|
||||
@ -237,7 +238,8 @@ extern long double ldexpl (long double x, int exp);
|
||||
#endif
|
||||
|
||||
|
||||
#if @GNULIB_MATHL@ || !@HAVE_DECL_LOGL@
|
||||
#if @GNULIB_MATHL@ || (!@HAVE_DECL_LOGL@ && !defined logl)
|
||||
# undef logl
|
||||
extern long double logl (long double x);
|
||||
#endif
|
||||
#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
|
||||
@ -292,7 +294,8 @@ extern long double roundl (long double x);
|
||||
#endif
|
||||
|
||||
|
||||
#if @GNULIB_MATHL@ || !@HAVE_DECL_SINL@
|
||||
#if @GNULIB_MATHL@ || (!@HAVE_DECL_SINL@ && !defined sinl)
|
||||
# undef sinl
|
||||
extern long double sinl (long double x);
|
||||
#endif
|
||||
#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
|
||||
|
@ -3,7 +3,7 @@
|
||||
#line 1
|
||||
/* Declaration of functions and data types used for MD5 sum computing
|
||||
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.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@ -57,6 +57,10 @@
|
||||
# define __md5_stream md5_stream
|
||||
#endif
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/* Structure to save state of computation between the single steps. */
|
||||
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,
|
||||
void *resblock) __THROW;
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* md5.h */
|
||||
|
14
src/bin/coreutils/lib/memchr.valgrind
Normal file
14
src/bin/coreutils/lib/memchr.valgrind
Normal 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
|
||||
}
|
14
src/bin/coreutils/lib/memchr2.valgrind
Normal file
14
src/bin/coreutils/lib/memchr2.valgrind
Normal 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
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
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_start (ap, flags);
|
||||
|
||||
/* Assume mode_t promotes to int if and only if it is smaller.
|
||||
This assumption isn't guaranteed by the C standard, but we
|
||||
don't know of any real-world counterexamples. */
|
||||
if (sizeof (mode_t) < sizeof (int))
|
||||
mode = va_arg (ap, int);
|
||||
else
|
||||
mode = va_arg (ap, mode_t);
|
||||
/* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
|
||||
creates crashing code when 'mode_t' is smaller than 'int'. */
|
||||
mode = va_arg (ap, PROMOTED_MODE_T);
|
||||
|
||||
va_end (ap);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
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_start (arg, flags);
|
||||
|
||||
/* If mode_t is narrower than int, use the promoted type (int),
|
||||
not mode_t. Use sizeof to guess whether mode_t is narrower;
|
||||
we don't know of any practical counterexamples. */
|
||||
mode = (sizeof (mode_t) < sizeof (int)
|
||||
? va_arg (arg, int)
|
||||
: va_arg (arg, mode_t));
|
||||
/* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
|
||||
creates crashing code when 'mode_t' is smaller than 'int'. */
|
||||
mode = va_arg (arg, PROMOTED_MODE_T);
|
||||
|
||||
va_end (arg);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
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_start (arg, flags);
|
||||
|
||||
/* If mode_t is narrower than int, use the promoted type (int),
|
||||
not mode_t. Use sizeof to guess whether mode_t is narrower;
|
||||
we don't know of any practical counterexamples. */
|
||||
mode = (sizeof (mode_t) < sizeof (int)
|
||||
? va_arg (arg, int)
|
||||
: va_arg (arg, mode_t));
|
||||
/* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
|
||||
creates crashing code when 'mode_t' is smaller than 'int'. */
|
||||
mode = va_arg (arg, PROMOTED_MODE_T);
|
||||
|
||||
va_end (arg);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -17,7 +17,36 @@
|
||||
#include <selinux/selinux.h>
|
||||
#include <selinux/context.h>
|
||||
|
||||
int getfileconat (int fd, char const *file, security_context_t *con);
|
||||
int lgetfileconat (int fd, char const *file, security_context_t *con);
|
||||
int setfileconat (int fd, char const *file, security_context_t con);
|
||||
int lsetfileconat (int fd, char const *file, security_context_t con);
|
||||
/* These are the dir-fd-relative variants of the functions without the
|
||||
"at" suffix. For example, getfileconat (AT_FDCWD, file, &c) is usually
|
||||
equivalent to getfilecon (file, &c). The emulation is accomplished
|
||||
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);
|
||||
|
@ -3,7 +3,7 @@
|
||||
#line 1
|
||||
/* Declarations of functions and data types used for SHA1 sum
|
||||
library functions.
|
||||
Copyright (C) 2000, 2001, 2003, 2005, 2006, 2008
|
||||
Copyright (C) 2000, 2001, 2003, 2005, 2006, 2008, 2009
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,10 @@
|
||||
# include <stdio.h>
|
||||
# include <stdint.h>
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
#define SHA1_DIGEST_SIZE 20
|
||||
|
||||
/* Structure to save state of computation between the single steps. */
|
||||
@ -84,4 +88,8 @@ extern int sha1_stream (FILE *stream, void *resblock);
|
||||
digest. */
|
||||
extern void *sha1_buffer (const char *buffer, size_t len, void *resblock);
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Declarations of functions and data types used for SHA256 and SHA224 sum
|
||||
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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -21,6 +21,10 @@
|
||||
# include <stdio.h>
|
||||
# include <stdint.h>
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/* Structure to save state of computation between the single steps. */
|
||||
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 *sha224_buffer (const char *buffer, size_t len, void *resblock);
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Declarations of functions and data types used for SHA512 and SHA384 sum
|
||||
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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -22,6 +22,10 @@
|
||||
|
||||
# include "u64.h"
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/* Structure to save state of computation between the single steps. */
|
||||
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 *sha384_buffer (const char *buffer, size_t len, void *resblock);
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
118
src/bin/coreutils/lib/sockets.c
Normal file
118
src/bin/coreutils/lib/sockets.c
Normal 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;
|
||||
}
|
51
src/bin/coreutils/lib/sockets.h
Normal file
51
src/bin/coreutils/lib/sockets.h
Normal 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 */
|
89
src/bin/coreutils/lib/stddef.in.h
Normal file
89
src/bin/coreutils/lib/stddef.in.h
Normal 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 */
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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 !DEPENDS_ON_LIBINTL /* avoid collision with intl/printf.c */
|
||||
int
|
||||
printf (const char *format, ...)
|
||||
{
|
||||
@ -75,6 +76,7 @@ printf (const char *format, ...)
|
||||
|
||||
return retval;
|
||||
}
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */
|
||||
@ -92,7 +94,7 @@ fprintf (FILE *stream, const char *format, ...)
|
||||
}
|
||||
# endif
|
||||
|
||||
# if !REPLACE_VFPRINTF_POSIX /* avoid collision with vprintf.c */
|
||||
# if !REPLACE_VPRINTF_POSIX /* avoid collision with vprintf.c */
|
||||
int
|
||||
vprintf (const char *format, va_list args)
|
||||
{
|
||||
@ -100,7 +102,7 @@ vprintf (const char *format, va_list args)
|
||||
}
|
||||
# endif
|
||||
|
||||
# if !REPLACE_VPRINTF_POSIX /* avoid collision with vfprintf.c */
|
||||
# if !REPLACE_VFPRINTF_POSIX /* avoid collision with vfprintf.c */
|
||||
int
|
||||
vfprintf (FILE *stream, const char *format, va_list args)
|
||||
#undef vfprintf
|
||||
|
@ -3,7 +3,7 @@
|
||||
#line 1
|
||||
/* 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
|
||||
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))
|
||||
#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 @REPLACE_FCLOSE@
|
||||
# define fclose rpl_fclose
|
||||
|
@ -35,6 +35,8 @@
|
||||
#ifndef _GL_STDLIB_H
|
||||
#define _GL_STDLIB_H
|
||||
|
||||
/* NetBSD 5.0 mis-defines NULL. */
|
||||
#include <stddef.h>
|
||||
|
||||
/* Solaris declares getloadavg() in <sys/loadavg.h>. */
|
||||
#if @GNULIB_GETLOADAVG@ && @HAVE_SYS_LOADAVG_H@
|
||||
|
432
src/bin/coreutils/lib/str-two-way.h
Normal file
432
src/bin/coreutils/lib/str-two-way.h
Normal 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
|
@ -313,7 +313,13 @@ rpl_strerror (int n)
|
||||
break;
|
||||
# endif
|
||||
|
||||
# if GNULIB_defined_
|
||||
# if GNULIB_defined_ESTALE
|
||||
case ESTALE:
|
||||
msg = "Stale NFS file handle";
|
||||
break;
|
||||
# endif
|
||||
|
||||
# if GNULIB_defined_ECANCELED
|
||||
case ECANCELED:
|
||||
msg = "Operation canceled";
|
||||
break;
|
||||
|
@ -3,7 +3,7 @@
|
||||
#line 1
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -31,6 +31,8 @@
|
||||
#ifndef _GL_STRING_H
|
||||
#define _GL_STRING_H
|
||||
|
||||
/* NetBSD 5.0 mis-defines NULL. */
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef __attribute__
|
||||
/* This feature is available in gcc versions 2.5 and later. */
|
||||
@ -52,6 +54,21 @@ extern "C" {
|
||||
#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. */
|
||||
#if @GNULIB_MEMMEM@
|
||||
# if @REPLACE_MEMMEM@
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Compare numeric strings. This is an internal include file.
|
||||
|
||||
Copyright (C) 1988, 1991, 1992, 1993, 1995, 1996, 1998, 1999, 2000,
|
||||
2003, 2004, 2005, 2006 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
86
src/bin/coreutils/lib/strstr.c
Normal file
86
src/bin/coreutils/lib/strstr.c
Normal 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
|
@ -45,9 +45,13 @@
|
||||
# include <sys/types.h>
|
||||
|
||||
/* 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>
|
||||
|
||||
/* 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. */
|
||||
# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@
|
||||
|
||||
|
@ -46,6 +46,30 @@
|
||||
#ifndef _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@
|
||||
|
||||
/* A platform that has <sys/socket.h>. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* tempname.c - generate the name of a temporary file.
|
||||
|
||||
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2005, 2006, 2007 Free Software Foundation,
|
||||
2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* 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
|
||||
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
Loading…
Reference in New Issue
Block a user