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