Paul Eggert [Tue, 19 Sep 2006 22:11:38 +0000 (22:11 +0000)]
* src/ln.c (target_directory_operand): Rewrite to avoid porting
problem on Tandem reported by Matthew Woehlke in
<https://savannah.gnu.org/bugs/?17172>.
Paul Eggert [Mon, 18 Sep 2006 22:09:49 +0000 (22:09 +0000)]
Fix bug where chmod, chown, and chgrp did not process operands
left-to-right in some cases.
* src/chmod.c (wd_errno): New var.
(chmod_file): New function, with most of the contents of the
old prcess_file function.
(process_files): Use it. This gives file names to fts one
at a time, so that they are processed left-to-right as POSIX
requires.
* src/chown-core.c (wd_errno, chown_files): Likewise.
(chown_file): New function.
* tests/install/basic-1: Redo test so as to not workaround
the chmod bug, thereby testing for it.
Paul Eggert [Mon, 18 Sep 2006 20:20:03 +0000 (20:20 +0000)]
* bootstrap (symlink_to_gnulib): New function.
(cp_mark_as_generated): Use it, to prefer symlinks-to-gnulib
to copies-of-gnulib.
(cp_mark_as_generated, slurp, gnulib_files):
Avoid making a copy if it's the same as the old version.
(gnulib_files): Add support for this variable (used by Bison).
Paul Eggert [Mon, 18 Sep 2006 16:34:27 +0000 (16:34 +0000)]
* tests/ls/stat-vs-dirent: Fix quoting problem in diagnostic
indicating flaw in kernel. Reword to say that the flaw isn't
serious for coreutils, since the flaw does affect ls -i.
Jim Meyering [Sun, 17 Sep 2006 20:58:34 +0000 (20:58 +0000)]
* tests/chgrp/basic: On an OpenBSD system, rather than failing
due to a known problem, merely warn about it.
Rewrite to avoid testing output of chgrp --verbose and chgrp -c.
Instead, use stat to test file system for desired results, directly.
* tests/chgrp/Makefile.am (TESTS_ENVIRONMENT): Set host_triplet.
Jim Meyering [Sun, 17 Sep 2006 20:29:05 +0000 (20:29 +0000)]
* tests/envvar-check: Add more variable names to the list of those
that can affect these programs and tests: _POSIX2_VERSION, COLUMNS,
QUOTING_STYLE, TABSIZE, TERM, TMPDIR.
Paul Eggert [Sat, 16 Sep 2006 20:03:56 +0000 (20:03 +0000)]
* NEWS: Document that mkdir -p and install -d now fork on occasion.
* bootstrap.conf (gnulib_modules): Add savewd.
* src/install.c: Include savewd.h.
(process_dir): New function.
(main, install_file_in_file_parents): Use it, along with the new
savewd module, to avoid some race conditions.
* src/mkdir.c: Include savewd.h.
(struct mkdir_options): New members make_ancestor_function, mode,
mode_bits.
(make_ancestor): Return 1 if the resulting directory is not readable.
(process_dir): New function.
(main): Use it, along with new savewd module, to avoid some
race conditions. Fill in new slots of struct mkdir_options, so
that callees get the values.
* tests/install/basic-1: Test for coreutils 5.97 bug that was
fixed in coreutils 6.0, and which should still be fixed with
this change.
* tests/mkdir/p-3: Likewise.
Jim Meyering [Fri, 15 Sep 2006 14:11:39 +0000 (14:11 +0000)]
* bootstrap.conf (gnulib_modules): Add rename-dest-slash.
The 2006-09-08 changes made it so "mv dir new-name/" would
fail on NetBSD 1.6. This makes it work once again.
Jim Meyering [Thu, 14 Sep 2006 10:06:42 +0000 (10:06 +0000)]
* src/mv.c (main): Remove unnecessary (always-true) test for 2 <= n.
Instead, since it's a little fragile, assert the condition.
(target_directory_operand): Update comment to reflect latest change.
Jim Meyering [Tue, 12 Sep 2006 09:33:40 +0000 (09:33 +0000)]
* tests/mv/atomic: Check for specific strace output, rather than
simply nonempty. RHEL AS 4 would fail this test due to strace
generating "[ Process PID=14434 runs in 32 bit mode. ]".
Reported by Nelson Beebe.
Jim Meyering [Mon, 11 Sep 2006 13:22:04 +0000 (13:22 +0000)]
* src/remove.c (remove_dir): Move new cache_stat_init call onto
it's own line.
(rm_1): Move declaration of "st" and new cache_stat_init call
"down" to nearer where they're used.
Jim Meyering [Fri, 8 Sep 2006 17:08:53 +0000 (17:08 +0000)]
mv and "cp -r" no longer fail when invoked with two arguments
where the first one names a directory and the second name ends in
a slash and doesn't exist. E.g., "mv dir B/", for nonexistent B,
now succeeds, once more. This reverts part of the 2004-06-27
change for 5.3.0.
* NEWS: Say the above.
* src/mv.c (target_directory_operand): Don't require (here)
that the target operand "look like" a directory. This change
pushes the test down to the rename syscall level, where a
"mv dir existing-non-dir/" will mistakenly succeed on older systems
that ignore trailing slashes in the rename destination argument.
* src/cp.c (target_directory_operand): Likewise, but for cp.
* tests/mv/trailing-slash: Exercise the above fixes.
* tests/cp/trailing-slash: New file.
* tests/cp/Makefile.am (EXTRA_DIST): Add trailing-slash.
Jim Meyering [Fri, 8 Sep 2006 08:57:45 +0000 (08:57 +0000)]
* bootstrap (cp_mark_as_generated): Don't use "local", to
accommodate ancient "/bin/sh". Suggested by Ralf Wildenhues.
Rename now-global "$src" and "$dst" to have cp_ prefix.
Safer, and avoids confusion.
Jim Meyering [Fri, 8 Sep 2006 06:52:24 +0000 (06:52 +0000)]
* bootstrap (cp_mark_as_generated): New function.
(slurp): Use it to prepend editor hints and a warning that
the file we're copying is generated.
Suggestion from Bruce Korb.
Jim Meyering [Wed, 6 Sep 2006 22:00:15 +0000 (22:00 +0000)]
Ensure that some gnulib-tool-generated files are read-only.
* bootstrap (slurp): Put the body of this function in a sub-shell,
with "umask a-w" so that all new files are read-only. Remove each
file before we write to it, in case it's read-only.
Make po/Makevars and runtime-po/Makevars read-only, too.
Paul Eggert [Sun, 3 Sep 2006 02:56:34 +0000 (02:56 +0000)]
(Treating / specially): --preserve-root is
now the default for rm.
(rm invocation): Likewise. Also, document that you can't
remove `.' or `..'. Use the POSIX term "root directory"
rather than the more-ambiguous "file system root".
Paul Eggert [Sun, 3 Sep 2006 02:54:51 +0000 (02:54 +0000)]
Don't include dirname.h, since system.h does it now.
(cache_fstatat, cache_stat_init): New functions.
(cache_statted, cache_stat_ok): New functions.
(write_protected_non_symlink): Remove struct stat ** buf_p arg,
which is no longer needed with the new functions. All callers
changed.
(prompt, is_dir_lstat, remove_entry, remove_dir):
New struct stat * arg. All callers changed.
(write_protected_non_symlink, prompt, is_dir_lstat, remove_entry):
(remove_cwd_entries, remove_dir, rm_1):
Use and maintain the file status cache.
(prompt, remove_entry): Omit the first "directory" in the diagnostic
"Cannot remove directory `foo': is a directory". This causes "rm"
to pass a test case that it would otherwise fail now that it
"knows" more about its argument. I think the diagnostic is better
without the first "directory" anyway.
(prompt): Remove the no-longer-needed IS_DIR arg; all callers changed.
(rm_1): Reject attempts to remove /, ./, or ../.
Paul Eggert [Fri, 1 Sep 2006 19:40:46 +0000 (19:40 +0000)]
* m4/jm-macros.m4 (gl_MACROS): Call cu_PREREQ_STAT_PROG rather
than AC_REQUIREing, so that sys/mount.h isn't tested for after
the test result. I'm not sure why this fix is needed, but it
works.
* m4/stat-prog.m4 (cu_PREREQ_STAT_PROG): Revamp to reflect better
what stat.c actually needs.
* src/stat.c: Include <stddef.h>
(alignof): New macro.
(HAVE_STRUCT_STATXFS_F_FSID___VAL, HAVE_STRUCT_STATXFS_F_FSID_VAL):
Remove.
(STRUCT_STATXFS_F_FSID_IS_INTEGER): New macro.
(FSID_VAL): Remove.
(print_statfs): If f_fsid isn't an integer, grab its words one
at a time in little-endian order. This is a bit easier to configure
and should avoid a compilation failure on MacOS reported by Bruno
Haible.
Paul Eggert [Tue, 29 Aug 2006 21:53:29 +0000 (21:53 +0000)]
* src/stat.c (HAVE_STRUCT_STATXFS_F_FSID_VAL, FSID_VAL): New macros, to
work around a Mac OS X porting problem reported by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00308.html>.
(print_statfs): Use them.
* m4/stat-prog.m4 (cu_PREREQ_STAT_PROG): Check for __val versus val
components of fsid. Omit some checks that stat.c doesn't care about.
Paul Eggert [Tue, 29 Aug 2006 20:50:21 +0000 (20:50 +0000)]
* bootstrap.conf (gnulib_modules): Add isapipe.
* src/tail.c: Include isapipe.h.
(IS_PIPE_LIKE_FILE_TYPE): Remove.
(IS_TAILABLE_FILE_TYPE): Just list both FIFOs and sockets as
tailable, since this seems to be portable.
(main): Use isapipe, to fix a bug on MacOS X reported by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00304.html>.
Paul Eggert [Mon, 28 Aug 2006 20:51:56 +0000 (20:51 +0000)]
Adjust to recent gnulib changes for the inttypes module.
* bootstrap.conf (gnulib_modules): Remove stdint; add inttypes.
(excluded_files): Don't exclude m4/inttypes-h.m4 or m4/inttypes-pri.m4.
* src/system.h: Don't bother to include <stdint.h>, since we can
now assume inttypes.h does the equivalent of including stdint.h.
Jim Meyering [Sun, 27 Aug 2006 19:41:04 +0000 (19:41 +0000)]
* src/copy.c (copy_internal): Don't make a backup if the last
component of the source name is "." or "..".
Reported by Andreas Schwab in https://savannah.gnu.org/bugs/?17540.
* tests/cp/src-base-dot: New file. Test for the above fix.
* tests/cp/Makefile.am (TESTS): Add src-base-dot.
Paul Eggert [Sun, 27 Aug 2006 06:03:02 +0000 (06:03 +0000)]
(AM_CPPFLAGS): Remove -I$(srcdir) and -I../lib,
since Automake supplies them for us. It always did -I$(srcdir),
and with the recent change to AC_CONFIG_HEADERS in configure.ac it
is now also doing -I../lib.
Jim Meyering [Sat, 26 Aug 2006 18:44:52 +0000 (18:44 +0000)]
This test was failing in some environments.
* tests/ls/color-dtype-dir: Don't rely on eval "`dircolors -b`"
to set LS_COLORS in the environment.
* tests/envvar-check: Instead, ensure that LS_COLORS is not set.
Reported by Bob Proulx.
Paul Eggert [Sat, 26 Aug 2006 18:33:08 +0000 (18:33 +0000)]
* bootstrap (get_translations): Skip this if WGET_COMMAND is empty.
Fail if the first "echo" fails. Suppress diagnostics from "ls po/*.po"
since there might not be any .po files.
(WGET_COMMAND): Set to empty if wget doesn't
seem to be available. Don't export; shouldn't be needed.
Jim Meyering [Sat, 26 Aug 2006 15:53:24 +0000 (15:53 +0000)]
Fix "mv --verbose --backup" so its output includes the
" (backup: foo.~1~)" suffix also when backing up a directory.
* NEWS: Report this bug fix.
* src/copy.c (emit_verbose): New function, factored out of...
(copy_internal): ...here. Use the new function.
* tests/mv/backup-dir: Test for the above fix.
Jim Meyering [Sat, 26 Aug 2006 06:46:17 +0000 (06:46 +0000)]
"ls --color" would highlight other-writable and sticky directories
no differently than regular directories on a file system with
dirent.d_type support.
* NEWS: Say the above.
* src/ls.c (gobble_file): With --color, also stat the file when
we know it is a directory.
Derived from an anonymous one-line fix and bug report:
<https://savannah.gnu.org/bugs/?15043>.
* tests/ls/color-dtype-dir: New file. Test for the above fix.
* tests/ls/Makefile.am (TESTS): Add color-dtype-dir.
Paul Eggert [Fri, 25 Aug 2006 23:08:58 +0000 (23:08 +0000)]
Rewrite to avoid some unnecessary casts, macros, literals.
(DEFAULT_PASSES, VERBOSE_UPDATE): Now constants, not macros.
(SECTOR_SIZE, SECTOR_MASK): New constants.
(fillpattern, dopass, do_wipefd, main): Remove unnecessary casts,
and use the SECTOR_* constants when applicable. Check for size <
0 rather than size == -1, since negative-size files are a sign of
trouble anyway.
(dopass): Assume a continuable error if EIO even if the current
position is not a multiple of 512.
Paul Eggert [Wed, 23 Aug 2006 23:40:21 +0000 (23:40 +0000)]
* src/stat.c (HAVE_STRUCT_STATXFS_F_FSID___VAL): Define. This
macro was being used without being defined.
(SB_F_NAMEMAX): Remove cast.
(f_fsid) [BeOS]: Likewise.
(OUT_NAMEMAX): Renamed from NAMEMAX_FORMAT, with a new meaning.
All uses changed.
(out_string, out_int, out_uint, out_uint_o, out_uint_x): New
functions.
(xstrcat): Remove. All uses changed to use the above functions.
(print_statfs, print_stat): 2nd arg is now the prefix len, not the
buffer len. All uses changed. Output '?', not '*', for unknown
data or errors. Do not assume signed values can be interchanged
with unsigned when printing.
(print_statfs): For %i, print the fsid as a single int, not as a
pair.
(print_it): Quote invalid format better.
(STRUCT_STATVFS, statfs, f_fsid, f_blocks, f_bfree) [BeOS]:
(f_bavail, f_bsize, STATFS_FRSIZE, f_files, f_ffree) [BeOS]:
(STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME) [BeOS]: Define.
Paul Eggert [Wed, 23 Aug 2006 18:37:27 +0000 (18:37 +0000)]
* .cvsignore: Remove config.h, config.hin, as they are now
in lib.
* configure.ac (AC_CONFIG_HEADERS): Move config.h and config.hin
to lib.
* lib/.cvsignore: Add config.h, config.hin.
* lib/Makefile.am (AM_CPPFLAGS): Remove; we no longer need '-I..'.
* src/Makefile.am (AM_CPPFLAGS): Remove '-I..'; no longer needed.