1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-11 22:54:02 +02:00
Commit Graph

20 Commits

Author SHA1 Message Date
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