1 Changes in release 4.1:
3 * Include lib/nanosleep.h.
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.
10 * mv accepts new option: --strip-trailing-slashes (soon, many other
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.
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
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'.
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
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
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%'.
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'
58 * shred's -u option (short form of --remove) is now accepted
60 * cp --one-file-system (-x) no longer crosses filesystem boundaries.
61 * touch can once again operate on directories
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.
73 * `ls --color' no longer segfaults
76 * shred --devices option renamed to -D so that -d, -i and -r can be
78 * shred -s/--size=N option added to specify the size of the object to be
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.
88 * ls recognizes solaris 2 `doors'
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
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
98 * concurrent `mkdir -p' processes no longer fail when creating the
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'
107 - `atime', `access', `use'
109 Try `src/touch --help' for more information.
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:
119 * rm -rf '' no longer gets a failed assertion on the Hurd
121 * rm simply fails as it should (rather than segfaulting) for
122 `mkdir -m 0100 x; rm -rf x'
124 * still *more* mktime.c portability tweaks
126 * mktime.c portability tweak for headers with GNU libc 5.4.44.
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
131 * install accepts long option --suffix=SUFFIX
133 * man/Makefile.maint framework tweaks
134 * add test for `mv -i' bug
136 * fix serious bug whereby `touch a b; echo n|mv -i a b' would remove b.
139 * avoid `root `cp -a' from Netapp snapshot' corruption
141 * `install -D' now works
142 * distribute maintainer Makefiles in man/
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.
147 * touch now interprets `-t TIME-DATE' as POSIX specifies
148 * `ls EMPTY-DIR EMPTY-DIR' once again outputs the directory names
151 * `ls -R EMPTY-DIR' now outputs the name of the directory
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.
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)
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
167 * include gettext's m4 macros
169 * non-portable cp tests removed
170 * --without-included-regex now means don't compile regex.c
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
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
187 * fix gettext-related link failures seen when configuring certain ways
189 * fix install bug introduced in 3.16o
190 * build/test changes only
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
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.
229 * mv can move (and doesn't read) special files
230 * remove maintainer mode
232 * mv can finally move non-regular files between partitions
234 * install accepts new option, -D
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
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
282 * cp --preserve preserves owner and group of symlinks on Linux when run
284 * dircolors no longer accepts --print-data-base (alternate spelling of
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
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
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
354 User-visible changes in release 3.12:
356 User-visible changes in release 3.11:
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.
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
413 Major changes in release 3.7:
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