Jim Meyering [Sat, 20 May 2006 07:19:53 +0000 (07:19 +0000)]
(main): Rename local, s/symlink_deref_bit/symlink_deref_bits/
and arrange for -D to set fts' FTS_PHYSICAL bit as well as
FTS_COMFOLLOW. Spotted by Justin Pryzby.
Jim Meyering [Fri, 19 May 2006 12:36:18 +0000 (12:36 +0000)]
(main): Don't let -D, -L, or -P turn off the internal
FTS_TIGHT_CYCLE_CHECK directory traversal option.
Reported by Justin Pryzby in http://bugs.debian.org/367691
Jim Meyering [Mon, 15 May 2006 10:59:10 +0000 (10:59 +0000)]
Avoid the expense of an fstat, when possible.
(O_NOFOLLOW, STREQ): Define.
(diropen_fd): Remove function. Merge it into sole caller...
(diropen): ...here. Use O_NOFOLLOW when appropriate.
(fts_safe_changedir): Call fstat for dev/inode check, only if the
previous open/openat call may have opened the wrong directory.
Jim Meyering [Mon, 15 May 2006 10:00:16 +0000 (10:00 +0000)]
Restore the parts of fts that were removed on 2006-01-17, so that
it's easier for legacy applications designed for the version
of fts in glibc or BSD to convert to this more robust version.
Add a new mode, FTS_CWDFD, by which to enable the improved
(openat- based -- aka no-chdir) semantics.
* fts_.h (FTS_CWDFD): Define. Callers must use this fts_open
option to enable the more robust behavior.
(FTS_OPTIONMASK): Widen accordingly.
* fts.c: Restore removed code, reverting the default behavior.
Paul Eggert [Mon, 15 May 2006 03:17:08 +0000 (03:17 +0000)]
(AC_HEADER_STDBOOL): Fix overly-picky
test for C99 conformance; (bool) 0.5 is an integer constant
expression, but (bool) -0.5 is not. Problem reported by Fedor
Sergeev in <http://forum.sun.com/jive/thread.jspa?threadID=96202>.
Jim Meyering [Thu, 11 May 2006 08:55:04 +0000 (08:55 +0000)]
mv -T DIR EMPTY_DIR no longer fails
(copy_internal): Don't manually prohibit a move where
the destination is an existing directory. Sometimes doing that is
valid. Let the rename system call enforce the rules. That is
allowed only when the source is a directory and the destination
directory (to be replaced) is empty. Reported by Eric Blake.
Paul Eggert [Mon, 24 Apr 2006 17:50:24 +0000 (17:50 +0000)]
* unlink-busy.m4 (gl_FUNC_UNLINK_BUSY_TEXT): Use prototype
to define main with arguments, for C++. Reported by Eric Blake.
* c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC):
Prefer 'int main ()' to 'int main (void)', for C++.
* getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Likewise.
* fsusage.m4 (gl_FILE_SYSTEM_USAGE): Specify a return type
for 'main', for C99 and C++.
Jim Meyering [Sun, 23 Apr 2006 21:35:04 +0000 (21:35 +0000)]
(sort_type): Rearrange to use as an array index when
choosing sort function; added new sort_numtypes member for
compile-time check.
(time_type): Add new time_numtypes member for compile-time check.
(directories_first): New global variable.
(GROUP_DIRECTORIES_FIRST_OPTION): New enum.
(long_options): Add --directories-first.
(main): Support new option.
(is_directory): New function.
(extract_dirs_from_files): Use it.
(DIRFIRST_CHECK, DEFINE_SORT_FUNCTIONS)
(LIST_SORTFUNCTION_VARIANTS): New macros.
(sort_functions): New global variable.
(sort_files): Use it.
(usage): Document new option.
Paul Eggert [Wed, 19 Apr 2006 06:27:43 +0000 (06:27 +0000)]
(fillrand): The assertion was way too weak, due to
what must be a typo. Strengthen it to its intended value.
(dopass): Don't use alloca; it's not worth the aggravation here,
since it's used only to get a page-aligned buffer, and page
alignment doesn't buy us much here. I'm suspicious that alloca
causes problems on some hosts, due to a recent bug report by Adam
Waltman.
Paul Eggert [Mon, 17 Apr 2006 23:23:43 +0000 (23:23 +0000)]
(human_access): Use (new) filemodestring rather than
(old) mode_string, so that we get more file types right, at least
in theory. Adjust to filemode changes.
Paul Eggert [Mon, 17 Apr 2006 23:23:11 +0000 (23:23 +0000)]
(HAVE_ST_DM_MODE): Remove; moved to ../lib/filemode.c.
(print_long_format): Use (new) filemodestring rather than
(old) mode_string, so that we get more file types right, at least
in theory. Adjust to filemode changes.
Paul Eggert [Mon, 17 Apr 2006 23:22:01 +0000 (23:22 +0000)]
Don't undef S_ISDOOR, since it's never buggy.
(S_ISDOOR): Don't bother with S_IFDOOR, since that code is never needed.
(S_ISPORT, S_ISWHT): New macros, if not already defined.