1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
|
[4.1.11]
* `rm symlink-to-unwritable' doesn't prompt [introduced in 4.1.10]
[4.1.10]
* rm once again gives a reasonable diagnostic when failing to remove a file
owned by someone else in a sticky directory [introduced in 4.1.9]
* df now rounds all quantities up, as per POSIX.
* New ls time style: long-iso, which generates YYYY-MM-DD HH:MM.
* Any time style can be preceded by "posix-"; this causes "ls" to
use traditional timestamp format when in the POSIX locale.
* The default time style is now posix-long-iso instead of posix-iso.
Set TIME_STYLE="posix-iso" to revert to the behavior of 4.1.1 thru 4.1.9.
* `rm dangling-symlink' doesn't prompt [introduced in 4.1.9]
* stat: remove support for --secure/-s option and related %S and %C format specs
* stat: rename --link/-l to --dereference/-L.
The old options will continue to work for a while.
[4.1.9]
* rm can now remove very deep hierarchies, in spite of any limit on stack size
* new programs: link, unlink, and stat
* New ls option: --author (for the Hurd).
* `touch -c no-such-file' no longer fails, per POSIX
[4.1.8]
* mv no longer mistakenly creates links to preexisting destination files
that aren't moved
[4.1.7]
* rm: close a hole that would allow a running rm process to be subverted
[4.1.6]
* New cp option: --copy-contents.
* cp -r is now equivalent to cp -R. Use cp -R -L --copy-contents to get the
traditional (and rarely desirable) cp -r behavior.
* ls now accepts --time-style=+FORMAT, where +FORMAT works like date's format
* The obsolete usage `touch [-acm] MMDDhhmm[YY] FILE...' is no longer
supported on systems conforming to POSIX 1003.1-2001. Use touch -t instead.
* cp and inter-partition mv no longer give a misleading diagnostic in some
unusual cases
[4.1.5]
* cp -r no longer preserves symlinks
* The block size notation is now compatible with SI and with IEC 60027-2.
For example, --block-size=1MB now means --block-size=1000000,
whereas --block-size=1MiB now means --block-size=1048576.
A missing `B' (e.g. `1M') has the same meaning as before.
A trailing `B' now means decimal, not binary; this is a silent change.
The nonstandard `D' suffix (e.g. `1MD') is now obsolescent.
* -H or --si now outputs the trailing 'B', for consistency with the above.
* Programs now output trailing 'K' (not 'k') to mean 1024, as per IEC 60027-2.
* New df, du short option -B is short for --block-size.
* You can omit an integer `1' before a block size suffix,
e.g. `df -BG' is equivalent to `df -B 1G' and to `df --block-size=1G'.
* The following options are now obsolescent, as their names are
incompatible with IEC 60027-2:
df, du: -m or --megabytes (use -BM or --block-size=1M)
df, du, ls: --kilobytes (use --block-size=1K)
[4.1.4]
* df --local no longer lists smbfs file systems whose name starts with //
* dd now detects the Linux/tape/lseek bug at run time and warns about it.
[4.1.3]
* ls -R once again outputs a blank line between per-directory groups of files.
This was broken by the cycle-detection change in 4.1.1.
* dd once again uses `lseek' on character devices like /dev/mem and /dev/kmem.
On systems with the linux kernel (at least up to 2.4.16), dd must still
resort to emulating `skip=N' behavior using reads on tape devices, because
lseek has no effect, yet appears to succeed. This may be a kernel bug.
[4.1.2]
* cp no longer fails when two or more source files are the same;
now it just gives a warning and doesn't copy the file the second time.
E.g., cp a a d/ produces this:
cp: warning: source file `a' specified more than once
* chmod would set the wrong bit when given symbolic mode strings like
these: g=o, o=g, o=u. E.g., `chmod a=,o=w,ug=o f' would give a mode
of --w-r---w- rather than --w--w--w-.
[4.1.1]
* mv (likewise for cp), now fails rather than silently clobbering one of
the source files in the following example:
rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
* ls -R detects directory cycles, per POSIX. It warns and doesn't infloop.
* cp's -P option now means the same as --no-dereference, per POSIX.
Use --parents to get the old meaning.
* When copying with the -H and -L options, cp can preserve logical
links between source files with --preserve=links
* cp accepts new options:
--preserve[={mode,ownership,timestamps,links,all}]
--no-preserve={mode,ownership,timestamps,links,all}
* cp's -p and --preserve options remain unchanged and are equivalent
to `--preserve=mode,ownership,timestamps'
* mv and cp accept a new option: --reply={yes,no,query}; provides a consistent
mechanism to control whether one is prompted about certain existing
destination files. Note that cp's and mv's -f options don't have the
same meaning: cp's -f option no longer merely turns off `-i'.
* remove portability limitations (e.g., PATH_MAX on the Hurd, fixes for
64-bit systems)
* mv now prompts before overwriting an existing, unwritable destination file
when stdin is a tty, unless --force (-f) is specified, as per POSIX.
* mv: fix the bug whereby `mv -uf source dest' would delete source,
even though it's older than dest.
* chown's --from=CURRENT_OWNER:CURRENT_GROUP option now works
* cp now ensures that the set-user-ID and set-group-ID bits are cleared for
the destination file when when copying and not preserving permissions.
* `ln -f --backup k k' gives a clearer diagnostic
* ls no longer truncates user names or group names that are longer
than 8 characters.
* ls's new --dereference-command-line option causes it to dereference
symbolic links on the command-line only. It is the default unless
one of the -d, -F, or -l options are given.
* ls -H now means the same as ls --dereference-command-line, as per POSIX.
* ls -g now acts like ls -l, except it does not display owner, as per POSIX.
* ls -n now implies -l, as per POSIX.
* ls can now display dates and times in one of four time styles:
- The `full-iso' time style gives full ISO-style time stamps like
`2001-05-14 23:45:56.477817180 -0700'.
- The 'iso' time style gives ISO-style time stamps like '2001-05-14 '
and '05-14 23:45'.
- The 'locale' time style gives locale-dependent time stamps like
'touko 14 2001' and 'touko 14 23:45' (in a Finnish locale).
- The 'posix-iso' time style gives traditional POSIX-locale
time stamps like 'May 14 2001' and 'May 14 23:45' unless the user
specifies a non-POSIX locale, in which case it uses ISO-style dates.
This is the default.
You can specify a time style with an option like --time-style='iso'
or with an environment variable like TIME_STYLE='iso'. GNU Emacs 21
and later can parse ISO dates, but older Emacs versions cannot, so
if you are using an older version of Emacs outside the default POSIX
locale, you may need to set TIME_STYLE="locale".
* --full-time is now an alias for "-l --time-style=full-iso".
Changes in release 4.1:
[4.0.45]
* dd conv=sync,block now pads only with spaces
* ls's -1 option no longer cancels the effect of a preceding -l
* regenerate configure using a patched version of autoconf-2.49e to work
around a bug in its test for a working memcmp function
* ls: fix off-by-one error introduced with the previous change
[4.0.44]
* ls: When given two or more arguments but the only one that exists is a
directory, don't treat it as if it were the only argument. Before,
`mkdir d; ls no-dir d 2>/dev/null' would act like `ls d' and produce
no output. Now, it prints `d:'.
* touch -d 'last friday' would use a time stamp that was one hour off
(e.g., 23:00 on *thursday* rather than 00:00 of the preceding friday)
when run such that the current time and the target date/time fall on
opposite sides of a daylight savings time transition.
This problem arises only with relative date strings like `last monday'.
It is not a problem with strings that include absolute dates.
[4.0.43]
* regenerate configure-related files using autoconf-2.49d
[4.0.42]
* Using ls's short-named `-H' option evokes the warning that the
meaning of `-H' will soon change. Use `--si' instead.
[4.0.41]
* fix bug in rm introduced in 4.0.38: `chmod 0 f; rm f' would no longer prompt
before removal.
[4.0.40]
* portability fixes, mainly for UnixWare 7.1.1
[4.0.39]
* cp and mv accept --strip-trailing-slashes, not just --strip-trailing-slash
[4.0.38]
* ls --full-time now implies -l; before, without -l it was a no-op
[4.0.37]
* portability fixes for SunOS4.1.1, Fujitsu (f300-fujitsu-uxpv4.1_ES),
and Unicos (alphaev5-cray-unicosmk2.0.5.X)
[4.0.36]
* `mv dir/ new-name' no longer fails on SunOS4.1.1U
* attempting to use mv to move a symlink onto itself no longer removes
the symlink
* `cp -R directory file' no longer removes `file'. now it fails and gives
a diagnostic
* The manual now warns that ls's --full-time format string is planned
to change in a future release.
* ls -l's time stamp format now depends on LC_TIME, not LC_MESSAGES,
as POSIX requires.
* ls -l now reports the year for files even slightly in the future, as
POSIX requires. This helps warn users about clock skew problems.
* `cp -d file symlink-to-some-other-file' no longer fails
* performance improvements for ls
[4.0.35]
* ln --backup=simple --suffix=SUFFIX once again uses SUFFIX
* install: Likewise.
[4.0.34]
* fix a bug (introduced in 4.0z) that made `chown 123:456 file' act like
`chown 123:123 file'. Other uses with a numeric group ID would cause
chown to fail when it shouldn't have.
* the chown and chgrp programs preserve set-uid and set-gid bits, even on
systems for which the chown function call resets those bits.
* `ls -L dangling-symlink' now fails (per POSIX) rather than printing the
link name
* dd no longer honors the just-added `B' suffix on skip= and seek= arguments.
* `mkdir no-such-dir/' no longer fails on NetBSD systems
[4.0.33]
* dd now accepts skip=nB and seek=nB, to advance past some number of bytes, n,
that need not be a multiple of the block size.
* dd (without conv=notrunc) now complains only when ftruncate fails on a
regular file, a directory, or a shared memory object -- not when it fails
to truncate other types of files, like /dev/fd0.
* chmod --changes (-c) once again issues diagnostics only for the files
with changed permissions
* mkdir now gives one diagnostic (rather than two) for certain failures
* mkdir portability fix for NetBSD
[4.0.32]
* touch now interprets a lone numeric argument of 8 or 10 digits as a file name,
rather than as a date/time in the obsolescent `MMDDhhmm[YY]' format.
* mkdir no longer sets the permissions of the final directory component
if it already exists (this bug, too, was introduced recently)
* ls's --full-time format string is now locale dependent
[4.0.31]
* mkdir: fix a bug introduced in 4.0.30 whereby `mkdir existing-dir' would
succeed. Now it fails, as it should (and used to).
[4.0.30]
* mkdir: fix a bug introduced in 4.0.28 whereby parent directories created
via `mkdir -p' would have permissions that did not account for the umask
[4.0.29]
* ls.c wouldn't compile on some systems: fix it
* `cp -R --parents dir1/ dir2' failed on NetBSD, due to a portability problem
[4.0.28]
* ls is much more efficient on systems (e.g., linux-2.4.*) that store file
type information in directory entries.
* shred now automatically determines the size of each block device argument
* ls's date/time format strings are now locale dependent
* mkdir, mknod, mkfifo, and chmod work better in conjunction with ACLs
* `cp --parents dir1/ dir2' no longer gets a failed assertion
* shred now determines the size of block devices like /dev/fd0
* `shred --exact file1 file2' now erases `file1', too
[4.0.27]
* install once again unlinks an existing destination before trying to open it
* mv no longer gets a failed assertion when moving a directory (specified with
a trailing slash) from one partition to another, and giving it a different
name at the destination.
* `cp --link -f src existing-dest' no longer fails (bug introduced in 4.0z)
* cp's new --remove-destination option now works with -R
[4.0z]
* `cp -p' once again preserves `special' permission bits (this bug was
introduced in 4.0y)
* mv's --force (-f) option now controls solely whether mv prompts (per POSIX)
* `cp -f' now first attempts to open an existing destination file, and only
if that fails does it resort to unlinking the file and retrying the open.
Before, it would unlink the file before trying to open it.
* cp accepts a new option, --remove-destination, that provides the old behavior
* cp's -f option no longer cancels the effect of --interactive (-i) (per POSIX)
* when ls sorts directory entries, it now honors the current locale settings
* dd's `skip=BLOCKS' operator once again works on systems with a buggy lseek
function (Linux, at least on SCSI tape devices)
* fix a typo in install-sh
[4.0y]
* cp now accepts the POSIX-mandated -H and -L options.
* cp -p and mv now try to preserve uid even if you're not root, as per POSIX.2.
This affects behavior only on hosts that let you give files away via chmod.
* du would fail when given `.' or `..' followed by other command line arguments
* Using cp's short-named `-P' option evokes the warning that the
meaning of `-P' will soon change. Use `--parents' instead.
* chgrp, chmod, and chown: when used with the --verbose option, might give an
invalid diagnostic (due to clobbered errno) when failing.
[4.0x]
* Fix cp so that `cp -r DIR1/ DIR2' works properly once again.
* New ls option --quoting-style=clocale acts like --quoting-style=locale,
except that it quotes "like this" by default instead of `like this'.
[4.0w]
* When `cp -pR' fails to copy a file, it now preserves permissions, owner,
and group of the containing directory.
[4.0v]
* df, du, and ls now round disk usage up and disk free space down
* df, du, ls: --block-size=N now works for values of N that are e.g.,
not a multiple of the file's block size
[4.0u]
* give proper diagnostic for mv usage error
* fix compile problem with lib/strnlen.c
[4.0t]
* `cp -d -u' no longer fails with certain existing destination symlinks
* rmdir and mkdir accept -v as synonym for --verbose
[4.0s]
* rm no longer segfaults on certain very deep hierarchies
* IMPORTANT SECURITY FIX: a running `rm -r' may no longer be subverted to
remove unintended directories
* cp can now remove unwritable files in interactive mode; contrary to how mv
works, cp's --interactive (-i) option does *not* cancel the effect of a
preceding --force (-f) option.
* all programs fail when printing --help or --version output to a full device
* install no longer performs chmod if chown fails (see ChangeLog for example)
[4.0r]
* `du dir/subdir1 dir/subdir2' no longer fails
* chown accepts new option: --from=CURRENT_OWNER:CURRENT_GROUP
* cp accepts new option: --strip-trailing-slashes
* install --directory (-d) may now be used to set special bits
e.g., `install -m a=rwx,o+t -d DIR' now honors the `o+t' part
* cp, mv, ln, install: document that while the --backup option takes an
optional argument, the -b option accepts none
* `ls -e' fails with a more useful diagnostic
* df produces better output for loop file system mount points
[4.0q]
* install -D bug is fixed
* chown now works properly when the specified login name contains a period
This is at the expense of always looking up the entire USER.GROUP string
as a login name first, and only then (upon failure) interpreting the `.'
as a separator and looking up `USER'. To avoid the extra getpwnam call,
always use the POSIX-mandated `:' character as the separator.
* `du some-other-dir' no longer fails if it can't open the current directory
* `mv DIR EXISTING-FILE' no longer removes EXISTING-FILE. Now it gets an error
as POSIX says it must.
* touch no longer hangs on fifos
[4.0p]
* various tools: quote multibyte characters correctly in diagnostics
* mv: portability fix for alpha
* dd: portability fix
* unified lib/: now that directory and most of the configuration framework
is common between fileutils, textutils, and sh-utils
[4.0o]
* Include lib/nanosleep.h.
[4.0n]
* cp, install, ln, and mv: when making backup files in verbose mode, these
commands now print the backup file name on the same line as the rest of the
information, e.g., `a -> b (backup: b.~13~)' rather than on a separate line
as all but ln used to do. ln didn't output the backup file name at all.
[4.0m]
* mv accepts new option: --strip-trailing-slashes (soon, many other
programs will, too)
* df no longer hangs when there is an inaccessible mount point unrelated to PATH
* rmdir --verbose no longer prints extra, bogus diagnosic upon failure
* fix df bug that made it print bogus values in the `Use%' column.
* touch -d once again parses dates with `hh:mm ZONE' time zone info.
[4.0l]
* ls -l honors a trailing slash on a symlink argument, per POSIX.
* shred no longer appears to infloop when asked to remove files in
unwritable directories
* `ls -ul' and `ls -uc' sort by name once again, as they should
[4.0k]
* mv may now be used to move a file onto a symlink to itself when that
symlink is on a separate partition. With fileutils-4.0j, it would
fail with a diagnostic saying they were the same file.
* touch would fail with the misleading diagnostic `no such file' when asked
to create a file in an unwritable directory. Now it says something like
`permission denied' or `read-only file system'.
[4.0j]
* mkdir may now be used to set special bits e.g., `mkdir -m o+t dir' works
* touch can now change the time(s) of a file you own even if you don't have
read or write access to it
* rm no longer dumps core after warning about directory cycles
* mv now refuses to move a file onto a symlink to itself when that symlink
is on a separate partition. Before, it would remove the file and leave
only the symlink.
* `install -d -g foo 1/2' now sets the `group' of the final component as well
as that of the leading one.
* df, du, and ls no longer divide by zero when an invalid block size is
specified through an environment variable
* under certain conditions, chgrp would fail to affect files referenced
through symlinks. Now it does.
* ln now makes hard links to symlinks on systems that support it.
* touch: no longer infloop on dangling symlinks
* cp, install, ln, mv: deprecate the --version-control option. Use --backup's
new optional argument instead. The old option still works, but now evokes a
warning.
* cp, install, ln, mv: the --backup option now accepts an optional argument
* cp, install, ln, mv: accept new option: --target-directory=DIR
* chgrp: accept new option, --dereference. --no-dereference is now the default.
* New ls option --quoting-style=locale acts like --quoting-style=c, except
with locale-specific quoting symbols (` and ' by default) instead of ".
* `df DIR' is less likely to hang due to bad NFS mounts
* As per POSIX.2, `df -P' now uses ceiling rather than rounding, and its
header now says `1024-blocks ... Capacity' instead of `1k-blocks ... Use%'.
[4.0i]
* `cp -f FILE FILE' and `mv -f FILE FILE' no longer remove FILE
* touch works once again (DST-wise) when certain `--date DATE-TIME'
values are specified.
* shred's -u option (short form of --remove) is now accepted
[4.0h]
* cp --one-file-system (-x) no longer crosses filesystem boundaries.
* touch can once again operate on directories
[4.0g]
* New large-file support for AIX and HP-UX, and for cross-compiles.
* shred's default options are now suitable for devices, not files, since
shred is more reliable on devices. shred now does not remove by default;
the old -p or --preserve option was inverted and renamed to -u or --remove.
* shred -u now attempts to truncate devices before removing them.
* shred -v no longer outputs carriage-returns; shred -vv has no extra effect;
shred -v now outputs to stderr.
* shred now tries to find the size of a non-regular file by seeking to its end.
* dd now opens the output file for *read* access only if `seek=' is used.
[4.0f]
* `ls --color' no longer segfaults
* dd works once again
[4.0e]
* shred --devices option renamed to -D so that -d, -i and -r can be
compatible with rm.
* shred -s/--size=N option added to specify the size of the object to be
shredded.
* `shred -' now shreds stdout rather than stdin. This is incompatible with -v.
* shred now does not need to read from its output file, so opens it O_WRONLY
* `ls -l' uses `+' to designate each file that has a custom ACL
* eliminate race condition that could make touch truncate a nonempty file
* No longer use *_unlocked I/O macros on systems (like solaris5.5.1) where
they're not declared, so selected executables (e.g., rm) that are linked
with shared libraries will once again run on solaris5.6 systems.
[4.0d (aka 4.1-b3)]
* ls recognizes solaris 2 `doors'
* new program: shred
* ln: Allow creation of a hard link to a dangling symlink
* cp, mv, install: --verbose now prints a message for each backup-related
renaming
* portability fixes for copy.c's code to detect move-directory-into-self
* upgrade to automake-1.3b
* upgrade to autoconf-2.13, and...
* remove some of the kludges in m4/*.m4 that permitted
[4.1-b2]
* concurrent `mkdir -p' processes no longer fail when creating the
same hierarchy
* argmatch.c has been fixed so that the unambiguous usage `ls --color=n'
no longer evokes an error.
* now, specifying an improper argument for an option that accepts enumerated
values evokes diagnostics like this:
$ src/touch --time=x file
src/touch: invalid argument `x' for `--time'
Valid arguments are:
- `atime', `access', `use'
- `mtime', `modify'
Try `src/touch --help' for more information.
[4.1-b1]
* ls --quoting-style=c prints correct octal escapes for certain nonprinting
characters in file names.
* fix `ls -R .' formatting bug that broke mktexlsr
* moving a directory into itself is properly diagnosed in more cases
* moving a directory containing hard-linked files now works
Changes in release 4.0:
[4.0-b7]
* rm -rf '' no longer gets a failed assertion on the Hurd
[4.0-b6]
* rm simply fails as it should (rather than segfaulting) for
`mkdir -m 0100 x; rm -rf x'
[4.0-b5]
* still *more* mktime.c portability tweaks
[4.0-b4]
* mktime.c portability tweak for headers with GNU libc 5.4.44.
[4.0-b3]
* mktime.c works around problems with Digital Unix 4.0A and 4.0D.
* mktime.c handles dates in the spring-forward gap the same way other
implementations do
* install accepts long option --suffix=SUFFIX
[4.0-b2]
* man/Makefile.maint framework tweaks
* add test for `mv -i' bug
[4.0-pre1]
* fix serious bug whereby `touch a b; echo n|mv -i a b' would remove b.
[3.16z]
* portability tweaks
* avoid `root `cp -a' from Netapp snapshot' corruption
[3.16y]
* `install -D' now works
* distribute maintainer Makefiles in man/
[3.16x]
* man pages are now automatically generated from a combination of --help
output and the contents of new (though mostly empty), man/*.x files.
[3.16w]
* touch now interprets `-t TIME-DATE' as POSIX specifies
* `ls EMPTY-DIR EMPTY-DIR' once again outputs the directory names
[3.16v]
* portability fixes
* `ls -R EMPTY-DIR' now outputs the name of the directory
[3.16u]
* mv now fails (as it should) upon attempt to move a directory into itself
* `cp -a --one-file-system' now copies any mount point directories it
encounters on the selected file system.
[3.16t]
* cp (with --update) and ls compare time stamps with subsecond resolution when
available (e.g., on systems with recent Linux kernels and on Solaris 2.6).
* install once again does the -m-specified chmod *after* running strip
(this fixes another bug introduced in 3.16o)
[3.16s]
* df accept a new option --local (-l)
* touch works around a system-specific bug so it now affects existing,
zero-length files on certain systems
* chown now works even on certain SVR3 systems where it used to fail
[3.16r]
* include gettext's m4 macros
* minor cp bug fixed
* non-portable cp tests removed
* --without-included-regex now means don't compile regex.c
* rx support removed
[3.16q]
* `df', `du', and `ls' now accept a new option --block-size=SIZE,
where SIZE can be a positive integer block size, followed by an
optional SI prefix (e.g. `k' for kilo, `M' for Mega), followed by an
optional `B' (for ``byte'', indicating powers of 1024, which is the
default) or `D' (for ``decimal byte'', indicating powers of 1000).
SIZE can also be `human-readable' (for -h or --human-readable
behavior) or `si' (for -H or --si behavior).
* These suffixes can also be used by `dd'; e.g. `dd bs=1MB' is equivalent
to `dd bs=1048576'.
* The default block size for the `df' command is now obtained from the
DF_BLOCK_SIZE environment variable or, if that is not set, from BLOCK_SIZE.
Similarly for `du' and `ls'.
* The output columns of `df' have been adjusted slightly to accommodate
larger filesystems.
* fix gettext-related link failures seen when configuring certain ways
[3.16p]
* fix install bug introduced in 3.16o
* build/test changes only
[3.16o]
* chown accepts new option, --dereference. --no-dereference is now the default.
* install now shares core copying code with mv and cp
* mv (between distinct filesystems) now uses more of the core copying code
* fixed a bug or two in mv
* df once again displays negative numbers when that's what's returned
by get_fs_usage
[3.16n]
* `mv dir dir' once again does *not* remove dir/
* ls accepts new options:
--indicator-style=none (no indicators, the default)
--indicator-style=classify (all indicators)
(equivalent to -F or --classify)
--indicator-style=file-type (file type indicators)
(equivalent to -p or --file-type)
--quoting-style=literal (do not quote output)
--quoting-style=shell (minimally quote output for the shell)
--quoting-style=shell-always (always quote output with '' for the shell)
--quoting-style=c (quote output as for a C-language string)
(equivalent to -Q or --quote-name)
--quoting-style=escape (like c but omit enclosing "")
(equivalent to -b or --escape)
--show-control-chars is the opposite of --hide-control-chars
This option can be useful if output is to a terminal,
to override the default beahvior of hiding control characters.
* The QUOTING_STYLE environment variable can now be used to specify the
default value for ls's --quoting-style option. If not specified,
the default quoting style is 'literal', but this default may change to
'shell' in a future version of this package.
* ls's quoting style now affects operands in diagnostics, too.
* ls's --dired option now outputs the quoting style
using the format of the new --quoting-style option.
* ls's -e or --quote-shell option (introduced in 3.16j) has been removed;
use --quoting-style=shell to get its functionality.
[3.16m]
* mv can move (and doesn't read) special files
* remove maintainer mode
[3.16l]
* mv can finally move non-regular files between partitions
[3.16k]
* install accepts new option, -D
[3.16j]
* du accepts new options, --exclude=PAT and --exclude-from=FILE (-X FILE)
* ls now quotes file names for the shell by default, if they contain
characters that need quoting. Use -N to get the old default behavior.
The new behavior is also enabled by the new option -e or --quote-shell.
* ln --backup is now consistent with cp and mv in that --force is no longer
required when the destination is an existing non-directory.
* install accepts new option, --verbose (-v)
* mkdir -p is a lot faster when creating very deep directories on some systems
* rm -i no longer exits with status indicating failure solely because the
user declines to remove a file
* rm -r is a lot faster on some systems when removing deep hierarchies
* chgrp, chmod, and chown no longer give contradictory output when --verbose
is used and an operation fails
* ls's multicolumn option now uses variable width columns to conserve
vertical space
* install accepts new option, --preserve-timestamps
* du --megabytes --total now shows total in megabytes
* ls accepts new option, -h or --human-readable
* df, du, and ls now accept new option, -H or --si, for powers of 1000 not 1024
* df, du, and ls now consistently round to nearest, with ties going to even
* df, du, and ls now use `k' instead of `K' for `kilo',
and support larger abbreviations T(era), P(eta), E(xa), Z(etta), Y(otta)
* touch -d DATE now works on Unicos
* du accepts new option --max-depth=N
* rmdir accepts new options: --ignore-fail-on-non-empty and --verbose
* on most hosts df, du, and ls now overflow at 2**64 bytes, not 2**31 bytes
* all programs now work on large files on LFS systems like Solaris 2.6 and
Linux with the pre-2.1 development version of GNU libc.
* df now works with OpenBSD 2.1 beta
* cp -d FILE SYMLINK-TO-FILE doesn't erase FILE. Now it gives an error.
Changes in release 3.16:
* du --megabytes (-m) works
* ls -l works even on systems with non-POSIX strftime in their C library
Changes in release 3.15:
* touch --date=DATE bug (due to broken getdate.y) has been fixed
* ls -l no longer misformats the date when run in a locale for which the
locale's abbreviated week-day name (strftime's %a format) is shorter or
longer than the `normal' three bytes (with LANG=de it's a two-byte string).
* Using --program-prefix no longer applies the prefix twice
* ls --color properly restores color attributes upon completion when the
normal (`no') color attribute is not the default color.
* with ls -s --color, the `total' and size of the first file are printed
* ls --color stats symlinks and distinguishes between regular symlinks
and orphan ones.
* cp --preserve preserves owner and group of symlinks on Linux when run
with EUID == 0
* dircolors no longer accepts --print-data-base (alternate spelling of
--print-database)
Changes in release 3.14:
* ls --color highlights based on suffix rules only for regular files
* touch --date=DATE accepts dates like those in an RCS log listing, e.g.,
`1992/11/01 05:44:34'.
* install SRC DST no longer rejects non-regular, non-directory SRC
* df accepts -F as a synonym for -t for compatibility with Solaris
* cp -i /dev/null existing-file now prompts before overwriting the target
* ls --color highlights orphaned symlinks text on terminals that support it
* ls -l honors current locale with respect to abbreviated month names (and,
with --full-time day names) on systems with a locale-supporting strftime
function, e.g., ones based on recent versions of the GNU C library
* ls -l recognizes Cray's migrated dmf files.
* chgrp no longer aborts when given a group number larger than INT_MAX
* chgrp now fails when run by root with an unrecognized group name
* when possible, cp -p preserves owner/group even on symlinks in case
they're in a directory that has the sticky-bit set.
* cp --recursive --parents SRC DEST works when SRC is an absolute file name.
Changes in release 3.13:
* ls properly determines window size on SunOS and Solaris systems
* ls accepts new option --color[=WHEN] where WHEN is `always', `never',
or `auto'. --color=never is the default. --color is equivalent
to --color=always.
* new program: dircolors
* ls allows 0 as argument to --tabsize (-T) option. Using --tabsize=0
inhibits the use of TAB characters for separating columns.
* you can create a backup of FILE with cp --force --backup FILE FILE. Before,
that command failed saying that ``FILE' and `FILE' are the same file'.
* uses automake-generated Makefile templates
* chown and chgrp accept new option --no-dereference (-h)
* ln -f FILE FILE fails with a diagnostic rather than silently removing FILE
* when building on systems that have getopt_long (most GNU-oriented ones),
the system-provided function will be used -- so executables may be a
little smaller
* cp -p, and mv modify owner and/or group of symlinks on systems
(like Solaris) that provide the lchown system call.
* df no longer invokes the sync system call by default. You can use the
--sync option to make df invoke sync before getting file system sizes.
* internationalized diagnostic messages
* mkdir accepts new option: --verbose
* `cp file D/' uses the full file name `D/file' instead of `D//file'.
* cp --backup a~ a fails instead of silently destroying the source file
* df and du have new options --human-readable (-h) and --megabytes (-m).
* install now honors --backup (-b), --suffix=SUFFIX (-S SUFFIX), and
--version-control=WORD (-V WORD) options just as cp, ln, and mv do.
* ln --verbose output is less prone to misinterpretation
* ls -o works like -lG; for compatibility with other versions of ls
* cp has a new option to control creation of sparse files:
--sparse={auto,always,never}. --sparse=auto is the default.
* rm -rf '' behaves properly on SunOS 4 systems
* touch: rename long option name, --file, to --reference.
`touch --file' will continue to work a little longer.
* df fails if the same file system type is both selected and excluded.
* df works around SunOS statfs brokenness wrt filesystems larger than 2GB
* df better handles inconsistent mtab entries
* `ls -lDR dir dir2' works
* `ls -c' does what it's supposed to
* all programs include program name in --version output
* `ls --quote-name' works
* mv properly determines whether src and dest are the same file
Before, it could (though with very low probability) fail to do the move,
reporting that distinct source and destination are the same file.
* du --dereference (-L) works with directory symlinks
* du works on SunOS 4 systems even when accounting is enabled
* many programs that convert strings to integers now use strtol or strtoul
and detect overflow
User-visible changes in release 3.12:
* None.
User-visible changes in release 3.11:
* None.
User-visible changes in release 3.10:
* mkdir -p now ignores arguments that are existing directories. Before,
(contrary to POSIX spec) it would attempt to change ownership and/or
protections of existing directories listed on the command line. And
it would fail when such a directory was owned by another user.
* Fix bug in cp that made the commands `mkdir dir; touch foo; cp -P foo dir'
incorrectly change the permissions on directory, dir.
* df accepts a new option, --no-sync, that inhibits the default invocation
of the sync system call.
* ls accepts a new option, --dired, that makes emacs' dired mode more efficient
* skeletal texinfo documentation (mainly just the `invoking' nodes)
* ln accepts a new option: --no-dereference (-n). With this option,
if the destination command line argument is a symlink to a directory,
use that as the destination instead of the file in the directory.
* `ln -i no-such-file existing-file' gives a diagnostic and fails.
Before, if you responded `yes' to the prompt it would both remove
`existing-file' and fail to make a link.
* du no longer requires read access to all of the directory components
of the current working directory on systems with fchdir.
* touch -d 'date' is no longer off by one hour.
* New program: sync.
* Fix bug in cp that made the commands `ln -s . s; cp -rd s r' incorrectly
create `r' as a symlink instead of as a regular file.
* du's -S and -c options now work when used together.
Before, the grand total was always reported to be zero.
Major changes in release 3.9:
* --help gives a one-line description of each option and shows the
correspondence between short and long-named options.
* work around systems with BROKEN_STAT_MACROS
* work around problem where $(srcdir)/config.h was used instead of
../config.h -- this happened only when building in a subdirectory
and when config.h remained in $(srcdir) from a previous ./configure.
* GNU chmod treats symlinks the same way other vendor's versions do.
Now symlinks listed on the command line are processed (they were
ignored before); the permissions of the dereferenced files are
changed. Symlinks encountered in recursive traversals are still
ignored. This makes GNU chmod act more like e.g. Sun's.
* configure uses config.h, so DEFS won't exceed preprocessor limits of
some compilers on the number of symbols defined via -D.
* ls and cp can handle mount points on more systems
* cp, mkdir, and rmdir long option --path renamed to --parents; --path
will still work for a while
* cp, ln, and mv convert `cp A B/' to cp A B/A when A is not a directory.
This change affects only the two-argument form of the commands. It makes
such commands fail when the target has a trailing slash but is not a
directory or symlink to a directory and the source is not a directory.
They used to succeed, ignoring the implicitly contradictory trailing slash.
Major changes in release 3.8:
* install isn't as likely to produce spurious errors
* avoid redundant compilations for `dir' and `vdir';
* configure properly defines STAT_STATFS2_BSIZE on a Pyramid MIServer
running OSx 5.1
Major changes in release 3.7:
* none
Major changes in release 3.6:
* `ln -s dir_pathname .' works when the pathname has a trailing slash
* with the --version option programs print the version and exit immediately
* GNU ls -f works like Unix ls -f
* mktime replacement works
Major changes in release 3.5:
* adds support for DEC Alpha under OSF/1
* configuring with gcc uses CFLAGS='-g -O' by default
* all programs accept --help and --version options
* long-named options must be introduced with `--'; `+' is no longer
accepted since it is incompatible with the POSIX.2 standard
* chmod accepts long-named options
* dd conv=unblock doesn't hang
* new df option --exclude=fstype
* new ls option --full-time
Major changes in release 3.4:
* cp -p and mv preserve setuid and setgid bits
* chown works on systems where sizeof(uid_t) != sizeof(int)
or sizeof(uid) != sizeof(gid)
* catch errors from spurious slashes at ends of arguments
Major changes in release 3.3:
* df sped up by not calling sync for every filesystem
* df ported to AIX (RS/6000 and PS/2), and SVR2 port fixed
* df -i now also prints the total number of inodes per filesystem
* ls sped up by not reading symlink contents unnecessarily
* du doesn't die on POSIX systems when the root filesystem is NFS mounted
* cp and mv report chown Permission denied errors when run by root
|