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