1 Changes in release 4.1:
3 * mv accepts new option: --strip-trailing-slashes (soon, many other
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.
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
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'.
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
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
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%'.
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'
51 * shred's -u option (short form of --remove) is now accepted
53 * cp --one-file-system (-x) no longer crosses filesystem boundaries.
54 * touch can once again operate on directories
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.
66 * `ls --color' no longer segfaults
69 * shred --devices option renamed to -D so that -d, -i and -r can be
71 * shred -s/--size=N option added to specify the size of the object to be
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.
81 * ls recognizes solaris 2 `doors'
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
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
91 * concurrent `mkdir -p' processes no longer fail when creating the
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'
100 - `atime', `access', `use'
102 Try `src/touch --help' for more information.
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:
112 * rm -rf '' no longer gets a failed assertion on the Hurd
114 * rm simply fails as it should (rather than segfaulting) for
115 `mkdir -m 0100 x; rm -rf x'
117 * still *more* mktime.c portability tweaks
119 * mktime.c portability tweak for headers with GNU libc 5.4.44.
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
124 * install accepts long option --suffix=SUFFIX
126 * man/Makefile.maint framework tweaks
127 * add test for `mv -i' bug
129 * fix serious bug whereby `touch a b; echo n|mv -i a b' would remove b.
132 * avoid `root `cp -a' from Netapp snapshot' corruption
134 * `install -D' now works
135 * distribute maintainer Makefiles in man/
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.
140 * touch now interprets `-t TIME-DATE' as POSIX specifies
141 * `ls EMPTY-DIR EMPTY-DIR' once again outputs the directory names
144 * `ls -R EMPTY-DIR' now outputs the name of the directory
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.
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)
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
160 * include gettext's m4 macros
162 * non-portable cp tests removed
163 * --without-included-regex now means don't compile regex.c
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
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
180 * fix gettext-related link failures seen when configuring certain ways
182 * fix install bug introduced in 3.16o
183 * build/test changes only
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
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.
222 * mv can move (and doesn't read) special files
223 * remove maintainer mode
225 * mv can finally move non-regular files between partitions
227 * install accepts new option, -D
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
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
275 * cp --preserve preserves owner and group of symlinks on Linux when run
277 * dircolors no longer accepts --print-data-base (alternate spelling of
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
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
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
347 User-visible changes in release 3.12:
349 User-visible changes in release 3.11:
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.
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
406 Major changes in release 3.7:
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