2006-02-13 Jim Meyering * Version 6.0-cvs. * GNUmakefile (all): Emit diagnostics to stderr, not stdout. 2006-02-12 Jim Meyering * Makefile.maint (patch-check): New target. (local-checks-available): Add to the list. 2006-02-11 Jim Meyering * src/c99-to-c89.diff: New file. * src/Makefile.am (EXTRA_DIST): Add c99-to-c89.diff. * .x-po-check: New file, with exclusions so that `make distcheck' passes once again. * Makefile.am (EXTRA_DIST): Add .x-po-check. rm -r must remove an empty directory, even if it is inaccessible. * src/remove.c (close_preserve_errno): New function. (fd_to_subdirp): Don't print a diagnostic in this function. Do it from the callers instead, unless rmdir succeeds. (remove_cwd_entries, remove_dir): Adjust callers. * tests/rm/empty-inacc: New test for the above. * tests/rm/Makefile.am (TESTS): Add empty-inacc. * NEWS: Mention this bug fix. * tests/rm/rm2: Adjust two expected diagnostics, now that they're a tiny bit less precise: cannot remove `a/1': ... instead of cannot open directory `a/1': ... * Makefile.maint (syntax-check-rules): Automatically derive this list of sc_-prefixed rule names. 2006-02-10 Paul Eggert * Makefile.maint (CVS_LIST): Don't assume cvsu is available. (CVS_LIST_EXCEPT): New macro, to simplify exception-processing. Most uses of CVS_LIST changed to use CVS_LIST_EXCEPT. (syntax-check-rules): Bring back sc_changelong. (Hmm, why did it go away? was that an accident?) (sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value): (sc_cast_of_alloca_return_value, sc_space_tab, sc_prohibit_atoi_atof): (sc_error_exit_success, sc_file_system, sc_no_if_have_config_h): (sc_system_h_headers, sc_sun_os_names, sc_trailing_blank): (sc_two_space_separator_in_usage, sc_unmarked_diagnostics): (sc_obsolete_symbols, sc_changelog, sc_prohibit_jm_in_m4): (sc_useless_cpp_parens, makefile-check, m4-check, po-check): (author_mark_check, makefile_path_separator_check): Output line numbers, to simplify navigation of Emacs *compilation* buffers. (sc_prohibit_atoi_atof, sc_file_system): Rework slightly so that Makefile.maint doesn't get reported as a violation of its own syntax rules. (sc_dd_max_sym_length): Use ifneq to do nothing, instead of doing it at run-time (which didn't work with Bison). Fix a makefile typo, caught by Makefile.maint itself: spaces where a tab should be. (po-check): Check lib/*.[ch] even if not in CVS; used by Bison, which copies from ../gnulib/lib/*.[ch] to lib/*.[ch]. Ignore djgpp and man subdirectories, to avoid false matches with Bison and coreutils, respectively. Use sort -u to remove the resulting duplicates. * gnupload: Rework slightly to avoid bogus warning from sc_two_space_separator_in_usage. 2006-02-10 Jim Meyering Use gzip's --rsyncable option only if it's available. * Makefile.maint (gzip_rsyncable): New variable. (GZIP_ENV): Use it. 2006-02-08 Jim Meyering * Makefile.maint (local-checks-available): Define in terms of the expansion, $(syntax-check-rules), rather than the single, top-level target `syntax-check', so that it's easier to exclude individual rules (via $(local-checks-to-skip)). (tgz-md5, tgz-sha1, ...): Remove now-unused definitions. 2006-02-07 Jim Meyering * src/system.h (!defined O_DIRECT): If O_DIRECTIO is defined (as it is on Tru64), define O_DIRECT to that. Patch From James Lemley. * tests/help-version (expected_failure_status_vdir): Redirect an expected disk-full diagnostic to /dev/null. 2006-02-06 Jim Meyering * src/unexpand.c (usage): Use two spaces (not one) to separate the --first-only option string from its description, so help2man formats the derived man page properly. * src/rm.c (usage): Likewise for --no-preserve-root. * src/chown.c (usage): Likewise. * src/chgrp.c (usage): Likewise. Add a rule to ensure that the above doesn't happen again. * Makefile.maint (sc_two_space_separator_in_usage): New rule. (syntax-check-rules): Add it. * .x-sc_two_space_separator_in_usage: New empty file. * Makefile.am (EXTRA_DIST): Add .x-sc_two_space_separator_in_usage. 2006-02-06 Jim Meyering * src/cp.c (usage): Use two spaces (not one) to separate each option string from its description, so help2man formats the derived man page properly. * src/mv.c (usage): Likewise. Patch from Nicolas François in http://bugs.debian.org/351601. 2006-02-04 Jim Meyering * src/copy.c (copy_internal): cp -RL would fail when encountering the same directory more than once in the hierarchy beneath a single command-line argument. That is legitimate, e.g. when there are two or more symbolic links, each pointing to some directory that would not otherwise be copied. Reported by Christophe LYON. * tests/cp/cp-deref: New file. Test for today's fix. * tests/cp/Makefile.am (TESTS): Add cp-deref. * NEWS: Document this. 2006-02-03 Jim Meyering * configure.ac: Require automake-1.9.6, not 1.8.3. 2006-02-01 Paul Eggert * src/od.c (usage): Mention that -t a ignores high order bit. Documentation problem reported by Ed Avis. 2006-02-01 Jim Meyering * src/pwd.c (find_dir_entry): Remove unused local, `ent_sb_valid'. 2006-01-30 Paul Eggert * src/head.c (main): Use a better diagnostic when someone uses a trailing numeric option in an invalid way. Problem reported by Karl Berry. * src/tail.c (parse_options): Likewise. 2006-01-30 Jim Meyering * man/wc.x: Include `count' keyword in man page synopsis, per suggestion from http://bugs.debian.org/181585. 2006-01-24 Paul Eggert * src/df.c (show_dev): If the file system claims to have more available than total blocks, report the number of used blocks as being total - available (a negative number) rather than as garbage. Problem reported by Toralf Foerster. 2006-01-24 Jim Meyering * src/tail.c (tail_forever): Don't exit-nonzero when an attempt to put a regular file in O_NONBLOCK mode fails with EPERM. That happens on Linux (up to 2.6.15) when using tail -f on a file with the append-only attribute. Reported by Dean Gaudet. For details, see http://savannah.gnu.org/bugs/?func=detailitem&item_id=15473. * NEWS: Mention this fix. * tests/tail-2/append-only: New file. Test for the above. * tests/tail-2/Makefile.am (TESTS): Add append-only. * tests/Makefile.am (check-root): Add tail-2/append-only 2006-01-21 Jim Meyering * NEWS: Mention fts-related improvements and bug fixes. 2006-01-19 Jim Meyering * tests/fmt/basic (pfx-1, pfx-2): New tests, to demonstrate the bug reported as http://bugs.debian.org/147577. Forwarded by Thomas Hood. 2006-01-18 Jim Meyering * tests/du/Makefile.am (TESTS): Add long-from-unreadable. 2006-01-17 Jim Meyering Now that fts no longer changes the current working directory, adjust its clients accordingly -- note that du.c uses fts but doesn't need any adjustment, since it doesn't operate on the actual files, but rather just uses the stat buffers provided by fts. * src/chown-core.c: Include "openat.h". Don't include "lchown.h". (restricted_chown): Accept a new parameter, CWD_FD, and use it in calling openat, lchownat, chownat, rather than open, lchown, chown. Update caller. * src/chmod.c: Include "openat.h". (process_file): Use chmodat (fts->fts_cwd_fd,... in place of chmod (... * tests/du/long-from-unreadable: New test, to exercise one small corner of fts.c. 2006-01-13 Jim Meyering * tests/Makefile.am (SUBDIRS): Add comments discouraging the addition of new directories under tests/. * tests/acl: Redirect stdin to /dev/null. Otherwise, FreeBSD 5.0's getfacl would hang. 2006-01-12 Jim Meyering * tests/du/long-sloop: Adjust not to hard-code the expected diagnostic corresponding to ELOOP. Solaris' diagnostic differs from that of GNU libc. Reported by Paul Eggert. * tests/du/long-sloop: Create file at end of symlink chain. * tests/misc/test: New file, with a test for one of the bugs fixed by yesterday's test.c changes. * tests/misc/Makefile.am (TESTS): Add test. 2006-01-11 Jim Meyering * tests/du/long-sloop: New file. Test for today's fts.c bug fix. That bug could make du -L, chgrp -L, or chown -L fail to diagnose a very long sequence of symbolic links (not necessarily a loop). * tests/du/Makefile.am (TESTS): Add long-sloop. 2006-01-11 Paul Eggert * src/test.c (test_syntax_error): Append a newline. All callers changed, except for the ones that didn't already append a newline. Bug reported by Eric Blake. 2006-01-11 Jim Meyering * src/system.h (X2NREALLOC): Now that verify_true is no longer void, cast its result to void, to avoid gcc's warning that ``left-hand operand of comma expression has no effect''. (DECIMAL_DIGIT_ACCUMULATE, X2REALLOC): Likewise. 2006-01-10 Jim Meyering * tests/chmod/no-x: Add a test for today's fts.c fix. 2006-01-10 Jim Meyering (tiny change) * src/ls.c (gobble_file): Use DTTOIF only if it's defined. This is necessary for Dragonfly. Patch by Joerg Sonnenberger. 2006-01-10 Paul Eggert * src/system.h (X2NREALLOC, X2REALLOC, DECIMAL_DIGIT_ACCUMULATE): Use verify_true instead of verify_expr, to sync with gnulib. 2006-01-08 Jim Meyering * src/date.c (usage): Adjust the formatting of the entries for %::z and %:::z (separate with two spaces, not one) so that help2man formats them properly. Reported by Philip Rowlands. 2006-01-06 Paul Eggert * configure.ac (gl_IGNORE_UNUSED_LIBRARIES): Add. 2006-01-06 Jim Meyering * Makefile.maint (copyright-check): Use date +%Y in place of hard-coded 2005. * src/remove.c (rm_1): Remove `static' attribute on local `status'. First off, the attribute should have been `volatile' (not static) to avoid longjmp-related risk of clobber. Secondly, now there is no longer any risk of a local variable being clobbered, so there's no need for any attribute at all. 2006-01-05 Jim Meyering * src/remove.c: Give a few functions the inline attribute. (AD_pop_and_chdir): Use gotos to avoid some duplication. (AD_push): Rewrite an assertion so that the entire computation goes away when assertions are turned off. * src/tail.c (ENOSYS) [!defined ENOSYS]: Don't define here. It's already defined in "system.h". * Makefile.maint: Add a FIXME comment. 2006-01-04 Jim Meyering * ChangeLog: Remove entries from 2005-10-22 and earlier. * ChangeLog-2005: New file, for entries up to version 5.92. 2006-01-03 Jim Meyering * tests/du/no-x: Also allow a slightly different diagnostic -- the one you get when using openat-enabled fts.c and du (coming soon). * tests/chmod/no-x: Likewise. * tests/chgrp/no-x: Likewise. * src/system.h (O_DIRECTORY) [!defined O_DIRECTORY]: Define. 2006-01-02 Paul Eggert * src/chown-core.c (RC_do_ordinary_chown): New enum value. (restricted_chown): Return it, if the file cannot be accessed due to EPERM, or if no uid or gid are required, or if the file is neither a directory nor a regular file. Rewrite to avoid gotos. (change_file_owner): Handle RC_do_ordinary_chown case. Rewrite to avoid gotos. * tests/chgrp/basic: Make sure we can change the group of inaccessible files. * src/date.c (usage): Explain %g, %G, and %V a bit better. 2006-01-02 Jim Meyering * src/copy.c (set_owner): Correct a comment. * src/tail.c (parse_options): Change warning to say that --retry is useful `mainly' (not `only') when following by name. Reported here: http://bugs.debian.org/273781 2006-01-01 Paul Eggert * NEWS: Document that mkfifo and mknod -m no longer set special bits. * src/copy.c: Include lchmod.h. (copy_internal): Use lchmod rather than chmod. * src/cp.c: Include lchmod.h. (re_protect, make_dir_parents_private): Use lchmod rather than chmod. * src/mkdir.c: Include lchmod.h. (usage): Clarify -m's operation. (main): Use lchmod rather than chmod. Don't use lchmod unless the new mode contains bits outside the 777 range. * src/mkfifo.c (usage): Clarify -m's operation. (main): If -m is given, don't invoke chmod; use umask 0 instead. Report an error if -m asks for bits outside the 777 range. * src/mknod.c (usage, main): Likewise. * src/mkdir.c, src/mkfifo.c, src/mknod.c: Undo 2005-12-19 changes. 2005-12-27 Jim Meyering * Makefile.maint (sc_obsolete_symbols): Prohibit use of O_NDELAY. (sc_prohibit_assert_without_use): New rule. (syntax-check-rules): Add it to the list. * .x-sc_prohibit_assert_without_use: New empty file. * Makefile.am (EXTRA_DIST): Add it. * Makefile.maint (CVS_LIST): Define in terms of $(srcdir). * cp.c, df.c, link.c, mknod.c, nice.c, sleep.c, unlink.c: Don't include ; it wasn't used. 2005-12-26 Paul Eggert * src/chown-core.c (restricted_chown): Don't try O_WRONLY unless O_RDONLY failed wth EACCES. * src/remove.c (fd_to_subdirp): Open with O_DIRECTORY | O_NOCTTY | O_NOFOLLOW too, for consistency with other dir-openers. Use POSIX-preferred O_NONBLOCK rather than O_NDELAY. (is_empty_dir): Likewise. * src/shred.c (wipename): Likewise. Don't bother trying to open dir for writing, since POSIX prohibits it. 2005-12-22 Jim Meyering * tests/help-version: Redirect stderr to /dev/full, to suppress write error diagnostic. 2005-12-19 Jim Meyering * src/mkdir.c, src/mknod.c, src/mkfifo.c (main) Avoid a minor race condition when `-m MODE' is specified, by using open, fchown, and close rather than just chown. To do that reliably -- even with an overly restrictive umask -- ensure that each mkdir, mknod and mkfifo call uses a mode including at least owner-read access. * src/mknod.c (main): When `-m MODE' is specified, exit nonzero if the subsequent chown (or equivalent open,fchown,close) fails. * tests/misc/mknod: New tests. * tests/misc/Makefile.am (TESTS): Add mknod. 2005-12-17 Jim Meyering * src/remove.c (is_empty_dir): Open with O_NDELAY, so we don't hang, e.g., on a named pipe. (OPEN_NO_FOLLOW_SYMLINK): Remove definition. Use O_NOFOLLOW in place of all uses, since it is guaranteed (system.h) to be defined. 2005-12-05 Andreas Gruenbacher Add POSIX ACL support * src/ls.c: Switch back from HAVE_ACL to USE_ACL: The acl() syscall is no requirement for ACL support; particularly, it does not exist on systems that have POSIX ACLs. * src/copy.h (cp_option_init) [umask_kill]: Remove member. * src/cp.c (umask_kill): With default acls, the umask is not to be applied. Remove umask_kill, don't change the process umask, and let the kernel apply the umask where appropriate. * src/cp.c (make_dir_parents_private): Fix logic for POSIX ACLs. * src/copy.c (get_dest_mode): Remove; it is obsolete after removing umask_kill. (copy_reg, copy_internal): Use copy_acl and set_acl instead of fchown/chown. Fix the logic for POSIX ACLs. (chown_succeded): Remove; we now always copy acls and preserve S_ISUID, S_ISGID, and S_ISVTX when needed, no matter if we did a chown before or not. * src/mv.c, src/install.c (cp_option_init): Don't set umask_kill member. * src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD, cp_LDADD, mv_LDADD, ginstall_LDADD): On systems with an ACL library, arrange to link with it via $(LIB_ACL), for the utilities that need it. 2005-12-16 Paul Eggert * src/remove.c (OPENAT_CWD_RESTORE__REQUIRE): Remove. (OPENAT_CWD_RESTORE__ALLOW_FAILURE): Likewise. (fd_to_subdirp): Remove openat_cwd_restore_allow_failure arg; its value is now signified by whether cwd_errno is null. (fd_to_subdirp, remove_dir, rm_1); Change cwd failure indicator from pointer-to-bool to pointer-to-errno-value. All callers changed. (rm_1): Don't bother setting a local cwd failure flag and then ORing it into the caller's. Just set the caller's. (rm): Use cwd failure errno value to print a slightly-better diagnostic. 2005-12-15 Jim Meyering * src/stat.c (print_it): Properly handle a backslash at the end of a --printf format string. Reported by Paul Eggert. * tests/misc/stat-printf (end-bs): Add a test for the above. 2005-12-15 Paul Eggert * tests/acl: Port to pre-POSIX shells like Solaris 8 /bin/sh. Don't assume /etc/passwd contains user names; use 'id' instead. 2005-12-15 Jim Meyering stat: revert behavior of --format=FMT (-c) stat: add new option: --printf=FMT * NEWS: Mention this. * src/stat.c (isodigit, octtobin, hextobin): Define. (PRINTF_OPTION): Define. (interpret_backslash_escapes, trailing_delim): New globals. (usage): Document them. Alphabetize on long option names. (print_esc_char): New function. (print_it): Rewrite, in order to handle backslash escapes. (main): Handle new option. Set globals for --format, too. * tests/misc/stat-printf: Test --printf and --format. * tests/misc/Makefile.am (TESTS): Add stat-printf. 2005-12-14 Paul Eggert * NEWS: sort now reports incompatible options. * src/sort.c (incompatible_options, check_ordering_compatibility): New functions. (main): Use them. Don't bother with a usage message for "sort -c a b", for consistency with other error diagnostics. * tests/sort/Test.pm (incompat1, incompat2, incompat3, incompat4): New tests. * src/cat.c (main): Undo previous change. close_stdout already does the check, so the previous change wasn't necessary. 2005-12-13 Paul Eggert * src/cat.c (main): Check for close (STDOUT_FILENO) failure. 2005-12-12 Paul Eggert Install a more-conservative approach for sort -R. It's the same basic idea as the existing code, except it uses the full ISAAC approach (called the "more kosher" approach in the existing comments). This makes "sort -R" quite a bit slower (about a factor of 2 on my little tests involving 10000 lines on a 2.4 GHz P4), but I think it's better to be conservative here at first, and review any performance improvements carefully. * .x-sc_require_config_h: Add src/rand-isaac.c. * src/rand-isaac.h: Remove. All uses now simply include rand-isaac.c. * src/Makefile.am (noinst_HEADERS): Remove rand-isaac.h. (shred_SOURCES, sort_SOURCES): Remove. (EXTRA_DIST): Add rand-isaac.c. * src/rand-isaac.c: Revert to what used to be in shred.c, without changing it to allow for varying numbers of words in the state. Alter so that we include rand-isaac.c directly rather than compiling it and linking to it. Don't include config.h or system.h; that's the includer's responsibility. Omit functions that are specific to shred. (ISAAC_LOG, ISAAC_WORDS, ISAAC_BYTES, struct isaac_state, ind): (isaac_step, struct irand_state): Resurrect these, with the same defns that used to be in shred.c. (ISAAC_SIZE, isaac_new, isaac_copy): Remove. (isaac_refill, isaac_seed_start, isaac_seed_data, irand_init, irand32): static again. (struct isaac_state, isaac_refill, isaac_mix, isaac_init): (isaac_seed_start, isaac_seed_data, isaac_seed_finish, isaac_seed): (irand_init, irand32, irand_mod): Number of words is constant again. (struct irand_state, irand_init, irand32, irand_mod): Move to shred.c. * src/shred.c: Include rand-isaac.c rather than rand-isaac.h. * src/sort.c: Likewise. * src/shred.c (fillrand, dopass, main): Undo previous change. (struct irand_state, irand_init, irand32, irand_mod): Moved back here, from rand-isaac.c. * src/sort.c: Don't include md5.h; it wasn't needed. (struct keyfield): Rename random_hash to random, for consistency with the other member names. All uses changed. (usage): Tweak wording to mention STRING for --seed option. (short_options): Rorder for consistency with other programs. (rand_state): Now a struct, not a pointer to one. All uses changed. (HASH_WORDS, HASH_SIZE): Remove. (get_hash): Remove comments around resbuf size, since we can assume C89. Use a "more-kosher" (but slower) approach of invoking isaac_refill. (keycompare): Adjust to the new get_hash. Add a FIXME. (badfieldspec): Omit recently-introduced comment; it isn't needed. (main): Don't set need_random simply because gkey has it set; that doesn't necessarily mean we'll need random numbers. Redo seeding to match new get_hash approach. 2005-12-10 Jim Meyering * src/Makefile.am (noinst_HEADERS): Add rand-isaac.h. Avoid shred segfault on 64-bit systems. * src/rand-isaac.c (isaac_refill): Don't try to negate a local of type uint32_t. Make the local an `int' instead. * NEWS: Mention sort's new options. * src/rand-isaac.c (isaac_mix): Declare to be static. Mark all other functions as `extern' so the tight-scope part of `make distcheck' passes once again. * src/rand-isaac.h (isaac_mix): Remove declaration. * src/sort.c (get_hash): Change position of `*' in parameter type to conform with convention. (main): Split a long line so it fits in 80 columns. (keycompare): Remove stray SPACE before TAB that was causing `make distcheck' to fail. * src/shred.c: Don't include gethrxtime.h. No longer needed. * tests/misc/sort-rand: New file: basic tests for the new options. * tests/misc/Makefile.am (TESTS): Add sort-rand. 2005-12-10 Frederik Eaton * src/Makefile.am (sort_LDADD): Add $(LIB_GETHRXTIME). (shred_SOURCES, sort_SOURCES): New macros, so we compile rand-isaac.c. * src/rand-isaac.c: New file, containing ISAAC code that was in shred.c. Make state size runtime-configurable. (isaac_new, isaac_copy): New functions. * src/rand-isaac.h: New file. * src/shred.c: Include rand-isaac.h. Move ISAAC code to rand-isaac.c. (fillrand, main): Adjust to the fact that the state size is now runtime-configurable. * src/sort.c (short_options, long_options, WORDS, keycompare, main): (usage): Add options --random-sort and --seed to implement a random shuffle. Include md5.h and rand-isaac.h. (get_hash): New function. (rand_state): New var. (HASH_WORDS, HASH_SIZE): New macros. 2005-12-09 Paul Eggert * tests/dd/misc: Add test for dd iflags=noatime. 2005-12-09 Jim Meyering * src/sort.c (usage): Mention white space vs -b and -t options. From The Wanderer. 2005-12-09 Eric Blake * src/test.c (main): Fix misleading comment. 2005-12-07 Paul Eggert * NEWS: Mention dd's new noatime flag. * src/system.h (O_NOATIME): Define to 0 if not already defined. * src/dd.c (flags, usage): Add support for noatime flag. 2005-12-07 Jim Meyering Distribute the cvsu script, used only by `make syntax-check'. * Makefile.am (EXTRA_DIST): Add build-aux/cvsu. * Makefile.maint (CVS_LIST): Use build-aux/cvsu, now that we distribute a copy of this script. * .x-sc_unmarked_diagnostics: Add build-aux/cvsu. * tests/mv/acl: exit-77 before the trap, not after, if we fail to create a temporary directory on another partition. From Andreas Gruenbacher. 2005-12-06 Tomas Pospisek (tiny change) * man/basename.x: Cross-reference to dirname and readlink. * man/dirname.x: Cross-reference to basename and readlink. 2005-12-05 Andreas Gruenbacher * src/copy.c [!HAVE_FCHOWN]: Define fchown(...) to -1. (set_owner, preserve_author): New functions, factored out of copy_reg. (copy_reg): Use them. (copy_internal): Use them here, too. 2005-12-04 Jim Meyering * src/sleep.c (usage): Say what happens with two or more arguments. Suggested by Justin Pryzby. * src/uptime.c (print_uptime): Move decl of `upsecs' into scope where it's used. 2005-12-03 Jim Meyering * src/rm.c (long_opts): Change the name of each undocumented, for- testing-only option to start with `-', so that it cannot render ambiguous any prefix it happens to share with some other option name. Problem reported by Eric Blake. * src/head.c (long_options): Likewise. * src/tail.c (long_options): Likewise. * tests/misc/head-elide-tail: Update uses of undocumented, for- testing-only --presume* options to start with `---'. * tests/rm/dangling-symlink: Likewise. * tests/rm/dir-no-w: Likewise. * tests/rm/isatty: Likewise. 2005-11-30 Jim Meyering * Makefile.maint: Add a comment about cvsu. 2005-11-25 Paul Eggert * NEWS: df updates for "none", "proc", inaccessible file systems. * src/df.c (show_point): Ignore inaccessible file systems. (usage): -a includes dummy file systems, not size-0 file systems. * src/od.c (unsigned_long_long_int): Renamed from ulonglong_t, to avoid collision with POSIX name space. All uses changed. 2005-11-24 Jim Meyering * tests/Makefile.am (EXTRA_DIST): Add acl to the list. * tests/acl: Add `$0: ' prefix to diagnostics. * .x-sc_require_config_h: Add lib/buffer-lcm.c to the list. 2005-11-23 Paul Eggert * src/copy.c: Improve performance a bit by optimizing away unnecessary system calls and going to a block size of at least 8192 (on normal hosts, anyway). This improved performance 5% on my Debian stable host (2.4.27 kernel, x86, copying from root ext3 file system to itself). Include "buffer-lcm.h". (copy_reg): Omit last argument. All callers changed. Use xmalloc to allocate rather than trusting alloca (which is unwise with large block sizes). Declare locals more locally, if possible. Use uintptr_t words instead of int words, for a bit more speed when looking for null blocks on 64-bit hosts. Optimize away reads of zero bytes on regular files. In the typical case, insist on 8 KiB buffers, at least. Avoid unnecessary extra call to fstat when checking for sparse files. Avoid now-unnecessary cast to off_t, and "0L". Avoid unnecessary test of *new_dst when checking for same owner and group. 2005-11-22 Paul Eggert * src/remove.c (rm): Don't assume C99 for-loop syntax. 2005-11-22 Jim Meyering * src/remove.c (AD_push): Remove debugging cruft. * tests/rm/unread2 (rm): Change expected diagnostic, `cannot open directory' to `cannot remove', to align with new version of rm. * tests/rm/rm2: Ensure that rm now continues removing entries even after certain types of failure. * src/remove.c: Rewrite. Now, this module is reentrant on systems that provide openat (Solaris), and on systems like Linux+procfs where our openat emulation code is reentrant. This also fixes a few low-probability leaks and eliminates some code that could, in very unusual circumstances, cause rm() (via a callee) to exit. * NEWS: Mention this. * configure.ac: Put copyright dates all on one line so the emacs function that updates them works properly. 2005-11-18 Paul Eggert * configure.ac (AM_PROG_CC_C_O): Add. Needed for CVS Automake. Problem reported by Eric Blake. (AC_PROG_CC_STDC): Use this instead of AC_PROG_CC, so that we get a standard-conforming compiler. This relies on the new m4/c.m4 file. Note that it's a bit tricky, since c.m4 doesn't define AC_PROG_CC_STDC; we are relying on Autoconf 2.59 internals. m4/c.m4 can go away with Autoconf 2.60 comes out. 2005-11-17 Jim Meyering * src/remove.c (AD_mark_helper): Make a `char *' parameter `const'. (AD_mark_current_as_unremovable): Likewise, but for a local. (rm_1): Likewise. * tests/mv/acl: Let traps handle removing temporary directories. Expect acl-related tests to fail, until the corresponding patches are committed. * tests/mv/Makefile.am (XFAIL_TESTS): Add acl. * tests/cp/Makefile.am (XFAIL_TESTS): Likewise. ACL tests, from Andreas Gruenbacher. * tests/acl, tests/mv/acl, tests/cp/acl: New files. * tests/mv/Makefile.am (TESTS): Add acl. * tests/cp/Makefile.am (TESTS): Add acl. * src/ls.c (basename_is_dot_or_dotdot): Correct wording in comment. 2005-11-16 Paul Eggert * NEWS: Improve quality of ln's diagnostics. * src/ln.c (do_link, usage): Likewise. (do_link): Don't use alloca on a buffer of unbounded size. 2005-11-16 Jim Meyering * tests/cp/fail-perm: Accommodate HPUX. It appears to fail with EACCES rather than EPERM. Reported by Peter O'Gorman here: http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/5766 2005-11-14 Jim Meyering * NEWS (sort): Mention consequences of today's mkstemp-safer.c fix. 2005-11-13 Jim Meyering * announce-gen: Accept new option, --gpg-key-id=ID and emit a blurb telling how to use the .sig files. * Makefile.cfg (gpg_key_ID): Define. * Makefile.maint (announcement): Use new option and key. Require that most .c files include . * Makefile.maint (sc_require_config_h): New rule. (syntax-check-rules): Add it. * .x-sc_require_config_h: New file listing exceptions to the above rule. Some are legit, others are simply grandfathered in. * Makefile.am (EXTRA_DIST): Add .x-sc_require_config_h here, too. 2005-11-12 Jim Meyering * src/checksum.h, src/md5.c, src/sha1sum.c: Remove now-unused files. 2005-11-11 Jim Meyering * NEWS: Mention `readlink -f' bug fix in 5.3.0 news. Mention new readlink options in 5.3.0's `New features' section. Spotted by Thomas Hood. 2005-11-08 Jim Meyering * NEWS: Merge in changes from b5_9x branch. 2005-11-08 Paul Eggert * NEWS: ls now defaults to --time-style='locale', which in turn acts like --time-style='posix-long-iso' if the locale settings are messed up. * src/ls.c (decode_switches): Implement this. 2005-11-08 Jim Meyering * tests/du/2g: s/expensive/very expensive/ in a comment. From Paul Townsend. 2005-10-17 Eric Blake * src/ls.c (usage): Fix descriptions of --sort, --time. Reported by Vitaly A. Ostanin. 2005-11-04 Paul Eggert * src/ln.c: Include filenamecat.c. (FILE_BASENAME_CONCAT): Remove. (do_link): Remove last arg DEST_IS_DIR. All callers changed. (main): Use file_name_concat, base_name, and strip_trailing_slashes instead of FILE_BASENAME_CONCAT. This simplifies the code, and avoids the use of alloca. 2005-11-04 Jim Meyering * src/du.c (process_file): Don't overflow for files of size >= 2^31 on systems with stat.st_blocks of a signed 32-bit type. This bug causes trouble on some AIX 5.1 systems. Report and trivial patch from Paul Townsend: * NEWS: Mention this. * tests/du/2g: New (very-expensive) test for the above-fixed bug. * tests/du/Makefile.am (TESTS): Add it here. * tests/very-expensive: New file. * tests/Makefile.am (EXTRA_DIST): Add it here. * tests/cp/perm: Mark this test as `very-expensive', too. 2005-11-02 Paul Eggert * NEWS: Mention that rm -d and maybe ln -d are scheduled for removal in 2006. * src/remove.h (struct rm_options): Remove unlink_dirs. All uses removed. * src/rm.c (usage): Don't mention rm -d. 2005-11-02 Jim Meyering * tests/dd/skip-seek: Fix typo in comment: s/fileutils/coreutils. From Andreas Schwab. * tests/dd/unblock-sync: Redirect stderr to /dev/null so the `M+N records in/out' lines don't pollute `make check' output. * tests/dd/skip-seek (sk-seek4): New test, to exercise the bug fixed on 2005-10-31. This test uses the new, IN_PIPE specifier. * tests/Coreutils.pm: Accept a new type of input specifier: IN_PIPE, to indicate that the input file should be piped into the command under test (via `cat FILE | $prog ...'). * src/remove.c (remove_entry): Emit a better diagnostic when rm (without -r) fails to remove a directory on a non-Linux system. This change affects only newer Solaris systems (with priv_* functions like priv_allocset). Reported by Keith Thompson. * tests/rm/dir-nonrecur: New file/test for the above fix. * tests/rm/Makefile.am (TESTS): Add dir-nonrecur. 2005-11-01 Paul Eggert * NEWS: "tail -c 2 FILE" and "touch 0101000000" now operate as POSIX 1002.1-2001 requires. * src/tail.c (parse_obsolete_option): Implement this. Problem reported by Vincent Lefevre. * src/touch.c (main): Pass PDS_PRE_2000 to posixtime. * tests/tail/Test.pm (c-2, c-2-minus, c2, c2-minus): New tests. (test_vector): Add special cases for _POSIX2_VERSION, and regularize the old ones a bit. * tests/touch/obsolescent: Add y2000 test. 2005-10-31 Paul Eggert * src/dd.c (skip): Fix off-by-one error reported by Theodoros V. Kalamatianos. 2005-10-30 Paul Eggert * tests/mkdir/p-3: Require that the test be run as non-root. Problem and trivial fix reported by Theodoros V. Kalamatianos. 2005-10-28 Paul Eggert * src/ln.c (FILE_BASENAME_CONCAT): Omit unnecessary slashes in the boundary between DEST and SOURCE in the result. 2005-10-26 Dmitry V. Levin * src/md5sum.c (main) [!O_BINARY]: Changed default read mode back to text, to sync with documentation and for backwards compatibility. 2005-10-25 Jim Meyering * tests/dircolors/simple (other-wr): Add an explicit test for the dircolors bug (NULL-dereference) fixed yesterday. 2005-10-24 Jim Meyering * src/tac.c (tac_file): When determining whether a file is seekable, also test whether it is a tty. Using only the lseek-based test would give a false positive on Solaris. Reported by Peter Fales. 2005-10-24 Dmitry V. Levin * tests/install/d-slashdot: New test, for "install -d" failure. * tests/install/Makefile.am (TESTS): Add d-slashdot. * tests/mkdir/p-slashdot: New test, for "mkdir -p" failure. * tests/mkdir/Makefile.am (TESTS): Add p-slashdot. 2005-10-24 Jim Meyering * src/dircolors.c (ls_codes): Add missing comma. Anonymous report and patch from http://savannah.gnu.org/bugs/?func=detailitem&item_id=14849 * src/dircolors.c: Add compile-time assertion that the slack_codes and ls_codes arrays have the same number of elements. This would have prevented the above-fixed bug. * src/expand.c (parse_tab_stops): Add a comment to make this function identical to the one in unexpand.c. * src/unexpand.c (parse_tab_stops): Adjust syntax to make this function identical to the one in expand.c. * src/expand.c (next_file): Don't assume fopen cannot return stdin. 2005-10-23 Jim Meyering * src/md5sum.c (digest_check, main): Use ptr_align rather than a dangerous pointer-value-to-`unsigned' cast. * NEWS: mention the new sha* programs. * AUTHORS: Add new sha* programs. 2005-08-28 David Madore Add new programs: sha224sum, sha256sum, sha384sum, sha512sum. * README: Add their names to the list. * src/md5sum.c: Provide framework for computing sha-2 hashes. * src/Makefile.am (sha224sum, sha256sum, sha384sum, sha512sum): Rules for compiling sha-2 utilities (noinst_HEADERS): Remove checksum.h. * man/sha512sum.x, man/sha384sum.x, man/sha256sum.x, man/sha224sum.x: New files. * man/Makefile.am (dist_man_MANS): Add the corresponding .1 names. (sha224sum.1, sha256sum.1, sha384sum.1, sha512sum.1): New dependencies. * tests/misc/sha224sum, tests/misc/sha256sum: New files. * tests/misc/sha384sum, tests/misc/sha512sum: New files. * tests/misc/Makefile.am (TESTS): Add new sha224sum, sha256sum, sha384sum, sha512sum test scripts here rather that each in its own directory. 2005-08-28 David Madore * tests/sha1sum/basic-1 (million-a): Add the "million a's" test (one of the FIPS test vectors). 2005-10-23 Jim Meyering * configure.ac: Use 6.0-cvs as the version string. * NEWS: Adjust accordingly.