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