Leslie P. Polzer 4a3aa315e6 Merge Leslie Polzer's SOC 2007 changes for better ARG_MAX support
2008-03-23  Leslie Polzer  <leslie.polzer@gmx.net>

	Merge Leslie Polzer's ARG_MAX enhancements to xargs which were
	produced as part of the Google Summer of Code 2007.
	These changes fix Savannah bug #22708.
	* find/pred.c (launch): The struct buildcmd_control* argument is
	no longer const.
	* find/defs.h: Likewise
	* lib/buildcmd.c (bc_do_insert): The struct buildcmd_control*
	argument is no longer const.
	(bc_push_arg): Likewise.
	(cb_exec_noop): Likewise.
	(get_stringv_len): New function; measures the length of
	a NULL-terminated argv sequence.
	(bc_do_exec): Rename from do_exec, and make global.  Modify the
	function to react to exec failing with E2BIG by trying again
	with fewer arguments.
	* xargs/xargs.1: Mention that xargs automatically adopts to the
	situation where exec fails with E2BIG.
	* xargs/xargs.c: (parent): New variable, the PID of the parent
	process.
	(main): initialise the variable 'parent'.   Don't fail immediately
	due to lack of space when the environment is large.  Call
	xargs_do_exec via bc_do_exec.
	(xargs_do_exec): The struct buildcmd_control* argument is no
	longer const.   When exec fails in the child, communicate the
	errno value back to the parent through a pipe which is
	close-on-exec; this allows us to accurately determine the cause of
	the failure and also to distinguish exec failures from all
	possible exit codes in the child.
	(wait_for_proc): If the utility cannot be found or cannot be run,
	we now find out about this by reading an errno value from the
	pipe, so this means that exit codes 126 and 127 in the child no
	longer have a special interpretation.
	* NEWS: mention these changes.
2009-04-13 13:10:53 +01:00
2009-03-07 21:20:57 +00:00
2009-04-12 11:26:52 +01:00
2009-03-04 10:49:59 +00:00
2009-03-10 10:38:30 +00:00
2009-04-13 13:10:04 +01:00
2009-03-10 22:45:03 +00:00
1999-08-08 19:52:01 +00:00
2007-08-19 15:31:38 +00:00
2009-03-07 21:22:36 +00:00

This package contains the GNU find, xargs, and locate programs.  find
and xargs comply with POSIX 1003.2, as far as I know (with the
exception of the "+" modifier for the "-exec" action, which isn't
implemented yet).  They also support a large number of additional
options, some borrowed from Unix and some unique to GNU.

See the file NEWS for a list of major changes in the current release.

See the file INSTALL for compilation and installation instructions.

To verify the GPG signature of the release, you will need the public
key of the findutils maintainer.  You can download this from
ftp://ftp.gnu.org/gnu/gnu-keyring.gpg.  Alternatively, you could query
a PGP keyserver, but you will need to use one that can cope with
subkeys containing photos.  Many older key servers cannot do this.  I
use subkeys.pgp.net.  I think that one works.  See also the
"Downloading" section of http://www.gnu.org/software/findutils/.

Special configure options:

--with-afs
  Make find support "-fstype afs".  Requires /afs, /usr/afsws/lib, and
/usr/afsws/include.  configure doesn't add AFS support
automatically because it adds considerably to find's size, and the
AFS libraries need -lucb on Solaris, which breaks find.

--enable-id-cache
  Make tables of used UIDs and GIDs at startup instead of using
getpwuid or getgrgid when needed.  Speeds up -nouser and -nogroup
unless you are running NIS or Hesiod, which make password and group
calls very expensive.

--enable-debug
  Produce output on the standard error output indicating what find is
doing.  This information includes details about how the command line
has been parsed and what files have been stat()ed.  This output is
normally interesting only to the maintainer, and so is off by default.

DEFAULT_ARG_SIZE=<value>
  If this environment variable is defined to a numeric expression
during configure, it determines the default argument size limits used
by xargs without -s, and by find, when spawning child processes.
Otherwise, the default is set at 128 kibibytes.  If the system cannot
support the default limit, the system's limit will be used instead.


To gain speed, GNU find avoids statting files whenever possible.
It does this by:
1. Checking the number of links to directories and not statting files
that it knows aren't directories until it encounters a test or action
that needs the stat info.
2.  Rearranging the command line, where possible, so that it can do tests
that don't require a stat before tests that do, in hopes that the
latter will be skipped because of an OR or AND.  (But it only does
this where it will leave the output unchanged.)

The locate program and its helper programs are derived (heavily
modified) from James Woods' public domain fast-find code, which is
also distributed with the 4.3BSD find.  Because POSIX.2 requires `find
foo' to have the same effect as `find foo -print', the fast-find
searching has been moved to a separate program, `locate'; the same
thing has been done in 4.4BSD.  If you use locate, you should run the
included `updatedb' script from cron periodically (typically nightly).

Mail suggestions and bug reports for these programs to
bug-findutils@gnu.org.
Description
Mirror from GNU Savannah.
Readme 14 MiB
Languages
C 55.2%
Shell 14.4%
Roff 11.2%
Logos 9.6%
Makefile 4.7%
Other 4.9%