*** empty log message ***
[platform/upstream/coreutils.git] / old / fileutils / NEWS
1 [4.1.9]
2 * new programs: link, unlink, and stat
3 * `touch -c no-such-file' no longer fails, per POSIX
4 [4.1.8]
5 * mv no longer mistakenly creates links to preexisting destination files
6     that aren't moved
7 [4.1.7]
8 * rm: close a hole that would allow a running rm process to be subverted
9 [4.1.6]
10 * New cp option: --copy-contents.
11 * cp -r is now equivalent to cp -R.  Use cp -R -L --copy-contents to get the
12   traditional (and rarely desirable) cp -r behavior.
13 * ls now accepts --time-style=+FORMAT, where +FORMAT works like date's format
14 * The obsolete usage `touch [-acm] MMDDhhmm[YY] FILE...' is no longer
15   supported on systems conforming to POSIX 1003.1-2001.  Use touch -t instead.
16 * cp and inter-partition mv no longer give a misleading diagnostic in some
17     unusual cases
18 [4.1.5]
19 * cp -r no longer preserves symlinks
20 * The block size notation is now compatible with SI and with IEC 60027-2.
21   For example, --block-size=1MB now means --block-size=1000000,
22   whereas --block-size=1MiB now means --block-size=1048576.
23   A missing `B' (e.g. `1M') has the same meaning as before.
24   A trailing `B' now means decimal, not binary; this is a silent change.
25   The nonstandard `D' suffix (e.g. `1MD') is now obsolescent.
26 * -H or --si now outputs the trailing 'B', for consistency with the above.
27 * Programs now output trailing 'K' (not 'k') to mean 1024, as per IEC 60027-2.
28 * New df, du short option -B is short for --block-size.
29 * You can omit an integer `1' before a block size suffix,
30   e.g. `df -BG' is equivalent to `df -B 1G' and to `df --block-size=1G'.
31 * The following options are now obsolescent, as their names are
32   incompatible with IEC 60027-2:
33    df, du: -m or --megabytes (use -BM or --block-size=1M)
34    df, du, ls: --kilobytes (use --block-size=1K)
35 [4.1.4]
36 * df --local no longer lists smbfs file systems whose name starts with //
37 * dd now detects the Linux/tape/lseek bug at run time and warns about it.
38 [4.1.3]
39 * ls -R once again outputs a blank line between per-directory groups of files.
40     This was broken by the cycle-detection change in 4.1.1.
41 * dd once again uses `lseek' on character devices like /dev/mem and /dev/kmem.
42     On systems with the linux kernel (at least up to 2.4.16), dd must still
43     resort to emulating `skip=N' behavior using reads on tape devices, because
44     lseek has no effect, yet appears to succeed.  This may be a kernel bug.
45 [4.1.2]
46 * cp no longer fails when two or more source files are the same;
47     now it just gives a warning and doesn't copy the file the second time.
48     E.g., cp a a d/ produces this:
49     cp: warning: source file `a' specified more than once
50 * chmod would set the wrong bit when given symbolic mode strings like
51     these: g=o, o=g, o=u.  E.g., `chmod a=,o=w,ug=o f' would give a mode
52     of --w-r---w- rather than --w--w--w-.
53 [4.1.1]
54 * mv (likewise for cp), now fails rather than silently clobbering one of
55     the source files in the following example:
56     rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
57 * ls -R detects directory cycles, per POSIX.  It warns and doesn't infloop.
58 * cp's -P option now means the same as --no-dereference, per POSIX.
59     Use --parents to get the old meaning.
60 * When copying with the -H and -L options, cp can preserve logical
61     links between source files with --preserve=links
62 * cp accepts new options:
63     --preserve[={mode,ownership,timestamps,links,all}]
64     --no-preserve={mode,ownership,timestamps,links,all}
65 * cp's -p and --preserve options remain unchanged and are equivalent
66     to `--preserve=mode,ownership,timestamps'
67 * mv and cp accept a new option: --reply={yes,no,query};  provides a consistent
68     mechanism to control whether one is prompted about certain existing
69     destination files.  Note that cp's and mv's -f options don't have the
70     same meaning: cp's -f option no longer merely turns off `-i'.
71 * remove portability limitations (e.g., PATH_MAX on the Hurd, fixes for
72     64-bit systems)
73 * mv now prompts before overwriting an existing, unwritable destination file
74     when stdin is a tty, unless --force (-f) is specified, as per POSIX.
75 * mv: fix the bug whereby `mv -uf source dest' would delete source,
76     even though it's older than dest.
77 * chown's --from=CURRENT_OWNER:CURRENT_GROUP option now works
78 * cp now ensures that the set-user-ID and set-group-ID bits are cleared for
79     the destination file when when copying and not preserving permissions.
80 * `ln -f --backup k k' gives a clearer diagnostic
81 * ls no longer truncates user names or group names that are longer
82     than 8 characters.
83 * ls's new --dereference-command-line option causes it to dereference
84   symbolic links on the command-line only.
85 * ls -H now means the same as ls --dereference-command-line, as per POSIX.
86 * ls -g now acts like ls -l, except it does not display owner, as per POSIX.
87 * ls -n now implies -l, as per POSIX.
88 * ls can now display dates and times in one of four time styles:
89
90   - The `full-iso' time style gives full ISO-style time stamps like
91     `2001-05-14 23:45:56.477817180 -0700'.
92   - The 'iso' time style gives ISO-style time stamps like '2001-05-14 '
93     and '05-14 23:45'.
94   - The 'locale' time style gives locale-dependent time stamps like
95     'touko  14  2001' and 'touko  14 23:45' (in a Finnish locale).
96   - The 'posix-iso' time style gives traditional POSIX-locale
97     time stamps like 'May 14  2001' and 'May 14 23:45' unless the user
98     specifies a non-POSIX locale, in which case it uses ISO-style dates.
99     This is the default.
100
101   You can specify a time style with an option like --time-style='iso'
102   or with an environment variable like TIME_STYLE='iso'.  GNU Emacs 21
103   and later can parse ISO dates, but older Emacs versions cannot, so
104   if you are using an older version of Emacs outside the default POSIX
105   locale, you may need to set TIME_STYLE="locale".
106
107 * --full-time is now an alias for "-l --time-style=full-iso".
108
109 Changes in release 4.1:
110 [4.0.45]
111 * dd conv=sync,block now pads only with spaces
112 * ls's -1 option no longer cancels the effect of a preceding -l
113 * regenerate configure using a patched version of autoconf-2.49e to work
114     around a bug in its test for a working memcmp function
115 * ls: fix off-by-one error introduced with the previous change
116 [4.0.44]
117 * ls: When given two or more arguments but the only one that exists is a
118     directory, don't treat it as if it were the only argument.  Before,
119     `mkdir d; ls no-dir d 2>/dev/null' would act like `ls d' and produce
120     no output.  Now, it prints `d:'.
121 * touch -d 'last friday' would use a time stamp that was one hour off
122     (e.g., 23:00 on *thursday* rather than 00:00 of the preceding friday)
123     when run such that the current time and the target date/time fall on
124     opposite sides of a daylight savings time transition.
125     This problem arises only with relative date strings like `last monday'.
126     It is not a problem with strings that include absolute dates.
127 [4.0.43]
128 * regenerate configure-related files using autoconf-2.49d
129 [4.0.42]
130 * Using ls's short-named `-H' option evokes the warning that the
131    meaning of `-H' will soon change.  Use `--si' instead.
132 [4.0.41]
133 * fix bug in rm introduced in 4.0.38: `chmod 0 f; rm f' would no longer prompt
134     before removal.
135 [4.0.40]
136 * portability fixes, mainly for UnixWare 7.1.1
137 [4.0.39]
138 * cp and mv accept --strip-trailing-slashes, not just --strip-trailing-slash
139 [4.0.38]
140 * ls --full-time now implies -l;  before, without -l it was a no-op
141 [4.0.37]
142 * portability fixes for SunOS4.1.1, Fujitsu (f300-fujitsu-uxpv4.1_ES),
143     and Unicos (alphaev5-cray-unicosmk2.0.5.X)
144 [4.0.36]
145 * `mv dir/ new-name' no longer fails on SunOS4.1.1U
146 * attempting to use mv to move a symlink onto itself no longer removes
147     the symlink
148 * `cp -R directory file' no longer removes `file'.  now it fails and gives
149     a diagnostic
150 * The manual now warns that ls's --full-time format string is planned
151     to change in a future release.
152 * ls -l's time stamp format now depends on LC_TIME, not LC_MESSAGES,
153     as POSIX requires.
154 * ls -l now reports the year for files even slightly in the future, as
155     POSIX requires.  This helps warn users about clock skew problems.
156 * `cp -d file symlink-to-some-other-file' no longer fails
157 * performance improvements for ls
158 [4.0.35]
159 * ln --backup=simple --suffix=SUFFIX once again uses SUFFIX
160 * install: Likewise.
161 [4.0.34]
162 * fix a bug (introduced in 4.0z) that made `chown 123:456 file' act like
163     `chown 123:123 file'.  Other uses with a numeric group ID would cause
164     chown to fail when it shouldn't have.
165 * the chown and chgrp programs preserve set-uid and set-gid bits, even on
166     systems for which the chown function call resets those bits.
167 * `ls -L dangling-symlink' now fails (per POSIX) rather than printing the
168     link name
169 * dd no longer honors the just-added `B' suffix on skip= and seek= arguments.
170 * `mkdir no-such-dir/' no longer fails on NetBSD systems
171 [4.0.33]
172 * dd now accepts skip=nB and seek=nB, to advance past some number of bytes, n,
173     that need not be a multiple of the block size.
174 * dd (without conv=notrunc) now complains only when ftruncate fails on a
175     regular file, a directory, or a shared memory object -- not when it fails
176     to truncate other types of files, like /dev/fd0.
177 * chmod --changes (-c) once again issues diagnostics only for the files
178     with changed permissions
179 * mkdir now gives one diagnostic (rather than two) for certain failures
180 * mkdir portability fix for NetBSD
181 [4.0.32]
182 * touch now interprets a lone numeric argument of 8 or 10 digits as a file name,
183   rather than as a date/time in the obsolescent `MMDDhhmm[YY]' format.
184 * mkdir no longer sets the permissions of the final directory component
185   if it already exists (this bug, too, was introduced recently)
186 * ls's --full-time format string is now locale dependent
187 [4.0.31]
188 * mkdir: fix a bug introduced in 4.0.30 whereby `mkdir existing-dir' would
189   succeed.  Now it fails, as it should (and used to).
190 [4.0.30]
191 * mkdir: fix a bug introduced in 4.0.28 whereby parent directories created
192   via `mkdir -p' would have permissions that did not account for the umask
193 [4.0.29]
194 * ls.c wouldn't compile on some systems: fix it
195 * `cp -R --parents dir1/ dir2' failed on NetBSD, due to a portability problem
196 [4.0.28]
197 * ls is much more efficient on systems (e.g., linux-2.4.*) that store file
198     type information in directory entries.
199 * shred now automatically determines the size of each block device argument
200 * ls's date/time format strings are now locale dependent
201 * mkdir, mknod, mkfifo, and chmod work better in conjunction with ACLs
202 * `cp --parents dir1/ dir2' no longer gets a failed assertion
203 * shred now determines the size of block devices like /dev/fd0
204 * `shred --exact file1 file2' now erases `file1', too
205 [4.0.27]
206 * install once again unlinks an existing destination before trying to open it
207 * mv no longer gets a failed assertion when moving a directory (specified with
208     a trailing slash) from one partition to another, and giving it a different
209     name at the destination.
210 * `cp --link -f src existing-dest' no longer fails (bug introduced in 4.0z)
211 * cp's new --remove-destination option now works with -R
212 [4.0z]
213 * `cp -p' once again preserves `special' permission bits (this bug was
214     introduced in 4.0y)
215 * mv's --force (-f) option now controls solely whether mv prompts (per POSIX)
216 * `cp -f' now first attempts to open an existing destination file, and only
217     if that fails does it resort to unlinking the file and retrying the open.
218     Before, it would unlink the file before trying to open it.
219 * cp accepts a new option, --remove-destination, that provides the old behavior
220 * cp's -f option no longer cancels the effect of --interactive (-i) (per POSIX)
221 * when ls sorts directory entries, it now honors the current locale settings
222 * dd's `skip=BLOCKS' operator once again works on systems with a buggy lseek
223   function (Linux, at least on SCSI tape devices)
224 * fix a typo in install-sh
225 [4.0y]
226 * cp now accepts the POSIX-mandated -H and -L options.
227 * cp -p and mv now try to preserve uid even if you're not root, as per POSIX.2.
228   This affects behavior only on hosts that let you give files away via chmod.
229 * du would fail when given `.' or `..' followed by other command line arguments
230 * Using cp's short-named `-P' option evokes the warning that the
231    meaning of `-P' will soon change.  Use `--parents' instead.
232 * chgrp, chmod, and chown: when used with the --verbose option, might give an
233   invalid diagnostic (due to clobbered errno) when failing.
234 [4.0x]
235 * Fix cp so that `cp -r DIR1/ DIR2' works properly once again.
236 * New ls option --quoting-style=clocale acts like --quoting-style=locale,
237   except that it quotes "like this" by default instead of `like this'.
238 [4.0w]
239 * When `cp -pR' fails to copy a file, it now preserves permissions, owner,
240    and group of the containing directory.
241 [4.0v]
242 * df, du, and ls now round disk usage up and disk free space down
243 * df, du, ls: --block-size=N now works for values of N that are e.g.,
244     not a multiple of the file's block size
245 [4.0u]
246 * give proper diagnostic for mv usage error
247 * fix compile problem with lib/strnlen.c
248 [4.0t]
249 * `cp -d -u' no longer fails with certain existing destination symlinks
250 * rmdir and mkdir accept -v as synonym for --verbose
251 [4.0s]
252 * rm no longer segfaults on certain very deep hierarchies
253 * IMPORTANT SECURITY FIX: a running `rm -r' may no longer be subverted to
254   remove unintended directories
255 * cp can now remove unwritable files in interactive mode; contrary to how mv
256    works, cp's --interactive (-i) option does *not* cancel the effect of a
257    preceding --force (-f) option.
258 * all programs fail when printing --help or --version output to a full device
259 * install no longer performs chmod if chown fails (see ChangeLog for example)
260 [4.0r]
261 * `du dir/subdir1 dir/subdir2' no longer fails
262 * chown accepts new option: --from=CURRENT_OWNER:CURRENT_GROUP
263 * cp accepts new option: --strip-trailing-slashes
264 * install --directory (-d) may now be used to set special bits
265     e.g., `install -m a=rwx,o+t -d DIR' now honors the `o+t' part
266 * cp, mv, ln, install: document that while the --backup option takes an
267   optional argument, the -b option accepts none
268 * `ls -e' fails with a more useful diagnostic
269 * df produces better output for loop file system mount points
270 [4.0q]
271 * install -D bug is fixed
272 * chown now works properly when the specified login name contains a period
273   This is at the expense of always looking up the entire USER.GROUP string
274   as a login name first, and only then (upon failure) interpreting the `.'
275   as a separator and looking up `USER'.  To avoid the extra getpwnam call,
276   always use the POSIX-mandated `:' character as the separator.
277 * `du some-other-dir' no longer fails if it can't open the current directory
278 * `mv DIR EXISTING-FILE' no longer removes EXISTING-FILE.  Now it gets an error
279   as POSIX says it must.
280 * touch no longer hangs on fifos
281 [4.0p]
282 * various tools: quote multibyte characters correctly in diagnostics
283 * mv: portability fix for alpha
284 * dd: portability fix
285 * unified lib/: now that directory and most of the configuration framework
286   is common between fileutils, textutils, and sh-utils
287 [4.0o]
288 * Include lib/nanosleep.h.
289 [4.0n]
290 * cp, install, ln, and mv: when making backup files in verbose mode, these
291   commands now print the backup file name on the same line as the rest of the
292   information, e.g., `a -> b (backup: b.~13~)' rather than on a separate line
293   as all but ln used to do.  ln didn't output the backup file name at all.
294 [4.0m]
295 * mv accepts new option: --strip-trailing-slashes (soon, many other
296   programs will, too)
297 * df no longer hangs when there is an inaccessible mount point unrelated to PATH
298 * rmdir --verbose no longer prints extra, bogus diagnosic upon failure
299 * fix df bug that made it print bogus values in the `Use%' column.
300 * touch -d once again parses dates with `hh:mm ZONE' time zone info.
301 [4.0l]
302 * ls -l honors a trailing slash on a symlink argument, per POSIX.
303 * shred no longer appears to infloop when asked to remove files in
304   unwritable directories
305 * `ls -ul' and `ls -uc' sort by name once again, as they should
306 [4.0k]
307 * mv may now be used to move a file onto a symlink to itself when that
308   symlink is on a separate partition.  With fileutils-4.0j, it would
309   fail with a diagnostic saying they were the same file.
310 * touch would fail with the misleading diagnostic `no such file' when asked
311   to create a file in an unwritable directory.  Now it says something like
312   `permission denied' or `read-only file system'.
313 [4.0j]
314 * mkdir may now be used to set special bits  e.g., `mkdir -m o+t dir' works
315 * touch can now change the time(s) of a file you own even if you don't have
316   read or write access to it
317 * rm no longer dumps core after warning about directory cycles
318 * mv now refuses to move a file onto a symlink to itself when that symlink
319   is on a separate partition.  Before, it would remove the file and leave
320   only the symlink.
321 * `install -d -g foo 1/2' now sets the `group' of the final component as well
322   as that of the leading one.
323 * df, du, and ls no longer divide by zero when an invalid block size is
324   specified through an environment variable
325 * under certain conditions, chgrp would fail to affect files referenced
326   through symlinks.  Now it does.
327 * ln now makes hard links to symlinks on systems that support it.
328 * touch: no longer infloop on dangling symlinks
329 * cp, install, ln, mv: deprecate the --version-control option.  Use --backup's
330   new optional argument instead.  The old option still works, but now evokes a
331   warning.
332 * cp, install, ln, mv: the --backup option now accepts an optional argument
333 * cp, install, ln, mv: accept new option: --target-directory=DIR
334 * chgrp: accept new option, --dereference.  --no-dereference is now the default.
335 * New ls option --quoting-style=locale acts like --quoting-style=c, except
336   with locale-specific quoting symbols (` and ' by default) instead of ".
337 * `df DIR' is less likely to hang due to bad NFS mounts
338 * As per POSIX.2, `df -P' now uses ceiling rather than rounding, and its
339   header now says `1024-blocks ... Capacity' instead of `1k-blocks ... Use%'.
340 [4.0i]
341 * `cp -f FILE FILE' and `mv -f FILE FILE' no longer remove FILE
342 * touch works once again (DST-wise) when certain `--date DATE-TIME'
343   values are specified.
344 * shred's -u option (short form of --remove) is now accepted
345 [4.0h]
346 * cp --one-file-system (-x) no longer crosses filesystem boundaries.
347 * touch can once again operate on directories
348 [4.0g]
349 * New large-file support for AIX and HP-UX, and for cross-compiles.
350 * shred's default options are now suitable for devices, not files, since
351   shred is more reliable on devices.  shred now does not remove by default;
352   the old -p or --preserve option was inverted and renamed to -u or --remove.
353 * shred -u now attempts to truncate devices before removing them.
354 * shred -v no longer outputs carriage-returns; shred -vv has no extra effect;
355   shred -v now outputs to stderr.
356 * shred now tries to find the size of a non-regular file by seeking to its end.
357 * dd now opens the output file for *read* access only if `seek=' is used.
358 [4.0f]
359 * `ls --color' no longer segfaults
360 * dd works once again
361 [4.0e]
362 * shred --devices option renamed to -D so that -d, -i and -r can be
363   compatible with rm.
364 * shred -s/--size=N option added to specify the size of the object to be
365   shredded.
366 * `shred -' now shreds stdout rather than stdin.  This is incompatible with -v.
367 * shred now does not need to read from its output file, so opens it O_WRONLY
368 * `ls -l' uses `+' to designate each file that has a custom ACL
369 * eliminate race condition that could make touch truncate a nonempty file
370 * No longer use *_unlocked I/O macros on systems (like solaris5.5.1) where
371   they're not declared, so selected executables (e.g., rm) that are linked
372   with shared libraries will once again run on solaris5.6 systems.
373 [4.0d (aka 4.1-b3)]
374 * ls recognizes solaris 2 `doors'
375 * new program: shred
376 * ln: Allow creation of a hard link to a dangling symlink
377 * cp, mv, install: --verbose now prints a message for each backup-related
378   renaming
379 * portability fixes for copy.c's code to detect move-directory-into-self
380 * upgrade to automake-1.3b
381 * upgrade to autoconf-2.13, and...
382 * remove some of the kludges in m4/*.m4 that permitted
383 [4.1-b2]
384 * concurrent `mkdir -p' processes no longer fail when creating the
385   same hierarchy
386 * argmatch.c has been fixed so that the unambiguous usage `ls --color=n'
387   no longer evokes an error.
388 * now, specifying an improper argument for an option that accepts enumerated
389   values evokes diagnostics like this:
390     $ src/touch --time=x file
391     src/touch: invalid argument `x' for `--time'
392     Valid arguments are:
393       - `atime', `access', `use'
394       - `mtime', `modify'
395     Try `src/touch --help' for more information.
396 [4.1-b1]
397 * ls --quoting-style=c prints correct octal escapes for certain nonprinting
398   characters in file names.
399 * fix `ls -R .' formatting bug that broke mktexlsr
400 * moving a directory into itself is properly diagnosed in more cases
401 * moving a directory containing hard-linked files now works
402
403 Changes in release 4.0:
404 [4.0-b7]
405 * rm -rf '' no longer gets a failed assertion on the Hurd
406 [4.0-b6]
407 * rm simply fails as it should (rather than segfaulting) for
408   `mkdir -m 0100 x; rm -rf x'
409 [4.0-b5]
410 * still *more* mktime.c portability tweaks
411 [4.0-b4]
412 * mktime.c portability tweak for headers with GNU libc 5.4.44.
413 [4.0-b3]
414 * mktime.c works around problems with Digital Unix 4.0A and 4.0D.
415 * mktime.c handles dates in the spring-forward gap the same way other
416   implementations do
417 * install accepts long option --suffix=SUFFIX
418 [4.0-b2]
419 * man/Makefile.maint framework tweaks
420 * add test for `mv -i' bug
421 [4.0-pre1]
422 * fix serious bug whereby `touch a b; echo n|mv -i a b' would remove b.
423 [3.16z]
424 * portability tweaks
425 * avoid `root `cp -a' from Netapp snapshot' corruption
426 [3.16y]
427 * `install -D' now works
428 * distribute maintainer Makefiles in man/
429 [3.16x]
430 * man pages are now automatically generated from a combination of --help
431   output and the contents of new (though mostly empty), man/*.x files.
432 [3.16w]
433 * touch now interprets `-t TIME-DATE' as POSIX specifies
434 * `ls EMPTY-DIR EMPTY-DIR' once again outputs the directory names
435 [3.16v]
436 * portability fixes
437 * `ls -R EMPTY-DIR' now outputs the name of the directory
438 [3.16u]
439 * mv now fails (as it should) upon attempt to move a directory into itself
440 * `cp -a --one-file-system' now copies any mount point directories it
441   encounters on the selected file system.
442 [3.16t]
443 * cp (with --update) and ls compare time stamps with subsecond resolution when
444   available (e.g., on systems with recent Linux kernels and on Solaris 2.6).
445 * install once again does the -m-specified chmod *after* running strip
446   (this fixes another bug introduced in 3.16o)
447 [3.16s]
448 * df accept a new option --local (-l)
449 * touch works around a system-specific bug so it now affects existing,
450   zero-length files on certain systems
451 * chown now works even on certain SVR3 systems where it used to fail
452 [3.16r]
453 * include gettext's m4 macros
454 * minor cp bug fixed
455 * non-portable cp tests removed
456 * --without-included-regex now means don't compile regex.c
457 * rx support removed
458 [3.16q]
459 * `df', `du', and `ls' now accept a new option --block-size=SIZE,
460   where SIZE can be a positive integer block size, followed by an
461   optional SI prefix (e.g. `k' for kilo, `M' for Mega), followed by an
462   optional `B' (for ``byte'', indicating powers of 1024, which is the
463   default) or `D' (for ``decimal byte'', indicating powers of 1000).
464   SIZE can also be `human-readable' (for -h or --human-readable
465   behavior) or `si' (for -H or --si behavior).
466 * These suffixes can also be used by `dd'; e.g. `dd bs=1MB' is equivalent
467   to `dd bs=1048576'.
468 * The default block size for the `df' command is now obtained from the
469   DF_BLOCK_SIZE environment variable or, if that is not set, from BLOCK_SIZE.
470   Similarly for `du' and `ls'.
471 * The output columns of `df' have been adjusted slightly to accommodate
472   larger filesystems.
473 * fix gettext-related link failures seen when configuring certain ways
474 [3.16p]
475 * fix install bug introduced in 3.16o
476 * build/test changes only
477 [3.16o]
478 * chown accepts new option, --dereference.  --no-dereference is now the default.
479 * install now shares core copying code with mv and cp
480 * mv (between distinct filesystems) now uses more of the core copying code
481 * fixed a bug or two in mv
482 * df once again displays negative numbers when that's what's returned
483   by get_fs_usage
484 [3.16n]
485 * `mv dir dir' once again does *not* remove dir/
486 * ls accepts new options:
487     --indicator-style=none (no indicators, the default)
488     --indicator-style=classify (all indicators)
489          (equivalent to -F or --classify)
490     --indicator-style=file-type (file type indicators)
491          (equivalent to -p or --file-type)
492
493     --quoting-style=literal (do not quote output)
494     --quoting-style=shell (minimally quote output for the shell)
495     --quoting-style=shell-always (always quote output with '' for the shell)
496     --quoting-style=c (quote output as for a C-language string)
497          (equivalent to -Q or --quote-name)
498     --quoting-style=escape (like c but omit enclosing "")
499          (equivalent to -b or --escape)
500
501     --show-control-chars is the opposite of --hide-control-chars
502       This option can be useful if output is to a terminal,
503       to override the default beahvior of hiding control characters.
504
505 * The QUOTING_STYLE environment variable can now be used to specify the
506   default value for ls's --quoting-style option.  If not specified,
507   the default quoting style is 'literal', but this default may change to
508   'shell' in a future version of this package.
509 * ls's quoting style now affects operands in diagnostics, too.
510 * ls's --dired option now outputs the quoting style
511   using the format of the new --quoting-style option.
512 * ls's -e or --quote-shell option (introduced in 3.16j) has been removed;
513   use --quoting-style=shell to get its functionality.
514 [3.16m]
515 * mv can move (and doesn't read) special files
516 * remove maintainer mode
517 [3.16l]
518 * mv can finally move non-regular files between partitions
519 [3.16k]
520 * install accepts new option, -D
521 [3.16j]
522 * du accepts new options, --exclude=PAT and --exclude-from=FILE (-X FILE)
523 * ls now quotes file names for the shell by default, if they contain
524   characters that need quoting.  Use -N to get the old default behavior.
525   The new behavior is also enabled by the new option -e or --quote-shell.
526 * ln --backup is now consistent with cp and mv in that --force is no longer
527   required when the destination is an existing non-directory.
528 * install accepts new option, --verbose (-v)
529 * mkdir -p is a lot faster when creating very deep directories on some systems
530 * rm -i no longer exits with status indicating failure solely because the
531   user declines to remove a file
532 * rm -r is a lot faster on some systems when removing deep hierarchies
533 * chgrp, chmod, and chown no longer give contradictory output when --verbose
534   is used and an operation fails
535 * ls's multicolumn option now uses variable width columns to conserve
536   vertical space
537 * install accepts new option, --preserve-timestamps
538 * du --megabytes --total now shows total in megabytes
539 * ls accepts new option, -h or --human-readable
540 * df, du, and ls now accept new option, -H or --si, for powers of 1000 not 1024
541 * df, du, and ls now consistently round to nearest, with ties going to even
542 * df, du, and ls now use `k' instead of `K' for `kilo',
543   and support larger abbreviations T(era), P(eta), E(xa), Z(etta), Y(otta)
544 * touch -d DATE now works on Unicos
545 * du accepts new option --max-depth=N
546 * rmdir accepts new options: --ignore-fail-on-non-empty and --verbose
547 * on most hosts df, du, and ls now overflow at 2**64 bytes, not 2**31 bytes
548 * all programs now work on large files on LFS systems like Solaris 2.6 and
549   Linux with the pre-2.1 development version of GNU libc.
550 * df now works with OpenBSD 2.1 beta
551 * cp -d FILE SYMLINK-TO-FILE doesn't erase FILE.  Now it gives an error.
552
553 Changes in release 3.16:
554 * du --megabytes (-m) works
555 * ls -l works even on systems with non-POSIX strftime in their C library
556
557 Changes in release 3.15:
558 * touch --date=DATE bug (due to broken getdate.y) has been fixed
559 * ls -l no longer misformats the date when run in a locale for which the
560   locale's abbreviated week-day name (strftime's %a format) is shorter or
561   longer than the `normal' three bytes (with LANG=de it's a two-byte string).
562 * Using --program-prefix no longer applies the prefix twice
563 * ls --color properly restores color attributes upon completion when the
564   normal (`no') color attribute is not the default color.
565 * with ls -s --color, the `total' and size of the first file are printed
566 * ls --color stats symlinks and distinguishes between regular symlinks
567   and orphan ones.
568 * cp --preserve preserves owner and group of symlinks on Linux when run
569   with EUID == 0
570 * dircolors no longer accepts --print-data-base (alternate spelling of
571   --print-database)
572
573 Changes in release 3.14:
574 * ls --color highlights based on suffix rules only for regular files
575 * touch --date=DATE accepts dates like those in an RCS log listing, e.g.,
576   `1992/11/01 05:44:34'.
577 * install SRC DST no longer rejects non-regular, non-directory SRC
578 * df accepts -F as a synonym for -t for compatibility with Solaris
579 * cp -i /dev/null existing-file now prompts before overwriting the target
580 * ls --color highlights orphaned symlinks text on terminals that support it
581 * ls -l honors current locale with respect to abbreviated month names (and,
582   with --full-time day names) on systems with a locale-supporting strftime
583   function, e.g., ones based on recent versions of the GNU C library
584 * ls -l recognizes Cray's migrated dmf files.
585 * chgrp no longer aborts when given a group number larger than INT_MAX
586 * chgrp now fails when run by root with an unrecognized group name
587 * when possible, cp -p preserves owner/group even on symlinks in case
588   they're in a directory that has the sticky-bit set.
589 * cp --recursive --parents SRC DEST works when SRC is an absolute file name.
590
591 Changes in release 3.13:
592 * ls properly determines window size on SunOS and Solaris systems
593 * ls accepts new option --color[=WHEN] where WHEN is `always', `never',
594   or `auto'.  --color=never is the default.  --color is equivalent
595   to --color=always.
596 * new program: dircolors
597 * ls allows 0 as argument to --tabsize (-T) option.  Using --tabsize=0
598   inhibits the use of TAB characters for separating columns.
599 * you can create a backup of FILE with cp --force --backup FILE FILE.  Before,
600   that command failed saying that ``FILE' and `FILE' are the same file'.
601 * uses automake-generated Makefile templates
602 * chown and chgrp accept new option --no-dereference (-h)
603 * ln -f FILE FILE fails with a diagnostic rather than silently removing FILE
604 * when building on systems that have getopt_long (most GNU-oriented ones),
605   the system-provided function will be used -- so executables may be a
606   little smaller
607 * cp -p, and mv modify owner and/or group of symlinks on systems
608   (like Solaris) that provide the lchown system call.
609 * df no longer invokes the sync system call by default.  You can use the
610   --sync option to make df invoke sync before getting file system sizes.
611 * internationalized diagnostic messages
612 * mkdir accepts new option: --verbose
613 * `cp file D/' uses the full file name `D/file' instead of `D//file'.
614 * cp --backup a~ a fails instead of silently destroying the source file
615 * df and du have new options --human-readable (-h) and --megabytes (-m).
616 * install now honors --backup (-b), --suffix=SUFFIX (-S SUFFIX), and
617   --version-control=WORD (-V WORD) options just as cp, ln, and mv do.
618 * ln --verbose output is less prone to misinterpretation
619 * ls -o works like -lG;  for compatibility with other versions of ls
620 * cp has a new option to control creation of sparse files:
621   --sparse={auto,always,never}.  --sparse=auto is the default.
622 * rm -rf '' behaves properly on SunOS 4 systems
623 * touch: rename long option name, --file, to --reference.
624   `touch --file' will continue to work a little longer.
625 * df fails if the same file system type is both selected and excluded.
626 * df works around SunOS statfs brokenness wrt filesystems larger than 2GB
627 * df better handles inconsistent mtab entries
628 * `ls -lDR dir dir2' works
629 * `ls -c' does what it's supposed to
630 * all programs include program name in --version output
631 * `ls --quote-name' works
632 * mv properly determines whether src and dest are the same file
633   Before, it could (though with very low probability) fail to do the move,
634   reporting that distinct source and destination are the same file.
635 * du --dereference (-L) works with directory symlinks
636 * du works on SunOS 4 systems even when accounting is enabled
637 * many programs that convert strings to integers now use strtol or strtoul
638   and detect overflow
639
640 User-visible changes in release 3.12:
641 * None.
642 User-visible changes in release 3.11:
643 * None.
644 User-visible changes in release 3.10:
645 * mkdir -p now ignores arguments that are existing directories.  Before,
646   (contrary to POSIX spec) it would attempt to change ownership and/or
647   protections of existing directories listed on the command line.  And
648   it would fail when such a directory was owned by another user.
649 * Fix bug in cp that made the commands `mkdir dir; touch foo; cp -P foo dir'
650   incorrectly change the permissions on directory, dir.
651 * df accepts a new option, --no-sync, that inhibits the default invocation
652   of the sync system call.
653 * ls accepts a new option, --dired, that makes emacs' dired mode more efficient
654 * skeletal texinfo documentation (mainly just the `invoking' nodes)
655 * ln accepts a new option: --no-dereference (-n).  With this option,
656   if the destination command line argument is a symlink to a directory,
657   use that as the destination instead of the file in the directory.
658 * `ln -i no-such-file existing-file' gives a diagnostic and fails.
659   Before, if you responded `yes' to the prompt it would both remove
660   `existing-file' and fail to make a link.
661 * du no longer requires read access to all of the directory components
662   of the current working directory on systems with fchdir.
663 * touch -d 'date' is no longer off by one hour.
664 * New program: sync.
665 * Fix bug in cp that made the commands `ln -s . s; cp -rd s r' incorrectly
666   create `r' as a symlink instead of as a regular file.
667 * du's -S and -c options now work when used together.
668   Before, the grand total was always reported to be zero.
669 \f
670 Major changes in release 3.9:
671 * --help gives a one-line description of each option and shows the
672   correspondence between short and long-named options.
673 * work around systems with BROKEN_STAT_MACROS
674 * work around problem where $(srcdir)/config.h was used instead of
675   ../config.h -- this happened only when building in a subdirectory
676   and when config.h remained in $(srcdir) from a previous ./configure.
677 * GNU chmod treats symlinks the same way other vendor's versions do.
678   Now symlinks listed on the command line are processed (they were
679   ignored before); the permissions of the dereferenced files are
680   changed.  Symlinks encountered in recursive traversals are still
681   ignored.  This makes GNU chmod act more like e.g. Sun's.
682 * configure uses config.h, so DEFS won't exceed preprocessor limits of
683   some compilers on the number of symbols defined via -D.
684 * ls and cp can handle mount points on more systems
685 * cp, mkdir, and rmdir long option --path renamed to --parents;  --path
686   will still work for a while
687 * cp, ln, and mv convert `cp A B/' to cp A B/A when A is not a directory.
688   This change affects only the two-argument form of the commands.  It makes
689   such commands fail when the target has a trailing slash but is not a
690   directory or symlink to a directory and the source is not a directory.
691   They used to succeed, ignoring the implicitly contradictory trailing slash.
692 \f
693 Major changes in release 3.8:
694 * install isn't as likely to produce spurious errors
695 * avoid redundant compilations for `dir' and `vdir';
696 * configure properly defines STAT_STATFS2_BSIZE on a Pyramid MIServer
697   running OSx 5.1
698 \f
699 Major changes in release 3.7:
700 * none
701 Major changes in release 3.6:
702 * `ln -s dir_pathname .' works when the pathname has a trailing slash
703 * with the --version option programs print the version and exit immediately
704 * GNU ls -f works like Unix ls -f
705 * mktime replacement works
706 \f
707 Major changes in release 3.5:
708 * adds support for DEC Alpha under OSF/1
709 * configuring with gcc uses CFLAGS='-g -O' by default
710 * all programs accept --help and --version options
711 * long-named options must be introduced with `--'; `+' is no longer
712   accepted since it is incompatible with the POSIX.2 standard
713 * chmod accepts long-named options
714 * dd conv=unblock doesn't hang
715 * new df option --exclude=fstype
716 * new ls option --full-time
717 \f
718 Major changes in release 3.4:
719 * cp -p and mv preserve setuid and setgid bits
720 * chown works on systems where sizeof(uid_t) != sizeof(int)
721   or sizeof(uid) != sizeof(gid)
722 * catch errors from spurious slashes at ends of arguments
723 \f
724 Major changes in release 3.3:
725 * df sped up by not calling sync for every filesystem
726 * df ported to AIX (RS/6000 and PS/2), and SVR2 port fixed
727 * df -i now also prints the total number of inodes per filesystem
728 * ls sped up by not reading symlink contents unnecessarily
729 * du doesn't die on POSIX systems when the root filesystem is NFS mounted
730 * cp and mv report chown Permission denied errors when run by root