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