These are the GNU file management utilities.  Most of these programs
have significant advantages over their Unix counterparts, such as
greater speed, additional options, and fewer arbitrary limits.

The programs that can be built with this package are: chgrp, chown,
chmod, cp, dd, du, install, ln, dir, vdir, ls, mkdir, mvdir, mkfifo,
mknod, mv, rm, rmdir and touch.  But mvdir is built only on systems
that lack the rename system call.

The programs cat, cut, expand, head, paste, split, tac, tail and
unexpand, which used to be part of the fileutils, are now part of the
textutils.  cmp is now part of the diff distribution.

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

See the file INSTALL for compilation and installation instructions.

If your system needs to link with -lPW to get alloca, but has
rename in the C library (so HAVE_RENAME is defined), -lPW might
give you an incorrect version of rename.  On HP-UX this manifests
itself as an undefined data symbol called "Error" when linking cp, ln,
and mv.  If this happens, use `ar x' to extract alloca.o from libPW.a
and `ar rc' to put it in a library liballoca.a, and put that in LIBS
instead of -lPW.  This problem does not occur when using gcc, which
has alloca built in.

The fileutils are intended to be POSIX.2 compliant (with BSD and other
extensions), like the rest of the GNU system.  They are almost there,
but a few incompatibilities remain.

The comprehensive Texinfo documentation for these programs is not
finished yet, and needs to be rewritten.  In the interim, the skeletal
man pages provided with this distribution will have to serve.

The ls, dir, and vdir commands are all separate executables instead of
one program that checks argv[0] because people often rename these
programs to things like gls, gnuls, l, etc.  Renaming a program
file shouldn't affect how it operates, so that people can get the
behavior they want with whatever name they want.

On Sequents, the GNU install and chgrp utilities only work when run as
root, because the Sequent chown system call doesn't allow non-root
users to change files' groups, unlike on every other known Unix.
(The Sequent /bin/chgrp is setuid root.  Don't try making GNU chgrp
setuid root unless you add security checks to it.)

A warning about du for HP-UX users: GNU du (and I'm sure BSD-derived
versions) counts the st_blocks field of the `struct stat' for each
file.  (It's best to use st_blocks where available, instead of
st_size, because otherwise you get wildly wrong answers for sparse
files like coredumps, and it counts indirect blocks.)  Chris Torek in
a comp.unix.wizards posting stated that in 4BSD st_blocks is always
counted in 512 byte blocks.  On HP-UX filesystems, however, st_blocks
is counted in 1024 byte blocks.  When GNU du is compiled on HP-UX, it
assumes that st_blocks counts 1024-byte blocks, because locally
mounted filesystems do; so to get the number of 512-byte blocks, it
doubles the st_blocks value.  (The HP-UX du seems to do the same
thing.)  This gives the correct numbers on HP-UX filesystems.  But for
4BSD filesystems mounted on HP-UX machines, it gives twice the correct
numbers; similarly, for HP-UX filesystems, du on 4BSD machines gives
half the correct numbers.  GNU ls with the -s option has the same
problem.  I know of no way to determine for a given filesystem or file
what units st_blocks is measured in.  The f_bsize element of `struct
statfs' does not work, because its meaning varies between different
versions of Unix.

The GNU cp, mv, and ln commands can make backups of files that they
are about to overwrite or remove.  Backup file names will end up being
the same as the original file names for files that are at the system's
filename length limit; when that happens, the new file will silently
replace the backup file that was just made.  This happens with GNU
Emacs, also.  I am not aware of a clean, portable solution to this
problem.

Special thanks to Jim Meyering, Brian Matthews, Bruce Evans, Karl Berry,
Kaveh Ghazi, and Franc,ois Pinard for help with debugging and porting
these programs.

These programs all recognize the `--version' option.  Although the RCS
`ident' command no longer works, using `grep' and `strings -' or `od -s'
on them still works, e.g., `strings - /usr/local/bin/ls | grep fileutils'.

Mail suggestions and bug reports for these programs to
bug-gnu-utils@prep.ai.mit.edu.
