diff options
Diffstat (limited to 'coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils')
-rw-r--r-- | coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/ChangeLog | 8382 | ||||
-rw-r--r-- | coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/NEWS | 748 |
2 files changed, 9130 insertions, 0 deletions
diff --git a/coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/ChangeLog b/coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/ChangeLog new file mode 100644 index 0000000..5f12d1c --- /dev/null +++ b/coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/ChangeLog @@ -0,0 +1,8382 @@ +2002-07-28 Jim Meyering <meyering@lucent.com> + + * Version 4.1.12. + + * configure.ac: Require automake-1.6b. + + * TODO: Remove entry that mentions rm's HAVE_WORKING_READDIR. + Since remove.c was rewritten, rm is no longer susceptible to that. + +2002-07-26 Jim Meyering <meyering@lucent.com> + + * src/stat.c: Don't include malloc.h -- it was unnecessary. + +2002-07-22 Jim Meyering <meyering@lucent.com> + + * Version 4.1.11. + + * src/stat.c (usage): The short form of --dereference is now -L, not -l. + Reported by Kalle Olavi Niemitalo. + + * src/rm.c: Add new option, --presume-input-tty, for testing only. + Not documented. + + This test might remove a file owned by the person running `make check'. + * tests/rm/fail-eperm: Hoist definition of $target_file, and use + that (not $f) in test for owner/dir/symlink. Patch by Michael Stone. + + * tests/rm/fail-eperm: Handle the case in which rm produces no output. + + rm would prompt for a symlink to an unwritable file + * src/remove.c (prompt): When not interactive, don't prompt + for a symlink. Reported by Dave Beckett. Patch by Michael Stone. + * tests/rm/dangling-symlink: Add a test for the above-fixed bug. + +2002-07-20 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): Use file_name_lookup, not getdport. + Patch by Alfred M. Szmidt. + + * Makefile.maint (news-r1, news-r2): Define. Better regexp. + (announcement): Use them here. Also makes the line length < 80. + + * Upgrade to cvs automake -- required to work with 2.53b. + * configure.ac: Require automake-1.6a. + + * Version 4.1.10. + + * Upgrade to gettext-0.11.3. + * Upgrade to autoconf-2.53b. + +2002-07-19 Jim Meyering <meyering@lucent.com> + + * src/dircolors.hin: Add .wav. + + * tests/rm/fail-eperm: Don't expect `ARGV_0=$0 exec ...' to work. + It doesn't work with /bin/sh of Solaris5.6. + Use an explicit `export ARGV_0' instead. + [comparing actual and expected output]: Don't match the entire line, + but rather just the `rm: cannot remove `$dir/$f':' part. + + * tests/rm/dangling-symlink: Use input-tty rather than + testing for /dev/stdin. + + * tests/Makefile.am (EXTRA_DIST): Add input-tty. + * tests/input-tty: New file. + +2002-07-18 Jim Meyering <meyering@lucent.com> + + * src/dircolors.hin: Add the following to the list of colorizable + TERM names: dtterm xterm-color Eterm. + New archive suffix: .jar + New image suffixes: .jpeg .pbm .pgm .tiff .mpeg .xcf .xwd + Audio suffixes: .ogg .mp3 + From Michael Stone. + +2002-07-16 Jim Meyering <meyering@lucent.com> + + * src/stat.c (print_it): Use memcpy and a little pointer arithmetic, + rather than stpncpy. + +2002-07-14 Jim Meyering <meyering@lucent.com> + + Under some circumstances, rm would fail due to a lack of + permissions, but give a misleading diagnostic like this: + rm: cannot chdir from `.' to `foo': Not a directory + * src/remove.c (remove_dir): Detect the case in which unlinking a + non-directory fails with EPERM, and give an appropriate diagnostic. + Reported by Michael Stone. + +2002-07-13 Jim Meyering <meyering@lucent.com> + + * tests/rm/fail-eperm: New file/test, for the above. + * tests/rm/Makefile.am (TESTS): Add fail-eperm. + + * src/stat.c (print_it): Use xstrdup, not strdup. + Use strspn to avoid an explicit loop. + Use fputc rather than printf "\n". + + * src/stat.c: Include quote.h. + (print_stat): Use xreadlink, rather than using readlink directly. + Use the quote function rather than hard-coded double quotes. + Use error, not perror. + +2002-07-09 Martin Michlmayr <tbm@cyrius.com> + + * src/df.c (show_dev): Make the `Use%' column align with + its heading, even when -P is used with -h or -H. + +2002-07-10 Jim Meyering <meyering@lucent.com> + + * man/du.x: Add a description of --exclude=PATTERN. + * src/du.c (usage) [--exclude]: Use PATTERN rather than PAT. + From Martin Michlmayr. + +2002-07-09 Jim Meyering <meyering@lucent.com> + + I added stat.x, but didn't update the definition of dist_man_MANS. + * man/Makefile.am (dist_man_MANS): Add stat.1. + (stat.1): Add dependency. + Reported by Michael Stone. + + Ensure that the above never happens again. + * man/Makefile.am (check-x-vs-1): New target. + (check-local): Depend on check-x-vs-1. + + * src/mv.c (euidaccess): Remove declaration. It was unused. + From Michael Stone. + (yesno): Remove declaration. It too was unused. + +2002-07-08 Paul Eggert <eggert@twinsun.com: + + * NEWS: df now rounds all quantities up, as per POSIX. + This fixes a bug where df would report Size < Used. + * doc/coreutils.texi: Likewise. + * src/df.c (df_readable): Omit last arg; we always round up now. + All callers changed. + +2002-07-07 Paul Eggert <eggert@twinsun.com> + + NEWS, doc/coreutils.texi: + New ls time style: long-iso, which generates YYYY-MM-DD HH:MM. + Any time style can be preceded by "posix-". + The default time style is now posix-long-iso instead of posix-iso. + + * src/ls.c (enum time_style): Remove posix_iso_time_style. + Add long_iso_time_style. + (time_style_args, time_style_types, decode_switches): Likewise. + (decode_switches): If a time style is prefixed by "posix-", ignore + it if in the POSIX locale. Default style is now posix-long-iso. + (usage): Explain the above. + +2002-07-06 Jim Meyering <meyering@lucent.com> + + * tests/Makefile.am (envvar-check): Mark as `.PHONY'. + + * src/stat.c: Remove everything associated with --secure option. + +2002-07-04 Jim Meyering <meyering@lucent.com> + + * src/remove.c (prompt): Fix test for write-protectedness to also + check errno == EACCES. Otherwise, `rm dangling-symlink' would + mistakenly prompt. Reported by Mike Castle. + + * tests/rm/Makefile.am (TESTS): Add dangling-symlink. + * tests/rm/dangling-symlink: New file/test, for the above fix. + +2002-07-03 Jim Meyering <meyering@lucent.com> + + * src/stat.c (usage): Rename --link/-l to --dereference/-L. + Describe --secure. + Describe --format. + (main): Support -L. Deprecate -l. + +2002-07-02 Jim Meyering <meyering@lucent.com> + + * src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c (usage): + Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it. + * src/df.c, src/dircolors.c, src/du.c, src/install.c: Likewise. + * src/link.c, src/ln.c, src/ls.c, src/mkdir.c, src/mkfifo.c: Likewise. + * src/mknod.c, src/mv.c, src/rm.c, src/rmdir.c, src/shred.c: Likewise. + * src/stat.c, src/sync.c, src/touch.c, src/unlink.c: Likewise. + +2002-07-01 Jim Meyering <meyering@lucent.com> + + * tests/touch/fail-diag: Handle yet another different diagnostic. + Report from Volker Borchert. + +2002-06-29 Jim Meyering <meyering@lucent.com> + + * src/stat.c (print_statfs): Use `fputc ('*', stdout)' + instead of the combination of strcat and printf. + (print_statfs) [!FLASK_LINUX]: Print `*' for %S and %C, + rather than `S' and `C'. + (print_stat) [!FLASK_LINUX]: Likewise. + + * src/remove.c (AD_mark_current_as_unremovable): Replace dead + code with an assertion. + +2002-06-26 Paul Eggert <eggert@twinsun.com> + + * src/ls-test: Use grep, not egrep. + +2002-06-25 Jim Meyering <meyering@lucent.com> + + * src/remove.c (prompt): Add a comment to help translators work + around the problem of making the translations of the adjective + `write-protected' and the corresponding run-time-variable noun + (e.g., file, directory, symlink, etc.) consistent. From Paul Eggert. + +2002-06-24 Jim Meyering <meyering@lucent.com> + + * src/stat.c (usage): Add missing open-quote. + Reported by Michael Piefel. + +2002-06-22 Jim Meyering <meyering@lucent.com> + + * Version 4.1.9. + + * configure.ac: Invoke AC_GNU_SOURCE very early. + + * tests/rm/rm1: Accommodate the slightly different diagnostic we + get on some systems, due to `unlink (dir)' failing with EACCES + rather than EPERM. E.g. for ReiserFS on Linux-2.4.18. + +2002-06-21 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (wget-update): Checkout into config/. + Warn when skipping a file. + + * src/stat.c: Include sys/statvfs.h. + [!HAVE_SYS_STATVFS_H && !HAVE_SYS_VFS_H]: Include sys/param.h + and sys/mount.h, to get decl of struct statfs on NetBSD 1.5.2. + (NAMEMAX_FORMAT, STRUCT_STATVFS): Define. + (HAVE_STRUCT_STATXFS_F_TYPE, SB_F_NAMEMAX): Define. + Remove `static' attribute from decl of program_name. + (human_fstype): Use f_basetype or f_fstypename if available. + (print_human_time): Use nstrftime and an ISO format string, in + place of strftime with `%c'. The latter is too locale-dependent. + (print_statfs): Deal with lots of portability issues: some fields + are available only with statfs, others only with statvfs, and + some are available in both, but with different types. + (do_statfs) [DEFAULT_FORMAT_TERSE]: Factor out. + [DEFAULT_FORMAT_VERBOSE]: Likewise. + + * src/copy.c: Change all `preserving ...' diagnostics to + `failed to preserve ...' to make the failure clearer. + * src/cp.c: Likewise. + +2002-04-03 Alfred M. Szmidt <ams@kemisten.nu> + + * src/copy.c Include hurd.h. + (copy_internal): Preserve the stat.st_author field. + +2002-06-21 Jim Meyering <meyering@lucent.com> + + * src/ls.c (LOGIN_NAME_MAX): Define if not already defined. + (ID_LENGTH_MAX): Define. + (ST_DM_MODE): New macro. Code moved from... + (print_long_format): ...here. + (print_long_format): Itemize and comment the individual parts + of init_bigbuf. Use the above *_MAX macros. + +2002-06-20 Jim Meyering <meyering@lucent.com> + + * src/system.h: Change `defined(X)' syntax to `defined X' + in cpp directives. + +2002-06-17 Jim Meyering <meyering@lucent.com> + + * tests/setgid-check: Interpret a permissions string of + drwxr-xr-x (DOS/Windows) as meaning the cwd is not setgid. + Reported by Rich Dawe. + +2002-05-19 Paul Eggert <eggert@twinsun.com> + + Add support for new ls option --author, for GNU/Hurd. + Derived from a suggestion by Alfred M. Szmidt. + + * doc/coreutils.texi (ls invocation), NEWS: Document this. + * m4/jm-macros.m4 (jm_CHECK_ALL_TYPES): Check for st_author. + * src/ls.c (st_author) [! HAVE_STRUCT_STAT_ST_AUTHOR]: New macro. + (print_author): New var. + (AUTHOR_OPTION): New enum val. + (long_options, decode_switches, print_long_format, usage): + Support --author. + (format_user): New function. + (print_long_format): Use it. Make print buffer a bit bigger. + +2002-06-15 Jim Meyering <meyering@lucent.com> + + * tests/sample-test (trap): Make sure the temporary hierarchy is + writable before removing it. + + * tests/mv/perm-1: New file, to demonstrate fix of 2002-06-12. + * tests/mv/Makefile.am (TESTS): Add perm-1. + + * src/system.h: For GNU libc 2.2 and newer, ensure that <sys/types.h> + has been included before this file. + +2002-06-13 Richard Dawe <richdawe@bigfoot.com> + + Accommodate DOS file name limitations. + * tests/cp/same-file: Change temp. file name: s/\.err/_err/, for DOS. + * tests/mv/force: Similar. + * tests/mv/into-self: Similar. + * tests/touch/no-rights: Similar. + * tests/mv/mv-special-1: Remove leading `.' from temp. names. + +2002-06-15 Jim Meyering <meyering@lucent.com> + + * src/sys2.h (S_ISNAM): Add to list of S_IS* macros. + Rearrange #if directives for each S_IS macro. + From diffutils-2.8.2. + +2002-06-12 Jim Meyering <meyering@lucent.com> + + * src/mv.c (do_move): Give one diagnostic, not two, when unable to + unlink a destination file. This bug was introduced in fileutils-3.16l. + +2002-06-07 Jim Meyering <meyering@lucent.com> + + * tests/mv/part-fail: Also accept the permission-denied diagnostic + issued by some losing systems. Reported by Volker Borchert. + + * src/remove.c (remove_entry): Use DT_IS_DIR only if + HAVE_STRUCT_DIRENT_D_TYPE is defined. + +2002-06-02 Jim Meyering <meyering@lucent.com> + + `rm' no longer uses explicit recursion, and as such is now able + to remove hierarchies of effectively unlimited depth. Prior to + this change, on typical systems, rm would fail (segfault) to remove + hierarchies of depth greater than about 25,000. + + * src/remove.c: Merge in all changes from no-recursion branch. + See below for details. + * src/remove.h: Likewise. + * src/mv.c (do_move): Adapt to new calling sequence for rm. + * src/rm.c (main): Likewise. + +2002-06-02 Jim Meyering <meyering@lucent.com> + + * tests/rm/r-2: Adjust, now that we no longer report + `removing all entries of directory ...'. + * tests/rm/r-1: Likewise. + + * src/remove.c (enum Ternary): Define type. + (prompt): Add a parameter. Adjust callers. + (remove_entry): Attempt rmdir here, only if a directory is + `known' to be empty. Significant rework. + (remove_dir): Propagate failure `up' also when rmdir fails. + +2002-06-01 Jim Meyering <meyering@lucent.com> + + * tests/rm/Makefile.am (TESTS): Add rm5. + * tests/rm/rm5: New test. + +2002-05-30 Jim Meyering <meyering@lucent.com> + + In interactive mode, prompt only once about an empty directory. + * src/remove.c (enum Prompt_action): Define. + (prompt): Two new parameters. Adjust all callers. + + Performance. + * src/remove.c (remove_entry) [!ROOT_CAN_UNLINK_DIRS]: + Don't call rmdir here. + +2002-05-29 Jim Meyering <meyering@lucent.com> + + * src/remove.c (AD_pop_and_chdir): Don't use errno (it's not valid) + in diagnostic for changed dev/ino. + (remove_entry): Tweak diagnostic. + +2002-05-27 Jim Meyering <meyering@lucent.com> + + * src/remove.c (ROOT_CAN_UNLINK_DIRS): Define. + (AD_pop_and_chdir): Propagate status as we traverse back `up' the tree. + (DO_UNLINK, DO_RMDIR): Define. + (remove_entry) [ROOT_CAN_UNLINK_DIRS]: Add code so this works also on + systems where root can use `unlink' to remove directories. + +2002-05-24 Jim Meyering <meyering@lucent.com> + + * tests/mv/mv-special-1: Adapt for changed format of --verbose output. + +2002-05-22 Jim Meyering <meyering@lucent.com> + + * src/remove.c: Include file-type.h. + Include file type in prompt when asking whether to remove file. + Based on a patch from Paul Eggert. + + * src/remove.c (prompt): Add comment. + + * src/remove.c (remove_dir): Fix another (known) leak. + + * tests/rm/rm3: Don't depend on order of traversal of dir entries. + It is nondeterministic on some types of filesystems. + + * src/remove.c (hash_freer): New function. + (AD_mark_helper): Use it. + (AD_mark_as_unremovable): xstrdup the filename argument. + (remove_dir): Free directory name. + + * src/remove.c (remove_entry): Fail also when trying to remove a + directory without the --recursive option. + Change a diagnostic, s/unlink/remove/, now that it can apply also + to a directory. + + * src/remove.c (is_empty_dir): New function. + (prompt): New function, factored out of... + (remove_entry): ...here. Call it. + (remove_dir): Call prompt before rmdir. + + * src/remove.c (remove_entry): Add support for prompting (e.g., -i). + + * src/remove.h (UPDATE_STATUS): New macro. + Include save-cwd.h. + (struct File_spec): Remove declaration. + Update prototypes. + + * src/remove.c [AD_ent] (status): New member. This lets us propagate + the status from a subdirectory to its parent via AD_pop_and_chdir. + (AD_push_initial): Set it. + (AD_push): Likewise. + (remove_cwd_entries): Change return type to enum RM_status, and + adjust all callers. + (rm): Use UPDATE_STATUS rather than open-coding it. + + * src/remove.c (remove_entry): New function, factored out of... + (remove_cwd_entries): ...here, and... + (rm_1): ...here. + + * src/remove.c (remove_cwd_entries): Add support for --verbose. + (remove_dir): Likewise. + (rm_1): Likewise. + +2002-05-18 Jim Meyering <meyering@lucent.com> + + * tests/rm/rm3: New file. + * tests/rm/rm4: New file. + * tests/rm/Makefile.am (TESTS): Add rm3 and rm4. + +2002-05-17 Jim Meyering <meyering@lucent.com> + + * tests/rm/rm1: New file. + * tests/rm/rm2: New file. + * tests/rm/unread2: New file. + * tests/rm/Makefile.am (TESTS): Add rm1, rm2, and unread2. + + * src/remove.h (enum RM_status) [RM_NONEMPTY_DIR]: New member. + +2002-05-13 Jim Meyering <meyering@lucent.com> + + * src/remove.c (rm): Free cwd_state, if necessary. + +2002-05-01 Jim Meyering <meyering@lucent.com> + + * src/remove.c (rm_1): Remove now useless (always true) + user_specified_name parameter. Adjust sole caller. + + * src/remove.c (rm): New function. This interface allows + one to remove multiple arguments at a time. This is important in + that it allows us to hide the remove_init/remove_fini functions and + the cwd_state parameter. + (rm_1): Renamed from rm. + (remove_init, remove_fini): Remove functions. Each body is now + part of `rm'. + * src/remove.h (rm): Update prototype. + +2002-06-01 Jim Meyering <meyering@lucent.com> + + * src/ls.c: Remove use of D_TYPE_IN_DIRENT, now that that symbol + has been renamed. + +2002-05-30 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_reg): Use a temporary to avoid a warning + from gcc -W about comparison between signed and unsigned. + (copy_internal): Likewise, but use a cast. + +2002-05-22 Jim Meyering <meyering@lucent.com> + + * src/sys2.h (S_ISREG, S_ISDIR): Define if not already defined. + (S_TYPEISSEM, S_TYPEISSHM, S_TYPEISTMO): Likewise. + + * src/ls.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR): + Remove definitions. + * src/sys2.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR): + Define here instead. + +2002-04-27 Jim Meyering <meyering@lucent.com> + + * src/remove.c (cycle_check): New function containing code factored + out of remove_dir. The sole difference is that upon detecting a + cycle, rm now dies unconditionally. Before, in interactive mode, + it would ask the user whether to continue. + (remove_dir): Call cycle_check. + +2002-04-25 Jim Meyering <meyering@lucent.com> + + Avoid new warnings from gcc. + * src/dd.c: Declare input_file and output_file to be `const'. + (skip): Declare `file' parameter to be `const', too. + + Remove hash table, active_dir_map, used to detect directory cycles. + Instead, detect them lazily with just O(1) memory. + Suggestion from Andi Kleen. + * src/remove.c (is_power_of_two): New function. + (print_nth_dir, make_active_dir_ent): Remove functions. + (hash_active_dir_ent, hash_compare_active_dir_ents): Likewise. + (remove_dir): Check for cycles here, ... + (rm): ... and don't check for cycles here. + + * src/remove.c (rm): Call fspec_get_full_mode here, rather than + fspec_get_filetype_mode. We want to get the dev/ino earlier, and + at the same time as when we get the file type, to avoid the risk + that an attacker would change e.g. a directory to a symlink before + we record its dev/ino. + + * configure.ac (AC_CONFIG_FILES): Remove intl/Makefile. + (AM_GNU_GETTEXT): Add external arg. + + * intl/: Remove directory. + * Makefile.am (SUBDIRS): Remove intl. + (DISTCLEANFILES): Remove definition. + + * src/sys2.h: Remove ENABLE_NLS-related code. + (_, N_) Remove definitions. + Include "gettext.h" instead. + + * src/Makefile.am (INCLUDES): Remove -I../intl. + +2002-04-22 Jim Meyering <meyering@lucent.com> + + * src/remove.c (rm): Call exit with EXIT_FAILURE, not `1'. + +2002-04-19 Jim Meyering <meyering@lucent.com> + + * tests/cp/*: Clean up. + + * tests/sample-test: Use a temporary directory named + `basename $0`.tmp/$$. Create with mkdir -p. + + * tests/cp/backup-1: Use better trap, etc. + * tests/mkdir/p-2: Use better trap. + * tests/mkdir/p-1: Likewise. + * tests/mkdir/concurrent-1: Likewise. + + * tests/rm/deep-1: Set $tmp the new way. + + * tests/rm/ir-1: Use `rm', not $RM. Use better trap. + * tests/rm/i-1: Likewise. + * tests/rm/f-1: Likewise. + + * tests/sample-test: Use automatically-derived name for temporary + directory. This is more 8.3-friendly. Based on a suggestion from + Richard Dawe. + + * tests/sample-test: New file. + * tests/Makefile.am (EXTRA_DIST): Add sample-test. + +2002-04-17 Jim Meyering <meyering@lucent.com> + + * src/touch.c (touch): Don't report errors for nonexistent files + when --no-create is in effect. Based on a patch from TAKAI Kousuke. + * tests/touch/no-create-missing: New file/test for above. + * tests/touch/Makefile.am (TESTS): Add no-create-missing. + +2002-04-16 Jim Meyering <meyering@lucent.com> + + * src/stat.c: Add copyright comment. + (human_fstype): Rename from print_human_fstype, and rework accordingly. + (print_statfs): Use human_fstype to honor format width on %T. + +2002-04-15 Jim Meyering <meyering@lucent.com> + + Handle "lld" vs "ld" printf formats the same way Bash does. + * src/stat.c: Include inttypes.h. + (PRIdMAX, PRIuMAX): Define, if not already defined. + (print_statfs): Use those macros, not the literal strings. + (print_stat): Likewise. + Suggestion from Paul Eggert. + + * src/stat.c (print_human_fstype): Add missing `break;' + for `case S_MAGIC_MINIX:'. + +2002-04-14 Jim Meyering <meyering@lucent.com> + + * src/stat.c (statfs_secure): Define. + (print_stat): Remove another #ifdef. + (do_statfs): Likewise. + (print_statfs): Prefer/use fputs over printf. + (print_stat): Likewise. + + * src/Makefile.am (bin_PROGRAMS): Add stat. + (noinst_HEADERS): Add fs.h. + + * src/stat.c [HAVE_SYS_VFS_H]: Guard incluion of sys/vfs.h. + Constify many parameters. + (print_statfs): Fix typo: Use %u (to match %lu) for namelen, not %d. + (verbose_usage): Remove function. Move contents into usage. + Remove lots of #if directives involving FLASK_LINUX + [!FLASK_LINUX] (is_flask_enabled): Define. + (stat_secure, lstat_secure): Define. + (print_statfs): Remove lots of nested #if directives. + Instead, rely on support fo %llu and %lld printf formats -- + but that is only temporary, since it's not porable enough. + (main): Hoist is_flask_enabled test to be done here, rather + than in each of do_stat and do_statfs for every argument. + +2002-04-13 Jim Meyering <meyering@lucent.com> + + * src/stat.c: Include system.h, error.h, and many other headers. + [HAVE_SYS_SYSMACROS_H]: Guard inclusion of sys/sysmacros.h. + (PROGRAM_NAME, AUTHORS): Define. + (long_options): Declare/define. + (print_human_access): Rewrite to use mode_string. + (usage): Rewrite. + (main): Use getopt_long. + (print_human_type): Call fputs once rather than calling + printf many times. + (print_human_fstype): Revamp in a similar fashion. Don't use strdup. + Declare most functions to be `static'. + +2002-04-12 Jim Meyering <meyering@lucent.com> + + * src/Makefile.am (LDADD): List ../lib/libfetish.a both before + and after @LIBINTL@. Thanks to Paul Eggert for the fix and to + Bruno Haible for diagnosing the problem. + + * src/link.c: Include long-options.h. + [long_opts]: Remove. + (usage): Tweak --help output; use *_OPTION_DESCRIPTION macros. + (main): Don't use getopt directly. Use parse_long_options instead. + Tweak a diagnostic. + Use EXIT_FAILURE rather than a literal `1'. + * src/unlink.c: Likewise. + (main): If POSIXLY_CORRECT is set, don't recognize --help or --version, + so the program can operate on a file with one of those names. + +2002-04-11 Jim Meyering <meyering@lucent.com> + + New programs link and unlink. + + * src/Makefile.am (bin_PROGRAMS): Add link and unlink. + * src/link.c, src/unlink.c: New files, from Debian's fileutils_4.1-10. + Written by Michael Stone. + + * man/link.x: New file. + * man/unlink.x: New file. + * man/Makefile.am: Add link and unlink. + +2002-04-07 Jim Meyering <meyering@lucent.com> + + * tests/install/basic-1: Tweak comments to reflect reality. + * tests/cp/fail-perm: Add VERBOSE=yes support. + * tests/mv/mv-special-1: Fix typo in VERBOSE=yes handling. + Reported by Richard Dawe. + +2002-03-30 Jim Meyering <meyering@lucent.com> + + * Version 4.1.8. + + * tests/mv/i-link-no: Use --reply=no rather than -i. + The latter depends on whether stdin is a tty and hence would + fail in some situations where --reply=no doesn't. + + * src/mv.c (do_move): Correct a comment. + + * src/copy.c (copy_internal): Move the block that sets `earlier_file' + down to just before the first use of that variable. Otherwise, it was + possible to make mv (and probably cp, too) malfunction when copying + hard-linked files into a directory containing at least one of the + source file names. Call forget_created everywhere thereafter where + this function returns without creating a destination file that might + subsequently be linked. Reported by Iida Yosiaki. + * src/cp-hash.c (forget_created): New function. + * src/cp-hash.h (forget_created): Prototype. + + * tests/mv/i-link-no: New test for the above. + Based on an example from Iida Yosiaki. + * tests/mv/Makefile.am (TESTS): Add i-link-no. + +2002-03-17 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal) [move_mode]: Give a better diagnostic, + by using errno from the failed unlink, when a cross-device `mv' + fails, e.g., because the destination cannot be unlinked. + Prompted by a report from Karl Berry. + * tests/mv/part-fail: New test for the above. + * tests/mv/Makefile.am (TESTS): Add part-fail. + +2002-03-16 Jim Meyering <meyering@lucent.com> + + * src/Makefile.am (datadir): Don't override $(datadir) + which might be set by --datadir and different from $(prefix)/share. + Patch from Albert Chin-A-Young. + +2002-03-10 Jim Meyering <meyering@lucent.com> + + * Version 4.1.7. + + * src/ln.c (main): Change wording in diagnostic. + * src/cp.c (do_copy): Likewise. + * src/install.c (strip): Likewise. + Suggestions from Santiago Vila. + + * Use autoconf-2.53. Regenerate dependent files. + + * Makefile.maint (GZIP, BZIP2): Remove definitions. + ($(my_distdir).tar.bz2): Remove rule. Now, it's built by `make dist'. + + * configure.ac (AM_INIT_AUTOMAKE): Specify the required version + of automake (1.6), and options (gnits dist-bzip2), rather than... + * Makefile.am (AUTOMAKE_OPTIONS): ...here. Remove definition. + + * src/copy.c (copy_reg): Don't exit upon finding a replaced file. + Instead, just skip it like the diagnostic says. + Reported by Paul Eggert. + +2002-03-09 Paul Eggert <eggert@twinsun.com> + + * src/copy.c (copy_reg): Use a more concise diagnostic for + reporting replaced files. This avoids a bug in the code, + which mishandled ino_t wider than long. + * src/remove.c (remove_dir): Likewise, twice. + +2002-03-09 Jim Meyering <meyering@lucent.com> + + * Makefile.am (EXTRA_DIST): Remove config/config.rpath, + now that automake knows about it. + +2002-03-08 Jim Meyering <meyering@lucent.com> + + Don't allow a malicious user to trick another user's rm process into + removing unintended files. In one scenario, if root is removing a + hierarchy that is writable by the malicious user, that user may trick + root into removing all of `/'. Reported by Wojciech Purczynski. + + * src/remove.c (remove_dir): After chdir `..', call lstat to get the + dev/inode of "." and fail if they aren't the same as the old numbers. + (remove_cwd_entries): New parameter, `cwd_dev_ino'. + (remove_dir): Likewise. + (rm): Likewise. + Adjust all callers. + * src/mv.c (do_move): The first time we resort to copy/remove, + call lstat `.' to get the device/inode numbers now required for rm. + * src/rm.c (main): Call lstat `.' to get the device/inode numbers + now required for rm. + * src/remove.h (struct dev_ino): Declare new type. + (rm): Add a parameter to the prototype. + +2002-03-06 Jim Meyering <meyering@lucent.com> + + * Use automake-1.6. Regenerate dependent files. + +2002-03-05 Jim Meyering <meyering@lucent.com> + + * Makefile.am (EXTRA_DIST): Add config/config.rpath. + +2002-03-04 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (tgz-size): Also handle a suffix of `K', since + the sizes in the output of `du -h' now look like `29K' + +2002-03-03 Jim Meyering <meyering@lucent.com> + + * Version 4.1.6. + +2002-03-03 Paul Eggert <eggert@twinsun.com> + + Make cp -r equivalent to cp -R. Add a new cp option --copy-contents + for people who want to emulate the traditional (and rarely desirable) + cp -r behavior. + + * src/cp.c (COPY_CONTENTS_OPTION): New enum value. + (long_opts): Add --copy-contents. + (usage): Describe new behavior. Sort options. + (main): Implement new behavior. Remove diagnostics for -a and -r; + no longer needed. + * src/copy.c (copy_internal): Remove -r warning; no longer needed. + + * NEWS: Document this. + +2002-03-02 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): For each symlink copied by cp -r, + issue a warning that `cp -r' is not portable. + + * src/cp.c (main): Revert change of 2001-12-29. With this change, + cp -r once again preserves symlinks. + (usage): Document the original (now-restored) behavior. + * tests/cp/r-vs-symlink: Reflect changed semantics of cp's -r option. + + * src/cp.c (main): Warn when -r is specified before --archive (-a). + * src/cp.c (main): Fail when -r is specified after --archive (-a) + on the command line. + + * src/copy.c (copy_reg): Detect abuse of a race condition + whereby an unprivileged user could gain read access to otherwise- + inaccessible files when root uses cp or mv to copy a hierarchy + belonging to that user. + +2002-02-27 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (decode_switches, usage): Add --time-style=+FORMAT. + * doc/coreutils.texi (Formatting file timestamps): Document it. + +2002-02-25 Paul Eggert <eggert@twinsun.com> + + Add ACL support to 'ls' for HP-UX and Unixware, and try to + establish a framework for adding it for other hosts. + This builds on a suggestion of Andreas Gruenbacher. + + * lib/Makefile.am (libfetish_a_SOURCES): Add acl.h, acl.c. + * lib/acl.h, lib/acl.c, m4/acl.m4: New files. + * m4/jm-macros.m4 (jm_MACROS): Require AC_FUNC_ACL. + Do not check for acl or sys/acl.h, as AC_FUNC_ACL does that now. + * src/ls.c: Include "acl.h" rather than <sys/acl.h>. + (USE_ACL): Remove; replaced by HAVE_ACL everywhere. + (gobble_file): Use file_has_acl rather than doing it ourselves. + +2002-02-20 Jim Meyering <meyering@lucent.com> + + * src/touch.c: Include posixver.h. + (usage): Document only the intersection of the old and new behaviors, + to encourage portability. + (main): Use `posix2_version ()' in place of POSIX2_VERSION. + +2002-02-17 Jim Meyering <meyering@lucent.com> + + * ABOUT-NLS, intl/*: Update to Gettext 0.11. + * INSTALL: Update to Autoconf 2.52h. + + * src/Makefile.am (datadir): Use `share' in place of @DATADIRNAME@, + per Gettext-0.11. + (LDADD): Use @LIBINTL@ instead of @INTLLIBS@, per Gettext-0.11. + + * configure.ac (AC_CONFIG_AUX_DIR): New macro invocation. + (ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11. + + * config: New subdirectory, containing the following files from .: + config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs. + Move the following files here from doc: texinfo.tex, mdate-sh. + +2002-02-16 Jim Meyering <meyering@lucent.com> + + * tests/ls/infloop: Use `head -n 7', not `head -7'. + * tests/rm/hash: Likewise. + +2002-02-10 Jim Meyering <meyering@lucent.com> + + * configure.in (ALL_LINGUAS): Add Hungarian (hu). + +2002-02-02 Jim Meyering <meyering@lucent.com> + + * src/shred.c: (VERBOSE_UPDATE): Update every 5 seconds, not every 10. + (wipename): Quote file names only when necessary. + (main): Copy quoted string into malloc'd storage so it doesn't + get clobbered when using -u and --verbose. + + Minor clean-up. + * src/shred.c: + Use `NULL' rather than `(time_t *) 0'. + (dopass): Use STREQ in place of strcmp. + Add parentheses around use of nested ternary operator. + +2002-01-15 Paul Eggert <eggert@twinsun.com> + + * src/shred.c (VERBOSE_UPDATE): Now counts seconds, not bytes. + + (dopass): If verbose, output a line every VERBOSE_UPDATE seconds, + and suppress duplicate output lines. Output a percentage as well + as a count of bytes. + + Also, fix comment/code typo regarding how many bytes have been + written; this typo was harmless before, but is no longer harmless with + the above change in effect. + +2002-02-02 Jim Meyering <meyering@lucent.com> + + * src/remove.c (rm): Add a comment. + +2002-01-28 Jim Meyering <meyering@lucent.com> + + * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5d. + * configure.ac (AM_INIT_AUTOMAKE): Use zero-arg form of this macro. + +2002-01-21 Jim Meyering <meyering@lucent.com> + + * po/POTFILES.in: Add lib/xmemcoll.c + + * src/chown-core.c: Don't include "xalloc.h", as system.h already + does that via sys2.h. + * src/ls.c: Likewise. + * src/shred.c: Likewise. + +2002-01-20 Paul Eggert <eggert@twinsun.com> + + * src/ls.c: Avoid undefined behavior when strcoll fails, + by resorting the directory with strcmp instead. + + Include <setjmp.h>. + Include "quote.h". + (compare_atime, rev_cmp_atime, compare_ctime, rev_cmp_ctime, + compare_mtime, rev_cmp_mtime, compare_size, rev_comp_size, + compare_name, rev_cmp_name, compare_extension, rev_cmp_extension, + compare_version, rev_compare_version): Move before use, so that + we can remove the forward declaration. Reimplement in terms of + the new functions described below, using xstrcoll instead of strcoll. + (failed_strcoll): New var. + (xstrcoll): New function. + (V): New type. + (cmp_ctime, compstr_ctime, rev_str_ctime): New functions. + (cmp_mtime, compstr_mtime, rev_str_mtime): Likewise. + (cmp_atime, compstr_atime, rev_str_atime): Likewise. + (cmp_size, compstr_size, rev_str_size): Likewise. + (cmp_version): Likewise. + (cmp_name, compstr_name, rev_str_name): Likewise. + (cmp_extension, compstr_extension, rev_str_extension): Likewise. + (sort_files): Use prototype for internal function var. + If the strcoll-based comparison fails, fall back on a strcmp-based one. + +2002-01-19 Jim Meyering <meyering@lucent.com> + + Ensure that the two version numbers in configure.ac remain in sync. + * Makefile.maint (local-check): Depend on ac-check. + (ac_p_pkg, AC_INIT_PKG): Define. + (ac_p_ver, AC_INIT_VER): Define. + (ac-check): New rule. + +2002-01-19 Jim Meyering <meyering@lucent.com> + + * configure.ac: Remove code that set LIBOBJS in support of ansi2knr. + The latest version of autoconf objected to it, and besides, I don't + care too much about K&R support these days. + +2002-01-14 Paul Eggert <eggert@twinsun.com> + + * src/touch.c (main): Issue a warning for obsolete usage, unless + POSIXLY_CORRECT. + +2002-01-14 Paul Eggert <eggert@twinsun.com> + + Add support for POSIX 1003.1-2001, which requires removal for + support of the obsolete `touch [-acm] MMDDhhmm[YY] FILE...' syntax. + + * NEWS: Document this. + * src/touch.c (usage, main): Implement this. + +2002-01-12 Jim Meyering <meyering@lucent.com> + + Avoid giving a misleading diagnostic in some unusual cases. + Instead, give one that makes sense. + + * src/copy.c (copy_reg): Don't treat errno==ENOENT as a special case. + (same_file_ok): Detect a case that would have lead to the errno==ENOENT + condition above (and a misleading diagnostic), and return 0 so we give + a diagnostic about the source and destination being the same file. + (copy_internal): Use an explicit test for errno==EXDEV to detect + that rename has failed because source and destination are on + different devices. This reverts part of a change from 1997-12-13, + and is to avoid letting a race condition evoke a bogus diagnostic. + Note that while POSIX has encouraged the errno==EXDEV test for + years, it was inadequate back in 1997. I'm hoping that many + more systems have conforming support these days. + Reported by Michael Gaughen <mgaughen@polyserve.com> + + * src/shred.c (usage): Also mention Ext3. + Suggestion from Göran Uddeborg. + +2002-01-06 Bruno Haible <bruno@clisp.org> + + * src/ls.c (long_time_format): Extend translator comments. + +2002-01-05 Jim Meyering <meyering@lucent.com> + + * Version 4.1.5. + +2001-12-29 Jim Meyering <meyering@lucent.com> + + * src/cp.c (main): With -r, always dereference symlinks. + Reported by Christian Harkort. Patch by Chris J. Bednar. + + * tests/cp/r-vs-symlink: New file to test for the above fix. + * tests/cp/Makefile.am (TESTS): Add r-vs-symlink. + +2001-12-21 Jim Meyering <meyering@lucent.com> + + * src/shred.c [!HAVE_CONFIG_H]: Remove cpp block that duplicated + code in lib/ in order to facilitate compiling this program without + config.h. + +2001-12-19 Paul Eggert <eggert@twinsun.com> + + * src/shred.c: Add FSF copyright notice. + +2001-12-18 Paul Eggert <eggert@twinsun.com> + + Use notation 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 trailing `B' now means decimal, not binary; this is a silent change. + -H or --si now outputs the trailing 'B', for consistency with this. + Programs now output trailing 'K' (not 'k') to mean 1024. + 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'. + + * NEWS, doc/coreutils.texi: Document this. Remove documentation + for obsolescent constructs MD, --kilobytes, -m or --megabytes. + + * src/dd.c (usage, parse_integer): Prefer K to k for 1024. + * src/shred.c (usage, main): Likewise. + + * src/shred.c (xstrtoumax): If there is no number but there + is a valid suffix, assume 1. "MB" now means decimal, "MiB" binary. + Accept 'K' as well as 'k'. + + * src/dd.c (usage): MD -> MB for decimal. + + * src/df.c (BLOCK_SIZE_OPTION): Remove; no longer needed now that + we have 'B'. + (long_options, usage, main): Add -B. + (usage): Deprecate --kilobytes, -m, --megabytes. + Document size suffixes. + * src/du.c: Likewise. + * src/ls.c (usage): Deprecate --kilobytes. Document size suffixes. + + * src/df.c (print_header, show_dev): Enlarge column widths for + trailing "B". + +2001-12-17 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (real_dir): Remove unused variable. + (url_dir_list): Don't set define it here, but... + * Makefile.cfg (url_dir_list): ...define it here instead. + (hosts, a_host, b_host): Remove now-unused variables. + (alpha_subdir, a_url_dir, b_url_dir): Remove now-unused variables. + +2001-12-15 Jim Meyering <meyering@lucent.com> + + * Version 4.1.4. + + * tests/touch/fail-diag: Also accept SunOS4's `Not owner' diagnostic. + Reported by Volker Borchert. + + * tests/help-version: Fail also if ./$i --version fails. + Run each --help and --version test with a few different settings + of LC_MESSAGES. Prompted by a report from Nelson Beebe. + +2001-12-11 Jim Meyering <meyering@lucent.com> + + Include the word `fail' in some diagnostics to make it clearer + that they indicate a failure. + * src/chgrp.c (main): s/getting attributes/failed to get attributes/. + * src/chmod.c (change_file_mode, main): Likewise. + * src/chown-core.c (change_file_owner): Likewise. + * src/chown.c (main): Likewise. + * src/cp.c (re_protect): Likewise. + * src/touch.c (touch, main):Likewise. + Suggestion from Karl Berry. + +2001-12-10 Jim Meyering <meyering@lucent.com> + + * src/dd.c (buggy_lseek_support): Remove function. + (skip_via_lseek) [__linux__]: New function. + (skip): Use skip_via_lseek, not buggy_lseek_support. + Based on an outline from Paul Eggert. + +2001-12-09 Jim Meyering <meyering@lucent.com> + + * configure.in (ALL_LINGUAS): Add Estonian (et). + +2001-12-08 Jim Meyering <meyering@lucent.com> + + * Makefile.cfg (wget_files): Remove ansi2knr.c, since it's + no longer available at that location. + +2001-12-04 Jim Meyering <meyering@lucent.com> + + * tests/chgrp/basic: Don't use diff's -u option. It's not portable. + Besides, with GNU diff one can use the DIFF_OPTIONS envvar. + * tests/ls/no-arg: Likewise. + * tests/ls/recursive: Likewise. + * tests/ls/rt-1: Likewise. + +2001-12-02 Jim Meyering <meyering@lucent.com> + + * Version 4.1.3. + + * src/sys2.h (HELP_OPTION_DESCRIPTION): New macro. + (VERSION_OPTION_DESCRIPTION): New macro. + * src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c, + * src/df.c, src/dircolors.c, src/du.c, src/install.c, src/ln.c, + * src/ls.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c, src/rm.c, + * src/rmdir.c, src/shred.c, src/stat.c, src/sync.c, src/touch.c (usage): + Use new macros, HELP_OPTION_DESCRIPTION and VERSION_OPTION_DESCRIPTION + instead of hard-coding --help and --version descriptions. + + * POTFILES.in: Add src/sys2.h. + + * src/touch.c (touch): Extend the change of 2001-09-15 to work on + systems for which errno is set to EPERM in that case. Thus, e.g., + `touch /' by non-root gives a better diagnostic on systems like SunOS4. + Reported by Volker Borchert. + + Don't emulate dd's skip=N for *all* character devices; lseek works + just fine on non-tape character devices like /dev/mem and /dev/kmem. + * src/dd.c (buggy_lseek_support) [__linux__]: Emulate `skip=N' + behavior using reads, not lseek for Linux tape devices (major == 9). + Kernel lseek support for tapes is broken, up to and including + linux-2.4.16. Reported by Herbert Xu. + +2001-11-27 Jim Meyering <meyering@lucent.com> + + * tests/ls/rt-1: Compare all lines of output. + Update code to use `trap' and more up to date infrastructure. + + The change of 2001-11-01 introduced a bug whereby some recursive + listings didn't have a blank line between per-directory groups of files. + * src/ls.c (print_dir): Print a newline before each directory name + except the first one, rather than after each except the last, since + now (after the changes of 2001-11-01) detecting whether a `pending*' + is the last would involve more work. Reported by Andreas Schwab. + * tests/ls/recursive: New file. Test for the above. + * tests/ls/Makefile.am (TESTS): Add recursive. + + This change has no net effect. + * src/ls.c (main): Remove always-true conjunct and add a comment. + +2001-11-26 Jim Meyering <meyering@lucent.com> + + * src/shred.c: Don't include "gtod.h" + (main): Don't `call' GETTIMEOFDAY_INIT. + * src/ls.c: Likewise. + +2001-11-24 Jim Meyering <meyering@lucent.com> + + * Makefile.maint: Include signatures for the xdelta file, too. + + * Makefile.maint (emit-upload-commands): Rename from + emit-rsync-commands. + Output only the package name and the prev and current version numbers. + + * Version 4.1.2. + + * src/sync.c (usage): Make --help and --version strings + start in column 7. + + * Makefile.cfg (move_if_change): Remove definition. + ($(srcdir)/m4/jm-glibc-io.m4): Use mv, not move-if-change. + +2001-11-23 Jim Meyering <meyering@lucent.com> + + * cp.c, df.c, du.c, install.c, ln.c, ls.c, mkdir.c (usage): + * mkfifo.c, mknod.c, mv.c, shred.c, touch.c (usage): + Note that ``Mandatory arguments to long options are mandatory + for short options too.'' + + * src/shred.c (usage): Use `output', not `print' in description of + the --version option, so this message is consistent with all the rest. + + * chgrp.c, chmod.c, chown.c, cp.c, dd.c, df.c, dircolors.c (usage): + * du.c, install.c, ln.c, ls.c, rm.c, rmdir.c, shred.c, touch.c (usage): + Split --help output into smaller pieces. + Use fputs, not printf. + + * src/cp-hash.c: Use opaque type, Hash_table, not `struct hash_table'. + * src/du.c: Likewise. + * src/remove.c: Likewise. + +2001-11-22 Jim Meyering <meyering@lucent.com> + + Don't fail for commands like this: cp a a d/ + This change in behavior was introduced in 4.1.1, as part of the + 2001-09-28 change. cp and mv still fail for commands like this: + rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c + + * src/copy.c (triple_hash_no_name): New function. + (src_info_init): New function. + (copy_internal): Warn and return early for the second and subsequent + occurrences of the same source file named on the command line. + * src/copy.h (struct cp_options) [src_info]: New member. + * src/install.c (cp_option_init): Initialize new member. + * src/mv.c (cp_option_init): Likewise. + * src/cp.c (cp_option_init): Likewise. + (do_copy): Call src_info_init. + + * tests/mv/dup-source: New test for the above. + * tests/mv/Makefile.am (TESTS): Add dup-source. + + * src/copy.c (seen_file): Change type of `stats' parameter to pointer. + (copy_internal): Update caller. + + * src/copy.c (struct F_triple): Rename from dest_info. + (seen_file): Rename from seen_dest. Rename parameters accordingly. + (record_file): Rename from record_dest. Rename parameters accordingly. + (triple_hash): Rename from dest_info_hash. + (triple_compare): Rename from dest_info_compare. + (triple_free): Rename from dest_info_free. + + * src/mknod.c (main): Add a literal format string to suppress + a warning from gcc's -Wformat-security. + + copy.c shouldn't maintain static state. + + * src/copy.c (dest_info): Remove declaration of file-scoped global. + (dest_info_init): Require a parameter. + Update all callers. + (seen_dest): Require a hash table parameter. Update callers. + (record_dest): Likewise. + * src/copy.h: Include hash.h. + (struct cp_options) [dest_info]: New member. + * src/install.c (cp_option_init): Initialize new member. + * src/mv.c (cp_option_init): Likewise. + * src/cp.c (cp_option_init): Likewise. + (do_copy): Remove const attribute from declaration of parameter, x. + +2001-11-17 Jim Meyering <meyering@lucent.com> + + * tests/chmod/equals: New test for the just-fixed bug in + lib/modechange.c. + * tests/chmod/Makefile.am (TESTS): Add equals. + + * configure.ac: Replace use of the one-arg form of AC_INIT + with a use of the 3-arg form and a use of AC_CONFIG_SRCDIR. + +2001-11-12 Jim Meyering <meyering@lucent.com> + + * tests/rm/r-3: Clean up. + +2001-11-09 Jim Meyering <meyering@lucent.com> + + * configure.ac: Use AC_CONFIG_FILES(...) and call AC_OUTPUT with no + arguments. + +2001-11-06 Jim Meyering <meyering@lucent.com> + + * src/dircolors.hin: Remove duplicate entry for .png. + Reported by FrĂ©dĂ©ric L. W. Meunier. + +2001-11-03 Jim Meyering <meyering@lucent.com> + + * Version 4.1.1. + + * src/ls.c (DEV_INO_PUSH): Avoid unnecessary copies. + (dev_ino_pop): Likewise. + +2001-11-02 Jim Meyering <meyering@lucent.com> + + * src/ls.c: Rename global: s/trace_dirs/recursive/. + (extract_dirs_from_files): Rename parameter: + s/recursive/ignore_dot_and_dot_dot/. + + * src/ls.c: (dev_ino_pop): Cast 2nd arg of obstack_blank to `int' + before negating to avoid warning from gcc on systems with 64-bit size_t. + + * src/ls.c: Use XMALLOC and XREALLOC in a several places. It's cleaner. + +2001-11-01 Jim Meyering <meyering@lucent.com> + + * src/ls.c: Include dirfd.h. + (print_dir): If dirfd fails, resort to using stat. + + * tests/ls/infloop: Redirect cmp's stderr to /dev/null. + + * src/ls.c (struct pending) [st_ino, st_dev]: Remove members. + (queue_directory): Remove just-added 3rd parameter + and associated code, and update callers. + (print_dir): Get dev/inode pair via `fstat (dirfd (reading), ...', + and call visit_dir to detect cycles here. + Push the dev/inode pair onto the new stack. + (dev_ino_obstack): New global. + (DEV_INO_PUSH): New macro. + (dev_ino_pop): New function. + (ASSERT_MATCHING_DEV_INO): New macro. + (visit_dir): Take two parameters (dev,ino), not one `pending'. + (main): Initialized the dev_ino_obstack. + Don't call visit_dir here. + Get the dev/ino pair from the new stack, not from the pending entry. + + Make ls -R detect directory cycles. + Add loop detection without incurring an additional stat call per + directory processed. To detect loops efficiently (i.e., time: +O(1) + per directory processed by ls -R, total additional space: + O(max-tree-depth)), record the dev/ino of each `active' directory + in a hash table. To know when a directory is no longer active, + insert a marker (name == NULL) entry for it in the pending queue. + When a marker comes to the front of the queue, that directory is no + longer active, and must be removed from the hash table. To remove it, + we need to know its dev/ino again. Since by the time a directory + has become inactive its files[] info is long gone and it's DIR* + is closed, I must either save the dev/ino someplace (pending seemed + logical) or recompute them via stat. + + The following change will convert to using a stack of dev/ino pairs + instead, pushing an entry when doing the opendir (use fstat on + dirfd (reading)), and popping (when encountering a marker) to get + the dev/ino pair to be removed from the hash table. + + * src/ls.c: Include hash.h, same.h, and xalloc.h. + (INITIAL_TABLE_SIZE, LOOP_DETECT): Define. + (active_dir_set): New global. + (struct dev_ino): Declare. + (dev_ino_hash, dev_ino_compare, dev_ino_free): New functions. + (visit_dir, free_pending_ent): New functions. + (main): Initialize the active_dir_set hash table, if necessary. + Don't confuse a marker entry with a real one. + Detect loops. + Manage the set of active directories. + Free the hash table. + (queue_directory): Add a new parameter. + Ensure that we set the new dev/ino members for each enqueued directory. + Update all callers. + (print_dir): Don't confuse a marker entry with a real one. + (extract_dirs_from_files): Insert a marker entry before inserting + the entries for subdirectories. + + Don't try to print a NULL pointer. + * src/ls.c (main): Don't use ARGMATCH_TO_ARGUMENT. + This reverts part of the 1998-12-31 change. + * tests/ls/dired: New test, for the above. + * tests/ls/Makefile.am (TESTS): Add dired. + +2001-10-24 Jim Meyering <meyering@lucent.com> + + * src/cp.c (main): Free hash table storage. + * src/cp-hash.c (forget_all): Use hash_free, not hash_clear. + +2001-10-22 Paul Eggert <eggert@twinsun.com> + + * src/sys2.h (alloca): Define to __builtin_alloca if __GNUC__, + to avoid a warning if -Wall. + +2001-10-21 Paul Eggert <eggert@twinsun.com> + + * src/dd.c: Remove as many instances of 'unsigned' as + possible, as some of them were not conforming to ANSI C, and + they made the code hard to read. Avoiding 'unsigned' cuts + down on the number of casts. + + (newline_character, space_character, save_char): + Now char, not unsigned char. + (obuf): Now char *, not unsigned char *. + (ascii_to_ebcdic, ascii_to_ibm, ebcdic_to_ascii): + Now char[], not unsigned char[]. + (translate_charset, translate_buffer, swab_buffer, skip, copy_simple, + copy_with_block, copy_with_unblock): + Arg now points to char, not unsigned char. + All callers changed. + (translate_charset, parse_conversion, apply_translations): + Use int index, not unsigned int. + (bit_count): Arg is now int, not unsigned int. + Callers not changed, as they already assumed this. + (translate_buffer): Cast char to unsigned char before using + it as a subscript. + (swab_buffer): Returns char *, not unsigned char *. + (dd_copy): Use char, not unsigned char, for buffers. + Use size_t for possibly-large index, not unsigned int. + +2001-10-21 Jim Meyering <meyering@lucent.com> + + * src/shred.c (isaac_seed_machdep): Handle SIGSEGV, too. Ick. + + * tests/mv/Makefile.am (TESTS): Remove i-3. It's not portable. + + * src/copy.c: Include xreadlink.h. + (copy_internal): Don't use PATH_MAX. + Rewrite the symlink-copying code to use xreadlink. + +2001-10-20 Jim Meyering <meyering@lucent.com> + + * src/touch.c (touch): Extend last change to work on systems + for which errno is set to EINVAL. + + * src/ls.c: Declare some local variables to be `const', where + appropriate. + (usage): Improve the description of --dereference (-L). + + * src/rm.c (usage): Clarify description of --directory (-d). + Based on a patch from Michael Stone. + + * man/chmod.x: Describe sticky files and directories. + From Michael Stone. + + * tests/mv/partition-perm: Don't use a umask that removes owner + read/write. Use a stricter test for permissions. + + * tests/cp/link-preserve: Don't use a umask that removes owner + read/write. That would induce spurious failures in a probably- + outdated version of purify. + +2001-10-18 Jim Meyering <meyering@lucent.com> + + * src/mv.c (movefile): Now that remember_copied xstrdup's the file + name, free `new_dest'. + + Plug a leak. + * src/cp-hash.c (remember_copied): Use src_to_dest_free to free + the entry we couldn't insert. + + Don't use free'd memory. + * src/copy.c (dest_info_free): New function. + (dest_info_init): Make the hash table code use it. + (record_dest): Store each DEST in malloc'd memory. Hence the above. + Use dest_info_free to free the `ent' we couldn't insert. + +2001-10-14 Jim Meyering <meyering@lucent.com> + + Now, -P is the same as --no-dereference, per POSIX. + Use --parents to get the old meaning. + + * src/cp.c (enum) [NO_DEREFERENCE_OPTION]: Remove member. + (long_opts): Associate --no-dereference with `-P'. + (usage): Update description of -P. + (main): Remove local, used_P_option, and code to warn + that the meaning of -P would be changing. + +2001-10-13 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): Tighten up and add comments + describing the test for when to record (via remember_copied) + a <dst_path, source_dev, source_ino> triple. + Relax the test that guards the hard-linked-dir check and + the hard-link-preserving code. + + Remove the link-preserving semantics from cp_options.dereference. + Clean up the code that preserves links for `cp -d' and `mv'. + Introduce new options: + --preserve[={mode,ownership,timestamps,links,all}] + --no-preserve={mode,ownership,timestamps,links,all} + -p and --preserve remain unchanged and are equivalent to + `--preserve=mode,ownership,timestamps' + + * src/cp.c (enum) [NO_DEREFERENCE_OPTION]: New member. + (enum) [NO_PRESERVE_ATTRIBUTES_OPTION]: New member. + (enum) [PRESERVE_ATTRIBUTES_OPTION]: New member. + (long_opts): Separate -d and --no-dereference options. + Add `no-preserve'. + Separate -p and --preserve options. + The long-named --preserve now accepts optional arguments; -p doesn't. + (usage): Describe additions and changes. + (cp_option_init): Initialize new member, preserve_links, to 0. + (decode_preserve_arg): New function. + (main) [case 'a']: Set preserve_links to 1. + [case 'd']: Set preserve_links to 1. + Add `case' for long-named --no-dereference. + Handle long-named --no-preserve and --preserve. + + * src/copy.h (enum Dereference_symlink): Add comments. + (struct cp_options) [preserve_links]: New member. + * src/install.c (cp_option_init): Initialize new member to 0. + * src/mv.c (cp_option_init): Initialize new member to 1. + + * tests/cp/link-preserve: Add tests for some of the above. + +2001-10-13 Jim Meyering <meyering@lucent.com> + + * src/copy.h (struct cp_options) [failed_unlink_is_fatal]: Remove + unused member. + * src/mv.c (cp_option_init): Don't set it. + * src/cp.c (cp_option_init): Likewise. + * src/install.c (cp_option_init): Likewise. + + * src/copy.h (struct cp_options): Rename members: + s/preserve_owner_and_group/preserve_ownership/, and + s/preserve_chmod_bits/preserve_mode/. + * src/copy.c, src/cp.c, src/install.c, src/mv.c: Update all uses. + + * man/chown.x: Fix typo: s/Sh/SH/ before OPTIONS. + Reported by Eric S. Raymond. + +2001-10-12 Jim Meyering <meyering@lucent.com> + + * tests/ls/Makefile.am (TESTS): Add infloop. + (XFAIL_TESTS): Mark it as a test that we expect to fail (temporarily). + * tests/ls/infloop: New file. + +2001-10-11 Jim Meyering <meyering@lucent.com> + + * src/mknod.c (main): Tell what's wrong with `mknod c zero 1 5' rather + than saying just `Try `./mknod --help' for more information.'. + Suggestion from Karl Berry. + +2001-10-07 Jim Meyering <meyering@lucent.com> + + * TODO: Remove items relating to cp-hash.c, now that they're done. + + Allow cp -d (and mv when it resorts to copying) to preserve + hard links that span command line arguments. + + * src/cp.c (do_copy): Don't clear the hash table after processing + each command line argument. + * tests/cp/link-preserve: New test for the above. + * tests/cp/Makefile.am (TESTS): Add link-preserve. + + * src/cp-hash.c (remember_copied): Make a local copy of the file name. + (src_to_dest_free): New function (to free the above). + (hash_init): Register src_to_dest_free. + * src/copy.c (copy_dir): Now that remember_copied copies the + file name, free the temporary `dst_path' allocated here. + +2001-10-06 Jim Meyering <meyering@lucent.com> + + Convert du.c to use the functions in lib/hash.c, not private, + slightly-modified copies of those that used to be in cp-hash.c. + + * src/du.c (struct entry) [coll_link]: Remove member. + (struct htab): Remove. + (hash_reset, hash_init, hash_insert2, hash_insert): Remove functions. + + * src/du.c: Include hash.h and same.h. + (htab): Change type of global to `struct hash'; + (entry_hash, entry_compare, hash_ins): New functions. + (count_entry): Use hash_ins instead of hash_insert. + +2001-10-06 Jim Meyering <meyering@lucent.com> + + Rewrite cp-hash.c to use the functions in lib/hash.c. + + * src/cp-hash.c (hash_init): Die if hash_initialize fails. + + * src/cp-hash.c: Rewrite to use the functions in lib/hash.c. + * src/cp-hash.h: Update prototype for hash_init. + * src/mv.c (do_move): Reflect that hash_init now takes no arguments. + * src/install.c (main): Likewise. + * src/cp.c (main): Likewise. + +2001-10-06 Jim Meyering <meyering@lucent.com> + + * src/copy.c (record_dest): Avoid a small leak. + +2001-10-06 Jim Meyering <meyering@lucent.com> + + This decreases the memory footprint a little, when copying + hierarchies containing many files. + + * src/copy.c (copy_internal): Call remember_copied only if + the source file has 1 < st_nlink, or if it's a directory. + Now that EARLIER_FILE is set conditionally, initialize it to NULL. + + * tests/mv/childproof: Redirect stderr on one test. + +2001-10-05 Jim Meyering <meyering@lucent.com> + + * src/copy.c: Include hash-pjw.h and remove definition of hash_pjw. + * src/remove.c: Likewise. + +2001-10-01 Jim Meyering <meyering@lucent.com> + + * src/remove.c (hash_pjw): Remove function. + * src/copy.c: Likewise. + +2001-09-29 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): Call record_dest for all types of + files (for which this makes sense), not just regular ones. + + * mkinstalldirs: Update from master. + + * Makefile.maint (wget-update): Add mkinstalldirs. + +2001-09-28 Jim Meyering <meyering@lucent.com> + + This mv command should fail (likewise for cp), rather than + silently clobbering one of the source files. + rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c + Reported by Dan Jacobson. + + * src/cp.c (do_copy): Call dest_info_init if necessary. + * src/install.c (main): Likewise. + * src/mv.c (main): Likewise. + * src/copy.h (dest_info_init): Declare. + * src/copy.c: Include "hash.h" and "same.h". + (struct Dest_info): Define. + (dest_info): Declare global. + (DEST_INFO_INITIAL_CAPACITY): Define. + (hash_pjw): New function. + (dest_info_hash): Likewise. + (dest_info_compare): Likewise. + (dest_info_init): Likewise. + (seen_dest): Likewise. + (record_dest): Likewise. + (copy_internal): If the destination exists, fail if it's in the set + of files that have already been created as part of this mv or cp. + (copy_internal) [move_mode]: Record the destination dev/ino/filename. + (copy_internal) [!move_mode, regular file]: Likewise. + + Accept new option: --reply={yes,no,query} + * src/cp.c: (enum) [REPLY_OPTION]: Define. + (usage): Describe new option. + Split long usage string into smaller pieces. + (main): Handle new option. + + * missing: Update from master. + * config.guess: Likewise. + * config.sub: Likewise. + + * configure.ac: Tell automake to use the file name `config.hin' + rather than the two-`.' config.h.in. + +2001-09-26 Jim Meyering <meyering@lucent.com> + + * man/Makefile.am (common_dep): s/configure.in/configure.ac/. + + * configure.ac: Renamed from configure.in. + + * INSTALL, mkinstalldirs: Update to autoconf 2.50 version. + +2001-09-23 Jim Meyering <meyering@lucent.com> + + * tests/mv/childproof: New test, for the above fix. + Based on a report from Dan Jacobson. + * tests/mv/Makefile.am (TESTS): Add childproof. + + * Makefile.am (SUBDIRS): When using newer gettext (in which + intl/libintl.h is created by rules intl/Makefile) + `intl' must precede `lib'. + +2001-09-22 Jim Meyering <meyering@lucent.com> + + Mostly clean-up (modulo the better diagnostic). + * src/copy.c (copy_internal): Rename parameter, move_mode, to + command_line_arg, and adjust caller. Now, move_mode is a local + that is derived from command_line_arg. + Factor some involved code to produce something slightly more readable. + Use x->move_mode, not move_mode in determining which diagnostic + to give (`backing up %s would destroy source; %s not moved'). + +2001-09-16 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (usage): Fix typo in -g usage. + -H now means --dereference-command-line. + +2001-09-16 Jim Meyering <meyering@lucent.com> + + * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5. + + * man/Makefile.am (*.1): Depend on *source* files, not binaries. + (.x.1): Add code to work around ginstall vs. install exception. + + * man/Makefile.am (dist_man_MANS): Use dist_man_MANS, not man_MANS. + +2001-09-15 Jim Meyering <meyering@lucent.com> + + Convert to a more conventional (e.g., like autoconf) Makefile.am. + * man/Makefile.am: Remove hacks. + * man/GNUmakefile: Remove file. + * man/Makefile.summ: Remove file. + * man/Makefile.maint: Remove file. + * man/ginstall.x: Remove. Renamed to ... + * man/install.x: ... this. New file. + Michael Stone reported that man pages weren't built in non-srcdir build. + + * src/touch.c (EISDIR): Define to 0, if not already defined. + (touch): Give a better diagnostic for e.g., `touch /' by non-root. + Based on a patch from Michael Stone. + Reported by Jeff Sheinberg as Debian bug #101677. + * tests/touch/fail-diag: New test, for the above fix. + * tests/touch/Makefile.am (TESTS): Add fail-diag. + + * src/copy.c (copy_internal) [move_mode]: Support the new + --reply=... option. + (UNWRITABLE): Define (factored out of copy_internal). + (copy_internal): Use UNWRITABLE. + + Accept new option: --reply={yes,no,query} + * src/mv.c: Include argmatch.h. + (enum) [REPLY_OPTION]: Define. + (usage): Describe new option. + Split long usage string into smaller pieces. + (main): Handle new option. + + * src/cp.c (main): Reflect renaming: s/I_ON/I_ASK_USER/. + + * src/copy.h (enum Interactive): Remove members, I_OFF and I_ON. + Instead, add I_ALWAYS_YES, I_ALWAYS_NO, and I_ASK_USER. + + * tests/mv/i-2: Clean up: use priv-check rather than open-coding it. + +2001-05-11 Paul Eggert <eggert@twinsun.com> + + * src/chmod.c, src/chown.c, src/mkdir.c, src/rm.c, src/rmdir.c (main): + Don't strip trailing slashes; POSIX doesn't allow it here. + Don't include "dirname.h" when no longer needed. + +2001-09-08 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): Add braces around now-multi-stmt + if-block. This fixes a bug introduced by my 2001-08-06 change. + * tests/mv/i-4: New test, for the above. + * tests/mv/Makefile.am (TESTS): Add i-4. + +2001-09-04 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (get_link_name): Update use of xreadlink. + +2001-09-02 Jim Meyering <meyering@lucent.com> + + * tests/priv-check: Change usage not to use $1. + That's not portable to e.g., Solaris2.6's /bin/sh. + Communicate via an envvar instead. + * tests/mv/i-3: Don't pass an argument to a sourced script. + * tests/cp/special-bits: Likewise. + * tests/chown/basic: Likewise. + + * Makefile.maint (alpha): Depend on local-check so that they run + a little earlier. + +2001-09-01 Jim Meyering <meyering@lucent.com> + + * src/df.c (show_point): Use canonicalize_file_name, if possible. + [HAVE_RESOLVEPATH], [!HAVE_RESOLVEPATH]: Use malloc, not alloca, + so that these two paths also produce `resolved' in malloc'd storage. + Free that memory when done with it. + + * src/ls.c: Include "xreadlink.h". + (get_link_name): Don't use PATH_MAX. + Rewrite to use xreadlink. + +2001-08-30 Paul Eggert <eggert@twinsun.com> + + * src/chgrp.c: Do not include savedir.h; not used. + * src/chown.c: Likewise. + + * src/chmod.c (change_dir_mode): Remove statp arg; no longer needed. + * src/chown-core.c (change_dir_owner): Likewise. + * src/du.c (count_entry): Remove st_size argument. + * src/copy.c (copy_dir): Likewise. + +2001-08-30 Paul Eggert <eggert@twinsun.com> + + * src/copy.c: Include full-write.h. + * src/dd.c: Likewise. + + * src/copy.c (full_write): Remove decl; not needed. + * src/dd.c: Likewise. + * src/install.c: Likewise. + * src/mv.c: Likewise. + + * src/copy.c (copy_reg): + Don't assume read and write size fits in int. + * src/dd.c (open_fd): Likewise. + +2001-08-30 Paul Eggert <eggert@twinsun.com> + + * src/remove.c (bool): Remove; moved to... + * src/system.h: ...here. + + * src/du.c (count_entry, main): Reflect changes to the + exclude functions. + +2001-08-13 Jim Meyering <meyering@lucent.com> + + * src/cp.c, src/dd.c, src/ln.c, src/ls.c, src/mv.c (AUTHORS): Mark + string for translation, since it contains the English word `and'. + + * Makefile.maint (author_mark_check): New rule. + (local-check): Depend on it. + + Change the rules governing when mv prompts before removing an + existing destination file so it is consistent with POSIX: + Now, in the absence of --force (-f), if stdin is a tty and an + existing destination is not writable mv will prompt before + overwriting the destination file. + Reported by Vin Shelton. + + * src/copy.c (overwrite_prompt): New function. + (copy_internal): Separate the mv-specific and non-move_mode code + that determines whether to prompt the user. + [move_mode]: Don't make mv fail (i.e. don't return 1) just because + the user declined to remove one or more of the files. + * src/copy.h (enum Interactive): New type. + (struct cp_options) [interactive]: Change type to Interactive. + (struct cp_options) [stdin_tty]: New member. + * src/cp.c (cp_option_init): Adjust initialization of `interactive', + and initialize new member, stdin_tty. + * src/mv.c (cp_option_init): Likewise. + * src/install.c (cp_option_init): Likewise. + * src/cp.c (main): Adjust initialization(s) of `interactive', + * src/mv.c (main): Likewise. + * tests/mv/i-1: Change expected exit status to reflect the above. + +2001-08-12 Jim Meyering <meyering@lucent.com> + + * tests/mk-script ($program_name): Define. + (main): Use $program_name, rather than long-inaccurate `build-script'. + (main): Iterate over the sorted keys (rather than `while...each...'), + so this script produces the same output regardless of which version + of perl (e.g., perl5.6) is used. + + Work around non-compliant gettimeofday on Mac OS X 10.0.4, + (aka Darwin 1.3.7) that caused the date of the first file listed + in long output to be the current time rather than the file's mtime. + The real work is in m4/gettimeofday.m4 and the wrapper function, + lib/gettimeofday.c. + * src/ls.c: Include gtod.h. + (main): `Call' GETTIMEOFDAY_INIT. + (print_long_format): Add a comment about gettimeofday. + Report and diagnosis from Bernhard Baehr. + + * src/shred.c: Include gtod.h. + (main): `Call' GETTIMEOFDAY_INIT, just in case the code ever changes + to make it necessary. + +2001-08-10 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (print_long_format): Simplify previous patch for + listing negative sizes, by adding OFF_T_MAX - OFF_T_MIN + 1 + instead of doing a fancy conditional shift. This is simpler + and it avoids GCC's bogus compile-time warning about shift + counts. (As a bonus, it is portable to hosts that do not use + twos-complement arithmetic. :-) + +2001-08-10 Jim Meyering <meyering@lucent.com> + + * ls.c (print_long_format): Multiply the shift width by zero + to avoid a warning from gcc on hosts with an unsigned type for the + st_size member. + +2001-08-06 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (print_long_format): If a file size is negative, assume + the typical case where it has wrapped around from a positive value. + +2001-08-07 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (m4-check): New rule. + (local-check): Depend on it. + +2001-08-06 Jim Meyering <meyering@lucent.com> + + Fix the bug whereby `mv -uf source dest' would delete source, + even though it's older than dest. + + * src/mv.c (usage): Correct the description of --update. + * src/copy.c (copy_internal): Set *rename_succeeded, so that + the caller (mv) doesn't remove the source file. + Reported by Phelippe Neveu. + + * tests/mv/update: New test for the above. + * tests/mv/Makefile.am (TESTS): Add update. + +2001-08-05 Jim Meyering <meyering@lucent.com> + + * tests/root-only: Generalize. Rename to ... + * tests/priv-check: ...this. New file. Renamed from the above. + * tests/Makefile.am (EXTRA_DIST): Reflect renaming. + * tests/mv/i-3: Reflect name and usage changes. + * tests/chown/basic: Likewise. + * tests/cp/special-bits: Likewise. + * tests/sample-test: Likewise. + +2001-08-04 Jim Meyering <meyering@lucent.com> + + * tests/root-only: Remove *all* write access, not just that + of the owner. + + * tests/mv/i-3: New test for the above fix. + * tests/mv/Makefile.am (TESTS): Add i-3. + +2001-08-03 Paul Eggert <eggert@twinsun.com> + + * ls.c (quote_name): Pass 0 to mbsnwidth, since the default + got changed and we want the default now. + +2001-08-03 Paul Eggert <eggert@twinsun.com> + + * ls.c (quote_name): Pass 0 to mbsnwidth, since the default + got changed and we want the default now. + +2001-07-15 Jim Meyering <meyering@lucent.com> + + * src/Makefile.am (INCLUDES): Add -I../lib so sys2.h can include + the new, generated file, unlocked-io.h. + + * src/sys2.h: Include "unlocked-io.h", rather than hard-coding the + HAVE_*_UNLOCKED macros. + + * Makefile.cfg ($(srcdir)/m4/jm-glibc-io.m4): New rule. + +2001-07-14 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (tgz-size): Also work for sizes in the kilobyte range. + + * Makefile.maint: More changes from autoconf. + + Changes from autoconf. + * Makefile.maint (GZIP_ENV): Add --best. + (AMTAR): Define. + (writable-files): Factor out ../release/ constant, and work (by + creating it) even if such a directory doesn't exist. + +2001-07-08 Jim Meyering <meyering@lucent.com> + + * src/copy.c (get_dest_mode): Clear set-user-ID and set-group-ID bits + when copying (i.e., not in move mode) and not preserving permissions. + Reported by kytek@cybercomm.net. + FIXME: add a test for this!!! + +2001-07-02 Jim Meyering <meyering@lucent.com> + + * src/ln.c (do_link): Test the boolean symbolic_link, not the function, + symlink. Patch by Frederik Eaton. + +2001-06-17 Jim Meyering <meyering@lucent.com> + + * Makefile.maint: Factor out definitions specific to fileutils, + sh-utils, and textutils, so that other packages can use the framework. + Patch by Akim Demaille. + * Makefile.cfg: New file with package-specific definitions. + * GNUmakefile: Include Makefile.cfg. + * Makefile.am (EXTRA_DIST): Add Makefile.cfg. + +2001-06-16 Jim Meyering <meyering@lucent.com> + + * src/ls.c (main): Recheck global print_with_color after calling + parse_ls_color, since that function may have reset it. + Based on a patch from Richard Dawe. + +2001-06-16 Jim Meyering <meyering@lucent.com> + + * config.sub: Update from master repository. + * config.guess: Likewise. + +2001-06-09 Jim Meyering <meyering@lucent.com> + + * configure.in (ALL_LINGUAS): Add Turkish (tr). + +2001-05-25 Jim Meyering <meyering@lucent.com> + + * src/ls.c (print_long_format): Don't truncate user names + or group names that are longer than 8 characters. + + Add definitions that let me factor the wget rule while still letting + me accommodate the fact that these files reside in several different + directories and come from different places. + * Makefile.maint (wget-files): Define. + (get-targets, *-local_dir, *-url_prefix): Likewise. + (target, url, local_file): Convenience variables. + ($(get-targets)): The factored rule. + +2001-05-24 Jim Meyering <meyering@lucent.com> + + * src/ansi2knr.c: Update from master source. + + * Makefile.maint (wget-update): Have wget write to a temporary file, + and replace the original only if wget succeeds. + Also get ansi2nkr.c. + (move-if-change): Define. + (wget-update): Use it in place of mv. + + * src/ls.c: Use `#if D_TYPE_IN_DIRENT && defined DTTOIF' to + determine whether to enable the DT_INIT definition, not the less + portable `#if defined _DIRENT_HAVE_D_TYPE || defined DTTOIF'. + Reported by Eli Zaretskii. + + * src/mkfifo.c (main): Remove quotes around %s. + The argument is already quoted via the quote function. + * src/mknod.c (main): Likewise. + Reported by Göran Uddeborg. + +2001-05-21 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (wget-update): depcomp and missing are now in + automake's lib/ subdirectory. + +2001-05-11 Paul Eggert <eggert@twinsun.com> + + Add new --time-style option. + Change --full-time to be equivalent to --time-style=full-iso. + + * NEWS, doc/omni-utils.texi: Describe this change. + + * src/ls.c: Include "hard-locale.h". + (nstrftime): New decl. + (enum time_style): New enum. + (time_style_args, time_style_types): New constants. + (full_time): Remove. + (long_time_format): Initialize to POSIX defaults. + (TIME_STYLE_OPTION): New constant. + (long_options, decode_switches, usage): Add --time-style support. + (long_time_expected_width): Use nstrftime, not strftime. + (print_long_format): Likewise. + Increase initial size to match new full-iso time style. + + * tests/ls/time-1: Unset QUOTING_STYLE and TIME_STYLE. Set TZ. + Adjust to change in full-time format. + Fix typo in failure messages (-a and -m were interchanged). + +2001-05-20 Jim Meyering <meyering@lucent.com> + + * doc/Makefile.am (EXTRA_DIST): Add constants.texi and doclicense.texi. + (info_TEXINFOS): s/fileutils/omni-utils/. + (check-texinfo): New rule. + (check): Depend on check-texinfo. + + * doc/omni-utils.texi (uniq invocation): Document the new optional + arguments to the --all-repeated option. + Make all references to POSIX use @sc{posix}. + +2001-05-19 Jim Meyering <meyering@lucent.com> + + * doc/fileutils.texi: Remove. + + * doc/omni-utils.texi: Change a few uses of `timezone' to `time zone'. + Reported by Stephen Eglen. + +2001-05-16 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (my-distcheck): Remove work-around kludge and + associated comment, now that automake has ben fixed. + +2001-05-12 Paul Eggert <eggert@twinsun.com> + + Clean up some of the places where the code assumed that random + types like 'mode_t' fit into 'int', which POSIX doesn't guarantee. + + * src/ls.c (struct fileinfo.linkmode): Now st_mode. + (print_color_indicator, print_name_with_quoting, print_type_indicator, + length_of_file_name_and_frills): + Use mode_t, not unsigned int, to store modes. + (dired_dump_obstack): Do not assume size fits in 'int'. + (get_link_name): readlink returns ssize_t, not int. + (make_link_path): Store buffer size as size_t, not int. + (print_long_format): Use unsigned long, not unsigned, to print + nlink_t, uid_t, gid_t, major_t, minor_t. + +2001-05-13 Paul Eggert <eggert@sic.twinsun.com> + + * src/mknod.c (main): Check for NODEV device only if NODEV is defined. + * src/system.h (NODEV): Remove, undoing previous change. + +2001-05-13 Jim Meyering <meyering@lucent.com> + + * src/remove.c (dir_name, dir_len): Define to different names + to avoid shadowing warnings due to new declarations from dirname.h. + + * tests/Fetish.pm (run_tests): Fail if any test name is longer + than 12 bytes. + * tests/ls-2/tests: Shorten test names so the length of a + resulting file name doesn't exceed 14. + +2001-05-12 Paul Eggert <eggert@twinsun.com> + + * src/system.h (NODEV): New macro, if not already defined. + + * src/mknod.c (main): Check for overflow when converting out + of uintmax_t. Do not assume that major_t and minor_t are no + wider than int. Check for makedev failures. Convert device + numbers via uintmax_t, not unsigned long, just in case. + Coalesce duplicate code in the block and character device + cases. + +2001-05-11 Paul Eggert <eggert@twinsun.com> + + Add new --dereference-command-line option. + -H now means this instead of meaning --si, as POSIX requires. + + * NEWS, doc/omni-utils.texi: Document this. + + * src/ls.c (enum Dereference_symlink): New type. + (dereference): New var, replacing trace_links, which was removed. + (long_options, main, decode_switches, gobble_file, usage): + Implement the changes. + + * tests/ls-2/tests: + Rename slink-dir test to slink-dir-dF. Add new tests + slink-dir-F, slink-dir-dFH, slink-dir-dFL. + +2001-05-11 Paul Eggert <eggert@twinsun.com> + + dirname code cleanup. base_name now behaves more compatibly + with POSIX basename when given file names that have trailing + slashes, and similarly for dir_name. Add new primitives + base_len and dir_len. Put the directory-name-related decls + into dirname.h. + + * src/chmod.c (strip_trailing_slashes): Remove; now in dirname.h. + * src/chown.c (strip_trailing_slashes): Likewise. + * src/cp.c (strip_trailing_slashes): Likewise. + * src/df.c (strip_trailing_slashes): Likewise. + * src/ln.c (strip_trailing_slashes): Likewise. + * src/mkdir.c (strip_trailing_slashes): Likewise. + * src/rm.c (strip_trailing_slashes): Likewise. + * src/rmdir.c (strip_trailing_slashes): Likewise. + + * src/dircolors.c, src/ls.c, src/remove.c: + Include "dirname.h", to get base_name. + + * src/cp.c (make_path_private): Use dir_len instead of + dir_name, and avoid an extra mealloc call. + + * src/df.c (find_mount_point): No need to strip trailing + slashes before invoking new dir_name. + + * src/mv.c: Include "dirname.h". + (strip_trailing_slashes_2): Remove; now done by + strip_trailing_slashes. All callers changed. + + * src/sys2.h (base_name): Remove decl; now in dirname.h. + + * src/copy.c (copy_internal): Remove the code that tested for NULL + dir_name return value. That can't happen. + +2001-05-12 Jim Meyering <meyering@lucent.com> + + * src/ls.c (usage): Wording changes related to -o, -n, and -g. + * doc/omni-utils.texi: Likewise. + From Paul Eggert. + +2001-05-11 Paul Eggert <eggert@twinsun.com> + + * src/chmod.c (mode_changed, change_file_mode): + There's no need to invoke both lstat and stat here, so call just + one of the two functions. + +2001-05-11 Jim Meyering <meyering@lucent.com> + + * doc/omni-utils.texi: New file. The union of fileutils.texi, + sh-utils.texi, and textutils.texi. Merged by Brian Youmans. + + * src/shred.c (usage): Warn about backups and mirrors. + * doc/omni-utils.texi (shred invocation): Likewise. + From Nelson Beebe. + +2001-05-09 Jim Meyering <meyering@lucent.com> + + * src/ls.c (main): Don't set `format_needs_stat' for --recursive (-R), + because that would make `ls -RF dir' stat unnecessarily all of the + files in dir/ on some systems. + Similarly, don't set `format_needs_stat' for --dereference (-L), + because that would make `ls -RLF dir' stat unnecessarily all non-symlink + files in dir/ on some systems. + Instead, ... + (gobble_file): ... also stat a file if `trace_dirs' (-R) is set and its + type is unknown. + ... also stat a file if `trace_links' (-L) is set and the file is a + symlink or its type is unknown. + (print_dir): Also recognize DT_REG and DT_LNK. + +2001-05-07 Jim Meyering <meyering@lucent.com> + + * src/chown.c (main): Fix thinko that made --from=... fail: + s/argv[optind]/optarg/. Reported by Andrew Pham. + + * tests/chown: New directory. + * tests/chown/basic: New (root-only) test for the above. + * tests/cp/special-bits: Factor out the root-only test into this ... + * tests/root-only: ... new file. + * tests/Makefile.am (EXTRA_DIST): Add root-only. + (SUBDIRS): Add chown. + * tests/chown/Makefile.am: New file. + * configure.in (AC_OUTPUT): Add tests/chown/Makefile. + +2001-05-05 Jim Meyering <meyering@lucent.com> + + * src/ls.c (decode_switches): Complain if the envvar, QUOTING_STYLE, + is set to an invalid value. + Move some declarations of locals into scopes where they're used. + +2001-05-02 Jim Meyering <meyering@lucent.com> + + * doc/texinfo.tex: Update from master repository. + * config.sub: Likewise. + * config.guess: Likewise. + +2001-05-01 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (tgz-size, xd-size): Compute sizes. + (announcement): Include sizes of .tar.gz and .xdelta files + in the announcement. + + * src/ls.c (print_owner): New global variable. + (usage): Update the descriptions of -g. + (decode_switches): Honor the -g option (omit owner information), + now that POSIX specifies it. + (print_long_format): Don't print owner name if -g was specified. + Move declaration of `user_name' into the scope where it's used. + (print_group): Rename global from `inhibit_group'. Update all + uses accordingly. + * doc/fileutils.texi (What information is listed): Describe -g. + * TODO: Remove item for ls -g. + + * src/ls.c (decode_switches): Make -n work just like -l, except + with numeric IDs, per POSIX. Before, to have any effect, -n had + to be used with -l. Reported by Dale Scheetz. + (usage): Update the description of -n. + Separate the descriptions of -n and --numeric-uid-gid. + Split string in --help output that had exceeded my limit of + 2048 bytes. + +2001-04-29 Jim Meyering <meyering@lucent.com> + + * Version 4.1. + + * configure: Regenerate using a further-patched copy of autoconf-2.49e + to work around a bug in its test for ranlib. This is the change to + autoconf's acgeneral.m4 that was made on 2001-04-24. + + * README: Don't mention mvdir. It is no longer provided. + Don't mention HP/UX vs. du blocksize problem. It's long gone. + Remove note about how cp, mv, and ln couldn't make backups + of files with names of maximum length. Now they can do that. + Thank the people who have provided access to their systems + for portability testing. + Warn about and describe autoconf/automake version requirements. + Use a better URL for the GNU Coding Standards. + + * man/rm.x: Refer to shred. + Remove the example showing how to remove `-foo', since that is now + in the --help output (and hence automatically included). + * src/rm.c (usage): Mention shred. + + * src/shred.c (usage): Include in --help output the warning about + some of the filesystem types on which shred is not effective. + +2001-04-25 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (my-distcheck): Add a comment. + +2001-04-23 Jim Meyering <meyering@lucent.com> + + * Version 4.0.45. + +2001-04-22 Jim Meyering <meyering@lucent.com> + + * src/ls.c (decode_switches): Ensure that -1 has no effect when it + follows -l, per POSIX. Reported by Ulrich Drepper. + + * src/dd.c (usage): Mention that sync makes dd pad with spaces (rather + than NULs) when used with block or unblock. + (dd_copy): When using sync with either block or unblock, + pad with spaces. Reported by Dale Scheetz. + * tests/dd/skip-seek (block-sync-1): New test, for this. Based on + a report from Dale Scheetz. + * doc/fileutils.texi (dd invocation): Document it here, too. + + * configure: Regenerate using a patched copy of autoconf-2.49e to + work around a bug in its test for a working memcmp function. + This is the change to autoconf's acfunctions.m4 that was made + on 2001-04-22. + + * tests/ls/no-arg: New file. + * tests/ls/Makefile.am (TESTS): Add no-arg. + * src/ls.c (main): Fix off-by-one error introduced with last change. + +2001-04-21 Jim Meyering <meyering@lucent.com> + + * Version 4.0.44. + + * configure, aclocal.m4, etc.: Regenerate using autoconf-2.49e. + + * doc/fileutils.texi (touch invocation): Discuss ctime. + Based on suggestions and contributions from Aharon Robbins + and Dan Jacobson. + + * src/ls.c (main): 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:'. + Report and patch from StĂ©phane Chazelas. + * tests/ls-2/tests: New tests, for the above fix. + +2001-04-08 Jim Meyering <meyering@lucent.com> + + * depcomp: New version, from automake. + +2000-10-31 Bruno Haible <haible@clisp.cons.org> + + * ls.c: Don't inspect MB_LEN_MAX. Paul Eggert says it's + not always defined correctly. + +2001-04-03 John David Anglin <dave@hiauly1.hia.nrc.ca> + + * tests/chgrp/basic: Ensure that initial group id's are properly set + for `d' and `d/f3'. + +2001-04-02 Jim Meyering <meyering@lucent.com> + + * tests/mv/setup: Skip nonexistent directories so we don't get + diagnostics from df about e.g., `/usr/tmp not found'. + +2001-03-24 Jim Meyering <meyering@lucent.com> + + * configure.in: Don't require autoconf version here -- it's done in m4/. + +2001-03-23 Jim Meyering <meyering@lucent.com> + + * Version 4.0.43. + + * configure, aclocal.m4, etc.: Regenerate using autoconf-2.49d. + + * Makefile.maint (check-copyright): New target and rule. + (alpha): Depend on it. + + * missing: Handle shell built-ins (only `:' and `cd' for now) to work + around brain damage in Ultrix's /bin/sh. + +2001-03-18 Jim Meyering <meyering@lucent.com> + + * Version 4.0.42. + + * tests/Fetish.pm: If the $DJDIR envvar is defined, set SHELL + to $DJDIR/bin/bash.exe. Patch from Richard Dawe, based on a + suggestion from Eli Zaretskii. + +2001-03-17 Paul Eggert <eggert@twinsun.com> + + * doc/fileutils.texi: Warn that touch DATE FILE will be withdrawn. + +2001-03-17 Jim Meyering <meyering@lucent.com> + + * tests/install/basic-1: Add the standard $VERBOSE-handling hook. + This test currently fails for mips-dec-ultrix4.4. + + * tests/install/create-leading: Use ../envvar-check rather than + open-coding the same tests. + + * tests/envvar-check: Set/use $as_unset, for those shells + (like Ultrix4's /bin/sh) that don't accept `unset'. + + * missing (--run): Use `eval' to run `"$@"'. Otherwise, Ultrix4.4's + /bin/sh fails and outputs garbage. + + * src/touch.c (usage): Tweak the obsolescent usage line so that + help2man recognizes it as such. Reported by Dan Jacobson. + +2001-03-16 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (wget-update): Also get `missing'. + Use for-loops. + + * missing: Update from automake. + +2001-03-11 Jim Meyering <meyering@lucent.com> + + * tests/rm/isatty: Disable this test, for now. + It would block when run in the background. + +2001-03-09 Jim Meyering <meyering@lucent.com> + + * config.guess: Update from master repository. + + * Makefile.maint (my_distdir): Define new variable, and use this + in place of most old uses of $(distdir). + + * src/Makefile.am (Makefile): Don't depend on $(BUILT_SOURCES). + Reported by Akim Demaille. + + * tests/help-version: Ensure that /dev/full is a character device + (using test -c) as well as being writable, before trying to write to it. + Otherwise, the test could mistakenly append a newline to an existing, + regular, writable, /dev/full file. + Suggested by Ulrich Drepper. + +2001-03-06 Jim Meyering <meyering@lucent.com> + + * src/dd.c (S_TYPEISSHM): Rename parameter to reflect its type. + (main): Pass a `struct stat *', not stat.st_mode to S_TYPEISSHM. + Patch by Alain Magloire. + +2001-03-04 Jim Meyering <meyering@lucent.com> + + * src/dd.c (output_char): Reformat so each statement is on a + separate line. + +2001-02-21 Jim Meyering <meyering@lucent.com> + + * src/mkdir.c (main): Remove assignment-in-if-expression. + In fact, remove t_errno altogether. Reported by Nelson Beebe. + + * tests/ls-2/tests: Add two tests of existing behavior -- both will + have to be changed (soon after release), once ls is fixed. + +2001-02-20 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (FULL_TIME_OPTION): Renamed from FULL_TIME, for + consistency with the other enum values. + +2001-02-20 Paul Eggert <eggert@twinsun.com> + + * NEWS, doc/fileutils.texi: ls -H is now obsolescent. + * src/ls.c (SI_OPTION): New enum value. + (long_options): Use it instead of 'H' for --si. + (decode_switches): Warn that -H will change soon. + (usage): Likewise. + +2001-02-18 Jim Meyering <meyering@lucent.com> + + * tests/rm/Makefile.am (TESTS): Add isatty. + * tests/rm/isatty: New test, for the bug fixed below. + + * Version 4.0.41. + + * depcomp: New version, from automake. + + `chmod 0 file; rm file' would no longer prompt before removal. + * src/remove.c (remove_file): Revert last change. + Reported by Vin Shelton. + +2001-02-17 Jim Meyering <meyering@lucent.com> + + * Version 4.0.40. + + * src/chown.c (main): `quote' the offending argument. + +2001-02-17 Paul Eggert <eggert@twinsun.com> + + Stop trying to support hosts that have nonstandard declarations for + mbrtowc and/or mbstate_t. It's not worth the portability hassle. + + * m4/mbrtowc.m4: New file, defining jm_FUNC_MBRTOWC. + * m4/mbswidth.m4 (jm_PREREQ_MBSWIDTH): + Use jm_FUNC_MBRTOWC, not AC_CHECK_FUNCS(mbrtowc). + * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Likewise. + * lib/mbswidth.c, lib/quotearg.c, src/ls.c (mbrtowc, mbsinit): + Remove workaround macros for hosts that have mbrtowc but not + mbstate_t, as we now insist on proper declarations for both + before using mbrtowc. + Reported by Matt Schalit. + +2001-02-17 Jim Meyering <meyering@lucent.com> + + * config.sub: Update from master repository. + * config.guess: Likewise. + +2001-02-16 Paul Eggert <eggert@twinsun.com> + + * doc/getdate.texi: Mention that only English is supported. + Show how to use "date" so that the output is acceptable to getdate. + Mention Z as an abbreviation for UTC. + +2001-02-11 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (emit-rsync-commands): Define. + (alpha): Use it here. + +2001-02-10 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (alpha): Fix previous, incomplete change. + + * Version 4.0.39. + + * depcomp: New version, from automake. + +2001-02-04 Jim Meyering <meyering@lucent.com> + + * README: Remove note about now-ancient Sequents. + +2001-02-03 Jim Meyering <meyering@lucent.com> + + * src/ln.c (main): Change type of index variable to `unsigned int' + to avoid a warning. + + * config.guess: Update from master repository. + + * Makefile.maint (a_host): Use fencepost. + (real_dir): Use the same name for both. + (alpha): Print commands for both hosts. + + * src/mv.c (long_options): Use `strip-trailing-slashes', + per the documetation, not `strip-trailing-slash'. + * src/cp.c (long_opts): Likewise. + Reported by Oskar Liljeblad. + + * doc/fileutils.texi (mv invocation): Add a warning about how a trailing + slash makes a difference. Prompted by a report from Oskar Liljeblad + via Michael Stone (Debian bug#83991). + +2001-01-31 Jim Meyering <meyering@lucent.com> + + * config.sub: Update from master repository. + * config.guess: Likewise. + +2001-01-28 Jim Meyering <meyering@lucent.com> + + * Version 4.0.38. + + * configure, aclocal.m4, etc.: Regenerate using autoconf-2.49c. + + * src/ls.c (gobble_file): Add a FIXME comment. + + * TODO: Add a few items. + + * src/ls.c (enum) [FULL_TIME]: Define. + (long_options): Use it. + (decode_switches): Make --full-time imply -l. + Prompted by a report from Karl Eichwalder. + +2001-01-22 Jim Meyering <meyering@lucent.com> + + * src/remove.c (remove_file): Correct an expression to avoid making + an unnecessary call to euidaccess for each file. + +2001-01-21 Jim Meyering <meyering@lucent.com> + + * Version 4.0.37. + +2001-01-20 Jim Meyering <meyering@lucent.com> + + * configure.in: Remove jm_CHECK_ALL_TYPES. + Now it's invoked by jm_MACROS. + +2001-01-17 Jim Meyering <meyering@lucent.com> + + * src/sys2.h (case_GETOPT_VERSION_CHAR): Use PACKAGE, not GNU_PACKAGE. + * src/sync.c (main): Likewise. + * src/shred.c (PACKAGE): Likewise. + * src/dd.c (main): Likewise. + +2001-01-14 Jim Meyering <meyering@lucent.com> + + * Version 4.0.36. + + * src/shred.c (UINT_MAX_32_BITS): Define. + Use UINT_MAX_32_BITS in the cpp conditions that determine + the `word32' typedef. Using a literal `0xffffffff' failed with + HPUX10.20's /bin/cc. + + * config.sub: Update from master repository. + * config.guess: Likewise. + +2001-01-02 Volker Borchert <bt@teknon.de> + + Work around a broken rename system call, e.g. on SunOS 4.1.1_U1, + that fails when the source path has a trailing slash. + * src/copy.h [RENAME_TRAILING_SLASH_BUG]: Use the rename wrapper. + * tests/mv/trailing-slash: Test whether the workaround works. + * tests/m4/Makefile.am (TESTS): Add trailing-slash. + +2001-01-03 Alexandre Duret-Lutz <duret_g@epita.fr> + + * po/Makefile.in.in (update-po): Merge po-files in temporary files + in the build directory, and update the source directory only when + the merged catalog differs from the original. This fixes the known + `make distcheck' failure due to `make update-po' being called + on up-to-date but read-only files. + +2001-01-13 Jim Meyering <meyering@lucent.com> + + * src/copy.c (same_file_ok): When moving a symlink onto itself, + don't remove the symlink. Reported by David Luyer as Debian bug#82089, + via Michael Stone. + * tests/mv/into-self-4: New test for the above. + * tests/mv/Makefile.am (TESTS): Add into-self-4. + + * tests/chmod/setgid: If `chmod g+s d' fails, then try to chgrp + to a group of which we're a member, then try the chmod again. + +2001-01-11 Jim Meyering <meyering@lucent.com> + + * depcomp: New version, from automake. + +2001-01-10 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): Add a comment. + Set *copy_into_self in the new code that detects that. + Make diagnostic more consistent: s/won't/will not/. + [move_mode, copy_into_self]: Give a diagnstic here, now that + we have the top_level_* globals. Remove the corresponding diagnostic + from mv.c. + Add a FIXME comment. + * src/mv.c (do_move): Remove diagnostic, now that copy.c issues it. + Set `fail' to nonzero in the primary `if (copy_into_self)' block + rather than in its own tiny one below. + + * src/copy.c (copy_internal): Don't allow cp (or mv, when working + across a partition boundary) to overwrite a non-directory with a + directory. Reported by Michael J. Croghan. + * tests/cp/dir-vs-file: New test for the above. + * tests/cp/Makefile.am (TESTS): Add dir-vs-file. + +2001-01-09 Jim Meyering <meyering@lucent.com> + + Give a better diagnostic for `cp -R a a'. + * src/copy.c (top_level_src_path, top_level_dst_path): New globals. + (copy_internal): Use them. + (copy): Set them. + * src/cp-hash.c [struct entry] (node): Describe how it's used, + now that we've overloaded it, in order to detect and diagnose + the copying-directory-into-self problem. + (new_file): Remove global. + (htab): Declare global to be static. + (remember_created): Insert file name instead of dummy pointer, so + that copy.c can use the just-created directory name to detect + the copying-directory-into-self problem. + * tests/cp/into-self: New test for the above. + * tests/cp/Makefile.am (TESTS): Add into-self. + +2001-01-07 Jim Meyering <meyering@lucent.com> + + * src/cp.c (usage): Split a string that was longer than 2048 bytes. + + * doc/perm.texi: s/can not/cannot/ + +2001-01-07 Karl Eichwalder <ke@suse.de> + + * src/chown.c (usage): Split long message string. + +2001-01-07 Karl Eichwalder <ke@suse.de> + + * src/ls.c (usage): Untabify. + + * src/chgrp.c (parse_group): Normalize spelling. + +2001-01-03 Paul Eggert <eggert@twinsun.com> + + * NEWS: Document the planned --full-time change. + * doc/fileutils.texi: Likewise. + * NEWS: Document that time stamps depend on LC_TIME, not LC_MESSAGES. + +2001-01-03 Paul Eggert <eggert@twinsun.com> + + Use the more precise algorithm of GNU "make" to decide whether + a file is in the future, by looking at high-resolution time + stamps if available. + + * src/ls.c: + (TIMESPEC_NS): New macro. + (current_time): Initialize to the minimum value. + (current_time_ns): New var. + (main): Do not bother to initialize current_time; + it's no longer needed. + (get_current_time): New function. + (print_long_format): Use it when a file appears to be in the future. + Get the nanoseconds of the file's time stamp, if available, + and use that to decide whether the file appears to be in the future. + + * src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD): New macros. + +2001-01-02 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (long_time_expected_width, print_long_format): Fix + bug: the initial byte passed to strftime wasn't initialized to + a nonzero value after the buffer was reallocated. + +2001-01-02 Paul Eggert <eggert@twinsun.com> + + Make ls -l compatible with POSIX, which requires that the + behavior of time formats must depend only on LC_TIME, not on + LC_MESSAGES. + + * po/Makefile.in.in (install-data-yes): If the package is + fileutils, install LC_TIME as an alias for LC_MESSAGES. + * src/sys2.h (dcgettext): New macro. + * src/ls.c (decode_switches): Use dcgettext with LC_TIME, + not plain gettext, to get the translations of time formats. + +2001-01-02 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (long_time_expected_width): New function. + (print_long_format): Use it, so that we don't assume a + particular width for time stamps in an internationalized + environment. + +2001-01-01 Paul Eggert <eggert@twinsun.com> + + * doc/fileutils.texi, NEWS: + ls -l now reports the year for files even slightly in the future, as + POSIX requires. This helps warn users about clock skew problems. + + * src/ls.c (print_long_format): + Report the year for files even slightly in the future. + Avoid overflow problems near Y2038 on 32-bit hosts. + To calculate "six months", take half the average Gregorian + year, not 180 days. + +2001-01-01 Jim Meyering <meyering@lucent.com> + + * tests/chmod/Makefile.am (TESTS): Add setgid. + * tests/chmod/setgid: Test for chmod's existing behavior. + Based on a report from Paul Eggert. + +2000-12-29 Paul Eggert <eggert@twinsun.com> + + Clean up the terminology a tad: some directories were called "sticky" + when they were really setgid. + * tests/Makefile.am (EXTRA_DIST): sticky-check -> setgid-check + * tests/chmod/c-option, tests/cp/cp-parents, tests/mkdir/parents, + tests/mkdir/perm: Likewise. + * tests/setgid-check: File renamed from tests/sticky-check. + All uses of "sticky" changed to "setgid". + +2000-12-31 Jim Meyering <meyering@lucent.com> + + * tests/cp/Makefile.am (TESTS): Add deref-slink. + * tests/cp/deref-slink: New file. Test for the bug fixed by my + 2000-12-28 change to copy.c. + +2000-12-30 Paul Eggert <eggert@twinsun.com> + + * src/ls.c: Improve performance by invoking gettext twice at the start, + instead of once for each file. + (long_time_format): New var. + (decode_switches): Initialize it, if format == long_format. + (print_long_format): Use it. + +2000-12-30 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (print_long_format): Don't dump core if strftime + returns the empty string. + +2000-12-30 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (gobble_file): If not using long format, don't + invoke acl; it's not needed. + +2000-12-30 Jim Meyering <meyering@lucent.com> + + Avoid an unnecessary `stat' when using --dereference. + * src/copy.c (same_file_ok): Use stat only if lstat reported that + the file was a symbolic link. + +2000-12-29 Paul Eggert <eggert@twinsun.com> + + * doc/perm.texi: append-only directories -> restricted deletion flag, + which is the term that POSIX d5 uses for this notion. + +2000-12-28 Paul Eggert <eggert@twinsun.com> + + * tests/group-names: Try /usr/xpg4/bin/id (Solaris 7) if plain + 'id' doesn't work. + +2000-12-28 Jim Meyering <meyering@lucent.com> + + * tests/cp/cp-parents: Run sticky-check from just-created directory. + +2000-12-28 Jim Meyering <meyering@lucent.com> + + * src/copy.c (same_file_ok): Fix two typos from my 2000-09-03 change: + s/tmp_dst_sb/tmp_src_sb/. + +2000-12-27 Paul Eggert <eggert@twinsun.com> + + * tests/sticky-check: Turn off the working directory's sticky + bit, so that we don't have to worry about it later. + + * src/copy.c (same_file_ok): Use a single auto var for + tmp_dst_sb, instead of two static vars. Likewise for + tmp_src_sb. + +2000-12-26 Jim Meyering <meyering@lucent.com> + + * Version 4.0.35. + + * Regenerate build/config framework to use automake-1.4b and + the latest CVS version autoconf. + + * tests/mkdir/perm: Disable the test if the working directory has + the sticky bit set. + * tests/cp/cp-parents: Likewise. + Reported by Nelson Beebe. + +2000-12-25 Jim Meyering <meyering@lucent.com> + + Clean-up to avoid warnings from Irix's c89. + + * src/remove.c (hash_compare_active_dir_ents): Return explicit `true' + or `false', rather than relying on implicit int-to-enum cast. + * src/copy.c (same_file_ok): Remove declaration and set of unused + variables: src_sb_no_link, dst_sb_no_link. + * src/ls.c (extract_dirs_from_files): Remove unused variable. + Reported by Nelson Beebe. + + * src/ls.c (gobble_file): Move decl of local, val, into the scope + where it's used. + +2000-12-24 Jim Meyering <meyering@lucent.com> + + For both ln and install, when using `--backup=simple --suffix=S', + the suffix `S' wasn't used. + + * src/ln.c (main): Actually use the local variable, + `backup_suffix_string'. + * src/install.c (main): Likewise. + Nelson Beebe reported the unused variables. + * tests/ln/misc: Add a test for this (for all of cp, mv, ln, install). + + * man/help2man: Update to version 1.24. + +2000-12-22 Jim Meyering <meyering@lucent.com> + + * Version 4.0.34. + + * src/shred.c (isaac_seed_machdep) [_ARCH_PPC]: Disable the code + that would use the PPC mfspr `asm' code. Suggestion from Michael Stone. + +2000-12-19 Jim Meyering <meyering@lucent.com> + + * doc/fileutils.texi: Use `ref_file' in place of `file' to make + descriptions of the various --reference=... options clearer. + +2000-12-17 Jim Meyering <meyering@lucent.com> + + * doc/texinfo.tex: Update from master repository. + * config.sub: Likewise. + * config.guess: Likewise. + +2000-12-16 Jim Meyering <meyering@lucent.com> + + * src/chown-core.c (uint_to_string): New function. + (uid_to_name): Use it. + (gid_to_name): Use it. + Rename locals, user/group, to uid/gid. + + * src/chown-core.h (enum Change_status): Start with 1. + + * src/chown.c (main): Rename locals, user/group, to uid/gid. + * src/chgrp.c (main): Rename local, group, to gid. + + * tests/group-names: New file. + * tests/Makefile.am (EXTRA_DIST): Add group-names. + * tests/chgrp/basic: Use group-names. + * tests/chgrp/deref: Likewise. + * tests/chgrp/recurse: Likewise. + + * tests/chgrp/basic: Don't assume that creating a file gives it + group $g1. + + * tests/chgrp/Makefile.am (TESTS): Add recurse. + +2000-12-15 Jim Meyering <meyering@lucent.com> + + * src/chown-core.h [enum Dereference_symlink] (dereference): Rename + from change_symlinks. + * src/chown-core.c: Declare lstat. + Rename change_symlinks member to `dereference' and use the DEREF_* + enum values. + (describe_change): Merge the chgrp and chown switch statements. + Use xmalloc to form the `user:group' string. + (change_file_owner): Record (and later, use) is_symlink and is_directory + from the lstat stats, in order to control whether we operate on symlinks + and whether (with -R) we traverse symlinks to directories. + When dereferencing, use open/fchown (rather than chown) on symlinks. + * src/chown.c (main): Reflect renaming: s/dereference/change_symlinks/. + * src/chgrp.c (main): Likewise. + + * src/chown-core.c (describe_change): Use `:' (not `.') to separate the + username and group in messages evoked by the --verbose and --changes + options. + +2000-12-09 Jim Meyering <meyering@lucent.com> + + * src/Makefile.am (noinst_HEADERS): Add chown-core.h. + (chown_SOURCES): Define. + (chgrp_SOURCES): Define. + + * src/chgrp.c: Include "chown-core.h". + [enum Change_status, enum Verbosity]: Remove declarations. + Remove decls of globals that are now part of struct Chown_option. + Remove decl of xstat. + (describe_change): Remove function. + (change_file_group): Likewise. + (change_dir_group): Likewise. + (parse_group): Don't set global, groupname, here... + (main): ... instead, initialize `chopt.group_name' here. + Initialize chopt and update uses of the now-members. + Set group_name also when it's obtained via a --reference=FILE option. + Call change_file_owner (with -1 for uids), not change_file_group. + + * src/chown.c: Don't include pwd.h or grp.h -- no longer needed. + Include "chown-core.h". + [enum Change_status, enum Verbosity]: Remove declarations. + Remove decls of globals that are now part of struct Chown_option. + (describe_change): Remove function. + (change_file_owner): Likewise. + (change_dir_owner): Likewise. + (main): Initialize chopt and update uses of the now-members. + Set user_name and group_name also when they're obtained via a + --reference=FILE option. + Pass `chopt' to change_file_owner. + + * src/chown-core.c: Include <pwd.h>, <grp.h>, and "xalloc.h". + [!_POSIX_VERSION]: Declare getgrnam and getgrgid. + (gid_to_name): New function. + (uid_to_name): Likewise. + (chopt_free): Likewise. + + Factor out code that's common to chgrp.c and chown.c. + * src/chown-core.h: New file. + * src/chown-core.c (chopt_init): New function. + (describe_change): Extracted/combined from chgrp.c and chown.c. + (change_dir_owner): Likewise. + (change_file_owner): Likewise. + * po/POTFILES.in: Add src/chown-core.c. + + * configure.in (AC_OUTPUT): Add tests/chgrp/Makefile. + * tests/Makefile.am (SUBDIRS): Add chgrp. + * tests/chgrp: New directory. + * tests/chgrp/basic: New test. + * tests/chgrp/deref: Likewise. + * tests/chgrp/Makefile.am: New file. + + * src/chown.c (change_file_owner): Restore special file permission + bits, since calling chown resets them on some systems. + Reported by Matt Perry. + +2000-12-08 Andreas Schwab <schwab@suse.de> + + * tests/mv/mv-special-1: Don't make the success of the test depend + on the order in which directory entries are processed. + +2000-12-03 Jim Meyering <meyering@lucent.com> + + * src/ls.c (gobble_file) [USE_ACL]: Set have_acl member unconditionally + to avoid uninitialized memory reference via FILE_HAS_ACL. + + * Makefile.maint (alpha): Use rsync rather than scp, so the destination + file is created only after the successful completion of the copy. + +2000-12-02 Jim Meyering <meyering@lucent.com> + + * tests/ls/Makefile.am (TESTS): Add follow-slink. + * tests/ls/follow-slink: New file. + +2000-12-01 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (gobble_file): Do not fall back on lstat if stat + fails; POSIX.2 does not allow this. Invoke acl only on + non-symlinks, and only if lstat or stat succeeds. + +2000-12-02 Jim Meyering <meyering@lucent.com> + + * configure: Regenerate using the very latest version (in CVS) of + autoconf. + + * tests/dd/skip-seek: Remove test #2, now that support for the + `B' suffix is gone. + * tests/dd/Makefile.am (TESTS): Add skip-seek2 + * tests/dd/skip-seek2: New file. + +2000-12-01 Paul Eggert <eggert@twinsun.com> + + * src/dd.c (skip, dd_copy): Use ssize_t to store result of + safe_read, to avoid overflow e.g. on 64-bit Solaris sparc. + (dd_copy): Remove unnecessary cast. + +2000-12-01 Paul Eggert <eggert@twinsun.com> + + * doc/fileutils.texi: Remove B suffix. Document how to have + the desired effect without it. + + * src/dd.c: Undo most of the changes since 2000-11-24, since we've + documented a standard way to do it. + (skip_bytes, seek_bytes): Remove. + (usage): Remove B suffix. + (scanargs, skip, dd_copy, main): Remove support for B suffix. + +2000-11-28 Jim Meyering <meyering@lucent.com> + + * src/mkdir.c (main): Remove any trailing slash unconditionally. + Reported by Volker Borchert. + * tests/mkdir/t-slash: Add a test for this. + +2000-11-27 Jim Meyering <meyering@lucent.com> + + * Version 4.0.33. + + * tests/touch/no-rights: Use touch with `-d tomorrow' to avoid a + race condition. + + * tests/Fetish.pm (_compare_files): New function. + (_process_file_spec): Likewise. + (_at_replace): Likewise. + (run_tests): Support new keywords, AUX and CMP and associated + syntax and semantics. + + * config.sub: Likewise. + * config.guess: Likewise. + +2000-11-26 Jim Meyering <meyering@lucent.com> + + * src/dd.c (skip): Perform the `records < blocksize' test + at the top of the loop, not at the bottom. + +2000-11-26 Paul Eggert <eggert@twinsun.com> + + * src/dd.c (skip): New arg COUNT_BYTES. Read with BLOCKSIZE + bytes, but consider RECORDS to be a byte count if COUNT_BYTES + is nonzero. + +2000-11-25 Paul Eggert <eggert@twinsun.com> + + * doc/fileutils.texi: Document seek=nB and skip=nB. + + * src/dd.c (skip_bytes, seek_bytes): Now booleans, not counts. + (seek_records): Renamed from seek_record, for consistency with + skip_records and max_records. All uses changed. + + (usage, scanargs): Remove bseek=n and bskip=n; instead, use seek=nB + and skip=nB. + (enum Unit, Unit): Remove. + (skip, dd_copy, main): Undo most recent change. + (dd_copy, main): Pass blocksize of 1 as appropriate when + skip_bytes or seek_bytes is nonzero. + (main): Rework ftruncate failure diagnostic to always use byte count. + +2000-11-25 Jim Meyering <meyering@lucent.com> + + * src/dd.c: Add new options, bskip and bseek. + Based on a patch from Chris Sylvain. + * tests/dd/skip-seek: New tests. + * tests/dd/Makefile.am (TESTS): Add skip-seek. + +2000-11-24 Paul Eggert <eggert@green.twinsun.com> + + * src/dd.c (S_TYPEISSHM): New macro. + (main): Report failed fstat. + Complain only when ftruncate fails on a regular file, + a directory, or a shared memory object. + +2000-11-24 Jim Meyering <meyering@lucent.com> + + * src/dd.c: Declare a pointer parameters to be `const' as appropriate. + + * src/dd.c (main): Use ftruncate only on regular files. + Based on a patch from Michael Stone. + Reported by andras@kolumbus.fi at http://bugs.debian.org/77174. + +2000-11-23 Jim Meyering <meyering@lucent.com> + + * src/df.c (show_point): Before accepting an entry as a match, make + sure that the mount directory exists and has the required device number. + Before, e.g., `df /floppy' would mistakenly report on the root + partition if /floppy were not listed in /etc/mtab but / was. + Patch from Eirik Fuller (http://bugs.debian.org/76923). + + * src/chmod.c (mode_changed): New function. + (change_file_mode): Use it to determine accurately when -c should + make chmod announce there's been a change. + Based on a patch from Michael Stone. + Reported by Kai Henningsen as Debian bug #77349. + + * tests/chmod/c-option: New test for the above fix. + * tests/chmod/Makefile.am (TESTS): Add c-option + + * tests/sticky-check: New file. Factored out of tests/mkdir/parents. + * tests/Makefile.am (EXTRA_DIST): Add sticky-check. + * tests/mkdir/parents: Source sticky-check instead of open-coding it. + +2000-11-19 Jim Meyering <meyering@lucent.com> + + * tests/chmod/equal-x: Update to use its own directory, and better trap. + +2000-11-18 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (BLOCK_SIZE_OPTION, COLOR_OPTION, FORMAT_OPTION, + INDICATOR_STYLE_OPTION, QUOTING_STYLE_OPTION, + SHOW_CONTROL_CHARS_OPTION, SORT_OPTION, TIME_OPTION): New enum + values, to ensure that option values can't collide with chars. + (long_options, decode_switches): Use them. + +2000-11-18 Paul Eggert <eggert@twinsun.com> + + * src/sys2.h (GETOPT_HELP_CHAR, GETOPT_VERSION_CHAR): Now enum + constants rather than macros. Use values that cannot conflict + with C characters or with -1, CHAR_MAX + 1, etc. + +2000-11-18 Jim Meyering <meyering@lucent.com> + + * src/du.c (count_entry): Don't omit the size of a directory entry + merely because we couldn't `chdir' into it. That would give subtly + different results in some cases. Reported by Mattias Wadenstein + via Michael Stone. + + * src/ls.c: Revert change of 2000-11-11. It inadvertently change + the output format of `ls -l --full-time'. + + * src/mkdir.c (main): When failing to create a directory, give only + one diagnostic, not two. Reported by Volker Borchert. + + * src/mkdir.c (main): With --parents, remove any trailing slashes + from the argument to the final mkdir call. Required for NetBSD. + Reported by Volker Borchert. + * tests/mkdir/t-slash: New test for this. + * tests/mkdir/Makefile.am (TESTS): Add t-slash. + + * tests/mv/mv-special-1: Create and `cd' into temporary directory + before anything else. Reported by Volker Borchert. + + * configure, config.h.in, Makefile.in, etc.: Regenerate using the + very latest version (in CVS) of autoconf. + +2000-11-17 Jim Meyering <meyering@lucent.com> + + * Makefile.am (.NOTPARALLEL): Remove target. + * GNUmakefile (.NOTPARALLEL): ... put it here instead, since this + file is common to these packages: fileutils, sh-utils, textutils. + + * Makefile.am (.NOTPARALLEL): New target. Prevent unwanted parallelism. + Suggestion from Ulrich Drepper. + * po/Makefile.in.in (Makefile): Likewise. + + * Makefile.maint (sha1): Define. + (announcement): Include SHA1 digest of .tar.gz file. + +2000-11-14 Jim Meyering <meyering@lucent.com> + + * tests/mkdir/perm: Add an `echo' so that the input to the sed command + is NL-terminated. Otherwise, Solaris' /bin/sed generates no output. + Reported by Vin Shelton. + +2000-11-13 Paul Eggert <eggert@twinsun.com> + + * src/sys2.h (ST_TIME_CMP_NS): Fix typo: ST_MTIM_NSEC should + be tested with #ifdef, not with #if. + +2000-11-12 Jim Meyering <meyering@lucent.com> + + * src/ls.c (print_long_format): Remove obsolete comment. + From Paul Eggert. + + * doc/texinfo.tex: Update from master repository. + +2000-11-11 Paul Eggert <eggert@sic.twinsun.com> + + * src/ls.c (<langinfo.h>): Include if HAVE_LANGINFO_H. + (DATE_FMT_LANGINFO): New macro, taken from sh-utils/src/date.c. + (print_long_format): Use it to determine "date" format. + Do not wrap "%b %e %Y" and "%b %e %H:%M" in _(), as it results in + incorrect behavior when LC_ALL is unset, LC_TIME is "C", and + LC_MESSAGES or LANG is set to something disagreeing with the POSIX + locale. + +2000-11-11 Jim Meyering <meyering@lucent.com> + + * Version 4.0.32. + + * Makefile.maint (GZIP_ENV): Define to --no-name, so the timestamp + is not included in the .tar.gz file. + + * tests/mkdir/perm (tests): Use `empty' (instead of just blanks) to + indicate no `-m' option. Using just blanks wasn't portable to + Solaris2.5.1's /bin/sh. + + * tests/mkdir/perm: Don't put a newline in IFS; that's not portable to + NetBSD's /bin/sh. Instead, filter newlines and leading/trailing blanks + out of `tests' before the `set -'. + + * Makefile.maint (announcement): Limit depth of ChangeLog `find' to 2. + + * src/ls.c (print_long_format): Wrap the `--full-time' date format + string in _(...), so it too may be internationalized. + Suggestion from Jungshik Shin. + +2000-11-10 Jim Meyering <meyering@lucent.com> + + * src/touch.c (main): Interpret 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. Reported by Wenjun Zheng. + * tests/touch/obsolescent: New test for this. + * tests/touch/Makefile.am (TESTS): Add obsolescent. + +2000-11-06 Jim Meyering <meyering@lucent.com> + + * tests/cp/cp-parents: Move mkdir tests into ../mkdir. + + * doc/fileutils.texi: Use Free Documentation Licence. + Change GNU to @sc{gnu} in many places. + + * doc/texinfo.tex: Update from master repository. + * config.sub: Likewise. + * config.guess: Likewise. + * man/help2man: Update from latest version: 1.23. + + * src/mkdir.c: Do not set the permissions of the final directory + component if it was not just created. + Based on a patch from Volker Borchert. + + * tests/rwx-to-mode: New file. + * tests/Makefile.am (EXTRA_DIST): Add rwx-to-mode. + * tests/mkdir/parents: New test for the above mkdir.c fix. + * tests/mkdir/Makefile.am (TESTS): Add parents. + (TESTS_ENVIRONMENT): Define srcdir=$(srcdir). + +2000-11-02 Won-kyu Park <wkpark@chem.skku.ac.kr> + + * src/df.c (print_header): Mark strings for translation. + +2000-11-05 Jim Meyering <meyering@lucent.com> + + * Version 4.0.31. + + * configure, config.h.in, Makefile.in, etc.: Regenerate using the + very latest version (in CVS) of autoconf. + + * src/mkdir.c (main): Use make_dir instead of using mkdir directly. + Diagnose as failure when mkdir tries to create (without the + --parent (-p) option) a directory that already exists. + * tests/cp/cp-parents: Add a test for the above fix. + + * tests/mv/mv-special-1: Clean up this test. + +2000-11-01 Jim Meyering <meyering@lucent.com> + + * Version 4.0.30. + + * src/chmod.c (main): Better diagnostics. + +2000-10-31 Jim Meyering <meyering@lucent.com> + + * tests/lang-default: Add all the internationalization-related + variable names autoconf uses. Set and export them in a loop. + + `mkdir -p' would create parent directories with permissions + that did not account for the umask. [introduced with the + 2000-09-30 change that became part of fileutils-4.0.28] + * src/mkdir.c: Include dirname.h. + Compute the parent directory `mode' unconditionally, effectively + as `$(umask -S),u+wx'. + Use make_path to create only the parent directories, thus using + the same code, both with and without -p, to create the final + component in each file name. Reported by Bob Proulx. + + Add tests for the above fix. + * tests/cp/cp-parents: Add some permission tests. + * tests/mkdir/perm: Fix the test so it actually does something. + Run each test also with mkdir's `-p' option and check permissions + on the parent directories. + +2000-10-23 Paul Eggert <eggert@twinsun.com> + + * doc/getdate.texi: Use @sc where appropriate. Document the + ranges of supported times more precisely. Correct menu + spacing. Document old Latin 12m/12pm tradition. Remove list + of alphabetic time zone names, as it wasn't correct and people + shouldn't be relying on it anyway. Relative items also + account for non-DST adjustments. Fix some misspellings. + +2000-10-30 Jim Meyering <meyering@lucent.com> + + * configure, config.h.in, Makefile.in, etc.: Regenerate using the + very latest version (in CVS) of autoconf. + +2000-10-29 Jim Meyering <meyering@lucent.com> + + * Version 4.0.29. + + * src/cp.c (do_copy): When constructing dst_path for use with the + --parents option, first remove any trailing slashes from the command + line argument. Otherwise, tests/cp/cp-parent would fail on NetBSD. + + * tests/cp/cp-parents: Add a test. + + * src/ls.c (DT_INIT): Define. + [enum filetype]: Remove the #ifdef, and use DT_INIT on the + initializers instead. `unknown' was undefined for some systems. + Reported by John David Anglin. + + * tests/lang-default (LC_COLLATE): Set it to the empty string and + export it. Otherwise, tests/cp/cp-mv-backup would fail e.g., when + LC_COLLATE was set to en. Reported by Vin Shelton. + +2000-10-28 Jim Meyering <meyering@lucent.com> + + * src/ls.c (main): In call to gobble_file with `"."', use `directory' + as the type, not `unknown'. + [enum filetype] (arg_directory): Rather than `100', use + a number that should never conflict with another DT_* value. + From Ulrich Drepper. + + * Version 4.0.28. + + Make `ls' a lot more efficient on systems (e.g., linux-2.4.*) + that store file type information in directory entries. + + * src/ls.c [enum filetype] (unknown): + Add members (as yet unused): + (HAVE_STRUCT_DIRENT_D_TYPE): Define. + (format_needs_type): New global. + (main): Set it. + (print_dir): Set `type' from directory entry, if possible. + (gobble_file): Add a parameter, TYPE. + Stat the file only if its type is unknown and we need the type. + Patch from Ulrich Drepper. + + Shred can now determine the size of a block devices (e.g. /dev/fd0) + by writing until a write operation fails. + + * src/shred.c: Include assert.h. + (fillrand): Add a parameter, size_max. + Adjust caller. + Add an assertion. + (dopass): Break out of the `for (;;)' loop if size < offset. + That can happen now that dopass is called with SIZE == -1. + (do_wipefd): Accept a length of zero only for a regular file. + If lseek fails or returns 0 for a non-regular file, let dopass + determine the length. + Inspired by a patch from Alan Iwi. + + * tests/Makefile.am (EXTRA_DIST): Add lang-default. + + * tests/rm/hash: Factor out the expensive-test-checking code, ... + * tests/expensive: ... into this new file. + * tests/cp/perm: Disable this test by default; it's expensive. + Mark this as an expensive test. + * tests/Makefile.am (EXTRA_DIST): Add expensive. + + * doc/fileutils.texi (shred invocation): Give two examples. + +2000-10-26 Jim Meyering <meyering@lucent.com> + + * doc/getdate.texi (Authors of getdate): Add Paul Eggert. + +2000-10-23 Jim Meyering <meyering@lucent.com> + + * Makefile.am (EXTRA_DIST): Add .prev-version. + +2000-10-22 Jim Meyering <meyering@lucent.com> + + * src/cp.c (make_path_private): Add a FIXME comment. + + * tests/lang-default: New file. Set LANG, LC_ALL, and LANGUAGE to '' + (rather than to `C') and export them into the environment. + Suggestion from Bruno Haible. + + * tests/cp/backup-is-src: Source lang-default rather than open-coding + the setting/exporting of LANG, LC_ALL, and LANGUAGE. + * tests/cp/cp-mv-backup: Likewise. + * tests/cp/same-file: Likewise. + * tests/cp/slink-2-slink: Likewise. + * tests/cp/symlink-slash: Likewise. + * tests/ln/sf-1: Likewise. + * tests/ls/symlink-slash: Likewise. + * tests/ls/time-1: Likewise. + * tests/mv/backup-is-src: Likewise. + * tests/mv/diag: Likewise. + * tests/mv/force: Likewise. + * tests/mv/hard-link-1: Likewise. + * tests/mv/i-2: Likewise. + * tests/mv/into-self: Likewise. + * tests/mv/into-self-2: Likewise. + * tests/mv/into-self-3: Likewise. + * tests/mv/mv-special-1: Likewise. + * tests/mv/part-symlink: Likewise. + * tests/mv/partition-perm: Likewise. + * tests/rm/r-1: Likewise. + * tests/rm/r-2: Likewise. + +2000-10-21 Jim Meyering <meyering@lucent.com> + + * tests/cp/cp-parents: New test. + * tests/cp/Makefile.am (TESTS): Add cp-parents; + +2000-10-19 Jim Meyering <meyering@lucent.com> + + * doc/texinfo.tex: Update from master repository. + * config.sub: Likewise. + * config.guess: Likewise. + * depcomp: Likewise. + +2000-10-18 Jim Meyering <meyering@lucent.com> + + * tests/mv/part-symlink: Make sure the programs use C-locale formats + and translations. Bruno Haible reported that this test would fail + when using other locales, because ls printed a translation of `total'. + +2000-10-16 Jim Meyering <meyering@lucent.com> + + * src/ls.c (print_long_format): Wrap date format strings in _(...) + so they may be internationalized. Suggestion from Christian Rose. + +2000-10-13 Jim Meyering <meyering@lucent.com> + + * src/mv.c (rm_option_init): Remove FIXME-maybe comment. + +2000-09-30 Jim Meyering <meyering@lucent.com> + + * tests/du/two-args: Update to use newer template. + + * src/install.c: Remove big, option-describing comment block. + (main): Rename local `symbolic_mode' to `specified_mode'. + + * src/mkdir.c (main): Don't set the umask to 0 and hand-apply + the previously-set umask unconditionally. Do that only when a + MODE has been specified. Otherwise, call mkdir with the full + creation mask (0777 or 0666) and let the kernel apply the umask. + The difference shows up only on file systems with ACL support + when the containing directory has a default ACL. + Patch by Andreas Gruenbacher. + (main): Rename local `symbolic_mode' to `specified_mode'. + * src/mknod.c (main): Likewise (but `call mknod', not mkdir). + Also, when MODE is specified, call chmod to ensure that the + permission bits are set as specified even when the containing + directory has a default ACL. + Patch by Andreas Gruenbacher. + * src/mkfifo.c (main): Likewise (but `call mkfifo', not mkdir). + Patch by Andreas Gruenbacher. + + * tests/mkdir/perm: New test. + * tests/mkdir/Makefile.am (TESTS): Add perm. + +2000-08-17 Andreas Gruenbacher <ag@bestbits.at> + + * src/chmod.c (change_file_mode): Perform the chmod even if the + file mode permission bits are the same as those that should be set. + Omitting the chmod call would be alright with minimal 1003.1e DS17 + ACLs, but eventually there may be other permissions in addition to + rwx. E.g., add and delete for directories, and something analogous + to NT's take ownership permission. + +2000-09-25 Jim Meyering <meyering@lucent.com> + + * tests/cp/same-file: Don't use `diff -u'. It's not portable. + Reported by Christian Krackowizer. + * tests/cp/same-file: Run `diff -c' only if cmp finds a difference. + * tests/mv/part-symlink: Likewise. And clean up. + + `shred --exact file1 file2' wouldn't touch `file1' + * src/shred.c (long_opts): --exact doesn't take an argument. + Reported by Alan Iwi. + * tests/shred/exact: New test for this. + * tests/shred/Makefile.am (TESTS): Add exact. + + * Makefile.maint (PREV_VERSION): Get the value from a file, rather + than trying to derive it from the current version number. + This is much more robust. + (alpha): Record just-released version number in `.prev-version', + and commit (post-tag). + + * Version 4.0.27. + +2000-09-24 Paul Eggert <eggert@twinsun.com> + + * doc/fileutils.texi: Update to more closely match changes in 4.0z. + * src/cp.c (usage): Match revised documentation better. + +2000-09-24 Jim Meyering <meyering@lucent.com> + + * src/cp.c (main): Tweak a relatively new diagnostic. + +2000-09-23 Jim Meyering <meyering@lucent.com> + + * tests/ls/time-1: Output more information when a test fails. + +2000-09-22 Jim Meyering <meyering@lucent.com> + + * src/install.c (cp_option_init): Once again make it so install always + unlinks an existing destination before trying to open it for writing. + Otherwise, installing onto a running shared library would make the + running program malfunction. + Reported by Dan Pascu via Michael Stone. + + * src/mv.c (do_move): Moving a directory specified with a trailing + slash from one partition to another, and giving it a different + name at the destination would cause mv to get a failed assertion. + Reported by Michael Stone. + (strip_trailing_slashes_2): Move function definition to precede + new first use. + * tests/mv/part-rename: New test for the above fix. + * tests/mv/Makefile.am (TESTS): Add part-rename. + + * src/copy.c (copy_internal): Don't try to unlink directories when + using --remove-dest with -R. + * tests/cp/dir-rm-dest: New test for the above fix. + * tests/cp/Makefile.am (TESTS): Add dir-rm-dest. + +2000-09-19 Jim Meyering <meyering@lucent.com> + + * doc/fileutils.texi (cp invocation): Describe how --force works. + Update description of -P (soon to change meaning to conform w/POSIX). + Describe --remove-destination. + + * src/cp.c (main): When used with --force, each of the --link and + --symbolic-link options now implies --remove-destination. + Reported by Miles Bader via Mike Stone. + * tests/cp/link: New file. Test for the above fix. + * tests/cp/same-file: Adjust for this change in behavior. + +2000-09-15 Volker Borchert <bt@teknon.de> + + * tests/Makefile.am (check-root, root-hint): New targets. + (check-recursive): Depend on root-hint. + * Makefile.am (check-root): New target. + +2000-09-16 Jim Meyering <meyering@lucent.com> + + * doc/perm.texi (Changing Special Permissions): Remove this statement: + ``a' in the USERS part of a symbolic mode does not cause the special + permissions to be affected'... It doesn't reflect what the code does + and isn't required by POSIX. Reported by aldomel@ix.netcom.com via + Mike Stone. + +2000-09-15 Jim Meyering <meyering@lucent.com> + + * config.sub: Update from master repository. + +2000-09-10 Jim Meyering <meyering@lucent.com> + + * tests/cp/cp-mv-backup (LC_ALL): Set to `C' and export to ensure + that `ls' sorts the same way for everyone. Reported by Vin Shelton. + + * Makefile.maint (b_host): Use freefriends.org, not tug.org. + +2000-09-09 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (announcement): Use a stricter regexp for the + previous version. + + * Version 4.0z. + + * tests/cp/special-bits: New file. + * tests/cp/Makefile.am (TESTS): Add special-bits. + (TESTS_ENVIRONMENT): Propagate $MAKE into environment, for special-bits. + + * src/copy.c (SAME_OWNER, SAME_GROUP, SAME_OWNER_AND_GROUP): Define. + (copy_internal): Avoid calling chown if we know it's not necessary. + + * src/copy.c (copy_internal): Call chmod also if we've made the + preceding chown call and we're supposed to preserve some special + permission bit(s) that would have been reset by chown. + Reported by Greg Louis. + +2000-09-08 Jim Meyering <meyering@lucent.com> + + * src/mkdir.c (S_IRWXUGO): Remove definition. + * src/sys2.h (S_IRWXUGO): Define here, instead. + +2000-09-07 Jim Meyering <meyering@lucent.com> + + * doc/texinfo.tex: Update from master repository. + * config.sub: Likewise. + * config.guess: Likewise. + +2000-09-05 Jim Meyering <meyering@lucent.com> + + * tests/mv/part-symlink: Redirect stdout to stderr before trying to + remove the temp directory. Otherwise, the `rm -rf' would get an + error because the output file wouldn't be closed and the directory + wouldn't be `empty'. + * tests/cp/same-file: Likewise. + + * tests/cp/same-file: Remove the `cp -dl sl1 sl2' case, + since it's no longer portable (hard link to a symlink). + Likewise for the `cp -bdl symlink foo' case. + + * config.guess: Update from master repository. + +2000-09-04 Jim Meyering <meyering@lucent.com> + + * src/cp.c: Move declaractions of lstat, stat, and rpl_lstat + as well as the definition of lstat from here... + * src/copy.h: ...to here. + * src/copy.c: Remove declaration of lstat, now that it's in copy.h. + + * tests/mv/force: mv's --force (-f) option is no longer needed for + this test, now that all it does is cancel --interactive (-i). + + * tests/cp/same-file: Add new tests using cp's --rem option. + Reflect the fact that cp's -f option no longer causes cp to remove the + destination file before trying to open it. + Reflect the fact that `cp -bdl' now makes a backup when copying a + symlink onto the file it points to (FIXME: look into this, and why + cp -bl does *not* do so). + + * src/ln.c (do_link): Tweak diagnostics. + +2000-09-03 Jim Meyering <meyering@lucent.com> + + * src/install.c (cp_option_init): Initialize new members. + + * src/cp.c (enum): Add UNLINK_DEST_BEFORE_OPENING. + [long_options]: Add an entry for --remove-destination. + (usage): Describe --remove-destination. + (do_copy): Use unlink_dest_after_failed_open member, not `force.' + (cp_option_init): Initialize new members. + (main): Handle UNLINK_DEST_BEFORE_OPENING (aka --remove-destination). + + * src/mv.c: Remove obsolete comment block. + (cp_option_init): Initialize new members. + (usage): Reflect the fact that --force (-f) relates only to whether + mv prompts. + (main): Remove uses of old `force' option member. + + * src/install.c (cp_option_init): Reflect + + `force' no longer means unlink-dest-before-opening + * src/copy.h (struct cp_options) [force]: Remove member. + [unlink_dest_before_opening]: Add member. `cp -f' and `mv -f' used to + do this. Now, you must use `cp --remove-destination' to get this + behavior. Now, `cp -f' and `mv -f' work as required by POSIX. + [unlink_dest_after_failed_open]: Add member. + Paul Eggert reported that `cp -f' removes an existing destination + file unconditionally, and that is contrary to POSIX. + + * src/copy.c (same_file_ok): New function, extracted from copy_internal, + and rewritten. + (copy_internal): Unlink destination file when unlink_dest_before_opening + option is set, and when the source is neither a regular file nor a + directory. + + * tests/mv/Makefile.am (TESTS): Add part-symlink. + + * src/ls.c: Use strcoll (not strcmp) when comparing file names. + Suggestion from Ulrich Drepper. + +2000-08-27 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_reg): New parameters: X and NEW_DST. + Remove the SPARSE_MODE parameter. Update caller. + Perform POSIX-mandated (for cp) open-with-O_WRONLY|O_TRUNC when copying + a regular source file and the destination file exists; upon failure, + unlink that existing file, then open again, but with O_WRONLY|O_CREAT. + (copy_internal): `force' is not related to interactive; remove + the conjunct. + Remove the entire `else if (x->force)' block; justifying + removal of the non-directory part is easy: POSIX requires we try + to open an existing regular file, so we can't unlink it beforehand. + The part that changes the mode on a directory to allow overwriting + isn't necessary. + + * src/copy.c (copy_reg): Rename two goto labels. + (copy_internal): Set `new_dst' when the move_mode rename fails, + since we then unlink the destination file. + + * src/cp.c (usage): --force is independent of --interactive. + +2000-08-24 Jim Meyering <meyering@lucent.com> + + Put back the kludge. It's necessary after all. + * src/dd.c (buggy_lseek_support): New function. + (skip): Use it. + Frank Adler reported that although _llseek returns 0, lseek + erroneously returns an offset suggesting the operation succeeded + even though it fails. + + * install-sh: Double quote as needed, to protect against arguments + containing spaces or shell metacharacters. Reported by Bruno Haible. + +2000-08-23 Jim Meyering <meyering@lucent.com> + + * tests/dd/not-rewound: New test, for the SEEK_CUR vs. SEEK_SET part + of the last change. Based on Paul's example. + * tests/dd/Makefile.am (TESTS): Add not-rewound. + +2000-08-22 Paul Eggert <eggert@twinsun.com> + + * src/dd.c (skip): + Assume lseek failed if it returned zero, since a zero return is + impossible and some buggy drivers return zero. + + Use SEEK_CUR rather than SEEK_SET; this fixes a bug when the + file descriptor is not currently rewound. + +2000-08-23 Jim Meyering <meyering@lucent.com> + + * src/dd.c: Back out my last change. Paul's (above) is better. + +2000-08-22 Jim Meyering <meyering@lucent.com> + + Don't even try to use lseek on character devices. + * src/dd.c (buggy_lseek_support): New function. + (skip): Use it. + Reported by Martin Gallant via Michael Stone. + +2000-08-21 Jim Meyering <meyering@lucent.com> + + * tests/cp/same-file: Clean up traps. Create files in a subdir. + + * install-sh (oIFS): Remove unmatched double quote, left over from + my 2000-08-12 change. From J. David Anglin. + + * Makefile.maint (wget-update): Get the latest version of depcomp. + + * depcomp: Update from automake. + +2000-08-20 Jim Meyering <meyering@lucent.com> + + * Version 4.0y. + + Add support for cp's new POSIX-mandated -H and -L options. + * src/copy.h (enum Dereference_symlink): Define. + (struct cp_options) [dereference]: Change type to Dereference_symlink. + * src/copy.c: Declare lstat. + (copy_dir): Set `xstat' member to lstat so that with `-H' we don't + follow symlinks found via recursive traversal. + Update uses of `dereference' to compare against new enum member names. + * src/cp.c (long_opts): Add --dereference, -L. + (usage): Describe -L and -H. + (cp_option_init): Initialize to DEREF_UNDEFINED, not `1'. + (main): Add `H' and `-L' to getopt spec string. + [case 'a']: Initialize `dereference' to DEREF_NEVER, not 0. + [case 'd']: Likewise. + [case 'H']: New case. + [case 'L']: New case. + [case 'R']: Don't set dereference to `0' here. + If it's not yet defined, set x.dereference to DEREF_NEVER + if -R was specified, else set it to DEREF_ALWAYS. + Set x.xstat accordingly for -H. + * doc/fileutils.texi (cp invocation): Describe -H and -L. + * src/mv.c (cp_option_init): Initialize to DEREF_NEVER, not `0'. + * src/install.c (cp_option_init): Initialize to DEREF_ALWAYS, not `1'. + + * tests/cp/Makefile.am (TESTS): Add cp-HL. + * tests/cp/cp-HL: New test. + + * src/du.c (print_totals): Rename global from opt_combined_arguments. + +2000-08-17 Paul Eggert <eggert@twinsun.com> + + * src/copy.c (DO_CHOWN): Do not make a special case for non-root. + POSIX.2 requires that cp -p and mv attempt to set the uid of the + destination file, even if you're not root. This affects behavior + only on hosts that let you give files away via chmod. + * NEWS: Describe the above change. + +2000-08-15 Jim Meyering <meyering@lucent.com> + + * src/du.c (count_entry): Remember the current directory also for `.' + and `..'. Reported by Stephen Smoogen, based on a patch from H.J. Lu. + * tests/du/two-args: Add tests for this. + +2000-08-14 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_reg): Move declaration of local, `n_read', into + the scope where it's used. + (copy_internal): In calling copy_reg, pass not the raw `src_mode', + but the possibly-umask-relative mode, `get_dest_mode (x, src_mode)'. + +2000-08-13 Jim Meyering <meyering@lucent.com> + + * src/copy.c (get_dest_mode): Rename from new_nondir_mode. + Honor the umask for `cp', but not for `mv' or `cp -p'. + (copy_reg): New 4th parameter, dst_mode. Pass it as 3rd arg. to open. + (copy_internal): Change type of locals `src_mode' and `src_type' from + int to mode_t. + Remove unnecessary local, `fix_mode'. + Combine two if-stmts into one. + Pass `src_mode' as 4th arg to copy_reg. + If we've just created a new regular file, return early, skipping the + chmod step. copy_reg now sets permissions of such files upon creation. + Use get_dest_mode, so there's just one chmod call here. + + * tests/cp/Makefile.am (TESTS): Add perm. + * tests/cp/perm: New tests, to help ensure the above didn't + change anything. + +2000-08-12 Jim Meyering <meyering@lucent.com> + + * tests/mv/into-self-2: Remove test for the VERSION_CONTROL and/or + SIMPLE_BACKUP_SUFFIX envvars. Source ../envvar-check instead. + * tests/mv/i-2: Likewise. + * tests/mv/to-symlink: Likewise. + * tests/cp/slink-2-slink: Likewise. + * tests/mv/partition-perm: Likewise. + * tests/cp/cp-mv-backup: Likewise. + + * tests/Makefile.am (EXTRA_DIST): Add envvar-check. + * tests/envvar-check: New file. + + * install-sh: Remove trailing blanks. + Output diagnostics to stderr, not stdout. + Remove many useless curly braces and double quotes. + +2000-08-11 J. David Anglin <dave@hiauly1.hia.nrc.ca> + + * install-sh: Improve error handling. + Do the job even when the target file is `busy' on systems + that don't allow such files to be unlinked. + +2000-08-12 Jim Meyering <meyering@lucent.com> + + * README: Remove note about how installation can fail and the + work-around, now that it's all automated. + +2000-08-07 Paul Eggert <eggert@twinsun.com> + + * src/cp.c (usage, main): For cp -P messages, mention the new + behavior as well as the old. + +2000-08-07 Paul Eggert <eggert@twinsun.com> + + Standardize on "memory exhausted" instead of "Memory exhausted" + or "virtual memory exhausted". + Invoke xalloc_die instead of printing our own message. + * src/chmod.c (main): Likewise. + * src/copy.c (copy_dir, copy_internal): Likewise. + * src/cp.c (do_copy): Likewise. + * src/dircolors.c (xstrndup): Likewise. + * src/install.c (main): Likewise. + * src/ln.c (do_link): Likewise. + * src/mkdir.c (main): Likewise. + * src/mkfifo.c (main): Likewise. + * src/mknod.c (main): Likewise. + * src/mv.c (movefile): Likewise. + * src/remove.c (remove_cwd_entries, rm): Likewise. + * src/shred.c (quotearg_colon, xmalloc): + "virtual memory exhausted" -> "memory exhausted" + +2000-08-07 Jim Meyering <meyering@lucent.com> + + * src/cp.c (enum) [PARENTS_OPTION]: New member. + (long_opts): Update "parents" and deprecated "path" entries to use + `PARENTS_OPTION', not `P'. + (usage): Update --help output. + (main): Warn that the meaning of `-P' will soon change. + +2000-08-06 Jim Meyering <meyering@lucent.com> + + * doc/fileutils.texi (cp invocation) [-r]: Remove inaccurate mention of + `non-symbolic links'. + +2000-08-05 Jim Meyering <meyering@lucent.com> + + * config.guess: Update from master repository. + * config.sub: Likewise. + + * Regenerate build/config framework to use the latest CVS versions + of automake and autoconf. + +2000-07-31 Jim Meyering <meyering@lucent.com> + + * src/shred.c [!HAVE_CONFIG_H]: Use `virtual memory exhausted', not + `Memory exhausted'. + +2000-07-30 Jim Meyering <meyering@lucent.com> + + * src/sys2.h (ISPRINT): Undef before defining to avoid warning. + + * src/copy.c (copy_internal): Quote the file names that are displayed + with --verbose and --backup. + * src/remove.c (remove_file): Quote the file names that are displayed + with --verbose. + (remove_dir): Likewise. + * tests/mv/mv-special-1: Add quote marks to match new behavior. + * tests/rm/r-1: Likewise. + * tests/rm/r-2: Likewise. + + * src/df.c: Convert "`%s'" in format strings to "%s", and wrap each + corresponding argument in a `quote (...)' call. + * src/dircolors.c: Likewise. + * src/du.c: Likewise. + * src/mkdir.c: Likewise. + * src/mkfifo.c: Likewise. + * src/mknod.c: Likewise. + * src/shred.c: Likewise. + * src/rmdir.c: Likewise. + * src/cp-hash.c: Likewise. + + * src/chgrp.c: Convert "`%s'" in format strings to "%s", and wrap each + corresponding argument in a `quote (...)' call. + Add more precise diagnostics. + * src/chmod.c: Likewise. + * src/chown.c: Likewise. + + * src/remove.c (remove_cwd_entries): Quote one more file name. + + * src/help-version: Remove file. Move it to ... + * tests/help-version: ...here + * tests/Makefile.am (TESTS): Set to help-version. + (TESTS_ENVIRONMENT): Define. + (EXTRA_DIST): Add $(TESTS). + * src/Makefile.am (EXTRA_DIST): Remove help-version. + (TESTS): Remove definition. + (TESTS_ENVIRONMENT): Remove definition. + +2000-07-24 Bruno Haible <haible@clisp.cons.org> + + * src/ls.c: Include <limits.h>, <stdlib.h>, <wchar.h>, <wctype.h>. + (quote_name): Use mbrtowc to step through the filename string while + replacing nonprintables with question marks. Return the screen width, + not the strlen length. Do no output if the out stream is NULL. + (length_of_file_name_and_frills): Use the quote_name return value. + +2000-07-25 Jim Meyering <meyering@lucent.com> + + * src/chgrp.c (change_file_group): Save errno from a possibly failed + chown, and use that later. Otherwise, errno itself could be clobbered + before used. + * src/chmod.c (change_file_mode): Likewise. + * src/chown.c (change_file_owner): Likewise. + + * src/mv.c (main): Remove unnecessary "%s" argument. + + * src/ln.c: Convert "`%s'" in format strings to "%s", and wrap each + corresponding argument in a `quote (...)' call. + Add more precise diagnostics. + * src/mv.c: Likewise. + * src/cp.c: Likewise. + * src/touch.c: Likewise. + +2000-07-23 Jim Meyering <meyering@lucent.com> + + * Version 4.0x. + + * src/dd.c (main): Give a better diagnostic for e.g., + `dd if=/dev/fd0 seek=100000000000'. + Convert "`%s'" in format strings to "%s", and wrap each + corresponding argument in a `quote (...)' call. + Add many, more precise diagnostics. + + * src/remove.c (ASSIGN_STRDUPA): Remove macro definition. + * src/sys2.h (ASSIGN_STRDUPA): New macro (moved here from remove.c). + + Fix cp so that `cp -r DIR1/ DIR2' works once again. + * src/cp.c (ASSIGN_BASENAME_STRDUPA): New macro. + (do_copy): Use it here (so we always strip trailing slashes before + calling base_name). Reported by Branden Robinson via Michael Stone. + + Test for the above fix. + * tests/cp/Makefile.am (TESTS): Add dir-slash. + * tests/cp/dir-slash: New file. + +2000-07-17 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (WGET): Define. + (ftp-gnu): Define. + (wget-update): New rule, based on the one in autoconf. + + * src/shred.c (usage): Give a little more info. + Remove a FIXME comment. + + Avoid warnings. + * src/ls.c (struct bin_str): Declare `string' member to be `const'. + (put_indicator): Declare local `p' to be `const'. + +2000-07-15 Jim Meyering <meyering@lucent.com> + + Begin converting "`%s'" in format strings to "%s", and wrap each + corresponding argument in a `quote (...)' call -- if there's only one. + If there are two or more, then use `quote_n (0, ...), + quote_n (1, ...), ...'. + + Here's the justification, from Paul Eggert (thanks, Paul): + + [Consider] the following, taken from fileutils/copy.c: + + error (0, errno, _("cannot create directory `%s'"), dst_path); + + Now, suppose dst_path is "/'\nrm: removing all files under `/" + (expressed in C string syntax). This will cause the user to see + the following delightfully ambiguous display: + + cp: cannot create directory `/' + rm: removing all files under `/' + + It would be better to rewrite the above line to be something + like this: + + error (0, errno, _("cannot create directory %s"), quote (dst_path)); + + using the definition of "quote" [in lib/quote.c]. That way, + the user will see the following unambiguous display instead: + + cp: cannot create directory `/\'\nrm: removing all files under `/' + + One might object that any user who asks to copy a file with + a weird name like that deserves to get confused. But this + is not a good objection, as the source of the string may not + be under the user's control, or even visible to the user. + + * src/copy.c: Adapt format strings and args as above. Include quote.h. + I have deliberately not changed the output of --verbose. + FIXME: maybe I should. + * src/cp.c: Likewise. + * src/remove.c: Likewise. + * src/install.c: Likewise. and improve a couple diagnostics. + +2000-07-13 Paul Eggert <eggert@twinsun.com> + + * NEWS: Describe --quoting-style=clocale. + + * doc/fileutils.texi: New clocale quoting style. + Undo the previous change to the locale quoting style. + +2000-07-09 Jim Meyering <meyering@lucent.com> + + * config.guess: Update from FSF. + * config.sub: Likewise. + +2000-07-05 Paul Eggert <eggert@twinsun.com> + + * doc/fileutils.texi: Don't use ` and ' for quoting. + +2000-07-01 Jim Meyering <meyering@lucent.com> + + * Version 4.0w. + + * tests/touch/dangling-symlink: Warn about the problem rather + than failing, on some very recent (at least 2.3.99) versions of + the Linux kernel. Suggestion from Ulrich Drepper. + * tests/touch/Makefile.am (TESTS_ENVIRONMENT): Define host_triplet + for use in the dangling-symlink test. + +2000-06-28 Jim Meyering <meyering@lucent.com> + + * tests/mv/i-2: Don't copy `out' into /tmp. + +2000-06-26 Paul Eggert <eggert@twinsun.com> + + Now that savedir.c has been cleaned up... + * src/chgrp.c (change_dir_group): Don't set errno before + invoking savedir, and assume that errno is nonzero if savedir fails. + * src/chmod.c (change_dir_mode): Likewise. + * src/chown.c (change_dir_owner): Likewise. + * src/copy.c (copy_dir): Likewise. + * src/du.c (count_entry): Likewise. + +2000-06-26 Paul Eggert <eggert@twinsun.com> + + * src/df.c (show_dev): Round disk usage percentage up, not to + nearest value. Use integer arithmetic if it's easy. Fix bug + when converting twos-complement negative values to floating point. + +2000-06-25 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): Don't return immediately after a failed + copy_dir call -- otherwise, the failure to read a single file in a + source directory would cause the containing destination directory + not to have the owner and/or permissions set properly. + Reported by Piotr and Maciej Kwapulinski. + * tests/cp/fail-perm: Test for it. + * tests/cp/Makefile.am (TESTS): Add fail-perm. + + * Version 4.0v. + +2000-06-18 Jim Meyering <meyering@lucent.com> + + * README-alpha: Update. + +2000-06-17 Jim Meyering <meyering@lucent.com> + + * tests/install/basic-1: Don't fail (just exit 77) if strip doesn't + work. Suggestion from Ulrich Drepper. + Add canonical trap/mkdir/cd, plus exit portability cruft. + +2000-06-16 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_reg): Give a slightly better diagnostic upon + open failure. + +2000-06-15 Paul Eggert <eggert@twinsun.com> + + * NEWS, doc/fileutils.texi: df, du, and ls now round disk + usage up and disk free space down. + + * src/df.c (df_readable): New arg for rounding style. + Round negative numbers correctly. + (show_dev): Round disk usage up and disk free space down. + + * src/ls.c (print_dir, gobble_file, print_long_format, + print_file_name_and_frills): Round disk usage up. + * src/du.c (print_size): Likewise. + +2000-06-14 Andreas Schwab <schwab@suse.de> + + * tests/rm/r-1 (framework_failure): Initialize this instead of + test_failure. + +2000-06-12 Jim Meyering <meyering@lucent.com> + + * Version 4.0u. + + * tests/rm/r-1: Clean up. + Be careful to remove temp directory upon interrupt. + + * src/mv.c (main): Give the correct diagnostic when using the + --target-dir=DIR option, but no arguments. + Patch from Michael Stone. Reported by Herbert Xu. + * tests/mv/diag: New test for this. + * tests/mv/Makefile.am (TESTS): Add diag. + +2000-06-08 Brian Youmans <3diff@gnu.org> + + * doc/perm.texi (Multiple Changes): Fix typo. + * doc/fileutils.texi: A few typos and minor formatting fixes. + * doc/getdate.texi: Likewise. + +2000-06-06 Jim Meyering <meyering@lucent.com> + + * Makefile.maint (alpha_subdir): Factor out `gnu/fetish'. + +2000-06-04 Jim Meyering <meyering@lucent.com> + + * Version 4.0t. + + * src/df.c (show_point) [HAVE_REALPATH && !HAVE_RESOLVEPATH]: + Cast undeclared `realpath' to char* to avoid warning. + +2000-06-03 Jim Meyering <meyering@lucent.com> + + * src/install.c (usage): Document that -v is a synonym for --verbose. + * src/mkdir.c: Allow -v as synonym for --verbose, to be consistent + with other fileutils. + * src/rmdir.c: Likewise. + Suggestion from François Pinard. + +2000-06-02 Jim Meyering <meyering@lucent.com> + + * configure.in (ALL_LINGUAS): Add Danish (da). + +2000-05-29 Jim Meyering <meyering@lucent.com> + + Allow `cp -d -u' to copy one symlink onto another that's identical. + * src/copy.c (copy_internal): Change the || to ^ in the big sameness + test, so copying one symlink onto another, identical one doesn't fail + here. + If the symlink call fails, don't report the failure if the destination + already exists and is a symlink pointing to the proper name. + Reported by Andrew Burgess. + * tests/cp/slink-2-slink: New test. + * tests/cp/Makefile.am (TESTS): Add slink-2-slink. + * tests/cp/same-file: Adapt to fit new semantics of `cp -d'. + +2000-05-25 Jim Meyering <meyering@lucent.com> + + * src/dd.c (close_stdout_wrapper): Don't dereference NULL pointer. + From Bob Proulx. + +2000-05-23 Jim Meyering <meyering@lucent.com> + + * tests/shred/remove: Add traps to clean up. + Correct broken running-as-root test. + + * tests/mv/i-2: Exit 77 when run as root. Reported by Andreas Schwab. + +2000-05-20 Jim Meyering <meyering@lucent.com> + + * Version 4.0s. + + * tests/mv/Makefile.am (TESTS): Add i-2, for 2000-05-12 change. + + * tests/rm/r-2: Clean up. + * tests/ls/time-1 (LC_ALL): Set it unconditionally. + +2000-05-19 Jim Meyering <meyering@lucent.com> + + Save device number as well as inode number for each directory, + and use both in comparisons. This makes the directory cycle + test more robust, and closes the small remaining hole whereby + an attacker could subvert a running `rm -r' command. + + * src/remove.c (struct active_dir_ent) [st_dev]: New member. + [st_ino]: Rename from `inum'. + (make_active_dir_ent) [device]: New parameter. + (hash_compare_active_dir_ents): Compare using SAME_INODE macro. + (fspec_init_common): New function, factored out. + (fspec_init_file): Initialize have_device member. + (fspec_get_full_mode): Remove parameter. Update caller. + Set have_device and st_dev members. + * src/remove.h (struct File_spec) [have_device, st_dev]: New members + +2000-05-18 Jim Meyering <meyering@lucent.com> + + * src/remove.c (rm): Combine adjacent fputc and fprintf. + + * tests/rm/Makefile.am (TESTS): Add hash. + * tests/rm/hash: New test for the fix in lib/hash.c. + +2000-05-17 Jim Meyering <meyering@lucent.com> + + * src/remove.c (remove_dir): Detect (and fail upon) attempt to subvert + a running `rm -r'. Reported by Morten Welinder. + +2000-05-15 Jim Meyering <meyering@lucent.com> + + * src/ln.c (do_link): Use complete strings in diagnostics so they + are easier to translate. Reported by Michel Robitaille. + (main): Drop support for the case in which S_ISLNK wasn't defined. + It was broken in any case. + + * tests/ls/time-1: Set LC_ALL to `C' to avoid failure when the + current locale is not C (POSIX). From Matthew Clarke. + +2000-05-13 Jim Meyering <meyering@lucent.com> + + * src/help-version: New test. + * src/Makefile.am (TESTS): Define. + (TESTS_ENVIRONMENT): Likewise. + (EXTRA_DIST): Add help-version. + + * src/chgrp.c: Arrange to call close_stdout only upon exit. + * src/chmod.c: Likewise. + * src/chown.c: Likewise. + * src/cp.c: Likewise. + * src/df.c: Likewise. + * src/dircolors.c: Likewise. + * src/du.c: Likewise. + * src/install.c: Likewise. + * src/ln.c: Likewise. + * src/ls.c: Likewise. + * src/mkdir.c: Likewise. + * src/mkfifo.c: Likewise. + * src/mknod.c: Likewise. + * src/mv.c: Likewise. + * src/rm.c: Likewise. + * src/rmdir.c: Likewise. + * src/shred.c: Likewise. + * src/sync.c: Likewise. + * src/touch.c: Likewise. + + * src/dd.c: Include closeout.h. + (usage): Don't call close_stdout here. + (close_stdout_wrapper): New, kludgey, function and file-scoped global. + (main): Register it with atexit. + +2000-05-12 Jim Meyering <meyering@lucent.com> + + Unlike for mv, -i doesn't cancel the effect of -f + and -f doesn't cancel the effect of -i. + * src/cp.c (main) ['f']: Don't reset `x.interactive'. + ['i']: Don't reset `x.force'. + * src/copy.c (copy_internal): Fix force and interactive tests. + Patch from Michael Stone, reported by Jeff Sheinberg. + +2000-05-09 Jim Meyering <meyering@lucent.com> + + * src/shred.c: Include sys/types.h in shred.c before including + sys/stat.h or system.h. From John David Anglin. + +2000-05-08 Jim Meyering <meyering@lucent.com> + + * tests/shred/remove: Don't use touch in root test. Instead, append to + the test file, since now touch operates even on files which deny owner + write access. + +2000-05-06 Jim Meyering <meyering@lucent.com> + + * src/Makefile.am (shred_LDADD): Add @LIB_CLOCK_GETTIME@. + + * src/rmdir.c (EEXIST): Remove now-unused definition. + (ENOTEMPTY): Likewise. + (errno_rmdir_non_empty): Rewrite to use RMDIR_ERRNO_NOT_EMPTY, + which is determined by the autoconf test in m4/rmdir-errno.m4. + +2000-05-03 Bruno Haible <haible@clisp.cons.org> + + Don't fail when running `make check' with non-`C' locale. + * tests/cp/symlink-slash: During ls, set LANGUAGE (for GNU gettext) + and LC_ALL (for systems which look at LC_MESSAGES). + * tests/rm/r-2: Define LC_ALL instead of LANG, in case the user has + LC_CTYPE or LC_ALL set. Define it and LANGUAGE before the first use + of sort. + +2000-05-03 Jim Meyering <meyering@lucent.com> + + With a recent glibc, _GNU_SOURCE, and -O, strndup may be a macro. + * src/sys2.h (!HAVE_DECL_STRNDUP): Declare strndup. + * src/dircolors.c: Remove declaration of strndup. + Reported by Bruno Haible. + +2000-05-02 Jim Meyering <meyering@lucent.com> + + * src/rm.c (usage): Add the answer to `How do I remove a file named -f?' + +2000-05-01 Jim Meyering <meyering@lucent.com> + + * src/install.c (change_attributes): Don't even attempt the chmod + if the chown fails. Before, when a non-root user ran `install -m 4755 + -o nobody FILE DEST', DEST would set-uid not to `nobody' but rather to + the ID of the installing user. Reported by Marc Olzheim. + +2000-04-30 Jim Meyering <meyering@lucent.com> + + * src/touch.c (O_NOCTTY): Define if not defined already. + (touch): Add O_NOCTTY to the flags passed to open. + +2000-04-29 Jim Meyering <meyering@lucent.com> + + * Version 4.0r. + + * src/cp.c [LSTAT_FOLLOWS_SLASHED_SYMLINK] (lstat): Define to rpl_lstat. + +2000-04-27 Jim Meyering <meyering@lucent.com> + + Clean up. + * tests/mkdir/Makefile.am (TESTS_ENVIRONMENT): Set PATH, not MKDIR. + * tests/mkdir/p-1: Use mkdir, not $MKDIR. + * tests/mkdir/p-2: Likewise. + + * configure.in (AC_OUTPUT): Add tests/du/Makefile. + * tests/Makefile.am (SUBDIRS): Add du. + * tests/du: New directory. + * tests/du/two-args: New test. + + * tests/mkdir/special-1: New test. + * tests/mkdir/Makefile.am (TESTS): Add special-1. + +2000-04-25 Paul Eggert <eggert@twinsun.com> + + * src/du.c (pop_dir): Remove through_symlink arg; use null cwd + for that purpose instead. + (count_entry): Also save the directory if we're saving more + than one level. + Fix file descriptor and memory leak when chdir fails. + +2000-04-26 Jim Meyering <meyering@lucent.com> + + * src/mkdir.c: Rename global: s/path_mode/create_parents/. + (main): No longer perform explicit chmod when creating + parent directories, since make_path now does the chmod. + +2000-04-17 Jim Meyering <meyering@lucent.com> + + * src/chown.c: New option: --from=CURRENT_OWNER:CURRENT_GROUP. + (enum) [FROM_OPTION]: New member. + (long_options): New getopt spec. + (change_file_owner): Add old_user, old_group parameters. Use them. + (change_dir_owner): Likewise. + (usage): Describe. + (main): New case. + From Andries Brouwer. + * doc/fileutils.texi (invoking chown): Document it. + +2000-04-16 Jim Meyering <meyering@lucent.com> + + * src/cp.c: New option: --strip-trailing-slashes. + (enum) [STRIP_TRAILING_SLASHES_OPTION]: New member. + (remove_trailing_slashes): New global. + (long_opts): New getopt spec. + (usage): Describe. + (do_copy): Strip trailing slashes on SOURCE names only if the new + option has been specified. + (main): New case. + + * tests/cp/symlink-slash: New test for the change in behavior. + * tests/cp/Makefile.am (TESTS): Add symlink-slash. + + * doc/fileutils.texi (Trailing slashes): Factor out discussion on + trailing slashes into its own node. + Cross reference from cp and mv. + +2000-04-14 Jim Meyering <meyering@lucent.com> + + * src/touch.c (touch): Add O_NOCTTY to the list of open-time flags. + +2000-04-13 Jim Meyering <meyering@lucent.com> + + Move some code into m4/. + * configure.in (_GNU_SOURCE): Don't define here. + (AC_SYS_LARGEFILE): Don't use here. + (AM_C_PROTOTYPES): Don't use here. + * acconfig.h: Remove now-unused file. + +2000-04-08 Jim Meyering <meyering@lucent.com> + + * doc/fileutils.texi (cp invocation): Mention that there is an + application for cp's --sparse=never option. From Martin Hippe. + (cp invocation): Describe how --backup and --force + can be useful together. + +2000-03-10 Alan Iwi <iwi@atm.ox.ac.uk> + + * src/ls.c: Add support for "ln=target" in the LS_COLORS variable, + to colorize links as for the file/directory pointed to. + * src/dircolors.hin: Add a few words of documentation of the above. + +2000-04-08 Jim Meyering <meyering@lucent.com> + + * src/cp.c (usage): Document that while the --backup option takes an + optional argument, the -b option accepts none. + (main): Use `backup type' in call to xget_version, not the + now-deprecated `--version-control'. + * src/install.c: Likewise. + * src/ln.c: Likewise. + * src/mv.c: Likewise. + +2000-03-12 Jim Meyering <meyering@lucent.com> + + Merge from textutils. + * src/system.h (O_BINARY, O_TEXT): Define if necessary. + (SET_BINARY, SET_BINARY2): Define. + (DEV_BSIZE): Define to BBSIZE if appropriate. + +2000-03-10 Jim Meyering <meyering@lucent.com> + + * tests/mv/mv-special-1: Make the message more like that in the + similar touch and shred tests. + * tests/touch/fifo: Accommodate SunOS-NFS-mounting-OpenBSD mkfifo + bug and `exit 77' if the fifo cannot be created. + Report and suggestion from Volker Borchert. + +2000-03-03 Jim Meyering <meyering@lucent.com> + + * po/Makefile.in.in (dist distdir): Don't use `ln' (which was just a + space optimization anyway) to populate $(distdir). Otherwise, the dist + rules that change permissions would end up affecting the master sources. + +2000-03-01 Paul Eggert <eggert@twinsun.com> + + * src/df.c (show_point): Ignore shortcuts based on path + prefixes that are loop file system mount points, since they + yield undesirable output. + +2000-02-29 Jim Meyering <meyering@lucent.com> + + * src/ls.c (decode_switches): Remove `e' from getopt_long's list of + option characters. Reported by John Summerfield. + +2000-02-28 Jim Meyering <meyering@lucent.com> + + * tests/install/basic-1: Use ginstall, not install. + +2000-02-27 Jim Meyering <meyering@lucent.com> + + * Version 4.0q. + + * src/sys2.h: Guard declaration of strtoull also with + `&& HAVE_UNSIGNED_LONG_LONG'. + + * src/sys2.h: Use `#if !HAVE_DECL...' instead of `#ifndef HAVE_DECL...' + now that autoconf always defines the HAVE_DECL_ symbols. + + * src/install.c (install_file_to_path): Always use install_file_in_file. + Based on a patch from Adam Klein via Michael Stone. + + * tests/install/Makefile.am (TESTS): Add create-leading. + * tests/install/create-leading: New file. + + * tests/install/basic-1: Clean up. + * tests/install/Makefile.am (TESTS_ENVIRONMENT): Add PATH. Remove cruft. + +2000-02-26 Jim Meyering <meyering@lucent.com> + + Tranform the generated src/Makefile.in file so it falls back on + using /bin/rm when necessary. The old rule didn't always work. + This is necessary only on certain losing systems, and because this + package builds an `rm' executable and some people put `.' too + early in their PATH. + * Makefile.am (DISTCLEANFILES): Remove .deps and `FIXME' comment. + (EXTRA_DIST): Add .kludge-stamp. + (.kludge-stamp): New rule. + * src/Makefile.am (AUTOMAKE): Remove definition. + (Makefile.in): Remove dependency on automake-wrap script. + (EXTRA_DIST): Remove automake-wrap. + * src/automake-wrap: Remove file. + + * tests/rm/r-2: Don't make the success of the test depend on the + order in which directory entries are processed. + Reported by Andreas Schwab. + +2000-02-12 Jim Meyering <meyering@lucent.com> + + * po/POTFILES.in: Add lib/userspec.c. + + * doc/fileutils.texi (chown invocation): Deprecate use of `.'. + + * src/chown.c (usage): Mention only `:', and not `.' as the separator, + since POSIX allows only the former. + Prompted by a report from Manas Garg. + +2000-02-11 Jim Meyering <meyering@lucent.com> + + * src/df.c (main): Count the stat'able arguments. + Print the header line only if there is at least one valid argument. + Reported by Andy Longton <alongton@metamark.com> + +2000-02-10 Jim Meyering <meyering@lucent.com> + + Make du work when invoked from an unreadable directory. + + * src/du.c (pop_dir): New function. + (count_entry): Factor out common code (pop_dir), and call the new + function instead. + Move declaration of global, `stat_buf' into this function. + (du_files): Don't stat `.' or call save_cwd, since count_entry + never returns with a changed working directory. + +2000-02-09 Jim Meyering <meyering@lucent.com> + + * tests/mv/mv-special-1: Use $null and $dir in place of literals + in `here' script. + Exit 77 if we can't set up the framework (Volker Borchert reported + that this test would fail because mknod failed when run on SunOS4.1.4 + using NFS-mounted disk from an OpenBSD system). + +2000-02-05 Jim Meyering <meyering@lucent.com> + + * src/copy.c (copy_internal): Don't allow mv to move a directory onto + a non-directory. Reported by Brian Kimball via Michael Stone. + +2000-02-03 Jim Meyering <meyering@lucent.com> + + * tests/mv/Makefile.am (TESTS): Add dir-file. + (TESTS_ENVIRONMENT): Remove vestiges of old tests. + * tests/mv/dir-file: New file. + +2000-02-02 Jim Meyering <meyering@lucent.com> + + * tests/touch/Makefile.am (TESTS): Add fifo. + * tests/touch/fifo: New file. + +2000-02-01 Jim Meyering <meyering@lucent.com> + + * src/touch.c (O_NDELAY): Define to 0 if not defined. + (O_NONBLOCK): Define to O_NDELAY if not defined. + (touch): Open with O_NONBLOCK, so one can touch a fifo without hanging. + Reported by Eric G. Miller via Michael Stone. + + * man/*.x: Change ." to .\". + Reported by Andreas Schwab and Brendan O'Dea. + +2000-01-31 Jim Meyering <meyering@lucent.com> + + * man/Makefile.maint (ginstall_filter): Define. + ($(man_MANS)): Use it here so that the install.1 man page refers + to `install', not `ginstall'. Reported by Andreas Schwab. + +2000-01-30 Jim Meyering <meyering@lucent.com> + + * Version 4.0p. + + * configure.in: Move library-related tests into m4/lib-check.m4. + + * src/system.h (ST_NBLOCKS): Use st_size only for regular files and + for directories. From H. J. Lu. + + * src/dd.c (main): Exit with nonzero status if ftruncate fails. + +2000-01-24 Jim Meyering <meyering@lucent.com> + + * src/ln.c (usage): Describe behavior when LINK_NAME is omitted. + From Michael Stone. + + * src/mv.c (main): Don't expect array index `n_files - 1' to evaluate + to `-1' for unsigned int n_files == 0. Doing so lead to a segfault on + alpha. From Michael Stone. + +2000-01-23 Jim Meyering <meyering@lucent.com> + + * configure.in (AM_FUNC_OBSTACK): Remove. (move to m4/.) + Remove nearly all function checks (moved to m4/.) + (AC_SUBST(DF_PROG)): Move this to m4/. + (ftruncate test): Move into new file: m4/ftruncate.m4. + (AC_HEADER_MAJOR, AC_HEADER_DIRENT): Move into m4/. + Remove df-related tests. i.e., move jm_LIST_MOUNTED_FILESYSTEMS, + jm_FSTYPENAME, and jm_FILE_SYSTEM_USAGE) into m4/. + +2000-01-22 Jim Meyering <meyering@lucent.com> + + * configure.in: Move addext.c prerequisites from this file into m4/. + (AC_CHECK_HEADERS): Move these checks into m4/. + +2000-01-17 Paul Eggert <eggert@twinsun.com> + + * src/dd.c (interrupt_handler): Likewise. + (install_handler): Use SA_NOCLDSTOP, not _POSIX_VERSION, + to decide whether to call sigaction; this fixes an old typo. + +2000-01-16 Jim Meyering <meyering@lucent.com> + + * lib/Makefile.am: Sync with sh-utils/lib/Makefile.am. + + * configure.in: Remove AM_FUNC_ERROR_AT_LINE, jm_FUNC_GNU_STRFTIME, + jm_FUNC_GROUP_MEMBER, jm_FUNC_GETGROUPS, AC_FUNC_VPRINTF, and + AC_FUNC_ALLOCA. They're now in m4/. + + Sync with the version from emacs-20.5. + * lib/alloca.c + (<string.h>): Include if HAVE_STRING_H. + (<stdlib.h>): Include if HAVE_STDLIB_H. + (alloca): Abort if malloc fails. + Reported by Paul Eggert. + +2000-01-15 Jim Meyering <meyering@lucent.com> + + * configure.in (AC_REPLACE_FUNCS): Remove these: euidaccess memcpy + memcmp memset mkdir rmdir rpmatch stpcpy strndup strstr strtol + strtoul strverscmp. Now they're in m4/. + +2000-01-12 Jim Meyering <meyering@lucent.com> + + * tests/shred/remove: Make the warning that this shred test may not + be run as root more prominent. Suggestion from Volker Borchert. + +2000-01-11 Paul Eggert <eggert@twinsun.com> + + Quote multibyte characters correctly. + + * lib/quotearg.c (ISGRAPH): Remove. + (ISPRINT): New macro. + (<wchar.h>): Include if HAVE_MBRTOWC && HAVE_WCHAR_H. + (isprint, mbrtowc, mbsinit, mbstate_t): New macros, + defined if ! (HAVE_MBRTOWC && HAVE_WCHAR_H). + (quotearg_buffer_restyled): New function, with most of the old + quotearg_buffer's contents. + Major rewrite to support multibyte characters. + (quotearg_buffer): Now just calls quotearg_buffer_restyled. + + * m4/c-bs-a.m4: New file. + * m4/prereq.m4 (jm_PREREQ_QUOTEARG): New macro. + (jm_PREREQ): Use it. + +2000-01-11 Paul Eggert <eggert@twinsun.com> + + * lib/modechange.c (mode_compile): Use uintmax_t, not unsigned + long, to parse numeric modes. Check for any unknown bits, not + just unknown bits left of the leftmost known bit. + +2000-01-11 Paul Eggert <eggert@twinsun.com> + + * lib/getdate.y: Update copyright notice. + +2000-01-11 Paul Eggert <eggert@twinsun.com> + + * COPYING: Sync with latest FSF version (fixing a minor Y2k problem). + +2000-01-11 Paul Eggert <eggert@twinsun.com> + + * lib/exclude.c, lib/exclude.h: Sync to the slightly more + general version of GNU tar. + + * src/du.c (count_entry): + Adjust to new calling convention for excluded_filename. + (main): Likewise, for add_exclude_file. + +2000-01-11 Jim Meyering <meyering@lucent.com> + + * lib/memcpy.c (memcpy): Protoize. + + Prepare to sync lib/ directories of fileutils, sh-utils, and textutils. + * lib/Makefile.am: s/fu/fetish/ + * src/Makefile.am: s/libfu/libfetish/ + + * lib/hash.c (hash_initialize): Fix typo in comment. + From François Pinard. + +2000-01-10 Jim Meyering <meyering@lucent.com> + + * Version 4.0o. + + * lib/Makefile.am (noinst_HEADERS): Add nanosleep.h. + +2000-01-09 Jim Meyering <meyering@lucent.com> + + * Version 4.0n. + + * src/ln.c (do_link): Produce the same sort of one-line output for + `--backup --verbose' as cp, mv, install. Before this, the backup + file name wasn't printed at all. + + This affects cp, install, and mv. + * src/copy.c (copy_internal): When making backup files in verbose + mode, 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 by itself. Suggestion from Karl Berry. + +2000-01-08 Jim Meyering <meyering@ascend.com> + + * lib/error.c (error): Use __strerror_r's return value only if + HAVE_WORKING_STRERROR_R. + (error_at_line): Likewise. + + * Makefile.maint (null_AM_MAKEFLAGS): Define. + (my-distcheck): Use it to avoid distributing out of date files + whose derivation would require a maintainer tool. + +2000-01-07 Jim Meyering <meyering@ascend.com> + + * lib/euidaccess.c: Sync with the GNU C library. + + * tests/dir/Makefile.am (TESTS_ENVIRONMENT): Add `pwd`/ prefix + to exported PATH value (though not strictly necessary, here). + * tests/dd/Makefile.am: Likewise. + * tests/dircolors/Makefile.am: Likewise. + * tests/rm/Makefile.am: Likewise. + * tests/rmdir/Makefile.am: Likewise. + * tests/shred/Makefile.am: Likewise. + * tests/touch/Makefile.am: Likewise. + * tests/shred/Makefile.am: Likewise. + +2000-01-06 Jim Meyering <meyering@ascend.com> + + * man/help2man: Import version 1.020. + + * lib/strftime.c: Sync with the GNU C Library. + +2000-01-06 Paul Eggert <eggert@set.twinsun.com> + + * tar/lib/getdate.y: Sync tm_diff with the GNU C Library. + (TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN. All uses changed. + (tm_diff): Renamed from difftm. All uses changed. + Replace body with that taken from GNU C Library 2.1.3pre1. + (get_date): Prefer tm_gmtoff to tm_diff if available. + +2000-01-04 Paul Eggert <eggert@twinsun.com> + + * savedir.c (savedir): Don't store past the end of an array if + name_size is zero and the directory is empty. + + * Makefile.maint (PREV_VERSION): Tweak so it handles e.g., 2.0a -> 2.0. + (alpha): Create xdelta diffs. + +2000-01-02 Jim Meyering <meyering@ascend.com> + + * Version 4.0m. + + * src/mv.c: New option: --strip-trailing-slashes. + + 1999-11-18 Paul Eggert <eggert@twinsun.com> + + * lib/strftime.c (my_strftime): Some old compilers object to + '\a', so don't bother optimizing for it. + +2000-01-01 Paul Eggert <eggert@twinsun.com> + + Fix bug: `df PATH' sometimes misbehaves when there is an + inaccessible mount point unrelated to PATH. + * configure.in (AC_CHECK_FUNCS): Add realpath, resolvepath. + * src/df.c (#pragma alloca): Add if _AIX is defined. + (path-concat.h): Include. + (show_point): If HAVE_REALPATH or HAVE_RESOLVEPATH is defined, + find the real absolute path for PATH, and use that to find the + mount point. + + (show_point): Prefer non-dummy entries in shortcuts, too. + Disable bogus mount dirs instead of restatting them each time. + +1999-12-30 Jim Meyering <meyering@ascend.com> + 1999-12-17 Kalle Olavi Niemitalo <tosi@stekt.oulu.fi> + + * src/rmdir.c (remove_parents, main): Don't pass errno to error + when printing "removing directory" message. Failure of rmdir is + handled elsewhere. + +1999-12-23 Jim Meyering <meyering@ascend.com> + + * configure.in: Remove clock_gettime tests. + Now they're in m4/jm-macros.m4. + + * src/ln.c (usage): Correct typos. + List new --target-directory=... usage. + Reported by Göran Uddeborg + + * src/mv.c (usage): List new --target-directory=... usage. + +1999-12-22 Jim Meyering <meyering@ascend.com> + + * lib/getdate.y (get_date): Fix typo in time_t overflow test. + From Michael Stone. + +1999-12-21 Andreas Schwab <schwab@suse.de> + + * tests/shred/remove: Use $file, not $tmp/file. Exit 77 if run as + root. + +1999-12-20 Paul Eggert <eggert@twinsun.com> + + * src/df.c (ceil_percent): Remove. + (show_dev): Avoid overflow problems when calculating percent. + Do not display negative percents. + +1999-12-19 Jim Meyering <meyering@ascend.com> + + * Version 4.0l. + + * doc/fileutils.texi: Clarify and combine descriptions of -c and of + --time=ctime. + Likewise for -u/--time=atime. + + * src/ls.c [! LSTAT_FOLLOWS_SLASHED_SYMLINK]: Use lstat wrapper. + [Notice the new configure-time test in m4/lstat-slash.m4. ] + (main): Back out change from 1999-02-19 that made ls remove + trailing slashes from command line arguments to accommodate early + versions of Linux. Now, `ls symlink-to-dir/' acts like + `ls symlink-to-dir/.' thus following the symbolic link, as POSIX says + it should. Suggestion from Bruno Haible and Andreas Schwab. + + * lib/xstat.in (slash_aware_lstat): New function. + (rpl_@xstat@): Use it. + * lib/Makefile.am (lstat.c): Adapt rule to handle new parts of xstat.in. + (lstat.c): Likewise. + + Make sure ls does the right thing with symlinks and trailing slashes. + * tests/ls/Makefile.am (TESTS): Add symlink-slash. + * tests/ls/symlink-slash: New test, for above-fixed bug. + +1999-12-18 Jim Meyering <meyering@ascend.com> + + * src/shred.c (wipename): When repeatedly renaming a file, making the + name shorter and shorter, skip to the next shorter length length if a + rename fails (e.g. due to permission denied). Otherwise, this loop + would iterate for so long that shred would appear to be stuck in an + infinite loop for any but the shortest file names. + Reported by Joe Orton. + + * configure.in (AC_OUTPUT): Add tests/shred/Makefile. + * tests/Makefile.am (SUBDIRS): Add shred. + * tests/shred: New directory + * tests/shred/remove: New file. Tests for the above-fixed bug. + +1999-12-13 Jim Meyering <meyering@ascend.com> + + * lib/makepath.c (make_path): Consistently use `error' to output + the verbose, `created directory ...' messages. + Reported by Bernhard Rosenkraenzer. + +1999-12-12 Jim Meyering <meyering@ascend.com> + + Move 120+ lines of stat.h-related macros from system.h (not shared) + to sys2.h, which is shared between fileutils, sh-utils, textutils. + * src/system.h: Move them from here... + * src/sys2.h: ... to here. + + * src/system.h (S_IRUSR, S_IRGRP, S_IWGRP, S_IROTH, S_IWOTH): Define + if not defined. This was necessary on a NeXT Turbostation running + Mach 3.3. Reported by Nelson H. F. Beebe. + + * src/ls.c (decode_switches): If -c or -u is specified and not -l + (or any other option that implies -l), and no sort-type was specified, + then sort by the ctime (-c) or atime (-u). Part of this change reverts + the 1998-01-10 delta. + (usage): Update to reflect this change. + Reported by Paul Slootman via Michael Stone. + +1999-12-09 Jim Meyering <meyering@ascend.com> + + * src/df.c (BLOCK_SIZE_OPTION, SYNC_OPTION, NO_SYNC_OPTION): Define + these and use them instead of `CHAR_MAX + n'. + * src/du.c (BLOCK_SIZE_OPTION, EXCLUDE_OPTION, MAX_DEPTH_OPTION): + Likewise. + * src/touch.c (TIME_OPTION): Likewise. + * src/rmdir.c (IGNORE_FAIL_ON_NON_EMPTY_OPTION): Likewise. + + * tests/ls/time-1: Test more of the framework (touch's -a and -m + options) before running the actual ls test. + +1999-12-07 Jim Meyering <meyering@ascend.com> + + * tests/cp/cp-mv-backup: Use 1>&2 rather than `1<&-'. + Suggestion from Volker Borchert. + +1999-12-05 Jim Meyering <meyering@ascend.com> + + * Makefile.maint: Remove ftp.enst.fr. + +1999-12-04 Jim Meyering <meyering@ascend.com> + + * Version 4.0k. + + * tests/mv/into-self-2: Adapt to reflect this change in behavior. + Make sure the VERSION_CONTROL envvar is not set. + Run diff if comparison fails. + + * src/copy.c (copy_internal): In move mode, if the rename attempt + fails, then unlink any existing destination file. This makes a + cross-device `mv' more consistent with the intra-device behavior. + This change is required by POSIX to make a cross-device move act with + semantics similar to those of the rename syscall. For example now + `mv' can 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. + Reported by Bruno Haible. + + * tests/mv/to-symlink: New file. Adds test for the above. + * tests/mv/Makefile.am (TESTS): Add to-symlink. + + * tests/cp/cp-mv-backup (trap): Be careful to close $actual before + removing the containing directory. Otherwise, on some systems rmdir + fails to remove the containing directory. + + * tests/ls/time-1: List --full-time dates upon failure. + +1999-12-02 Andreas Schwab <schwab@suse.de> + + * src/ls.c (check_symlink_color): New variable. + (main): Set it if we need to check for dangling symlinks when + displaying colors. + (gobble_file): Check check_symlink_color instead of print_with_color. + +1999-11-30 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (usage): Shorten help for --show-control-chars. + +1999-11-30 Jim Meyering <meyering@ascend.com> + + Give the right diagnostic when failing to create a file in an + unwritable directory. + * src/touch.c (touch): Record errno upon failed errno and use that + saved value if a subsequent fstat, stat or utime call fails. + Reported by Wichert Akkerman via Michael Stone. + +1999-11-27 Jim Meyering <meyering@ascend.com> + + Clean up test scripts. + * tests/mv/setup: Don't set/use DF or MKDIR. Use df and mkdir instead. + * tests/mv/mv-special-1: Likewise for these: LS MV MKDIR MKNOD RM TOUCH + * tests/mv/backup-is-src: Likewise for RM and MV. + * tests/mv/hard-link-1: Likewise. + * tests/mv/into-self: Likewise. + * tests/mv/into-self-3: Likewise. + + Add test for 1999-05-23 change to src/copy.c (copy_internal). + * tests/mv/partition-perm: New file. + * tests/mv/Makefile.am (TESTS): Add partition-perm. + + * Version 4.0j. + +1999-11-22 Paul Eggert <eggert@twinsun.com> + + * src/df.c (df_readable): Now returns char const *, not char *. + New arg NEGATIVE. + (ceil_percent): Now returns double, not int. + Be more careful about adding 1 to a wild value. + (show_dev): Don't filter out wild sizes from the underlying operating + system; instead, show them to the user as faithfully as possible. + +1999-11-23 Jim Meyering <meyering@ascend.com> + + * doc/getdate.texi (Calendar date item): Correction regarding 0..68/ + 69-99 split for 1900 vs 2000. From Peter Moulder. + +1999-11-22 Jim Meyering <meyering@ascend.com> + + * lib/Makefile.am (DISTCLEANFILES): Add lstat.c and stat.c. + +1999-11-20 Jim Meyering <meyering@ascend.com> + + * src/rmdir.c (errno_rmdir_non_empty): New function to encapsulate + errno comparison. + (remove_parents): Use it. + (main): Use it. + + * tests/cp/cp-mv-backup: Run `diff -c' if the test fails. + + * tests/ls/time-1: Use `ls' and `touch', not $LS and $TOUCH. + * tests/ls/Makefile.am (TESTS_ENVIRONMENT): Specify PATH, etc. + + * src/chgrp.c: Declare lstat; needed on e.g. SunOS4. + Reported by Tom Tromey. + +1999-11-19 Jim Meyering <meyering@ascend.com> + + * lib/strstr.c (strstr): Include config.h. + Add a `;' between shloop label and `}'. + From Akim Demaille. + +1999-11-17 Jim Meyering <meyering@ascend.com> + + * src/mkdir.c (S_IRWXUGO): Define if necessary. + (main): Use chmod to set the permissions if bits other than those + of S_IRWXUGO were requested. Reported by Sami Farin. + +1999-11-14 Paul Eggert <eggert@twinsun.com> + + * touch.c (touch): Simplify code a tad, using fd == -1 instead + of separate valid_fd variable. + +1999-11-13 Jim Meyering <meyering@ascend.com> + + * src/touch.c (touch): Don't fail just because we couldn't open + an existing file. This makes it so that touching a read-only + file now works. Also clean up and simplify. + Based on a patch from Chip Salzenberg. + * tests/touch/no-rights: New test for this. + * tests/touch/Makefile.am (TESTS): Add no-rights. + +1999-11-12 Jim Meyering <meyering@ascend.com> + + * src/remove.c (print_nth_dir): Write one fewer byte so we don't print + a trailing slash. + (rm): Fix bugs in (and test, this time) the very rarely used code + to warn about directory cycles. + Reported by michael@roka.net. + +1999-11-11 Jim Meyering <meyering@ascend.com> + + * src/copy.c (copy_internal): Treat src and dest as the `same' in + `mv src symlink-to-src' when src and dest are on different partitions. + Otherwise, that `mv' command would silently remove `src'. + Reported by Michael Stone. + * tests/mv/into-self-2: Add a test for this fix. + + * lib/makepath.c (make_path): Fix long-latent bug: s/&&/||/ (others + just like that also dated back to 1992 were fixed in 1998-01-02). + Richard Braakman reported that using `install -d -g foo 1/2` + only sets the group on the intermediate directory, not the final + component. From Michael Stone. + +1999-11-07 Paul Eggert <eggert@set.twinsun.com> + + * human.c (default_block_size): New function. + (humblock): Use it if no block size is specified. + (human_block_size): If the specified block size is zero, report an + error if report_errors is nonzero; otherwise use the default. + +1999-11-07 Jim Meyering <meyering@ascend.com> + + * src/dircolors.hin: Add several more TERM types. + Add .bz2 suffix. + Add .png for real this time. + Change the image types colors to be visible in a black-on-white xterm. + From Michael Stone. + + * src/chgrp.c (xstat): New global. + (main): Define it. + (change_file_group): Use it. Before this change, when running chgrp + on a symlink without --dereference (-h) and when the requested group + is the same as the group for the *symlink*, chgrp would do nothing. + Now it changes the group of the file referenced through the symlink. + Reported by Martin Mitchell. + + * src/chmod.c: Use REFERENCE_FILE_OPTION instead of bare `CHAR_MAX + 1'. + * src/chown.c: Define and use REFERENCE_FILE_OPTION and + DEREFERENCE_OPTION in place of bare `CHAR_MAX + N'. + * src/chgrp.c: Likewise. + + * tests/ln/misc: Add hard-link-to-symlink test. + Move framework_failure test to the end. + Fix a typo: s/||/&&/. + + * src/ln.c (do_link): Warn that making a hard link to a symbolic link + is not portable. + + * tests/ln/misc: Use --b=simple, not the now-deprecated `-V simple'. + * tests/ln/backup-1: Likewise. + + * configure.in (AC_OUTPUT): Add tests/rmdir/Makefile. + * tests/Makefile.am (SUBDIRS): Add rmdir. + * tests/rmdir: New directory + * tests/rmdir/ignore: New file. + + * src/rmdir.c (remove_parents): Use the correct test (just as in + main) in handling --ignore-fail-on-non-empty. From Michael Stone. + (usage): Improve description of --parents. Based on suggestion from + Torsten Landschoff. + +1999-11-06 Jim Meyering <meyering@ascend.com> + + Allow hard links to symlinks on systems that support it. + * src/ln.c (STAT_LIKE_LINK): Define. + (do_link): Use STAT_LIKE_LINK, rather than bare `stat', and perform + the extra lstat only on systems where LINK_FOLLOWS_SYMLINKS. + + * src/ls.c (long_options): Correct typo (s/'F'/'p'/) so that `-p' is + accepted as the short form of --file-type, per the documentation. + From James Sneeringer. + + * src/ln.c (do_link): Fix typo (in which the function name `symlink' + was tested instead of the variable `symbolic_link') that could make + ln perform an unneeded `stat' call. + +1999-11-05 Jim Meyering <meyering@ascend.com> + + * src/system.h: Use HAVE_STRUCT_STAT_ST_BLOCKS, not deprecated + HAVE_ST_BLOCKS. + * src/copy.c: Likewise. + * lib/fileblocks.c: Likewise. + + * configure.in: Move some type/header/member tests into + m4/jm-macros.m4 (jm_CHECK_ALL_TYPES) so they are shared by all of + fileutils, textutils, and sh-utils. + +1999-11-02 Jim Meyering <meyering@ascend.com> + + * man/help2man: Import version 1.018. + * man/Makefile.maint ($(man_MANS)): Remove use of --name=... option. + * man/*.x: Include one-line summary in [NAME] section. + * man/Makefile.summ: Remove the one-line summaries. + Suggestion for clean-up from Akim Demaille. + + * configure.in (ALL_LINGUAS): Add Galician (gl). + +1999-11-01 Jim Meyering <meyering@ascend.com> + + * src/cp.c (usage): Warn about mixing use of `-r' with FIFOs and + other special files like /dev/zero. + + * lib/Makefile.am (MAINTAINERCLEANFILES): Set to $(BUILT_SOURCES). + +1999-10-31 Jim Meyering <meyering@ascend.com> + + * Makefile.maint (my-distcheck): Remove $(DEPDIR) to work around + automake bug. + + * doc/fileutils.texi: Document new --backup[=METHOD] option for + cp, mv, ln, and install. + + * src/ln.c: Convert --backup to take an optional argument. + Deprecate --version-control (-V) in comments. + (usage): Remove mention of --version-control. + (main): Make -V warn then fall through into --backup case. + [--backup case]: Handle optional arg. + * src/install.c: Likewise. + +1999-10-24 Jim Meyering <meyering@ascend.com> + + * src/cp.c (do_copy): Constify `dest', and cast-away the new + const in assignment to new_dest. + +1999-10-23 Jim Meyering <meyering@ascend.com> + + * tests/touch/Makefile.am (TESTS): Add dangling-symlink. + * tests/touch/dangling-symlink: New file. + +1999-10-23 Paul Eggert <eggert@twinsun.com> + + * src/touch.c (full_write): Remove unused decl. + (open_maybe_create): Remove. + (touch): Don't record whether the file was created; this isn't + possible to do reliably and portably without race conditions. + If the file was created and if amtime_now is nonzero, this + change means we'll have to do another utime system call, but + that's no more harmful than the previous version of this code. + Reported by Gabor Z. Papp. + +1999-10-21 Jim Meyering <meyering@ascend.com> + + * configure.in (ALL_LINGUAS): Add Japanese (pa). + +1999-10-17 Jim Meyering <meyering@ascend.com> + + * tests/mv/backup-is-src: Remove use of mv's now-deprecated + -V option. Use --b=simple instead of -b -V simple. + + * src/mv.c: Convert --backup to take an optional argument. + Deprecate --version-control (-V) in comments. + (usage): Remove mention of --version-control. + (main): Make -V warn then fall through into --backup case. + [--backup case]: Handle optional arg. + + Accept new option: --target-directory=DIR + * src/cp.c (TARGET_DIRECTORY_OPTION): Define. + (SPARSE_OPTION): Define. + (usage): Describe it. + (do_copy): Change meanings/names of first two parameters: use `n_files' + in place of `argc - optind', and `file' instead of `argv + optind'. + Add parameter, target_directory. + (main): Pass new arg, target_directory. + +1999-10-16 Jim Meyering <meyering@ascend.com> + + * tests/cp/backup-is-src: Remove use of cp's now-deprecated -V option. + Use --b=simple instead of -b -V simple. + * tests/cp/backup-1: Replace use of cp's now-deprecated + --version-control option with use of --backup=simple. + + * src/cp.c: Convert --backup to take an optional argument. + Deprecate --version-control (-V) in comments. + (usage): Remove mention of --version-control. + (main): Make -V warn then fall through into --backup case. + [--backup case]: Handle optional arg. + + * tests/cp/Makefile.am (TESTS): Add cp-mv-backup. + * tests/cp/cp-mv-backup: New file. + +1999-10-11 Jim Meyering <meyering@ascend.com> + + * lib/getopt.c: Merge changes from latest glibc. + * lib/getopt.h: Likewise. + * lib/getopt1.c: Likewise. + +1999-10-09 Jim Meyering <meyering@ascend.com> + + Accept new option: --target-directory=DIR + * src/ln.c (TARGET_DIRECTORY_OPTION): Define. + (usage): Describe it. + (main): Implement it. + Make code clearer: use new variable `n_files' in place of + `argc - optind'. Use `file' instead of `argv + optind'. + +1999-10-04 Jim Meyering <meyering@ascend.com> + + * depcomp: New file, for automake's new dependency support. + * missing: New version, from automake's user-dep-gen-branch. + + * lib/xalloc.h (__attribute__): Apply 1999-10-03 change here, too. + * src/sys2.h (__attribute__): Likewise. + Wrap with #ifndef __attribute__. + +1999-10-03 Paul Eggert <eggert@twinsun.com> + + * getdate.y (__attribute__): Define to empty if GCC claims to + be before 2.8; this is needed for OPENStep 4.2 cc. Also, + define to empty if strict ANSI. + +1999-10-03 Jim Meyering <meyering@ascend.com> + + Accept new option: --target-directory=DIR + * src/mv.c (TARGET_DIRECTORY_OPTION): Define. + (usage): Describe it. + (main): Implement it. + Remove unused variable, stdin_tty. + Make code clearer: use new variable `n_files' in place of + `argc - optind'. Use `file' instead of `argv + optind'. + +1999-09-28 Jim Meyering <meyering@ascend.com> + + * src/system.h: Do s/#ifdef HAVE_/#if HAVE_/ -- solely for aesthetics. + Do the same for other config.h macros like CLOSEDIR_VOID and MAJOR_*. + * src/sys2.h: Likewise. + + * lib/xalloc.h (__attribute__): Protect against redefinition. + From Akim Demaille. + +1999-09-26 Jim Meyering <meyering@ascend.com> + + * lib/xmalloc.c (xalloc_die): Rename from xalloc_fail and + update callers. + Use explicit exit to help avoid warnings. + From Akim Demaille. + + * lib/path-concat.c (DIRECTORY_SEPARATOR): Define. + (ISSLASH): Define. + (path_concat): Allow parameter DIR to be NULL. + (xpath_concat): New function. + From Akim Demaille. + + * lib/xalloc.h (__attribute__): Define. + (ATTRIBUTE_NORETURN): Define. + (xalloc_die): Declare. + (NEW): Define as yet unused macro. + (XFREE): Likewise + (CCLONE): Likewise. + (CLONE): Likewise. + From Akim Demaille. + + * lib/basename.c (base_name): Add prototype. From Akim Demaille. + +1999-09-19 Jim Meyering <meyering@ascend.com> + + * lib/lchown.c [STAT_MACROS_BROKEN] (S_ISLNK): Undefine. + (S_ISLNK): Define if necessary. + This is necessary on a NEC SX-4 with SUPER-UX 9.1. + Based on a patch from Holger Berger. + + * src/dd.c (siginfo_handler): Mark parameter with ATTRIBUTE_UNUSED. + Change many counter and index variables to be of unsigned type. + (dd_copy): Add new unsigned variable, n_bytes_read, in place of + many uses of `nread'. + + * src/sys2.h (__attribute__): Define. + (ATTRIBUTE_NORETURN): Remove #else clause. + (ATTRIBUTE_UNUSED): Define. + +1999-09-17 Jim Meyering <meyering@ascend.com> + + * configure.in (AC_REPLACE_FUNCS): Remove strdup, now that this + is done in m4/jm-macros.m4. + +1999-09-09 Jim Meyering <meyering@ascend.com> + + * src/touch.c (usage): Remove misleading sentence in --help output. + From Karl Heuer. + + * src/Makefile.am (EXTRAdir): Remove unused variable. + +1999-09-03 Paul Eggert <eggert@twinsun.com> + + * lib/lchown.h (ENOSYS): Don't use ENOMSG; it's not in NeXTStep3.3. + Use EINVAL instead. + +1999-09-01 Jim Meyering <meyering@ascend.com> + + * src/cp.c: Remove declaration of xstrdup. + * src/df.c: Likewise. + * src/ls.c: Likewise. + +1999-09-01 Akim Demaille <akim@epita.fr> + + * lib/xmalloc.c (xalloc_fail_func): Use `PARAMS'. + * lib/xalloc.h (xalloc_fail_func): Likewise. + (xstrdup): Add protoype. + + * lib/version-etc.c (version_etc_copyright): Default copyright string. + (version_etc): Use it. + * lib/version-etc.h: Declare it. + +1999-08-29 Jim Meyering <meyering@ascend.com> + + * configure.in (AC_YACC): Remove use, now that we require bison. + + * src/dircolors.hin: Add .rpm, .png, and .fli. + From Andres Soolo. + +1999-08-28 Paul Eggert <eggert@twinsun.com> + + * getdate.y: Add copyright notice. + + (number): Handle `Nov 11 1996' example; see Risks Digest 20.55 + http://catless.ncl.ac.uk/Risks/20.55.html#subj18 + (1999-08-27) + + (<stdio.h>): Include only if testing. + (ISUPPER): Remove. + (ISLOWER, PC): New macros. + (<string.h>): Include if HAVE_STRING_H, not USG. + (bcopy): Remove. + (yymaxdepth, ..., yycheck): Don't bother to redefine, since we assume + bison. + (EPOCH_YEAR): Renamed from EPOCH. + (table): Renamed from TABLE. + (meridian): Now an anonymous enum. + (struct parser_control): New type. + (YYLEX_PARAM, YYPARSE_PARAM, YYSTYPE): New macros. + (yyInput, ..., yyRelYear): Migrated into struct parser_control. + (%pure_parser): Added, so that the parser is pure. + (%union): Removed; the type is now just plain int. + All %type directives removed. + (tLOCAL_ZONE): New %token. + (month_day_table): Renamed from MonthDayTable. + (gmtime, localtime, mktime, time): Declare only if not defined. + (meridian_table): New table. + (dst_table): New table. + (units_table): renamed from UnitsTable. + (relative_time_table): Renamed from OtherTable. + (time_zone_table): Renamed from TimezoneTable. Modernized data. + (military_table): Renamed from MilitaryTable. + (to_hour): Renamed from ToHour. + (to_year): Renamed from ToYear. + (lookup_zone): New function. + (LookupWord): Renamed from lookup_word. + Use lookup_zone for time zones. + (yylex): Now reentrant. All callers changed. + (get_date): Add support for local time zone abbreviations. + Make it reentrant. + +1999-08-22 Jim Meyering <meyering@ascend.com> + + * src/sys2.h (IF_LINT): Define new macro. + * src/df.c (main): Rename locals i and j. + Use IF_LINT macro instead of #ifdef lint... + + * src/dd.c (parse_integer): Add `const' to char* parameter and + add a separate `suffix' variable. + +1999-08-20 Jim Meyering <meyering@ascend.com> + + * src/chown.c (usage): Tweak --help output to make it more consistent + with that of chgrp. + * src/chgrp.c (usage): Tweak --help output to make it more consistent + with that of chown. + +1999-08-17 Jim Meyering <meyering@ascend.com> + + * configure.in: Remove check for rename and the code that would + enable building of the `mvdir' program. + * src/Makefile.am (libexec_PROGRAMS): Remove reference to @MVDIR@. + (EXTRA_PROGRAMS): Remove obsolete mvdir. + * lib/rename.c: Remove obsolete file. (it had a bug, too) + * src/mvdir.c: Remove obsolete file. + * po/POTFILES.in: Remove mvdir.c + + * doc/fileutils.texi (chown, chgrp invocation): Make these sections + consistent with each other. + +1999-08-16 Jim Meyering <meyering@ascend.com> + + * src/chown.c (groupname): Declare to be `const'. + (change_dir_owner): Declare statp parameter to be `const'. + (usage): Make the output be more consistent with that from chgrp. + + This change is nearly identical to the chown.c change of 1998-05-24 + * src/chgrp.c: Accept new option, --dereference. + --no-dereference is now the default. Include lchown.h. + (enum Change_status) [CH_NOT_APPLIED]: New member. + (change_symlinks): Enable this by default, now. + (describe_change): Handle new case. + (change_file_group): Add new parameter: cmdline_arg. Update callers. + Reorganize to reflect changed semantics. + (LCHOWN): Remove definitions. + From Bruno Haible. + +1999-08-10 Jim Meyering <meyering@ascend.com> + + * po/POTFILES.in: Add lib/quotearg.c. + +1999-08-09 Paul Eggert <eggert@twinsun.com> + + * NEWS, doc/fileutils.texi, src/ls.c (usage): + Add ls --quoting-style=locale. + + * lib/argmatch.c (ARGMATCH_QUOTING_STYLE): + Change from escape_quoting_style to locale_quoting_style. + (argmatch_invalid): Use new quotearg_style primitive for simplicity. + Also, use ARGMATCH_QUOTING_STYLE to quote, instead of quoting ourselves. + + * lib/quotearg.h (locale_quoting_style): New enum value. + (quotearg_n_style, quotearg_style): New decls. + + * lib/quotearg.c: Include <libintl.h> if ENABLE_NLS. + (_): New macro. + (quoting_style_args, quoting_style_v, quotearg_buffer): Add support + for locale_quoting_style, using _("`") and _("'") for open and close + quote symbols. + Do not quote spaces in escape_quoting_style. + (quotearg_n_style, quotearg_style): New functions. + +1999-08-08 Jim Meyering <meyering@ascend.com> + + * src/touch.c (usage): Clarify description of --time=WORD. + From Karl Berry. + + * lib/savedir.c (savedir): Change type of name_size parameter to off_t. + * lib/savedir.h (savedir): Update prototype. + * src/chmod.c (change_dir_mode): Remove cast of savedir arg. + * src/chown.c (change_dir_owner): Likewise. + * src/chgrp.c (change_dir_group): Likewise. + * src/copy.c (copy_dir): Likewise. + * src/du.c (count_entry): Likewise. + Suggestion from Bob Proulx. + +1999-08-07 Jim Meyering <meyering@ascend.com> + + * po/POTFILES.in: Add lots of lib/*.c files. + Remove src/cp-hash.c, since it doesn't use _(). + +1999-08-04 Jim Meyering <meyering@ascend.com> + + * configure.in: Remove getline-testing code. Now it's in m4/. + +1999-08-01 Paul Eggert <eggert@twinsun.com> + + * configure.in (AC_SYS_LARGEFILE): Renamed from AC_LFS. + +1999-07-30 Jim Meyering <meyering@ascend.com> + + * src/ls.c (usage): Explain about default wrt --hide-control-chars and + --show-control-chars. Reported by Germano Leichsenring. + +1999-07-28 Jim Meyering <meyering@ascend.com> + + * configure.in (ALL_LINGUAS): Add Brazilian Portuguese (pt_BR). + +1999-07-24 Jim Meyering <meyering@ascend.com> + + * src/dd.c (PTR_ALIGN, ROUND_UP_OFFSET): New macros. + (dd_copy): Use those to page-align both the input and output buffers. + +1999-06-01 Volker Borchert <bt@teknon.de> + + * tests/Makefile.am: Make envvar-check depend on check-recursive rather + than on `check' so that its tests are performed before any real tests. + +1999-07-15 Jim Meyering <meyering@ascend.com> + + * src/dd.c: Include getpagesize.h. + (dd_copy): Page-align the input buffer. + Based on a patch from Scott Lurndal. + + * getpagesize.h: New file. + * lib/Makefile.am (noinst_HEADERS): Add getpagesize.h. + + * lib/fsusage.c (get_fs_usage) [STATFS_TRUNCATES_BLOCK_COUNTS]: + Work around SunOS botch also when block size is different from 1k. + From JĂĽrgen Fluk. + +1999-07-10 Jim Meyering <meyering@ascend.com> + + * man/help2man: Import version 1.012. + +1999-07-04 Jim Meyering <meyering@ascend.com> + + * lib/xstrtol.c [!defined strtoumax]: Declare strtoumax. + +1999-07-04 Paul Eggert <eggert@twinsun.com> + + * lib/xstrtol.c (__strtol): Remove decl; it doesn't work if __strtol + expands to a macro, which occurs in HP-UX 10.20 with strtoumax. + (strtol, strtoul): New decls (for pre-ANSI hosts), to replace + the above decl. + +1999-06-27 Paul Eggert <eggert@twinsun.com> + + Fix some incompatibilities between `df -P' and POSIX.2. + + * lib/human.h (enum human_inexact_style): New enum. + (human_readable_inexact): New decl. + + * lib/human.c (human_readable): New function. + (human_readable_inexact): Renamed from human_readable, with new arg + INEXACT_STYLE. Add support for ceiling and floor. + + * src/df.c (print_header): Conform to POSIX if posix_format). + (df_readable): Take ceiling if posix_format. + (ceil_percent): New function. + (show_dev): Take ceiling of percent if posix_format. + Align with POSIX-conforming header if posix_format. + + * doc/fileutils.texi: Document these changes. + +1999-05-27 Volker Borchert <bt@teknon.de> + + * tests/Makefile.am: Qualify .env-warn with $(srcdir)/ prefix. + +1999-05-23 Jim Meyering <meyering@ascend.com> + + * src/copy.c (copy_internal): Don't apply the umask in move_mode. + Otherwise, `mv' would not preserve the permissions when copying + between partitions. Reported by David Godfrey + + * Version 4.0i. + + * tests/cp/same-file: Correct erroneous expected output from + the `cp -f foo foo' tests. + * po/POTFILES.in: Add same.c. + * lib/same.h: New file. + * lib/same.c: New file (function extracted from ln.c). + * lib/Makefile.am (libfu_a_SOURCES): Add same.c. + (noinst_HEADERS): Add same.h. + * src/copy.c: Include same.h. + * src/ln.c (same_name): Remove function. + <same.h>: Include this instead. + <dirname.h>: No longer include this. + * tests/mv/force: Be sure we still allow `mv -f FILE LINK-TO-FILE'. + + * src/copy.c (copy_internal): Make it so `cp/mv -f FILE FILE' does not + remove FILE. Suggestion from Chris Yeo. + * tests/mv/force: New test, for the above fix. + * tests/mv/Makefile.am (TESTS): Add force. + (TESTS_ENVIRONMENT): Change PATH to be absolute. + + * tests/mv/force (mv): New test. + +1999-05-17 Paul Eggert <eggert@twinsun.com> + + * lib/getdate.y (get_date): Let mktime deduce tm_isdst if we + have an absolute timestamp, or if the relative timestamp + mentions days, months, or years. Reported by Volker Borchert. + + * lib/human.c (human_readable): Allow from_block_size to be zero. + +1999-05-14 Jim Meyering <meyering@ascend.com> + + * tests/Makefile.am (envvar-check): Renamed from check-local. + (check): Depend on envvar-check so the envvar check is performed + before all other tests. Reported by Volker Borchert. + * tests/.env-warn: Use `%%' place-holder that Makefile.am rule expects, + so CDPATH is mentioned in the message. Reported by Volker Borchert. + + * src/df.c (main): When asking for info on an explicit file name, + just warn rather than failing if the table of mounted filesystems + cannot be read. Based on a patch from Mark Kettenis. + + * lib/version-etc.c (version_etc): Put version info and author names + on the first two lines respectively rather than putting the three + lines of copyright info between them. + + * src/touch.c (open_maybe_create): Handle Solaris' failure mode when + FILE is a directory. Reported by Vin Shelton. + + * lib/human.c: Include <string.h> or <strings.h> for strlen prototype. + * lib/getline.h [__GLIBC__ >= 2]: #if-out prototypes. + * src/remove.c (pop_dir): Cast length to `int' to avoid a warning on + 64-bit systems. From Ulrich Drepper. + +1999-05-12 Jim Meyering <meyering@ascend.com> + + * src/shred.c (main): Put `u' for -u in getopt_long's string argument. + Remove the `R'. + +1999-05-07 Jim Meyering <meyering@ascend.com> + + * Version 4.0h. + + * tests/touch/dir-1: New test. + * tests/touch/Makefile.am (TESTS_ENVIRONMENT): Remove individual + upper-case program names. Add a definition of PATH. + (TESTS): Add dir-1. + + * src/mkdir.c (main): Use better wording in diagnostic: `cannot + create directory' rather than `cannot make directory'. The former + also matches the one in makepath.c. + + * src/dd.c (apply_translations): Use TOUPPER and TOLOWER, + not toupper and tolower. + +1999-05-05 Jim Meyering <meyering@ascend.com> + + * lib/makepath.c (make_dir): When reporting a mkdir failure and the + target cannot be `stat'ed, use the errno from the failed mkdir call, + not the one from the stat call. Before this change, running + `mkdir -p /no-dir/no-dir' as an unprivileged user would wrongly + elicit `No such file or directory' instead of `Permission denied'. + + * lib/strtol.c (TYPE_SIGNED, TYPE_MAXIMUM, TYPE_MINIMUM): Define. + (ULONG_LONG_MAX, LONG_LONG_MAX, LONG_LONG_MIN): Define if not defined. + Based on a patch from Kaveh Ghazi. + + * src/ls.c (USE_ACL): Define this only #if + (HAVE_SYS_ACL_H && HAVE_ACL && defined GETACLCNT). + Use `USE_ACL' in place of `HAVE_ACL' everywhere else. From Kaveh Ghazi. + +1999-05-04 Jim Meyering <meyering@ascend.com> + + * lib/makepath.c: Include makepath.h libintl.h, not after it. + Otherwise, we'd get the wrong definition of PARAMS from libintl.h. + (The method of defining PARAMS in libintl.h doesn't check PROTOTYPES, + which is necessary on Irix4 since cc doesn't define __STDC__.) + From Kaveh Ghazi. + +1999-04-30 Jim Meyering <meyering@ascend.com> + + * Makefile.maint: Define several tag-related make variables. + (cvs-dist): Use the make variables instead of shell ones. + (announcement): Automatically generate diffs for all ChangeLog files, + not just the top level one. + +1999-04-30 Paul Eggert <eggert@twinsun.com> + + * lib/dup2.c: New file. + +1999-04-30 Jim Meyering <meyering@ascend.com> + + * src/touch.c (touch): Only do the fstat if we need to. + Resort to calling stat for directories, but only when necessary. + (usage): Mention --no-create. + + * src/copy.c (copy_internal): Move the one-file-system test so that + it follows the `if (new_dst || !S_ISDIR (dst_sb.st_mode))' block. + Prior to this change, `cp --one-file-system' would traverse a file- + system boundary if the destination directory existed. From Ton Hospel. + +1999-04-27 Paul Eggert <eggert@twinsun.com> + + * src/dd.c: Always use STDIN_FILENO for input and STDOUT_FILENO + for output, to avoid confusion with closed input and output fds. + (input_fd, output_fd): Remove; all uses changed to STDIN_FILENO + and STDOUT_FILENO. + (open_fd): New function. + (main): Use it, instead of open, to ensure that file descriptors + don't get confused. + +1999-04-26 Paul Eggert <eggert@twinsun.com> + + * src/ls.c (decode_switches): Use STDIN_FILENO, STDOUT_FILENO instead + of 0, 1. + + * src/dd.c (skip): Don't fstat the input file; the result is + no longer used. + +1999-04-26 Jim Meyering <meyering@ascend.com> + + * tests/mv/into-self-2: Update to reflect this change by reversing + the order of arguments so the symlink is the source, not the + destination (otherwise, the mv command would now succeed). + + * src/copy.c (copy_internal): Don't make `mv foo symlink-to-foo' fail. + That is, even though source and destination are `the same,' don't fail + if the destination is a symlink. From Peter Samuelson. + +1999-04-26 Paul Eggert <eggert@twinsun.com> + + * src/dd.c (main): If you can't open an output file (with + seek=...) read-write, then open it for write and report an + error if we can't seek. + + * lib/filemode.c (setst, ftypelet, mode_string): + * lib/mkdir.c (mkdir): + * lib/makepath.c (make_path): + * lib/modechange.c (make_node_op_equals, mode_compile, + mode_create_from_ref, mode_adjust): + * lib/modechange.h (mode_adjust): + * src/chmod.c (describe_change, change_file_mode): + * src/copy.c (copy_reg, copy_internal): + * src/copy.h (struct cp_options.umask_kill): + * src/cp.c (do_copy, cp_option_init, main): + * src/dd.c (main): + * src/install.c (mode, cp_option_init, DIR_MODE): + * src/mkdir.c (main): + * src/mkfifo.c (main): + * src/mknod.c (main): + * src/mv.c (cp_option_init): + * src/touch.c (open_maybe_create): + Use proper mode_t types and macros. + Don't assume the traditional Unix values for mode bits. + + * lib/filemode.c (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, + S_IXOTH): Define if not defined. + (rwx): Remove. + * lib/mkdir.c (S_IRWXU, S_IRWXG, S_IRWXO): Define if not defined. + * lib/makepath.c (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IRWXU): + Define if not defined. + * src/system.h (S_ISUID, S_ISGID, S_ISVTX, S_IRWXU, S_IRWXG, S_IRWXO): + Define if not defined. + (CHMOD_MODE_BITS): New macro. + * src/install.c (isodigit): Remove unused macro. + + * src/mkfifo.c, src/mknod.c (usage): + Use symbolic mode as default, not octal. + + * lib/utime.c (utime_null): + Don't pass 0666 to open; it's not needed and isn't + guaranteed to be portable. + + * lib/filemode.h: <config.h>, <sys/types.h>: Include for mode_t. + (mode_string): Now takes mode_t. + + * lib/modechange.h: Include <config.h>, <sys/types.h> for mode_t. + (struct mode_change): Members affected and value are now mode_t instead + of unsigned short. + + * doc/fileutils.texi, doc/perm.texi: + Don't assume traditional Unix mode numbering. + + * lib/modechange.c: modechange.h now includes sys/types.h. + Include xstrtol.h. + (isodigit, oatoi): Remove. + (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, + S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_IRWXU, S_IRWXG, + S_IRWXO): Define if not defined. + (CHMOD_MODE_BITS): New macro. + (mode_compile): Convert from octal with xstrtoul, not our own routine. + +1999-04-24 Jim Meyering <meyering@ascend.com> + + * Version 4.0g. + +1999-04-22 Jim Meyering <meyering@ascend.com> + + * src/shred.c (word32): Don't use `#error'; it runs afoul of + SunOS 4.1.4 cc. From Paul Eggert. + + * lib/strtoull.c: Guard strong_alias and weak_alias with #ifdef _LIBC. + +1999-04-20 Paul Eggert <eggert@twinsun.com> + + Replace our temporary hack implementation of strtoumax with + something very close to the real code in glibc. + + * lib/xstrtoumax.c: Remove the temporary strtoumax replacement; + we now have a true replacement in strtoumax.c. + (__strtol): Always define to strtoumax. + (<stdlib.h>): No need to include. + (PARAMS): Remove. + (my_strtoumax): Move this to strtoumax.c, + rename it to strtoumax, and simplify. + + * lib/strtoull.c, lib/strtoumax.c: New files. + + * lib/strtol.c: Update to glibc 2.1.1 version. + +1999-04-20 Jim Meyering <meyering@ascend.com> + + * tests/Makefile.am (EXTRA_DIST): s/posix-warn/env-warn/. + (check-local): Also test and warn if CDPATH is set. + +1999-04-20 Paul Eggert <eggert@twinsun.com> + + * configure.in (AC_CANONICAL_HOST): Add; needed for new AC_LFS's + cross-compilation. + * config.guess: New file (from autoconf). + * config.sub: New file (from autoconf). + + * src/shred.c <config.h>: Include first, since it can do + things like #define const, and this must be done before + including any system headers. + + * lib/xstrtoumax.c (my_strtoumax): Fix typo in computing + whether overflow occurred. Improve overflow-detection to use + only one conditional branch total, rather than 2N+1 + conditional branches for an N-digit number. + +1999-04-18 Jim Meyering <meyering@ascend.com> + + * configure.in (AC_CHECK_FUNCS): Remove strtoull, strtoumax, and + strtouq, now that they're checked in m4/xstrtoumax.m4. + +1999-04-18 Paul Eggert <eggert@twinsun.com> + + * doc/fileutils.texi, src/shred.c (main, longopts): + Use -u instead of -R for --remove, so that we can preserve + future compatibility with rm. + +1999-04-18 Jim Meyering <meyering@ascend.com> + + * src/shred.c [!HAVE_CONFIG_H] (ST_BLKSIZE): Define to 65536. + (do_wipefd): Use ST_BLKSIZE instead of referring to the st_blksize + member directly. + +1999-04-18 Paul Eggert <eggert@twinsun.com> + + Fix shred to do the right thing with off_t longer than long. + Merge large-integer parsing code with similar code in dd.c, + and put the resulting in lib/xstrtoumax.c so that other programs + can use it. Instead of adding a new lib/xstrtoumax.h I thought + it cleaner to put all the xstroto* declarations into a single + header, which for now is lib/xstrtol.h for lack of a better place. + (Mayby lib/xstdlib.h would be better? :-) + + I thought of several other problems with shredding regular files; + shredding devices is much more reliable. So I changed the defaults + to be more suitable for shredding devices; this should help encourage + users to do the right thing. + + pfstatus isn't portable to environments with varying width + fonts, or with internationalized environments where the byte + count of the message is not the same as its print width. + Rather than deal with this, I just simplified it to not do + tricks with carriage-returns and spaces. (I'm also worried + that vprintf may not return the right value on some hosts; I + vaguelly recall this being a problem.) As a result, -v and - + no longer conflict. + + When removing a special file, try to truncate it first, but don't + worry if this reports an error. + + Try to find the size of a non-regular file by seeking to its end. + + Various porting fixes, mostly because of a port to SunOS 4.1.4 cc. + + Some other minor bug fixes. + + * lib/xstrtoul.h: Remove this file. + * lib/xstrtoumax.c: New file. + + * configure.in (AC_CHECK_FUNCS): Add strtoull, strtoumax, strtouq. + + * lib/xstrtoul.c (STRING_TO_UNSIGNED): Remove. + (__strtol, __strtol_t, __xstrtol): New macros. + + * lib/xstrtol.c (__strtol, __strtol_t, __xstrtol): + New macros to specify the + underlying function, its returned type, and our function. Default to + values suitable for xstrtol. + + Include <ctype.h>, since we use its macros. + + (ULONG_MAX, LONG_MAX, ISBLANK): Remove: no longer needed. + (ISSPACE): New macro. + + (bkm_scale, bkm_scale_by_power, __xstrtol, main): __unsigned long int + -> __strtol_t. + + (__xstrtol): Depend on whether __strtol_t is an unsigned type, not on + whether STRING_TO_UNSIGNED is defined. Skip isspace chars, not + isblank chars, to match strtol. When returning + LONGINT_INVALID_SUFFIX_CHAR, store the value that we computed into + *val. + + * lib/xstrtol.h (__xstrtol, __strtol, __unsigned): Remove macro decls. + <inttypes.h>: Include if HAVE_INTTYPES_H. + (_DECLARE_XSTRTOL): New macro. + (xstrtol, xstrtoul, xstrtoumax): Declare all three functions, so that + we need only one include file, not three. + (_STRTOL_ERROR): Do not undef, as this is no longer needed. + Reword overflow message so that it's independent of type. + + * lib/Makefile.am (libfu_a_SOURCES): Add xstrtoumax.c. + (noinst_HEADERS): Remove xstrtoul.h. + + * lib/xmalloc.c (xalloc_fail): + Pass xalloc_msg_memory_exhausted through gettext. + + * lib/getdate.y: + <stdlib.h>: Include if HAVE_STDLIB_H, since bison 1.27 invokes "free". + (LookupWord, yylex): Don't pass negative char to ctype macros. + + * doc/fileutils.texi: + Explain why shredding devices is more reliable, and why the + default options are more suitable for devices. + + Remove withdrawn options -b or --no-contents, -c or --freed-contents, + -C or --all-contents, -k or --no-links, -l or --ordinary-links, -L or + --all-links. + + Add -R or --remove, -s or --size. + + -v can no longer be doubled. + + `file system' --> `filesystem' uniformly. + + * src/chgrp.c: Include xstrtol.h, not obsolete file xstrtoul.h. + + * src/shred.c: Include xstrtol.h, not obsolete file xstrtoul.h. + "human.h", "xalloc.h": Include. + (attribute): Remove; no longer needed. + (xstrdup): New decl. + (STDOUT_FILENO): New macro. + (O_NOCTTY): Make sure it's always defined, even if HAVE_CONFIG_H. + + The following changes have effect only if !HAVE_CONFIG_H. + <ctype.h>: New include. + (RETSIGTYPE): Remove bogus semicolon at end. + (STDOUT_FILENO, uintmax_t, human_readable, LONGEST_HUMAN_READABLE): + New macros. + (xstrtoumax): Renamed from xstrtoul, with corresponding type changes. + Handle suffixes like the real routine does. + (error): Remove bogus assignment of errno to errnum. + (xmalloc, xstrdup): New functions. + + (O_NOCTTY): Define even if !HAVE_CONFIG_H. + (S_ISFIFO, S_ISSOCK): New macros, if not already defined. + (OUTPUT_BLOCK_SIZE): New macro. + (struct Options.verbose): Now a boolean, since we no longer have two + levels of verbosity. + (long_opts, usage, main): Remove -D or --device option. Invert -p or + --preserve option, and rename it to -R or --remove. + (usage): Describe G suffix. + (usage): "-" no longer conflicts with -v. + (UCHAR_MAX): Indent `#error' so that SunOS 4.1.4 cc doesn't reject it. + (ind): Portability fixes: return word32, not unsigned; multiply by + sizeof (word32) instead of shifting left by 2. + (isaac_refill, isaac_mix): Comment out size of array parameter, as + ansi2knr mishandles this. + (status_visible, status_pos, pfstatus, flushstatus): Remove, since + pfstatus isn't portable to users with varying width fonts, or + internationalized messages, and vfprintf is problematic. All callers + of pfstatus changed to use error instead; this removes incompatibility + of -v with -. All calls to flushstatus removed. + (dopass, do_wipefd): Do not translate non-English msgs with gettext. + + (dopass): Cast lseek constant arguments to (off_t) for benefit + of pre-ANSI compilers; fix one lseek call whose args were interchanged. + Remove unnecessary casts to (off_t). Do not check for EIO + when determining file size; this was just my earlier wild guess. + Use human_readable to print off_t, instead of casting to unsigned long + (which doesn't work in Solaris 2.6, where off_t is longer than long). + Output human-readable sizes, instead of always using "K". + Check for offset overflow (it happened to me in SunOS 4.1.4). + (do_wipefd): Do not insist on regular files, but do check for special + files that cannot possibly be shredded. + Use xmalloc instead of malloc + check. + Do not inspect st_size for non-regular files. + Try to find the size of a non-regular file by seeking to its end. + Do not assume that a regular file of size-0 has unknown size. + Check for regular files with negative sizes, + and for overflow after rounding to next block. + Always try to truncate, even for special files, but do not report an + error if truncation fails on a special file. + + (dopass, wipefile): Do not return 1 for special files; the caller + doesn't care any more. + + (wipefd): Remove unnecessary (and nonportable) check for + whether the file descriptor is read-only. Remove + no-longer-needed check for `-v -'. + + (incname): Return 1 for carry bit, like the documentation says. + + (wipename, wipefile): Accept new argument, specifying the + quoted file name. All callers changed. + + (wipename): Use xstrdup instead of strdup+error check. + + (wipefile): Check for ENOTDIR when opening /dev/fd/NNN. Check for + errors in NNN more carefully. Restore errno after the check. + Check for errors when closing the file descriptor. + Use more consistent wording when unable to remove a file. + + (main): Do not remove files by default. + Use xstrtoumax instead of xstrtoul uniformly, since xstrtoul won't + exist if !HAVE_CONFIG_H. + In diagnostics, quote invalid operands to -n and -s options. + Allow T, P, E, Z, and Y suffixes in -s operand. + flags.verbose is now a boolean, not a counter. + Use STDOUT_FILENO instead of 1, for clarity. + + * lib/human.c: + Include xstrtol.h, not xstrtoul.h, since xstrtol.h now defines all the + xstrto... functions. + + * src/dd.c: Include xstrtol.h. + (parse_integer): Migrate most of the work into the new xstrtoumax fn. + + * lib/xstrtoumax.c: New file. + +1999-04-18 Jim Meyering <meyering@ascend.com> + + * src/dd.c (main): Open the output file with *read* access + only if we might need to read to satisfy a `seek=' request. + From Matthias Urlichs. + +1999-04-10 Jim Meyering <meyering@ascend.com> + + * Makefile.maint (alpha): Add trailing slash for ncftp. + + * Version 4.0f. + + * configure.in (AC_OUTPUT): Add tests/dd/Makefile. + * tests/Makefile.am (SUBDIRS): Add dd. + * tests/dd: New directory + * tests/dd/misc: New file. + + `ls --color' would segfault + * src/ls.c: Include assert.h. + (color_indicator[]): Add an entry for the type, `door.' + (main): Assert that the lengths of the color_indicator and + indicator_name arrays are appropriately related. + Reported by John Gotts. + + * src/dd.c (scanargs): Fix bug introduced with last change: now that + the loop is gone, manually decrement argc and increment argv. + Reported by Andreas Jaeger and jvogel@linkny.com. + +1999-04-07 Jim Meyering <meyering@ascend.com> + + * lib/getdate.y (difftm): Protoize. + +1999-04-06 Jim Meyering <meyering@ascend.com> + + * lib/strftime.c: Update from master source in libc. + +1999-04-04 Jim Meyering <meyering@ascend.com> + + * tests/ln/misc: Comment out the test added on 1999-01-31. + + * Makefile.maint (url_dir_list): Define properly. + (real_dir_list): Likewise. + + * src/shred.c: Don't include string.h. + [!HAVE_CONFIG_H]: Include string.h here. + [!HAVE_CONFIG_H]: Hard-code RETSIGTYPE to `int'. + (sigill_handler): Change return type and type of local `oldhandler' to + RETSIGTYPE. + (isaac_seed_machdep): Change and type of local `oldhandler' to + RETSIGTYPE. + From Colin Plumb. + + * Version 4.0e + + * tests/cp/same-file: Change the sed command used to extract the + filename from ls -l output, to accommodate the change in format. + + * src/ls.c (print_long_format): Add a space between %s and %3u. This + assures that even when modebuf has the trailing `+' and there are more + than 99 hard links to a file, the permissions string and the link count + will be separated. + +1999-04-03 Jim Meyering <meyering@ascend.com> + + * src/shred.c (dopass): add curly braces to avoid warning about + ambiguous `else'. + (wipefd): Add parentheses suggested by gcc. + (do_wipefd): Remove declaration of unused local. + +1999-04-02 Colin Plumb <colin@nyx.net> + + * shred.c [!HAVE_CONFIG_H] (xstrtoul, error, close_stdout): Added stubs + to allow standalone compilation. + + (wipefile): Added support for emulating /dev/fd/# files even if + the OS doesn't support them. From Paul Eggert. + + (main, usage): Changed --device short option to -D. + + (wipefd, do_wipefd): Renamed function to do_wipefd and added + separate wipefd that performs sanity checks on externally-opened file + descriptors, such as not append-only. From Paul Eggert. + + (do_wipefd, isaac_seedfd): Do not read file for any reason. + if the file is low-entropy, it's a security hole. + (wipefile) Changed to open O_WRONLY and chmod to write-only when + forcing. + (isaac_seedfd) Function deleted as unnecessary. + From Paul Eggert. + + (dopass): Dynamically fall back to fsync() if fdatasync() fails, + since POSIX, in their infinitesimal wisdom, encourage implementations + that return constant -1, making compile-time testing useless. + From Paul Eggert. + + (dopass): Changed to support a size of -1 to mean "unknown". + This entailed changing to a counting-up offset rather than couting-down + cursize for the central state variable. Also changed size argument to + be call-by-reference so that it can be passed back once known. + (sizer) Function deleted as unnecessary. + (wipefd): Changed to match. From Paul Eggert + + (dopass): Try to skip over bad blocks in destination files. + Also added ftruncate() for more complete destruction of metadata. + + (main, usage): Changed "-" to stand for standard output. + (wipefd): Added error message to detect conflict with -v. + + (dopass): Added periodic fsync() calls to keep the pass progress + display in sync with reality. Hopefully they're sufficiently far spaced + that throughput isn't affected. It might be a good thing to do even in + non-verbose mode, to avoid filling up the kernel caches with dirty data. + Also added ftruncate() for more complete destruction of metadata. + + (quotearg_colon): New function to print + pathological filenames properly. + [!HAVE_CONFIG_H] (quotearg_colon_buf) New internal helper function + that does most of the work. + (wipefd, do_wipefd, dopass) Now take a qname (pre-quoted name) argument. + (wipename, wipefile, main) Changed diagnostics to use quotearg_colon. + Error messages are also in a more uniform format. + From Paul Eggert. + + (struct Options, main, do_wipefd): Added -s/--size=N flag. + (xstrtoul): Added support for valid_suffixes to help this. + (usage) Documented it. + + (error): Changed some arguments from N_() to _(), since error() + does not translate its argument. I think this is a bug. + + (struct Options do_wipefd, wipefd, wipefile, main): moved passes + argument into the Options structure as n_iterations, which is now a + size_t. From Paul Eggert. + + (isaac_seed_start, isaac_seed_data, isaac_seed_finish): New functions + to manage seeding of RNG with arbitrary-sized data. + (isaac_init): commented out as dead code. + (isaac_seed): changed to use new functions to prevent any possibility of + a buffer overflow. + + (isaac_seed): Added support for Solaris' gethrtime() + configure.in: Corresponding feature test. From Paul Eggert. + + (wipename): Change remove() to unlink() for speed & portability. + Use lstat() instead of access() to see if a filename is taken. This + works even on dangling symlinks and avoids the suid problems of + access(2). From Paul Eggert. + + (isaac_seed_machdep): New function for reading cycle counters + +1999-04-02 Paul Eggert <eggert@shade.twinsun.com> + + * configure.in (AC_CHECK_FUNCS): Add gethrtime. + + * src/shred.c (isaac_seed): Don't overrun the s->mm buffer. + Use gethrtime if available. Don't assume that clock_gettime succeeds. + Put most random sources first. + +1999-04-02 Paul Eggert <eggert@twinsun.com> + + shred: Add new options -bcCklL and fix some porting problems. + Remove options -dp. Do not read output files. + + * src/shred.c (long_opts, usage, main, wipefile): Adjust to + new options. + ("human.h", "quotearg.h"): New includes. + (struct Options): New members contents, links, n_iterations. + Remove allow_devices, remove_file. Change n_iterations to size_t. + All uses changed. + (output_block_size): New var. + (usage): Declare __noreturn__ attribute. + (fdatasync): Define to -1 if not present, since we need to invoke both + fdatasync and fsync if both are present. All invokers of fdatasync + now try fdatasync, then fsync. + (MIXIN): New macro. + (isaac_seed): Use it to mix in values. Add uid, gid to mix. + Don't use gettimeofday, as it has too many porting problems. + (isaac_seedfd): Remove, since we no longer read the output files. + (sizefd): Remove; we now determine size by writing sequentially. + (dopass, wipename, wipefile, main): Clean up error messages. + (dopass): Keep track of offset relative to start of file, not + end, since we may not know how large the file is. If size is + negative, write until we fall off the end of the file. + (wipefd): Do not read output file. + Return 0 if successful, -1 if not; do not make a special case for + non-regular files, since our callers have that info now. + (wipename): Now static. Return errno if error. + (main): "-" now stands for standard output. + Do not shred append-only standard output. + (wipefile): Do not grant read permission to file when wiping it. + Use symbolic permission (S_IWUSR), not octal. + + * src/system.h (S_IWUSR): Define if not already defined. + + * configure.in (AC_SEARCH_LIBS): Prefer rt to posix4, for Solaris 7. + (AC_CHECK_FUNCS): Remove gettimeofday. + + * doc/fileutils.texi: Document recent changes. + +1999-04-01 Jim Meyering <meyering@ascend.com> + + * configure.in (AC_CHECK_FUNCS): Add acl. + (AC_CHECK_HEADERS): Add sys/acl.h. + * src/ls.c [HAVE_SYS_ACL_H]: Include sys/acl.h. + (struct fileinfo): New member `have_acl'. + (gobble_file): Initialize it. + (print_long_format): Use it. + Mostly from Alen Muzinic. + + * src/touch.c (open_maybe_create): New function. + (touch): Rewrite not to use `creat' and to eliminate a race + condition that could make touch truncate a nonempty file. + Report and suggestions from Andrew Tridgell. + +1999-03-31 Jim Meyering <meyering@ascend.com> + + * src/du.c: Remove prototypes and tsort function definitions. + + * src/chown.c (main): Move the declaration of `e' into the scope + where it's used and make it `const'. + + * src/install.c (main): Qualify a char* with the `const' keyword. + (install_file_in_dir): Likewise. + * src/ln.c (main): Likewise. + * src/mkdir.c (main): Likewise. + * src/mkfifo.c (main): Likewise. + * src/mknod.c (main): Likewise. + * src/mv.c (main): Likewise. + * src/touch.c (touch): Likewise. + +1999-03-30 Jim Meyering <meyering@ascend.com> + + * src/*.c: Don't include closeout.h or version-etc.h explicitly. + Now, they're included via sys2.h. + +1999-03-29 Jim Meyering <meyering@ascend.com> + + * configure.in (GNU_PACKAGE): Remove related code -- now it's in + the catch-all for shared autoconf code, m4/jm-macros.m4. + (jm_CHECK_ALL_TYPES): Remove explicit AC_TYPE_* macros and use + this instead. + +1999-03-29 Paul Eggert <eggert@twinsun.com> + + Minor lint removal in code that forks and execs. + + * lib/mkdir.c (mkdir): Use pid_t instead of int; check status + against zero. This is to improve portability. + * lib/rename.c (rename): Likewise. + * lib/rmdir.c (rmdir): Likewise. + + * lib/rename.c (rename): + (rename): Do not print any error messages, so that the messages + are internationalized properly. + + * src/install.c (strip): Use standard "cannot fork" message. + Check for strip nonzero exit status. + +1999-03-28 Jim Meyering <meyering@ascend.com> + + `chmod =OP' did not properly apply the umask + * lib/modechange.c (make_node_op_equals): New function. + (mode_append_entry): Likewise. + (mode_compile): When none of [ugoa] is specified in an `=OP' change + mode request, insert a `=0' entry into the linked list so that all + bits are cleared first. Use the new functions. + Reported by Andrew Dalke. + + New test for the above. + * configure.in (AC_OUTPUT): Add tests/chmod/Makefile. + * tests/Makefile.am (SUBDIRS): Add chmod. + * tests/chmod: New directory + * tests/chmod/equal-x: New file. + +1999-03-27 Jim Meyering <meyering@ascend.com> + + * lib/modechange.c (mode_compile): Upon allocation failure, free + everything starting with the head, not the tail. + + * src/install.c (strip): Use pid_t, not int. From John Bley. + +1999-03-26 Jim Meyering <meyering@ascend.com> + + * src/dd.c (PROGRAM_NAME, AUTHORS): Define + (long_options): Remove unused struct. + (scanargs): Remove useless loop. + (main): Use PROGRAM_NAME and AUTHORS in call to parse_long_options. + * src/mvdir.c: Likewise. + * src/sync.c (PROGRAM_NAME, AUTHORS): Define and use. + +1999-03-25 Jim Meyering <meyering@ascend.com> + + * lib/Makefile.am (libfu_a_SOURCES): Add version-etc.c. + (noinst_HEADERS): Add version-etc.h. + + * lib/long-options.c (parse_long_options): Remove version-, copyright-, + and author-printing code. Do it via version_etc. + + * lib/version-etc.c: New file. + * lib/version-etc.h: Prototype for same. + + * src/sys2.h (GETOPT_HELP_CHAR): Define. + (GETOPT_VERSION_CHAR): Define. + (GETOPT_HELP_OPTION_DECL): Define. + (GETOPT_VERSION_OPTION_DECL): Define. + (case_GETOPT_HELP_CHAR): Define. + (case_GETOPT_VERSION_CHAR): Define. + + * src/chgrp.c: No longer include long-options.h. + Include version-etc.h instead. + (PROGRAM_NAME, AUTHORS): Define. + [long_options]: Add entries for --help and --version. + Remove parse_long_options call. + (main) [getopt switch]: Add a case for each of --help and --version. + * src/chgrp.c: Likewise. + * src/chmod.c: Likewise. + * src/cp.c: Likewise. + * src/df.c: Likewise. + * src/dircolors.c: Likewise. + * src/du.c: Likewise. + * src/install.c: Likewise. + * src/ln.c: Likewise. + * src/ls.c: Likewise. + * src/mkdir.c: Likewise. + * src/mkfifo.c: Likewise. + * src/mknod.c: Likewise. + * src/mv.c: Likewise. + * src/rm.c: Likewise. + * src/rmdir.c: Likewise. + * src/shred.c: Likewise. + * src/touch.c: Likewise. + +1999-03-24 Jim Meyering <meyering@ascend.com> + + * man/help2man: Import version 1.010. + +1999-03-22 Jim Meyering <meyering@ascend.com> + + * src/chmod.c (usage): Add one-liner. Suggestion from Karl Berry. + +1999-03-19 Jim Meyering <meyering@ascend.com> + + * src/automake-wrap: Rewrite the automake-generated rule for + clean-binPROGRAMS so that it removes rm even with a losing PATH on a + losing system (PATH with `.' before /bin on a system where you can't + unlink a running executable). Reported by William Bader. + + * configure.in: Use jm_WINSIZE_IN_PTEM. + * src/ls.c [WINSIZE_IN_PTEM]: Include sys/stream.h and sys/ptem.h. + Required by SCO ODT 2.0 systems. Reported by William Bader. + +1999-03-18 Jim Meyering <meyering@ascend.com> + + * src/remove.c (remove_cwd_entries): Reflect changes in hash_insert. + (remove_init): Call hash_initialize with one more argument. + +1999-03-15 Jim Meyering <meyering@ascend.com> + + Revamp to allow fine-tuning to control when and by how + much the table grows and shrinks. + * lib/hash.c (next_prime): Don't assert. + (hash_reset_tuning): New function. + (check_tuning): New function. + (hash_initialize): Accept and use new tuning parameter. + (hash_rehash): Rewrite, updating for tuning. + (hash_insert): Honor tuning semantics. + (hash_delete): Likewise. + From François Pinard. + + * lib/hash.h (struct hash_tuning): Define. + (struct hash_table) [tuning]: Add member. + (hash_initialize): Add `tuning' parameter. + + * lib/hash.c (hash_insert): Remove last parameter and change semantics. + * lib/hash.h (hash_insert): Update prototype. + + * lib/hash.c (hash_insert): Don't increment n_entries unconditionally -- + otherwise, we'd do so even when the insertion failed. + From François Pinard. + +1999-03-07 Jim Meyering <meyering@ascend.com> + + * lib/xmalloc.c (xalloc_fail): Use "%s" format so the message doesn't + have to be scanned for % signs. Suggestion from François Pinard. + + * Makefile.maint: Add two more URLs and the loops to use them. + + * lib/long-options.c (parse_long_options): Include `Copyright...' line + in --version output. + Add the `...NO warranty...' message. + +1999-03-03 Jim Meyering <meyering@ascend.com> + + * lib/long-options.c (_): Define it. + (parse_long_options): Accept new parameter, authors, and print it. + + * lib/long-options.h: Update prototype. + + * src/chgrp.c: Include long-options.h + [long_options]: Remove the "help" and "version" entries. + (main): Use parse_long_options, including author name(s). + Remove the show_version and show_help blocks. + * src/chmod.c: Likewise. + * src/chown.c: Likewise. + * src/cp.c: Likewise. + * src/dd.c: Likewise. + * src/df.c: Likewise. + * src/dircolors.c: Likewise. + * src/du.c: Likewise. + * src/install.c: Likewise. + * src/ln.c: Likewise. + * src/ls.c: Likewise. + * src/mkdir.c: Likewise. + * src/mkfifo.c: Likewise. + * src/mknod.c: Likewise. + * src/mv.c: Likewise. + * src/mvdir.c: Likewise. + * src/rm.c: Likewise. + * src/rmdir.c: Likewise. + * src/shred.c: Likewise. + * src/sync.c: Likewise. + * src/touch.c: Likewise. + +1999-02-18 Paul Eggert <eggert@twinsun.com> + + * getdate.y: <alloca.h>: Include if HAVE_ALLOCA_H, not FORCE_ALLOCA_H. + The FORCE_ALLOCA_H was a relic of the bad old pre-autoconf Emacs days. + +1999-02-17 Jim Meyering <meyering@ascend.com> + + * src/shred.c (wipename): Fix string thinko. Now, shredding files + in subdirectories works (dir/file). From Janos Farkas. + +1999-02-13 Jim Meyering <meyering@ascend.com> + + * src/dircolors.c (dc_parse_stream): Don't try to dereference + NULL if there's an error in our built-in list. + Suggestion from François Pinard. + +1999-02-13 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> + + * src/install.c (main): Set x.backup_type only if backups are requested. + (cp_option_init): Initialize backup_type. + (backup_type): Remove unused variable. + + * doc/fileutils.texi: Fix use of @item vs @itemx. + +1999-02-08 Jim Meyering <meyering@ascend.com> + + * src/dircolors.c (slack_codes): Add "DOOR". + (ls_codes): Add corresponding "do". + Reported by John Gotts. + + * configure.in (ALL_LINGUAS): Add Italian (it). + +1999-02-07 Jim Meyering <meyering@ascend.com> + + * Version 4.0d (aka 4.1-b4). + + * Makefile.maint (my-distcheck): Don't depend on dist, now that this + is hooked up to the distcheck rule. + * Makefile.am (distcheck-hook): New target and rule -- link to shared + rule, my-distcheck, in Makefile.maint. + + * doc/fileutils.texi (shred invocation): New section. From Colin Plumb. + + * configure.in (jm_FUNC_GETGROUPS): Move the test into a new file, + group-member.m4, and just use this new macro. + Use `.$ac_objext', not the literal `.o'. + +1999-02-02 Jim Meyering <meyering@ascend.com> + + * src/ls.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR): + Define to zero if not already defined. + (HAVE_SYMLINKS): Define. + (gobble_file): Remove #ifdef. + (get_link_name, make_link_path): Guard these with #if HAVE_SYMLINKS + rather than #ifdef S_ISLNK. + (print_type_indicator): Remove #ifdefs and reorganize. + (print_color_indicator): Remove #ifdefs. + (length_of_file_name_and_frills): Likewise. + +1999-02-01 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * src/dircolors.hin: Handle DOOR. + + * src/ls.c (print_type_indicator): Print doors as '>'. + (length_of_file_name_and_frills): Account for this. + (indicator_no): Define C_DOOR. + (indicator_name): Add corresponding name. + + * lib/filemode.c (ftypelet): Handle doors. + + * lib/filemode.c, src/system.h (S_ISDOOR): Define if missing. + +1999-02-01 Jim Meyering <meyering@ascend.com> + + * lib/strcasecmp.c (STRXCASECMP_FUNCTION): Don't increment within macro + argument list. From Akim Demaille. + +1999-01-31 Jim Meyering <meyering@ascend.com> + + * doc/fileutils.texi: Wrap the @top node in @ifnottex instead of + @ifinfo so `makeinfo --html ...' works. From Karl Berry. + + * tests/ln/misc: Add test for this. + * src/ln.c (do_link): Allow creation of a hard link to a dangling + symlink. Reported by Alexey Solovyov. + + * src/copy.c (copy_internal): Describe any backup-related renaming + operations when in verbose mode. + (copy_internal): Likewise. + Based on changes from Marty Leisner. + + * lib/lchown.c: Declare chown. + +1999-01-30 Jim Meyering <meyering@ascend.com> + + * acconfig.h: Remove uintmax and STAT* #undefs. + * configure.in: Require autoconf 2.13. + Remove test for AFS. + Use 3-argument form of AC_DEFINE*. + +1999-01-28 Jim Meyering <meyering@ascend.com> + + * po/POTFILES.in: Add src/shred.c. + + * src/system.h: Use TIME_WITH_SYS_TIME-based #if test rather than + TM_IN_SYS_TIME based one (for shred). + + * acconfig.h: Remove lots of `#undef's, now that we use the + 3-argument forms of AC_DEFINE* macros. + +1999-01-25 Jim Meyering <meyering@ascend.com> + + * configure.in (fdatasync): Use AC_CHECK_FUNCS instead of + AC_REPLACE_FUNCS. + (AC_CHECK_FUNCS): Add clock_gettime. + + * src/shred.c (isaac_seed): Guard clock_gettime with test of + HAVE_CLOCK_GETTIME, not CLOCK_REALTIME. + (wipename): Rename local dirfd to dir_fd to avoid shadowing the + function declared in Linux's dirent.h. + +1999-01-25 Akim Demaille <demaille@inf.enst.fr> + + * lib/argmatch.h (ARRAY_CARDINALITY): Define. + (ARGMATCH_ASSERT): New macro. + + * lib/argmatch.c (program_name): Remove dcl. + Include error.h. + (argmatch_invalid): Use error rather than fprintf. + +1999-01-24 Jim Meyering <meyering@ascend.com> + + * src/ansi2knr.c: Exit nonzero upon failed write to stdout. + New version from L. Peter Deutsch. + + * lib/quotearg.c (quotearg_n_options): Revert type of parameter `n' + (and hence that of the local `n1', too) to `int' at Paul's request. + + * lib/closeout.c: Add comments. + + * src/shred.c (fdatasync): Remove function. instead, ... + (fdatasync) [! HAVE_FDATASYNC]: Define to fsync. + From Colin Plumb. + +1999-01-23 Jim Meyering <meyering@ascend.com> + + * src/Makefile.am (bin_PROGRAMS): Add shred. + * src/shred.c: New file. + Portability tweaks. + Internationalize. + (wipename): Print the `FILE: deleted' and `FILE: deleting' messages + only when in verbose mode. + (fdatasync) [! HAVE_FDATASYNC]: New function. + + * man/Makefile.am (man_MANS): Add shred.1. + * man/Makefile.summ (shred-summary): Define. + * man/shred.x: New file. + + * src/shred.c: New file. From Colin Plumb. + Include config.h, getopt.h, system.h and error.h. + Use #else/#if, not #elif. + +1998-11-05 Paul Eggert <eggert@twinsun.com> + + * lib/mktime.c (__mktime_internal): Adopt the traditional (and + problematic) notion of what to do when tm_isdst doesn't match. + +1999-01-17 Jim Meyering <meyering@ascend.com> + + * tests/cp/Makefile.am (TESTS_ENVIRONMENT): Set PATH here, rather + than setting RM and CP. + * tests/cp/*: Now that PATH is set properly, use rm and cp rather + than $RM and $CP. + + * tests/ln/Makefile.am (TESTS): Add backup-1. + (TESTS_ENVIRONMENT): Set PATH here, rather than setting LN. + * tests/ln/*: Now that PATH is set properly, use ln rather than $LN. + * tests/ln/backup-1: New test for this. + * src/ln.c (do_link): Try to remove DEST even after renaming it. + This fixes a bug reported by Jamie Lokier. + + * src/ln.c (same_name): Use SAME_INODE rather than open coding it. + +1999-01-16 Jim Meyering <meyering@ascend.com> + + * lib/argmatch.c (ARGMATCH_DIE_DECL): Use it. + + * acconfig.h: Remove @BOTTOM@ section. + Instead, add the define and decl via m4/jm-macros.m4. + + * src/ls.c: Don't declare base_name. + Use function-style XARGMATCH once again. + * src/touch.c: Likewise. + * acconfig.h: Add a @BOTTOM@ section. + (ARGMATCH_DIE) [@BOTTOM@]: Define to usage(1). + Declare usage. + From Akim Demaille. + + * src/cp.c: Remove declarations of base_name and get_version. + (main): Don't call getenv ("VERSION_CONTROL"); xget_version does it. + Use xget_version and function-style XARGMATCH. + * src/mv.c (main): Likewise. + * src/ln.c (main): Likewise. + * src/install.c (main): Likewise. + * lib/quotearg.c (quotearg_n_options): Declare n1 to be of type + unsigned int, not just int. + * lib/backupfile.h (get_version): Adjust prototype. + (xget_version): Add prototype. + (base_name): Remove prototype. + * lib/backupfile.c [!HAVE_DECL_GETENV]: Declare getenv. + (backup_args): Reorder enum members. + (backup_types): Likewise. + (get_version): Take an additional parameter, `context'. + (xget_version): Like get_version, but if the `version' argument is NULL, + use the value of the envvar VERSION_CONTROL. + (base_name): Declare. + Mostly from Akim Demaille. + + * lib/addext.c (base_name): Declare. + * src/sys2.h: Add prototype for base_name. + + * lib/argmatch.c: s/argmatch_exit_failure/argmatch_die/ + * lib/argmatch.h: Likewise. + + * lib/argmatch.h (XARGMATCH): Define to return a value once again. + (XARGCASEMATCH): Likewise. + + * lib/argmatch.c (EXIT_FAILURE): Define. + (ARGMATCH_DIE): Provide default. + (__xargmatch_internal): New function. + s/rogram_name/program_name. + From Akim Demaille. + +1999-01-14 Akim Demaille <demaille@inf.enst.fr> + + * src/touch.c (usage): Don't make it static so that it can be + called from libfu.a by xargmatch. + * src/chgrp.c (usage): Likewise + * src/chmod.c (usage): Likewise + * src/chown.c (usage): Likewise + * src/cp.c (usage): Likewise + * src/dd.c (usage): Likewise + * src/df.c (usage): Likewise + * src/dircolors.c (usage): Likewise + * src/du.c (usage): Likewise + * src/install.c (usage): Likewise + * src/ln.c (usage): Likewise + * src/ls.c (usage): Likewise + * src/mkdir.c (usage): Likewise + * src/mkfifo.c (usage): Likewise + * src/mknod.c (usage): Likewise + * src/mv.c (usage): Likewise + * src/mvdir.c (usage): Likewise + * src/rm.c (usage): Likewise + * src/rmdir.c (usage): Likewise + * src/sync.c (usage): Likewise + +1999-01-12 Akim Demaille <demaille@inf.enst.fr> + + * lib/backupfile.c (get_version): added the parameters KIND. + (xget_version): like get_version, but if argument is NULL, honor + the envvar VERSION_CONTROL. + * src/cp.c: Remove declarations of base_name and get_version. + (main): Use xget_version. + * src/mv.c (main): Likewise. + * src/ln.c (main): Likewise. + * src/install.c (main): Likewise. + +1999-01-12 Jim Meyering <meyering@ascend.com> + + * configure.in (ALL_LINGUAS): Add Greek (el). + * po/el.po: New file. + + * install-sh: New version from autoconf. + * missing: New version from automake. + * src/ansi2knr.c: Likewise. + * lib/getopt.c: New version from glibc. + * lib/getopt.h: Likewise. + * lib/getopt1.c: Likewise. + * lib/regex.c: Likewise. + * lib/regex.h: Likewise. + * lib/ylwrap: Remove unused file. + +1999-01-10 Jim Meyering <meyering@ascend.com> + + * Version 4.0c (aka 4.1-b3). + + * Upgrade to autoconf-2.13 and automake-1.3b. + + * src/copy.c (copy_internal): Handle two more values of errno from + failed rename of a directory into a subdirectory of itself. + Thanks to Volker Borchert for testing many types and combinations + of systems. + + * lib/argmatch.c (ARGMATCH_QUOTING_STYLE): Change from c_quoting_style + to escape_quoting_style. + (argmatch_invalid): Now that the quoted quantity is no longer double + quoted, remove the code that removed leading and trailing double quotes. + + * src/ls.c (decode_switches): Now that escape_quoting_style no longer + escapes the SPACE character, arrange for SPACEs to be quoted here. + * lib/quotearg.c (quotearg_buffer): Change escape_quoting_style so that + it no longer escapes ` '. + Suggestion from Paul Eggert. + +1999-01-05 Jim Meyering <meyering@ascend.com> + + * configure.in (space): Add `for' in message of statvfs check. + From Ulrich Drepper. + +1999-01-04 Jim Meyering <meyering@ascend.com> + + * Version 4.1-b2. + +1999-01-02 Jim Meyering <meyering@ascend.com> + + * lib/argmatch.c (argmatch_invalid): Remove double quotes from the + offending quoted argument before using it in explanatory diagnostic. + Use a single fprintf stmt. + + * lib/argmatch.h (XARGMATCH): Don't return a value; instead, + modify a parameter. Add a `Die_stmt' parameter. + Add parentheses. + * lib/argmatch.c (__xargmatch_internal): Remove now-unused function. + (argmatch_to_argument): Add `const' attribute to first parameter. + + * configure.in (AC_REPLACE_FUNCS): Remove strcasecmp (now it's + done in m4/jm-macros.m4). + + * lib/backupfile.c (get_version): Adapt to use new interface to + XARGMATCH. + * src/cp.c: Likewise. + * src/ls.c: Likewise. + * src/touch.c: Likewise. + +1999-01-01 Jim Meyering <meyering@ascend.com> + + * lib/makepath.c (make_dir): New function, factored out of make_path. + (make_path): Use make_dir rather than open-coding it twice. + This effectively reverses the order of the latter pair of stat/mkdir + calls and fixes a race condition bug whereby one of two concurrent + `mkdir -p' processes could fail with EEXIST. + Include locale.h and libintl.h, and define `_()'. + Mark translatable strings. + + * lib/xmalloc.c: Add comments. + (xcalloc, xmalloc, xrealloc): Remove prototypes. + (xcalloc): Remove `#ifdef NOT_USED' that used to hide this function. + * lib/xalloc.h: Add comments. + (PARAMS, XMALLOC, XCALLOC, XREALLOC): Define. + (xcalloc, xmalloc, xrealloc): Add prototypes here. + Based on changes from Akim Demaille. + + * lib/quotearg.c (quotearg_buffer): Cast -1 to size_t before comparing. + (quotearg_n): Change type of 1st parameter from int to unsigned int. + (quotearg_n_options): Likewise. + * lib/quotearg.h (quoting_style_vals): New public array. + From Akim Demaille. + (quotearg_n_options): Declare `options' parameter to be `const'. + + * lib/human.c (humblock): Use ARGMATCH in place of argmatch. + + * lib/backupfile.c (get_version): Use XARGMATCH in place of + argmatch & co. + +1998-12-31 Jim Meyering <meyering@ascend.com> + + * src/ls.c (indicator_style_types): New variable. + (format_types): Rename from `formats'. + (color_args): Remove unnecessary `no' string. + (color_types): Remove corresponding `color_never' entry. + (main): Use ARGMATCH_TO_ARGUMENT. + (decode_switches): Use ARGMATCH instead of argmatch code + in each of several cases. + From Akim Demaille. + + * src/cp.c (main): Use XARGMATCH in place of argmatch & co. + * src/touch.c (main): Likewise. + * lib/backupfile.c (get_version): Likewise. + From Akim Demaille. + + * lib/strncasecmp.c: New file. + * lib/strcasecmp.c: Add #ifdefs so it can be used for strncasecmp, too. + * lib/argmatch.c (strncasecmp): Move to a separate file. + Add curly braces around some one-stmt-but-multiline blocks. + + * lib/argmatch.c: Improvements from Akim Demaille. + * lib/argmatch.h: Likewise. + + * lib/addext.c (addext): Protoize. + Indent cpp directives to match nesting. + + Fix warnings from gcc -W -Wall + * lib/posixtm.c (posix_time_parse): Change type of index `i' from + int to unsigned int. + * lib/getdate.y (__attribute__): Define. + (ATTRIBUTE_UNUSED): Define. + (yyerror): Mark parameter as unused with ATTRIBUTE_UNUSED. + (MonthDayTable): Add initializers for last entry. + (UnitsTable): Likewise. + (OtherTable): Likewise. + (MilitaryTable): Likewise. + +1998-12-22 Jim Meyering <meyering@ascend.com> + + * Version 4.1-b1. + + * configure.in (ALL_LINGUAS): Add chinese (zh). + +1998-12-19 Jim Meyering <meyering@ascend.com> + + * tests/ln/misc: Use absolute path for final rm. + + * Makefile.maint (my-distcheck): Run make with + CFLAGS='-Wformat -Werror'. + +1998-12-18 Jim Meyering <meyering@ascend.com> + + * src/copy.c (copy_internal): Remove errnoeous `%s: ' prefix + from format string. From Michiel Bacchiani. + + * src/chgrp.c (MAXGID): Define. + Use gid_t (not int) as the type for `group' variables. + (parse_group): Use MAXGID, not INT_MAX. + + * src/install.c (UID_T_MAX, GID_T_MAX): Remove definitions. + * src/sys2.h (UID_T_MAX, GID_T_MAX): Define them here instead. + +1998-12-13 Jim Meyering <meyering@ascend.com> + + * lib/Makefile.am (EXTRA_DIST): Add xstat.in. + +1998-12-12 Jim Meyering <meyering@ascend.com> + + 1998-10-15 Akim Demaille <demaille@inf.enst.fr> + * src/ls.c: Group DIRED's code together. + (full_time, inhibit_group, col_ext_type): Declare static. + (dired_dump_obstack): Apply sizeof to variable, instead of its type. + (parse_ls_color): Rename ext2 as e2. Move into the block where it + is used. + + 1998-10-15 Akim Demaille <demaille@inf.enst.fr> + * src/ls.c: In order to distinguish col(umn|or): + (init_column_info): Renamed from init_col_info. + (struct column_info): Renamed from struct col_info. + (struct color_ext_type): Renamed from struct col_ext_type. + +1998-12-11 Jim Meyering <meyering@ascend.com> + + * lib/Makefile.am (lstat.c): Add rule to generate this from xstat.in. + (stat.c): Likewise. + * lib/stat.c: Remove file. + * lib/lstat.c: Remove file. + * lib/xstat.in (xstat@): New file. + + * lib/quotearg.c (quotearg_buffer): Use `7' as the mask, not `3'. + From Bruno Haible. + * tests/ls-2/tests: Add a test for this. + + * man/help2man: import version 1.006. + +1998-12-07 Jim Meyering <meyering@ascend.com> + + * src/copy.c: Use dir_name, not dirname. Include dirname.h. + * src/cp.c: Likewise. + * src/df.c: Likewise. + * src/install.c: Likewise. + * src/ln.c: Likewise. + * src/mvdir.c: Likewise. + + * lib/dirname.c (dir_name): Rename from dirname. + Make argument `const'. Include "dirname.h" + * lib/dirname.h: New file. + * lib/Makefile.am (noinst_HEADERS): Add dirname.h. + +1998-12-06 Jim Meyering <meyering@ascend.com> + + * lib/rpmatch.c (rpmatch) [!ENABLE_NLS]: Hard-code tests to use + `^[yY]' and `^[nN]' (avoiding regex). From Karl Heuer. + + * lib/*.c: Ansideclify. + + Fix `ls -R .' formatting bug that broke mktexlsr. + * src/ls.c: Include path-concat.h. + (basename_is_dot_or_dotdot): New function, derived from + is_not_dot_or_dotdot. + (is_not_dot_or_dotdot): Remove function. + (extract_dirs_from_files): Use `!basename_is_dot_or_dotdot' + instead of is_not_dot_or_dotdot and use path_concat instead of attach. + + * tests/ls-2/tests: New file (renamed from quoting), + with new test for the `ls -R .' fix. + * tests/ls-2/quoting: Remove file. + * tests/ls-2/Makefile.am (TESTS): s/quoting/tests/. + +1998-11-29 Jim Meyering <meyering@ascend.com> + + * src/remove.c (DOT_OR_DOTDOT): Move definition from this file... + * src/sys2.h (DOT_OR_DOTDOT): ...to this one. + + * src/dd.c (dd_copy): Rename function from `copy'. + + * src/cp.c (do_copy): Rename local: s/unused/copy_into_self/. + + Per Kristian Hove reported that a certain move-directory-into-self + wasn't properly diagnosed. + + * tests/mv/into-self-3: New file. + * tests/mv/Makefile.am (TESTS): Add into-self-3. + * src/copy.c (copy_internal): Remove earlier (but less effective) + test for move/copy-into-self. + Instead, deduce the move-into-self condition from errno==EINVAL + after a failed rename. + * src/mv.c (do_move): Don't arrange to remove DEST in the + copied-into-self case. + +1998-11-15 Jim Meyering <meyering@ascend.com> + + Bob McCracken reported that mv couldn't handle certain combinations + of hard linked source files. + + * tests/mv/hard-link-1: New file. + * tests/mv/Makefile.am (TESTS): Add hard-link-1. + * src/mv.c (movefile): Don't free new_dest. + + * lib/error.c (error): Don't use strerror_r's return value. + From Johan Danielsson. + +1998-11-14 Jim Meyering <meyering@ascend.com> + + * Version 4.0. + + * Makefile.maint (cvs-dist): Search for `$tag:' rather than just $tag + to avoid matching a prefix of another tag. + +1998-11-10 Jim Meyering <meyering@ascend.com> + + * configure.in (ALL_LINGUAS): Add Greek (el). + * po/el.po: New file. + +1998-11-07 Jim Meyering <meyering@ascend.com> + + * Version 4.0-b7. + + Accommodate the Hurd (defining lstat to rpl_lstat via config.h didn't + work on Hurd systems because of an inline definition of lstat in a + system header file). This also makes it so that you may run `ls '' ' + on systems that let l?stat operate on the empty string. + + * src/remove.c [HAVE_LSTAT_EMPTY_STRING_BUG]: Define lstat to rpl_lstat + and declare the latter. + * lib/stat.c [stat]: Remove #undef. + (rpl_stat): Protoize. + * lib/lstat.c [lstat]: Remove #undef. + (rpl_lstat): Protoize. Use ENOENT, not EINVAL, to be consistent + with lib/stat.c. + * acconfig.h: Remove #undef's for lstat and stat. + +1998-10-31 Jim Meyering <meyering@ascend.com> + + * tests/rm/Makefile.am (TESTS): Add new test `empty-name', + but comment it out. + * tests/rm/empty-name: New file. + + * acconfig.h (stat): New #undef. + This omission was uncovered when Mark Kettenis reported that + `rm -r ''' got a failed assertion on the Hurd. This change + doesn't fix *that* problem -- see above. + +1998-10-25 Jim Meyering <meyering@ascend.com> + + * Version 4.0-b6. + + * README: Man pages will now be supported to the extent that + people send patches. + + * tests/rm/unreadable: Two new tests. + * tests/rm/Makefile.am (TESTS): Add new test `unreadable'. But comment + it out since we're so close to release and since the test compares the + text of diagnostics that are likely to vary between systems. + (TEST_ENVIRONMENT): Add required framework. + + * src/remove.c (remove_cwd_entries): Don't apply CLOSEDIR to a NULL + pointer. (provoke with `mkdir -m 0100 x; rm -rf x') + Upon CLOSEDIR failure, set `status' to RM_ERROR, not RM_OK. + (remove_dir): Return `status', rather than always RM_OK. + +1998-10-18 Jim Meyering <meyering@ascend.com> + + * Version 4.0-b5. + + * lib/mktime.c: Update from libc with this additional change from Paul. + * lib/strftime.c: Likewise. + + 1998-10-17 Paul Eggert <eggert@twinsun.com> + + Don't invoke localtime_r or gmtime_r unless it's the GNU C + library's localtime_r and gmtime_r; there are too many buggy + implementations of localtime_r and gmtime_r out there, and + it's not worth keeping track of all the different bugs. + + * mktime.c (__EXTENSIONS__, HAVE_LOCALTIME_R): Remove. + (my_mktime_localtime_r): Renamed from localtime_r; all uses changed. + Base it on localtime unless _LIBC. + + * strftime.c (__EXTENSIONS__): Remove. + (my_strftime_gmtime_r): Renamed from gmtime_r; all uses changed. + (my_strftime_localtime_r): Renamed from localtime_r; all uses changed. + Base them on localtime/gmtime if not _LIBC. + +1998-10-17 Jim Meyering <meyering@ascend.com> + + * Version 4.0-b4. + + * lib/mktime.c: Declare localtime_r if necessary. + * lib/strftime.c: Likewise. + + * tests/Fetish.pm (run_tests): Run $prog with --version only + if $verbose. + +1998-10-11 Jim Meyering <meyering@ascend.com> + + * Version 4.0-b3. + +1998-10-08 Paul Eggert <eggert@twinsun.com> + + * mktime.c (__mktime_internal): When the requested time falls + in a spring-forward gap of size DT, return a time that is DT + away from the requested time, preferring a time whose tm_isdst + differs from the requested value. Bump the max number of + probes from 4 to 6 to account for the extra probes needed to + discover a spring-forward gap in the worst case. + +1998-10-08 Paul Eggert <eggert@twinsun.com> + + * mktime.c (my_mktime_localtime_r): Renamed from localtime_r. + Define also if HAVE_LOCALTIME_R && defined (localtime_r), with + a body that merely expands localtime_r; this works around a + bug in Digital Unix 4.0A and 4.0D. + +1998-10-05 Jim Meyering <meyering@ascend.com> + + * po/Makefile.in.in (uninstall): Remove (historical?) command that + removed po-Makefile.in.in. From Akim Demaille. + + * src/install.c (long_options): Add entry for --suffix=SUFFIX option. + From aldomel. + +1998-10-04 Jim Meyering <meyering@ascend.com> + + * tests/mv/Makefile.am (TESTS_ENVIRONMENT): Define PERL. + From Kaveh Ghazi. + +1998-10-03 Jim Meyering <meyering@ascend.com> + + * Version 4.0-b2. + + * tests/mv/Makefile.am (TESTS_ENVIRONMENT): Add PATH. + + * man/Makefile.maint ($(man_MANS)): Don't depend on actual executables. + Instead, depend on corresponding source file and on configure.in. + Based on suggestion and code from Akim Demaille. + Factor out irregular men into Makefile.summ. + + * man/Makefile.am (EXTRA_DIST): Add Makefile.summ. + + * man/Makefile.summ: New file. + * man/Makefile.maint: Include it. + + * tests/Fetish.pm: Make `DEBUG' be a little more verbose. + + * tests/mv/Makefile.am (TESTS): Add i-1. + * tests/mv/i-1: New test. + +1998-10-02 Jim Meyering <meyering@ascend.com> + + * tests/ls-2/Makefile.am (EXTRA_DIST): Remove run-test. + * tests/ls-2/run-test: Remove file. + * tests/ls-2/quoting: Include /bin/sh driver framework. + + * tests/dircolors/simple: Remove file. + * tests/dircolors/run-test: Embed it here instead. + * tests/dircolors/simple: Rename from run-test. + +1998-10-01 Jim Meyering <meyering@ascend.com> + + * tests/Makefile.am (EXTRA_DIST): Remove README. + From Akim Demaille. + +1998-09-28 Jim Meyering <meyering@ascend.com> + + * Version 4.0-pre1. + + * Use automake-1.3b. See notes in README. + + * src/copy.c (copy_internal): Do honor `n' reply in move-mode. + Otherwise, `touch a b; echo n|mv -i a b' would remove b. + From Bernd Leibing. + +1998-09-27 Jim Meyering <meyering@ascend.com> + + * Version 3.16z. + + * Makefile.maint (alpha): New target. + (my-distcheck): Tweak. + + * lib/backupfile.h: Protect against multiple inclusion. + From Akim Demaille. + + * configure.in: Remove use of AC_FUNC_FNMATCH and associated code. + Now, it is invoked through jm_MACROS. + + * lib/strftime.c (my_strftime): Update from FSF. + +1998-09-26 Jim Meyering <meyering@ascend.com> + + * src/copy.c (copy_internal): Don't preserve hard-linked directories + to avoid damaging the destination filesystem when copying from a + Netapp snapshot directory. With code from Kjetil Torgrim Hollstein + and Paul Eggert. + +1998-09-24 Jim Meyering <meyering@ascend.com> + + * man/Makefile.maint ($(man_MANS)): Correct typo: s/-tmp/-t/. + From Akim Demaille. + +1998-09-21 Jim Meyering <meyering@ascend.com> + + * man/Makefile.maint ($(man_MANS)): Remove `echo'. + +1998-09-20 Jim Meyering <meyering@ascend.com> + + * Version 3.16y. + + * src/install.c (install_file_to_path) [-D]: Create any leading + directories with permissions of 0755. + +1998-09-19 Jim Meyering <meyering@ascend.com> + + * src/install.c (install_file_to_path): Copy the file after creating + any leading directories. + (main) [case 'v']: Set `x.verbose' to 1, not 0. + Reported by Marty Leisner. + + * man/Makefile.am (transform): Define. + (man_MANS): Include ginstall.1, not install.1, to match the name + of the executable in ../src. + * man/ginstall.x: New file. + * man/install.x: Remove file. + * man/Makefile.maint (ginstall-summary): Renamed from install-summary. + + * man/Makefile.am (EXTRA_DIST): Add Makefile.maint and GNUmakefile. + Reported by Akim Demaille. + + * lib/modechange.c: Fix post-protoization typo. + + * lib/posixtm.h (PARAMS): Define and use. + From Kaveh Ghazi. + +1998-09-12 Jim Meyering <meyering@ascend.com> + + * Version 3.16x. + + * src/remove.c (remove_cwd_entries): Declare to be static. + + Automatically generate man pages from combination of --help + output and the contents of new, man/*.x files. + * man/Makefile.am (HELP2MAN): Define. + (man_aux): Define. + (EXTRA_DIST): Add $(HELP2MAN) and $(man_aux). + (MAINTAINERCLEANFILES): Add $(man_MANS). + * man/*.x: New files. + * man/GNUmakefile: New file. + * man/Makefile.maint: New file. + * man/help2man: New file. + +1998-09-09 Jim Meyering <meyering@ascend.com> + + * lib/modechange.c: Protoize. + +1998-09-07 Jim Meyering <meyering@ascend.com> + + * Version 3.16w. + + * src/df.c (show_dev) [!posix_format]: When using --print-type, + let the device path and the file system type share a single (wider) + field if their combined lengths allow it. From Andries Brouwer. + + * tests/touch/empty-file: Upon failure, suggest how to rerun the test + with longer delay, in case NFS clock skew was the cause of the failure. + Reported by Kaveh Ghazi. + + * tests/ls-2/quoting: Add tests. + * tests/Fetish.pm (run_tests): Add simple PRE/POST hooks. + (_create_file): Don't include $$ in temp file name. + (run_tests): Use shorter suffixes for temp file names. + +1998-09-06 Jim Meyering <meyering@ascend.com> + + * src/touch.c: Include posixtm.h. + (usage): Correct the description of the format of the + date string argument to -t option. + (main): Update to use rewritten posixtime function. + Reported by Andries Brouwer. + + * lib/Makefile.am (libfu_a_SOURCES): Change posixtm.y to posixtm.c. + (noinst_HEADERS): Add posixtm.h. + + * lib/posixtm.h: New file. + * lib/posixtm.c: New file. Rewritten based on posixtm.y. + * lib/posixtm.y: Remove file. + +1998-09-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * src/ls.c (print_dir_name): Put back. + (print_dir): Also print directory name header if print_dir_name is + true. + +1998-08-29 Jim Meyering <meyering@ascend.com> + + * Version 3.16v. + + * src/du.c (long_options): Use corresponding short-option character + in place of `1', and `NULL' in place of pointer in initialization. + * src/cp.c (long_opts): Likewise. + * src/ln.c (long_options): Likewise. + * src/mkdir.c (longopts): Likewise. + * src/rmdir.c (longopts): Likewise. + * src/chown.c: Replace 12 and 13 with CHAR_MAX + 1 and CHAR_MAX + 2 + respectively. + * src/chmod.c (long_options): Replace 12 with CHAR_MAX + 1. + * src/chgrp.c (long_options): Replace 12 with CHAR_MAX + 1. + + * tests/Fetish.pm: New file -- moved from ls-2/. + * configure.in (AC_OUTPUT): Add tests/dircolors/Makefile. + * tests/Makefile.am (SUBDIRS): Add dircolors. + (EXTRA_DIST): Add Fetish.pm. + * tests/dircolors: New directory + + * src/ls.c (print_dir_name): Remove global variable. + (print_dir): When trace_dirs is set, always print the directory + name header. + +1998-08-26 Jim Meyering <meyering@ascend.com> + + * src/dircolors.c (dc_parse_stream): Don't segfault when a line + contains only one token. Reported by Olav Morkrid. + +1998-08-24 Paul Eggert <eggert@twinsun.com> + + * src/system.h (CHAR_MIN, CHAR_MAX): + Renamed from SCHAR_MIN, SCHAR_MAX, since these + macros apply to char, not signed char. + + * src/df.c, src/du.c, src/touch.c (long_options, main): + Don't assume ASCII. + +1998-08-18 Paul Eggert <eggert@twinsun.com> + + Port nanosecond-resolution times to UnixWare 2.1.2 and + pedantic Solaris 2.6. + + * configure.in (AC_STRUCT_ST_MTIM_NSEC): Renamed from AC_STRUCT_ST_MTIM. + * acconfig.h (ST_MTIM_NSEC): New #undef. + * src/system.h (ST_TIME_CMP_NS, ATIME_CMP, CTIME_CMP, MTIME_CMP): + Use new ST_MTIM_NSEC macro. + +1998-08-16 Jim Meyering <meyering@ascend.com> + + * lib/filemode.h (PARAMS): Define and use. + From Kaveh Ghazi. + +1998-08-15 Jim Meyering <meyering@ascend.com> + + * Version 3.16u. + + * Makefile.maint (announcement): New target. + + * tests/mv/into-self: Update to reflect changed behavior of mv. + * src/mv.c (do_move): Fail upon attempt to move a directory into itself. + With prodding from François Pinard :-) + + * tests/ls-2/Fetish.pm: New file + * tests/ls-2/run-test: New file + + * src/copy.c (copy_internal) [one-file-system]: Do copy mount point + directories (but none of their entries). This makes `cp --archive + --one-file-system' use the same policy `tar --one-file-system' does. + From Marty Leisner. + + * src/ls.c (qmark_funny_chars): Add comment from Paul eggert. + +1998-08-14 Jim Meyering <meyering@ascend.com> + + * tests/mv/setup: Work around another bug in Ultrix4.3a's /bin/sh. + Reported by Christian von Roques. + + * configure.in (AC_OUTPUT): Add tests/ls-2/Makefile. + * tests/Makefile.am (SUBDIRS): Add ls-2. + * tests/ls-2: New directory + +1998-08-14 Christian von Roques <roques@pond.sub.org> + + * lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNT]: Don't + infloop on getmnt(2) returning 0. + + * tests/cp/backup-is-src: Avoid bug in Ultrix4.3a /bin/sh, + not initializing output redirection of : command. + * tests/mv/backup-is-src: Likewise. + * tests/rm/i-1: Likewise. + +1998-08-12 Jim Meyering <meyering@ascend.com> + + * po/Makefile.in.in: Provide automake-style DESTDIR support. + From Johan Danielsson. + (DISTFILES): Remove ChangeLog. + po/ChangeLog: Remove empty file. + + * configure.in (AC_STRUCT_ST_DM_MODE): Use it. + + * src/ls.c: Include filemode.h. + * src/chmod.c: Likewise. + + * lib/filemode.c (ftypelet): Add comments for Cray DMF support. + From Johan Danielsson. + Protoize. Tsort function definitions and remove prototypes of + static functions. + (mode_string): Remove prototype. + * lib/filemode.h (mode_string): New file. + * lib/Makefile.am (noinst_HEADERS): Add filemode.h. + +1998-08-09 Jim Meyering <meyering@ascend.com> + + * Version 3.16t. + +1998-07-31 Paul Eggert <eggert@twinsun.com> + + Add support for filesystems whose timestamps have better resolution + than 1 second (e.g. Solaris 2.6, recent Linux kernels). + + * configure.in (AC_STRUCT_ST_MTIM): Add. + + * src/copy.c (copy_internal): Compare time stamps with + subsecond resolution if available. + + * src/ls.c (compare_ctime, rev_cmp_ctime, compare_mtime, + rev_cmp_mtime, compare_atime, rev_cmp_atime): Compare time + stamps with subsecond resolution if available. + + * src/system.h (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP, + CTIME_CMP, MTIME_CMP): New macros. + +1998-08-01 Jim Meyering <meyering@ascend.com> + + * configure.in (ALL_LINGUAS): Add slovak (sk) and norwegian (no). + +1998-07-28 Paul Eggert <eggert@twinsun.com> + + * lib/mountlist.c (read_filesystem_list): Remove all_fs + argument, but put the necessary information into the result so + that the caller can ignore filesystems that he's not + interested in. + + * lib/mountlist.h (struct mount_entry): + New members me_dummy, me_remote. + (read_filesystem_list): Remove all_fs argument. + (REMOTE_FS_TYPE): Remove. + (ME_DUMMY, ME_REMOTE): New macros. + + * lib/xstrtol.c: Remove duplicate include of <stdio.h>. + + * src/df.c (show_all_fs): + Revert to boolean value; the old negative value is + now in show_local_fs. + (show_local_fs): New variable. + (show_dev): New args me_dummy and me_class. Use show_local_fs + and boolean show_all_fs in combination with these new args + to decide whether to show a device. + (show_disk): Pass flags to show_dev. + (show_point): Use a non-dummy mount entry if possible. + (show_all_entries): Pass flags to show_dev. + (main): --local sets show_local_fs now. Ask for file system types if + show_local_fs is nonzero, since ME_REMOTE might need them. + +1998-07-27 Jim Meyering <meyering@ascend.com> + + * tests/install/Makefile.am (TESTS_ENVIRONMENT): Set LS, MKDIR, and RM. + + * tests/install/basic-1: Add a test for this. + * src/install.c: Make copy create each destination file initially + with mode 0600 so strip will work, then apply specified mode. + Arne Henrik Juul reported that `./ginstall -s -c -m 555 dd /tmp' failed. + +1998-07-25 Jim Meyering <meyering@ascend.com> + + * src/mv.c (chown): Remove unused definition. + Reported by Kaveh Ghazi. + + * src/rmdir.c (main): rmdir fails with EEXIST on some systems. + Handle that, so --ignore-fail-on-non-empty works. + (EEXIST): Define to zero if not defined. + (ENOTEMPTY): Likewise. + + * tests/cp/same-file: Remove `diff' I'd put in for debugging. + Exit with the status from cmp. + + * Version 3.16s. + + * tests/cp/same-file: Skip three more unportable tests. + These failed on SunOS4.1.4. + + * src/copy.c (SAME_INODE): Remove definition. + * src/sys2.h (SAME_INODE): Define it here instead. + + * src/remove.c (same_file): New function. + (remove_dir): Use it to give a better diagnostic when rmdir fails + because it can't remove the current directory. + + * src/df.c (long_options): Changes table entries not to use this form: + {"all", no_argument, &show_all_fs, 1}, + but rather this form: + {"all", no_argument, NULL, 'a'}, + Using the latter, all the option handling in one place: the getopt loop. + + * lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNTINFO]: + Use fsp_to_string. + (fsp_to_string): Don't xmalloc return value (yet). + (xatoi): Ansideclify. + (fstype_to_string): Ansideclify. + * lib/mountlist.h: Define and use PARAMS macro. + + * lib/utime.c: New file. + * src/touch.c (utime_now): Moved into m4/utimes.m4. + (touch) [!HAVE_UTIME_NULL]: Remove #ifdef and the use of utime_now + in the if-block. + + * configure.in (jm_FUNC_UTIME): Use this, not AC_FUNC_UTIME. + +1998-07-22 Paul Eggert <eggert@twinsun.com> + + * lib/human.c (human_readable): amt -> damt, to fix typo when + computing which power to use after overflow occurs during + multiplication. + + * lib/xstrtol.c: Include <stdio.h> if NDEBUG is not defined; + needed on SunOS 4. + +1998-07-21 Paul Eggert <eggert@twinsun.com> + + Add df -l or --local option. + * doc/fileutils.texi: Document it. + * lib/mountlist.h (REMOTE_FS_TYPE): New macro. + * lib/mountlist.c (read_filesystem_list): + If all_fs is negative, omit non-local filesytems. + + * src/df.c (show_dev): Omit local devices if show_all_fs is negative. + (show_all_fs): If negative, omit non-local filesystems. + All uses of (all_fs != 0) changed to (all_fs > 0). + (long_options, usage, main): Add -l or --local option. + (main): When asking for df of an explicit file name, get all + the mount points, so that we're more likely to find it when + we look it up. + +1998-07-18 Jim Meyering <meyering@ascend.com> + + * src/copy.c (copy_internal): Add another exclusion from the + sameness test: when --force has been specified, the destination + is unlinked before any copy. + (copy_internal): Add yet another: when both src and dest are symlinks. + + * tests/touch: New subdir. + * tests/Makefile.am (SUBDIRS): Add touch. + * configure.in (AC_OUTPUT): Add tests/touch/Makefile. + + * tests/mv/into-self-2: New test. + * tests/mv/Makefile.am (TESTS): Add into-self-2. + +1998-07-06 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * lib/mountlist.c (read_filesystem_list): Fix more memory leaks on + failure. + +1998-07-16 Jim Meyering <meyering@ascend.com> + + Work around failure of chown calls on m68k-motorola-sysv systems. + * src/chown.c: Include lchown.h. + * lib/Makefile.am (noinst_HEADERS): Add lchown.h. + * lib/lchown.h: New file, just to define ENOSYS on systems that lack it. + * lib/lchown.c: Include lchown.h. + Reported by and with suggestions from Manfred Hollstein. + +1998-07-12 Paul Eggert <eggert@twinsun.com> + + * src/df.c (print_header): Print "1k-blocks", not "1.0k-blocks". + +1998-07-07 Jim Meyering <meyering@ascend.com> + + * src/sys2.h [HAVE_FCLOSE_UNLOCKED]: Remove unnecessary block. + Suggestion from Ulrich Drepper. + +1998-07-04 Jim Meyering <meyering@ascend.com> + + * lib/safe-read.c (safe_read): Change type of pointer parameter to + `void' to avoid Irix4 cc errors. Reported by Kaveh Ghazi. + * lib/safe-read.h: Update prototype. + + * src/dircolors.c (parse_line): Add casts to avoid errors from + Irix4's `cc' C compiler. From Kaveh Ghazi. + + * lib/xstrtol.c: Include stdio.h. Required on some systems when + using assert. From Kaveh Ghazi. + + * tests/mv/backup-is-src: Use cmp, not diff. + Reported by Kaveh Ghazi. + +1998-07-03 Jim Meyering <meyering@ascend.com> + + * Version 3.16r. + + * src/remove.c (remove_dir): Use fprintf (not error) to avoid + newline in prompt. + +1998-06-30 Paul Eggert <eggert@shade.twinsun.com> + + * lib/mountlist.c (read_filesystem_list): + Don't leak memory on failure. + Don't create a dummy struct mount_entry entry; + use the address-of-the-tail-address method instead. + Preserve errno if possible on failure, setting it to 0 if inapplicable. + Close file descriptor leak if the F_SETLKW failed. + Report an error if SVR4 lock file cannot be opened for some reason + other than a nonexistent lock file. + +1998-07-03 Jim Meyering <meyering@ascend.com> + + * configure.in (AM_WITH_REGEX): Remove. Now the replacement + macro, jm_WITH_REGEX, is bundled with the rest in jm_MACROS. + * acconfig.h (WITH_REGEX): Remove undef. + * lib/Makefile.am (noinst_HEADERS): Add regex.h. + * lib/rpmatch.c: Remove #ifdef around <regex.h> inclusion. + * lib/rx.c: Remove file. + * lib/rx.h: Remove file. + + * src/df.c (df_readable): Rename local so as not to shadow global. + + * src/copy.c (SAME_INODE): New macro. + Use it to replace open-coded equivalents. + (copy_internal): Rename variable and reverse sense of tests + to make the code a little clearer. + +1998-07-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * src/copy.c (copy_internal): Try harder identifying a relative + symbolic link in the current directory. + + * src/copy.c (copy_internal): Don't skip test for same file if + creating a hardlink from symlink over a non-symlink while making + backups. + * tests/cp/same-file: Skip tests that depend on link(2) not + following symlinks. + +1998-07-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * src/copy.c (copy_internal): Don't call chown on a symlink. + +1998-07-01 Jim Meyering <meyering@ascend.com> + + * lib/xstrtol.c: Don't define NDEBUG here, now that it's done via + configure's --disable-assert option. + +1998-06-29 Paul Eggert <eggert@twinsun.com> + + * lib/mountlist.c (read_filesystem_list): + Plug file descriptor leak on failure. + Report failure if lock file can't be opened for some reason + other than nonexistence. + +1998-06-29 Jim Meyering <meyering@ascend.com> + + * Version 3.16q. + + * lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNTENT2]: + Always close stream and file descriptor before returning. + + * src/df.c (main): Move the test of the result of the + read_filesystem_list call up out of if-block -- code in the + else-block depends on it too. + +1998-06-29 Paul Eggert <eggert@twinsun.com> + + * lib/mountlist.c (read_filesystem_list): If SVR4, lock + /etc/.mnttab.lock if available, to avoid race conditions + (e.g. with the automounter on Solaris 2.6). + + Include <errno.h>, <fcntl.h>, <unistd.h>. + +1998-06-29 Jim Meyering <meyering@ascend.com> + + * lib/mountlist.c (fstype_to_string): Guard with + #if ! HAVE_F_FSTYPENAME_IN_STATFS. + +1998-06-28 Paul Eggert <eggert@twinsun.com> + + Add support for new --block-size option and + BLOCK_SIZE. DF_BLOCK_SIZE, etc. variables to `df', `du', and `ls'. + Adjust df output slightly to accommodate larger filesystems. + + * lib/human.c, lib/human.h (human_readable): Coalesce last two args + into one, for convenience. All callers changed. + (human_block_size): New function. + * lib/human.c: Include <config.h> only if HAVE_CONFIG_H. + Include <stdlib.h> if HAVE_STDLIB_H; + declare getenv unless HAVE_DECL_GETENV. + (_): New macro. + Include <argmatch.h>, <error.h>, <xstrtoul.h>. + (DEFAULT_BLOCK_SIZE): New macro. + (block_size_args, block_size_types): New constants. + (humblock): New function. + * lib/xstrtol.h (__ZLONG_MAX): Remove. + * lib/xstrtol.c (bkm_scale): Don't assume that you can convert + unsigned long to double without losing information. + (bkm_scale_by_power): New function. + + * lib/xstrtol.c (__xstrtol), src/dd.c (parse_integer): + Add support for SI-like suffixes like "GB" and "TD". + * src/dd.c (usage): Describe it. + + * src/df.c, src/du.c, src/ls.c (human_readable_base, output_units): + Remove; replace with new variable output_block_size. All uses changed. + (long_options, usage, main): Add --block-size. + (main, decode_switches): Use new human_block_size function to + initialize output block size consistently with other programs. + + * src/df.c (print_header, show_dev): Shrink some columns and expand + others, to squeeze in support for today's larger filesystems. + (print_header): Print output block size using power-of-1024 SI format. + (df_readable): Coalesce last two args into one, for convenience. + All callers changed. + (main): Remove check for portable output format and larger + or human-readable block sizes. + + * NEWS, doc/fileutils.texi: Describe above changes. + +1998-06-28 Jim Meyering <meyering@ascend.com> + + * src/ls.c (usage): Make --kilobytes description consistent with + that in du and df. From Göran Uddeborg. + + * lib/mountlist.c (fsp_to_string): Clean out some crufty #ifdefs + now that we're using the jm_FSTYPENAME autoconf macro. + James Tanis reported the old version didn't compile on BSDI3. + + * configure.in: Move big block of list_mounted_fs checks into + new jm_LIST_MOUNTED_FILESYSTEMS macro. + Use new jm_FSTYPENAME macro. + + * src/sys2.h: Add macro definitions for GNU libc *_unlocked wrappers. + * src/ls.c: Add DIRED_ prefix to the macros: PUTCHAR, FPUTS, and + FPUTS_LITERAL + +1998-06-27 Jim Meyering <meyering@ascend.com> + + * src/copy.c (copy_reg): Detect identical source and dest here. + (copy_internal): Make the test symmetric. + + * tests/cp/same-file: New file. + * tests/cp/Makefile.am (TESTS): Add it. + +1998-06-26 Jim Meyering <meyering@ascend.com> + + * src/remove.c (remove_file): Remove `non-directory' part of + `removing non-directory FILE' verbose message. + +1998-06-23 Jim Meyering <meyering@ascend.com> + + * src/df.c (show_dev): Increase field width for blocks, used, + and available columns from 7 to 8. + +1998-06-21 Jim Meyering <meyering@ascend.com> + + * aclocal.m4: Regenerate with fixed gettext.m4 installed. + See README-alpha for details. + +1998-06-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * src/automake-wrap: Quote `&' in sed replacement text. + +1998-05-31 Jim Meyering <meyering@ascend.com> + + * Version 3.16p. + + * src/install.c (main): Fix argv-handling bug in my 1998-05-09 change. + Reported by Don Parsons. + +1998-05-30 Jim Meyering <meyering@ascend.com> + + * tests/ls/time-1: Clean up ctime test. Note that it fails also + on Solaris5.5.1 tmpfs file systems. + + Solve the `rm -f rm' problem more cleanly. + * src/.rm-warning: Remove file. + * src/automake-wrap: New file. + * src/Makefile.am (AUTOMAKE): Define to use automake-wrap. + (Makefile.in): Depend on automake-wrap. + (EXTRA_DIST): Add automake-wrap. + (DISTCLEANFILES): Remove definition. + (rm_DEPENDENCIES): Likewise. + (.rm-warn-stamp): Remove rule. + +1998-05-27 Jim Meyering <meyering@ascend.com> + + * tests/ls/Makefile.am (TESTS): s/cr-1/rt-1/ + * tests/ls/rt-1: New file, renamed from cr-1. + +1998-05-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * src/Makefile.am (.rm-warn-stamp): Cope with $(srcdir) != ".". + + * tests/ls/cr-1: Don't use the ctime for testing, it is impossible + to set it reliably. + +1998-05-25 Jim Meyering <meyering@ascend.com> + + * configure.in (_GNU_SOURCE): AC_DEFINE it here. + * acconfig.h (_GNU_SOURCE): Remove definition from @TOP@ section. + [!_GNU_SOURCE]: Add #undef instead. + +1998-05-24 Jim Meyering <meyering@ascend.com> + + * Version 3.16o. + + * src/ansi2knr.c: Use new version from automake-1.3. + + * src/chown.c: Accept new option, --dereference. + --no-dereference is now the default. + (enum Change_status) [CH_NOT_APPLIED]: New member. + (change_symlinks): Enable this by default, now. + (describe_change): Handle new case. + (change_file_owner): Add new parameter: cmdline_arg. Update callers. + Reorganize to reflect changed semantics. + (LCHOWN): Remove definitions. + + * lib/lchown.c: New file. + +1998-05-21 Jim Meyering <meyering@ascend.com> + + * configure.in (ALL_LINGUAS): Add russian (ru). + +1998-05-16 Jim Meyering <meyering@ascend.com> + + * src/remove.c (hash_compare_strings): Return true or false, not 1/0. + (remove_cwd_entries): Use RM_OK, not equivalent literal `1'. + + * lib/hash.c (is_prime): Ansideclify. + (next_prime): Ansideclify. Add an assertion. + + * lib/Makefile.am (EXTRA_DIST): Remove. Automake groks the `LIBOBJS=' + lines from the m4/*.m4 macros, so the hack of including some + custom-replaced C source file names here is no longer needed. + + * configure.in (jm_MACROS): New wrapper macro. + Remove uses of most jm_* macros. + + * acconfig.h (HAVE_STRUCT_UTIMBUF): Remove #undef. Now it's handled + as part of utimbuf.m4. + (memcmp): Add #undef. + +1998-05-12 Jim Meyering <meyering@ascend.com> + + * configure.in: Use my replacement AC_ISC_POSIX rather than + open-coding it. + + * src/copy.c (copy_internal): Plug a small leak. + +1998-05-10 Jim Meyering <meyering@ascend.com> + + * src/mv.c (do_move): Remove lots of code that was duplicated in + copy.c (copy), now that copy() has better support for mv. This fixes + a bug with cross-filesystem `mv -i' whereby you could get two prompts + for the same destination file and eventually remove the destination + file even though one of the responses was negative. + Reported by Dirk Lattermann. + + * src/copy.h: Better support for mv: + [struct cp_options] (move_mode): New member. + * src/copy.c (copy_internal): Use new move_mode member. + Add parameter. + (copy): Add parameter. + + * tests/cp/Makefile.am (TESTS): Add backup-is-src. + * tests/mv/Makefile.am (TESTS): Likewise. + + * lib/userspec.c: Don't declare strdup if it's defined as a macro. + Reported by Lorne Baker. + + * src/Makefile.am (ginstall_SOURCES): Add copy.c and cp-hash.c. + + * src/mv.c (cp_option_init): Initialize new members. + * src/cp.c (cp_option_init): Likewise. + (main): Set new preserve_* options. + +1998-05-09 Jim Meyering <meyering@ascend.com> + + * src/copy.h: Support for install: + [struct cp_options] (failed_unlink_is_fatal): New member. + (preserve_owner_and_group): New member. + (preserve_chmod_bits): New member. + (preserve_timestamps): New member. + (preserve): Remove member. + (set_mode): New member. + (mode): New member. + * src/copy.c (new_nondir_mode): New function. Use where appropriate. + Use more-specific preserve_* members in place of removed `preserve'. + (copy_internal): Honor failed_unlink_is_fatal. + + * src/install.c (main): Rewrite argv-handling to be clearer. + (copy_file): Rewrite to use copy.c (copy). + (change_attributes): Get rid of now-(with chown wrapper)-unnecessary + `no_need_to_chown' parameter. Fix caller. + (install_file_in_file): Remove now-unnecessary `to_created' parameter. + (cp_option_init): New function. + Update several functions to take new parameter specifying copy options. + + * tests/install: New subdir, with one basic test. + * tests/Makefile.am (SUBDIRS): Add install. + * configure.in (AC_OUTPUT): Add tests/install/Makefile. + + * src/dd.c: Include safe-read.h. + Don't declare safe_read. + * src/touch.c: Likewise. + + * configure.in (jm_TYPE_SSIZE_T): Use it. + * acconfig.h (ssize_t): Add undef. + +1998-05-03 Jim Meyering <meyering@ascend.com> + + * po/: Update from gettext-0.10.35. + * intl/: Likewise. + * configure.in: Remove use of AC_LINK_FILES. + (AC_OUTPUT): Remove po/Makefile-generating sed command. + +1998-04-28 Jim Meyering <meyering@ascend.com> + + * src/dircolors.c (parse_line): Use ISSPACE, not isspace. + Use unsigned char * pointers, not potentially signed ones, to avoid + sign extension. + +1998-04-26 Jim Meyering <meyering@ascend.com> + + * configure.in: Use jm_ASSERT. + * acconfig.h: Add NDEBUG. + + * src/mv.c: Don't define NDEBUG. + * src/cp.c: Likewise. + +1998-04-14 Jim Meyering <meyering@ascend.com> + + * src/.rm-warning: New file. + * src/Makefile.am (EXTRA_DIST): Add .rm-warning + (DISTCLEANFILES): Add .rm-warn-stamp. + (rm_DEPENDENCIES): Depend on .rm-warn-stamp. + (.rm-warn-stamp): New rule. + (rm_prep): Comment out rule. + + * src/df.c (main): Use STREQ in string equality tests, not strcmp. + * src/dircolors.c (dc_parse_stream): Likewise. + (dc_parse_file): Likewise. + * src/du.c (main): Likewise. + * src/ls.c (decode_switches): Likewise. + * src/remove.c (hash_compare_strings): Likewise. + * src/touch.c (main): Likewise. + +1998-04-13 Jim Meyering <meyering@ascend.com> + + * lib/Makefile.am (noinst_HEADERS): Add safe-read.h. + +1998-04-11 Jim Meyering <meyering@ascend.com> + + * lib/hash.c: Add curly braces around statements in + if/else/while/do/etc. that span more than a line -- even around + multiline simple statements or single-line simple statements + preceded by a comment line. + +1998-04-09 Jim Meyering <meyering@ascend.com> + + * configure.in: Don't use AC_PATH_PROG to check for perl, now that + we use jm_PERL. + +1998-04-06 Jim Meyering <meyering@ascend.com> + + * src/cp-hash.c (cph_hash_insert): Rename from now-conflicting + hash_insert. Also declare to be static. + * src/cp-hash.h (hash_insert): Remove declaration. + + * lib/hash.c: Lots of minor spec and name changes, and new comments. + (hash_rehash): Rewrite to be easier on the allocator. + From François Pinard. + * lib/hash.h: More comments. + * src/remove.c: Change names/usage of hash-related functions to work + with the above. + +1998-04-05 Jim Meyering <meyering@ascend.com> + + * lib/regex.c (WIDE_CHAR_SUPPORT): Define. + This now depends on HAVE_BTOWC so systems that lack btowc (like + solaris-2.5.1) don't lose. + +1998-04-04 Jim Meyering <meyering@eng.ascend.com> + + * GNUmakefile: Add conditionals so that running `make' in an + unconfigured source directory will get a reasonable diagnostic. + + * Makefile.am (ACLOCAL_AMFLAGS): Define this, so automake/aclocal + know about the m4/ subdirectory. + * Makefile.maint (aclocal-files): Remove now-unnecessary (with + automake-1.2h and the above change) aclocal-related rules and includes. + +1998-04-01 Jim Meyering <meyering@eng.ascend.com> + + * tests/ls/cr-1: New file. + * tests/ls/Makefile.am (TESTS): Add cr-1. + +1998-03-31 Jim Meyering <meyering@eng.ascend.com> + + * src/system.h (TYPE_MAXIMUM): Cast result to `(t)' so this macro + works with `unsigned char'. + From Greg Wooledge. + (SCHAR_MIN, SCHAR_MAX, SHRT_MIN, SHRT_MAX, LONG_MAX, ULONG_MAX): Define. + + * lib/xstrtol.c: Merge with the version from textutils. + + * lib/memcmp.c (rpl_memcmp): Rename from memcmp. + +1998-03-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * src/ls.c (compare_ctime, rev_cmp_ctime, compare_mtime, + rev_cmp_mtime, compare_atime, rev_cmp_atime, compare_size, + rev_cmp_size): Use file name as secondary sort key to get + consistent sorting. + +1998-03-28 Jim Meyering <meyering@eng.ascend.com> + + * src/copy.c: Add copyright. + * src/remove.c: Add copyright. + [_AIX]: Add #pragma alloca. + +1998-03-27 Jim Meyering <meyering@eng.ascend.com> + + * Makefile.maint ($(ACLOCAL_M4)): Replace old rule with this + dependency and the := assignment of ACLOCAL to make the default + rule use the `-I m4' option. + + * Makefile.am (AUTOMAKE_OPTIONS): Require 1.2h. + +1998-03-23 Jim Meyering <meyering@eng.ascend.com> + + * acconfig.h: Remove HAVE_INTTYPES_H, now that m4/inttypes_h.m4 + automatically handles it. + +1998-03-21 Jim Meyering <meyering@eng.ascend.com> + + * lib/quotearg.h: Update from patch-2.5.3. + * lib/quotearg.c: Likewise. + * src/ls.c (decode_switches): Pass a null pointer instead of address + of quotearg_quoting_options. + +1998-03-19 Paul Eggert <eggert@twinsun.com> + + * lib/fsusage.h (struct fs_usage): New member + fsu_bavail_top_bit_set. + * lib/fsusage.c: Include <limits.h>. + (CHAR_BIT, EXTRACT_TOP_BIT, PROPAGATE_TOP_BIT): New macros. + (get_fs_usage): If top bit of system variable corresponding to + fsu_bavail is set, then set fsu_bavail_top_bit_set, and + sign-extend the value when storing it into fsu_bavail. + * src/df.c (show_dev): If fsu_bavail_top_bit_set is nonzero, + assume the original value corresponding to fsu_bavail was negative. + Reported by Arne Juul. + +1998-03-18 Jim Meyering <meyering@eng.ascend.com> + + * src/Makefile.am (rm-prep): Add dependency and rule to save users + with `.' too early in their PATH from the `rm: cannot unlink `rm': + Text file busy' error. Suggestion from Philippe De Muyter. + +1998-03-15 Jim Meyering <meyering@eng.ascend.com> + + * Version 3.16n. + + * lib/chown.c: Use #if, not #ifdef with HAVE_ macros. + * lib/closeout.c: Likewise. + * lib/dirname.c: Likewise. + * lib/euidaccess.c: Likewise. + * lib/fileblocks.c: Likewise. + * lib/filemode.c: Likewise. + * lib/ftruncate.c: Likewise. + * lib/group-member.c: Likewise. + * lib/isdir.c: Likewise. + * lib/long-options.c: Likewise. + * lib/mountlist.c: Likewise. + * lib/path-concat.c: Likewise. + * lib/save-cwd.c: Likewise. + * lib/savedir.c: Likewise. + * lib/strcasecmp.c: Likewise. + * lib/strdup.c: Likewise. + * lib/userspec.c: Likewise. + * lib/yesno.c:: Likewise. + + * src/chgrp.c: Use #if, not #ifdef with HAVE_ macros. + Use #if !, not #ifndef with HAVE_ macros. + * src/chown.c: Likewise. + * src/copy.c: Likewise. + * src/dd.c: Likewise. + * src/dircolors.c: Likewise. + * src/install.c: Likewise. + * src/ls.c: Likewise. + * src/mv.c: Likewise. + * src/touch.c: Likewise. + + * configure.in: Use jm_PREREQ. + +1998-03-14 Jim Meyering <meyering@eng.ascend.com> + + Revert most `getdate.h -> get-date.h' changes of 1998-02-20. + With automake-1.2f, that hack is no longer needed. + + * src/remove.c: Use `virtual memory exhausted' message, not + `Memory exhausted' to be consistent with the majority of other + such messages. + Say `removing all...', not `removing any...'. + * src/rmdir.c (remove_parents): Be consistent with documentation of + --verbose option and with remove.c in saying `removing...' before + the operation is attempted. + (main): Likewise. + Suggestions from Santiago Vila. + + * src/copy.c (copy_dir): Add new parameter, copy_into_self, and set it. + (copy_internal): Likewise. + (copy): Likewise. + Update all callers. + * src/copy.h (copy): Update prototype. + * src/cp.c (do_copy): Add unused arg in calls to copy. + * src/mv.c (do_move): Add ©_into_self arg in call to copy. + Don't remove source directory when copy_into_self is nonzero. + Reported by Arne Henrik Juul. + + * tests/mv/into-self: Test for the above. + * tests/mv/Makefile.am (TESTS): Add into-self. + +1998-02-28 Eli Zaretskii <eliz@is.elta.co.il> + + * userspec.c (parse_user_spec) [__DJGPP__]: Make function know + about any arbitrary user and group by pretending to be the user + and to belong to the group specified in `spec_arg' argument. + + * idcache.c (getuidbyname) [__DJGPP__]: Make function know about + any arbitrary user name. + (getgidbyname) [__DJGPP__]: Make function know about any arbitrary + group name. + +1998-02-24 Jim Meyering <meyering@eng.ascend.com> + + * lib/xstrtol.c (TYPE_SIGNED): Define. + (TYPE_MAXIMUM): Define. + (ULONG_MAX): Use TYPE_MAXIMUM. + (LONG_MAX): Use TYPE_MAXIMUM. + + * lib/fnmatch.c: Update from libit. + * lib/idcache.c: Update from libit. + +1998-02-23 Paul Eggert <eggert@twinsun.com> + + * lib/quotearg.h, lib/quotearg.c: New files. + * lib/Makefile.am (libfu_a_SOURCES): Add quotearg.c. + (noinst_HEADERS): Add quotearg.h. + + * src/ls.c: Include new file quotearg.h. + (enum indicator_style): Rename all to classify, and not_programs + to file_type, to match option spellings. All users changed. + (indicator_style_args): New constant. + (quote_funny_chars, quote_as_string, quote_shell): Remove; + (filename_quoting_options, dirname_quoting_options): Use these + variables instead. + (long_options): Add --indicator-style, --quoting-style, + --show-control-chars. Remove --quote-shell. + (dired_dump_obstack): Remove style parameter and don't output style. + (main): Go back to previous method of outputting //DIRED// + and //SUBDIRED// lines, without style. But add a new + //DIRED-OPTIONS// line that does output style. + (decode_switches, usage): Add --indicator-style, --quoting-style, + --show-control-chars. Remove --quote-shell. + (decode_switches): Default from QUOTING_STYLE environment variable. + Set new quoting vars. + (quote_name): Renamed from quote_filename. + Take new arg specifying quoting options. + Always print; do not have a special case for null FILE * argument. + All callers changed. + Move the guts of this function to new file quotearg.c. + (length_of_file_name_and_frills): Use quotearg_buffer instead + of (old) quote_filename to find length of file name. + + (decode_switches, parse_ls_color, print_dir, gobble_file, + get_link_name): Quote output in diagnostics. + + * NEWS, doc/fileutils.texi: Describe above changes. + * doc/fileutils.texi: Mention that control characters are output + as question marks if output is a terminal. + +1998-02-22 Jim Meyering <meyering@eng.ascend.com> + + * Version 3.16m. + + * ChangeLog-1997: New file. + * Makefile.am (EXTRA_DIST): Add ChangeLog-1997. + +1998-02-21 Jim Meyering <meyering@eng.ascend.com> + + * configure.in (AC_OUTPUT): Add tests/mv/Makefile. + * tests/Makefile.am (SUBDIRS): Add mv. + * tests/mv: New directory + * tests/mv/mv-special-1: New test. + +1998-02-20 Jim Meyering <meyering@eng.ascend.com> + + * src/touch.c: Include get-date.h. + Remove get_date decl. + + * lib/getdate.h: Removed. Could cause confusion with an + automake-generated `.y.h' rule. + * lib/get-date.h: Renamed from getdate.h. + * lib/getdate.y: s/getdate.h/get-date.h/ + * lib/Makefile.am (noinst_HEADERS): s/getdate.h/get-date.h/ + +1998-02-19 Jim Meyering <meyering@eng.ascend.com> + + 1997-10-17 Eli Zaretskii <eliz@is.elta.co.il> + * lib/fileblocks.c [__DJGPP__]: Add missing typedef for daddr_t. + +1998-02-13 Jim Meyering <meyering@eng.ascend.com> + + * src/mv.c (cp_option_init): Set copy_as_regular to 0, not 1. + Otherwise, mv tries to open special files. + Reported by Kjetil Torgrim Homme. + +1998-02-08 Jim Meyering <meyering@eng.ascend.com> + + * Makefile.maint (cvs-dist): Update po/ to clear modified status + of *.po files before running cvs tag -c. + + * src/ln.c (usage): Reword to use `TARGET' and `LINK_NAME' in + description. + +1998-02-07 Jim Meyering <meyering@eng.ascend.com> + + * GNUmakefile: New file. + * Makefile.am (EXTRA_DIST): Add GNUmakefile. + Don't include Makefile.maint from here. It's included from GNUmakefile. + + * configure.in: Don't use AM_MAINTAINER_MODE. + (jm_PERL): Use this. + + * src/Makefile.am (EXTRA_DIST): Remove dcgen.pl. Add dcgen. + (CLEANFILES): Remove dcgen. + (dircolors.h): Use $(PERL). + (.pl): Remove rule. + +1998-02-01 Jim Meyering <meyering@na-net.ornl.gov> + + * POTFILES.in: Add remove.c. Reported by Santiago Vila. + +1998-01-28 Jim Meyering <meyering@na-net.ornl.gov> + + * src/df.c (print_header): Tweak format to align heading over + last column of `df -i' output. From Andreas Schwab. + +1998-01-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * Makefile.am: Include Makefile.maint from $(srcdir). + +1998-01-25 Jim Meyering <meyering@na-net.ornl.gov> + + * Version 3.16l. + + * Makefile.maint: New file. + * Makefile.am: Move rules common to textutils, fileutils, sh-utils + into Makefile.maint. + Include Makefile.maint. + (EXTRA_DIST): Add Makefile.maint. + + * src/cp.c (re_protect): Don't fail for non-root when chown fails + due not only to lack of permission (EPERM), but also to lack of + support (EINVAL). Reported by Bengt Martensson. + * src/copy.c (DO_CHOWN): Likewise. + +1998-01-24 Jim Meyering <meyering@na-net.ornl.gov> + + * tests/ls/time-1 (test_failure): Rename does not update ctime; + link does -- so use ln, not mv. + Note that the SunOS4.1.4 failure of the ctime test is expected. + + * src/system.h (TYPE_MINIMUM): Add extra outer cast to work around + bug in Cray C 5.0.3.0 when T == time_t. + + * tests/rm/r-1: Adjust expected output for changed format of + `rm --verbose'. + * tests/rm/r-2: Likewise. + +1998-01-23 Jim Meyering <meyering@na-net.ornl.gov> + + * lib/mktime.c (__mktime_internal): Work around bug in Irix4.0.5's + C compiler. From Kaveh Ghazi. + (TYPE_MINIMUM): Define. + (TYPE_MAXIMUM): Define. + (TIME_T_MIN): Use TYPE_MINIMUM. + (TIME_T_MAX): Use TYPE_MAXIMUM. + +1998-01-22 Jim Meyering <meyering@na-net.ornl.gov> + + * src/dd.c: Reorder functions to obviate forward dcls. + (quit): Declare to be inline to stifle compile warning. + + * src/cp.c (do_copy): Add unreachable `return 0' to stifle warning. + + * tests/rm/sunos-1: Don't use -f. Do adjust $RM if it's a + relative path. + + * tests/ls/time-1: Use GNU touch to work around problems with NFS + caching and/or clock skew. Reported by Kaveh Ghazi. + + * tests/ls/Makefile.am (TESTS_ENVIRONMENT): Add TOUCH. + + * src/Makefile.am (noinst_HEADERS): Add remove.h. + (mv_SOURCES): Define. + (rm_SOURCES): Define. + +1998-01-21 Jim Meyering <meyering@na-net.ornl.gov> + + * src/install.c: Declare new global, backup_type. + (main): Initialize backup_type unconditionally. + (copy_file): Call find_backup_file_name with new argument, backup_type. + * src/ln.c: Declare new global, backup_type. + (main): Initialize backup_type unconditionally. + (do_link): Call find_backup_file_name with new argument, backup_type. + + * src/copy.c (copy_internal): Use x->backup_type, not the global. + (valid_options): Use VALID_BACKUP_TYPE and VALID_SPARSE_MODE. + + * src/copy.h (VALID_SPARSE_MODE): Define. + [struct cp_options] (backup_type): New member. + + * src/cp.c [NDEBUG]: Comment out definition. + (do_copy): Use x->backup_type, not the global. + + * src/remove.c: New file. Contains guts of old rm.c. + (remove_init): New function. + (remove_fini): New function. + (rm): Take third argument, specifying options. + * src/remove.h: New file. Associated dcls. + * src/rm.c: Remove and minimally librarify guts for use in mv.c. + (main): Pass options (`&x') to rm. + Call remove_init and remove_fini instead of open-coding them. + + * src/mv.c (rm_option_init): New function. + (cp_option_init): New function. + (copy_reg): Remove now-unused function. + (do_move): Set up for and use `copy.c (copy)' in place of copy_reg. + Set up for and use `remove.c (rm)' in place of unlink. + +1998-01-20 Jim Meyering <meyering@na-net.ornl.gov> + + * lib/backupfile.c: Use ANSI function definitions. + Remove global declaration of backup_type. + (simple_backup_suffix): Default to `~', not `.orig'. + Use PARAMS, not __BACKUPFILE_P. + (find_backup_file_name): Add parameter, backup_type. + * lib/backupfile.h: Remove extern declaration of backup_type. + Use PARAMS, not __BACKUPFILE_P. + (VALID_BACKUP_TYPE): Define. + (find_backup_file_name): Adjust prototype. + +1998-01-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * src/df.c (print_header): Fix inode format header to line it up + with the rest of the output. + +1998-01-13 Jim Meyering <meyering@na-net.ornl.gov> + + * lib/stat.c: Set errno to ENOENT, not EINVAL. This is consistent + with most other implementations. + +1998-01-12 Jim Meyering <meyering@na-net.ornl.gov> + + * lib/fileblocks.c: Include sys/param.h only #if HAVE_SYS_PARAM_H. + Move function-spanning `#if ...BSIZE' directive to follow inclusion + of sys/param.h since BSIZE is sometimes defined in sys/param.h. + Reported by Philippe De Muyter. + +1998-01-10 Jim Meyering <meyering@na-net.ornl.gov> + + * Version 3.16k. + + * src/install.c (install_file_to_path): New function. + FIXME: update fileutils.texi. + (main): Handle new option, -D. + Based on a patch from Marty Leisner. + (usage): Describe -D. + + * src/ls.c (decode_switches) [-u]: Fix bug whereby -u worked only + with -l or -t. Now, -u (like -c) implies --sort=time. + (usage): Correct descriptions of --sort, --time, and -t. + Suggestions from Andreas Schwab. + + Add test for the above fix. + * configure.in (AC_OUTPUT): Add tests/ls/Makefile. + * tests/Makefile.am (SUBDIRS): Add ls. + * tests/ls: New directory. + * tests/ls/Makefile.am: New file. + * tests/ls/time-1: New file. + + * lib/makepath.c (make_path): Reformat 3 if-stmts to test + `if (newly_created_dir)' only once. Suggestion from Andreas Schwab. + +1998-01-06 Jim Meyering <meyering@na-net.ornl.gov> + + * lib/getdate.y: Move inclusion of getdate.h and dependent extern + declarations down so getdate.h's prototype follows the sometimes- + enabled definition of `const' to nothing. Otherwise, the prototype + wouldn't match the definition because of the defined-away `const'. + From Kaveh Ghazi. + (get_date): ANSI-fy definition. + Add %expect directive. + +1998-01-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * lib/makepath.c (make_path): Put only newly created directories + on the LEADING_DIRS list. + +1998-01-05 Paul Eggert <eggert@twinsun.com> + + * lib/fsusage.c (PROPAGATE_ALL_ONES): New macro. + (get_fs_usage): If a value consists entirely of 1 bits, + propagate this info to the output by setting it to (uintmax_t) -1. + * src/df.c (df_readable): New function. + (show_dev): If a value consists entirely of 1 bits, or is derived + from some other value that consists entirely of 1 bits, report "-". + Check inode and block counts more carefully for plausibility, + to avoid arithmetic overflow when computing percentages. + +1998-01-04 Jim Meyering <meyering@na-net.ornl.gov> + + * Version 3.16j. + + * lib/Makefile.in: Regenerated with patched automake-1.2d. + See README-alpha. + + * src/chgrp.c: Use a single enumerated type, Verbosity, instead of + the two booleans, verbose and changes_only. This fixes a bug whereby + --change had the same effect as --verbose. + * src/chmod.c: Likewise. + * src/chown.c: Likewise. + Reported by Paul Eggert. + +1998-01-04 Paul Eggert <eggert@twinsun.com> + + Check for write errors more carefully. + + * lib/Makefile.am (libfu_a_SOURCES): Add closeout.c. + (noinst_HEADERS): Add closeout.h. + * lib/closeout.c, lib/closeout.h: New files. + * lib/long-options.c (parse_long_options), + src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c, + src/df.c, src/dircolors.c, src/du.c, src/install.c, src/ln.c, + src/ls.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c, + src/mvdir.c, src/rm.c, src/rmdir.c, src/sync.c, src/touch.c + (main, usage): Check for write error to stdout before exiting. + Include "closeout.h". + +1998-01-03 Jim Meyering <meyering@na-net.ornl.gov> + + * src/df.c (show_dev): Treat `fsu.fsu_bavail == (unsigned long) -1' + just like `fsu.fsu_blocks == 0' as an indicator that usage information + is invalid. This happens with Solaris-5.5.1 CD-ROM mount points. + + * lib/save-cwd.h: Guard PARAMS-enabling definition with + `defined PROTOTYPES || (defined __STDC__ && __STDC__)' to avoid + problems with Irix4's cc. From Kaveh Ghazi. + * lib/getdate.h: Likewise, but just to be consistent. + + * configure.in: Convert the .o suffix on files in LIBOBJS to $U.o so + those files will be built via the ANSI2KNR-filtering rules if necessary. + Reported by Kaveh Ghazi. + +1998-01-02 Jim Meyering <meyering@na-net.ornl.gov> + + * Version 3.16i. + + Fix problem with `install -d'. Reported by Marty Leisner. + + * src/install.c (get_ids): When otherwise unspecified, + set uid and gid to -1. + * lib/makepath.c (make_path): Try to change ownership only if we've + just created the directory. Fix latent bug (s/&&/||/ in two places -- + also, note that it could not be exercised via install or mkdir) + whereby chown would not be invoked when only one of owner/group is + not -1. + +1998-01-01 Jim Meyering <meyering@na-net.ornl.gov> + + * src/rm.c (remove_cwd_entries): Initialize the entry-name obstack + only once and never free it. diff --git a/coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/NEWS b/coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/NEWS new file mode 100644 index 0000000..b89ca31 --- /dev/null +++ b/coreutils-5.3.0-bin/contrib/coreutils/5.3.0/coreutils-5.3.0-src/old/fileutils/NEWS @@ -0,0 +1,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 |