1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-19 18:26:32 +02:00
Commit Graph

36 Commits

Author SHA1 Message Date
Paul Eggert
7e58462337 [! _LIBC]: Include "lstat.h" rather than rolling our own. 2005-07-03 09:27:22 +00:00
Paul Eggert
f21950385b (fd_safer): Remove decl.
Include fcntl--.h rather than unistd-safer.h
(fts_safe_changedir): Don't call fd_safer; no longer needed
now that we include fcntl--.h.
2005-07-03 07:14:05 +00:00
Paul Eggert
ab2edb9e33 Don't use "path" or "filename" to mean "file name"
in comments or local variable names.
2005-06-02 05:05:29 +00:00
Paul Eggert
644cca3ead Don't worry about debugging on pre-C99-comopatible hosts;
the configuration hassle isn't worth it.
Include inttypes.h and stdint.h unconditionally if FTS_DEBUG.
(LONGEST_MODIFIER, PRIuMAX): Remove.
2005-05-28 00:00:06 +00:00
Paul Eggert
a7102ac430 (fd_safer) [_LGPL_PACKAGE]: New static function,
so that unistd-safer.h (GPL'ed code) need not be included.
2005-05-22 17:29:46 +00:00
Paul Eggert
6ee2045428 Don't include "cycle-check.h" or "hash.h".
(setup_dir, free_dir): New functions.
(enter_dir, leave_dir): Define trivial
alternatives of _LGPL_PACKAGE.  Move to fts-cycle.c if !_LGPL_PACKAGE.
(HT_INITIAL_SIZE, ENTER_DIR): Remove.  All uses removed.
(LEAVE_DIR): Fix typo: pass Fts and Ent to leave_dir.
(struct Active_dir, AD_compare, AD_hash, enter_dir, leave_dir):
Move to fts-cycle.c.
(fts_open): Use setup_dir.
(fts_close): Use free_dir.
(fts_read): Have just one copy of the ENTER_DIR code rather than three.
This adds a label and some gotos, but the alternatives were messier.
Check for memory allocation failure when entering a dir.
(fts_stat) [_LGPL_PACKAGE]: Bring back glibc cycle detection code.
2005-05-20 22:34:19 +00:00
Jim Meyering
1222461ca6 (fts_open): Remove useless but otherwise harmless malloc call.
Spotted by Paul Eggert.
2005-05-20 04:26:35 +00:00
Paul Eggert
b569baa020 Include fts_.h first, to check interface.
Do not include intprops.h; no longer needed.
Include cycle-check.h and hash.h, since fts_.h no longer does.
Remove unnecessary casts of closedir to void.
(fts_build): Use a simpler method (not involving TYPE_SIGNED) to
decide whether to decrement nlinks.
2005-05-18 19:28:48 +00:00
Jim Meyering
afae3029ef tweak cpp indentation on one line 2005-05-14 08:14:47 +00:00
Jim Meyering
116e6fb244 Update FSF postal mail address. 2005-05-14 07:58:06 +00:00
Paul Eggert
d766c0a42a (fts_sort): Optimize the common case where all pointers smell the same. 2005-05-09 23:54:26 +00:00
Paul Eggert
3b3a3a9520 (__P): Remove. All uses rewritten to assume C89 or better.
(fts_open): Don't cast a function value in a possibly-unsafe way.
(fts_compar): New function.
(fts_sort): Use it.
2005-05-09 18:53:33 +00:00
Paul Eggert
01dbbdf612 Include unistd-safer.h.
(fts_safe_changedir): Use fd_safer.
2005-04-11 20:02:06 +00:00
Jim Meyering
c06188c05c (__attribute__, ATTRIBUTE_UNUSED): Define.
Mark parameter `sp' with ATTRIBUTE_UNUSED.
2005-04-09 14:19:49 +00:00
Paul Eggert
b3c509e6ae * lib/fts.c: Include intprops.h.
(TYPE_SIGNED): Remove.
2005-03-09 19:21:20 +00:00
Jim Meyering
8be7fa2d6a (fts_read): When about to fail (by returning NULL) due
to a failed fchdir or failed fts_safe_changedir call, set
`sp->fts_cur = p'.  Do this by removing the explicit `return NULL;'
statements and setting p->fts_errno so execution falls through
to the common-case code below.  Otherwise, after such a failure,
calling fts_close would attempt to free an already-freed buffer.
Reported by Luis Lopez Lopez in http://bugs.debian.org/276352.
2004-10-13 19:25:30 +00:00
Paul Eggert
1c5ed711bb (fts_stat, fts_open, fts_read): Use "unsigned short int"
rather than the unportable "u_short", and similarly for u_int.
2004-09-02 23:56:59 +00:00
Paul Eggert
c1dac962eb (O_DIRECTORY): Define to 0 if the system doesn't define. 2004-08-11 22:23:54 +00:00
Paul Eggert
e077b28593 (diropen): New function.
(fts_open, fts_read, fts_children, fts_safe_changedir):
Use it, so that the code works even if the directory
is writeable but not readable.
2004-08-09 23:34:15 +00:00
Paul Eggert
0e591504c8 (LONGEST_MODIFIER): New macro.
(PRIuMAX) [!PRI_MACROS_BROKEN && !defined PRIuMAX]: New macro.
(find_matching_ancestor): Use it for dev_t and ino_t.
2004-08-04 21:58:46 +00:00
Paul Eggert
c1bbe24045 Add an FSF copyright notice, since our changes are becoming nontrivial.
Include stdint.h if available, as Autoconf suggests.
(ALIGNBYTES, ALIGN): Remove; no longer needed now that fts_statp
is an array.
(fts_alloc, fts_palloc, fts_sort, fts_load, fts_build):
Use size_t for sizes.
(fts_stat, fts_safe_changedir, fts_debug, fts_read, fts_build,
fts_palloc):
Use bool when appropriate.
(SIZE_MAX, TYPE_SIGNED): New macros.
(fts_read): Use u_short for instructions.
(fts_build): Use ptrdiff_t for levels.  Don't assume file name lengths
fit into int.  Don't assume nlink_t is signed.
(find_matching_ancestor): Don't assume dev, ino fit in int.
(fts_stat): Use function prototype; required for bool arg.
(fts_sort): Detect integer overflow in size calculations.
(fts_alloc): Simplify allocation code, now that fts_statp is an array
and not a pointer.
2004-08-02 19:42:01 +00:00
Jim Meyering
12357df452 (fts_stat, fts_alloc): Always allocate and use a struct
stat, even if the user isn't interested in the results.
This prevents a core dump in cycle_check when FTS_NOSTAT is set.
2004-06-08 13:31:43 +00:00
Jim Meyering
829a38c5d3 Include dirfd.h, for dirfd. 2004-03-29 07:28:52 +00:00
Jim Meyering
e164c2bbeb [!_LIBC]: Undefine, then define-away __P. 2003-12-20 18:08:02 +00:00
Jim Meyering
38fe0df54d [!_LIBC]: Define __P. 2003-12-20 16:35:59 +00:00
Jim Meyering
16972646cf Don't include <search.h>.
[HAVE_INTTYPES_H]: Include <inttypes.h>.
(tdestroy, tfind, tsearch): Remove definitions.
(struct Active_dir): Rename from `known_object'.
(AD_compare, AD_hash): New functions.
(enter_dir, leave_dir): Rewrite to manipulate a hash table
rather than a tree.
(fts_open): Initialize hash table or cycle_state buffer.
(free_node): Remove function.
(find_matching_ancestor): Renamed/rewritten from look_up_active_dir.
(fts_cross_check): Adapt to use new data structure.
2003-12-19 12:50:33 +00:00
Jim Meyering
56fef712cf Rewrite cycle detection code to work properly.
Add some framework (compiled out by default) to test it.

(Dprintf, ENTER_DIR, LEAVE_DIR): Define.
(add_object): Remove function.  Rewritten as...
(enter_dir): New function.
(leave_dir, free_node): New functions.
(fts_read): Ensure that we call ENTER_DIR or LEAVE_DIR,
as appropriate, before returning.
(look_up_active_dir, fts_cross_check) [FTS_DEBUG]: New functions.
(fts_stat): Don't perform the cycle check here.
Now it's done via enter_dir.
2003-12-18 21:11:11 +00:00
Jim Meyering
7e25757f8b Don't require that the maximum length of a file name
encountered in a traversal fit in an `unsigned short',
and fix some portability bugs (don't depend on gcc).

Include "fts_.h", not <fts.h>.
(ALIGNBYTES) [!(__GNUC__ >= 2)]: Add a definition that works with
compilers that don't have __alignof__.
(MAX): Use a definition that doesn't depend on gcc.
(fts_build): Make `len' and `maxlen' be of type size_t, not int.
Test for overflow in a less type-dependent manner.
Test HAVE_STRUCT_DIRENT_D_TYPE, rather than
defined DT_DIR && defined _DIRENT_HAVE_D_TYPE.
(fts_palloc): Test for overflow in a less type-dependent manner.
(fts_safe_changedir): Use stat, not stat64.
Use fstat, not __fxstat64(_STAT_VER.
2003-10-02 17:33:54 +00:00
Jim Meyering
5efadd5e0f Remove (or replace-with-TAB(s) to retain alignment)
each sequence of spaces before a TAB character.
2003-04-15 06:22:54 +00:00
Jim Meyering
4433c9a082 (fts_children): If opening `.' fails, set the fts_child
member to NULL before returning.  From NetBSD.
2003-02-28 12:42:31 +00:00
Jim Meyering
fb428bedfc (fts_children): If fchdir fails, close file descriptor
before returning.  From NetBSD.
2003-02-28 11:04:18 +00:00
Jim Meyering
eb85acc63a Include <search.h>.
(struct known_object): Define.
(object_compare, add_object, find_object): New functions, like
those in ftw.c.
(fts_open): Initialize new member.
(fts_close): Free memory allocated for new member.
(fts_stat): Detect a cycle in O(logN) time per directory processed.
2003-02-24 09:58:02 +00:00
Jim Meyering
b3cac1155b [HAVE_CONFIG_H]: Include <config.h>.
Conditionalize inclusion of <sys/param.h>.
Conditionalize inclusion of <include/sys/stat.h> vs <sys/stat.h>.
Include autoconf-recommended block of dirent/NAMELEN-related
definitions and includes.  Use NAMLEN throughout, rather than
_D_EXACT_NAMLEN.
[_LIBC] (close, closedir, fchdir, open, opendir): Define.
[_LIBC] (readdir, tdestroy, tfind, tsearch): Define.
Remove `__' prefix from all uses of the above.  This will help
to merge *BSD changes.
[!_LIBC] (internal_function): Define.
[! _LIBC && ! LSTAT_FOLLOWS_SLASHED_SYMLINK]: Define lstat.
(__set_errno): Define if not already defined.
2003-02-24 09:09:42 +00:00
Jim Meyering
0818c3e24c (fts_open): If fts_alloc returns NULL, don't dereference it.
(fts_read): If fts_safe_changedir fails because it is not
able to chdir into a subdirectory, then inform the caller.
2003-02-24 08:27:59 +00:00
Jim Meyering
f30cda6bd2 virgin copy from glibc 2003-02-24 08:24:59 +00:00
Jim Meyering
1656a5880b hacked from the versions in glibc 2003-02-13 21:28:58 +00:00