summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2005-05-20 22:33:59 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2005-05-20 22:33:59 +0000
commitfea1ba2d145791e4bf9f4666f4973674dbccbc6d (patch)
tree0af74fc23bd2d35a24439bc2a27b13e1fd6ff679
parenteea59b706d133634f0bb76f240cd5b08f64dbf8c (diff)
downloadcoreutils-fea1ba2d145791e4bf9f4666f4973674dbccbc6d.tar.xz
(_LGPL_PACKAGE) [defined _LIBC]: New macro.
(FTS): New member fts_cycle, that is a union that contains the old active_dir_ht and cycle_state. All uses changed to mention fts_cycle.ht and fts_cycle.state.
-rw-r--r--lib/fts_.h36
1 files changed, 23 insertions, 13 deletions
diff --git a/lib/fts_.h b/lib/fts_.h
index 5c5e1c2cb..954ba569b 100644
--- a/lib/fts_.h
+++ b/lib/fts_.h
@@ -52,6 +52,7 @@
# ifdef _LIBC
# include <features.h>
+# define _LGPL_PACKAGE 1
# else
# undef __THROW
# define __THROW
@@ -104,19 +105,28 @@ typedef struct {
# define FTS_STOP 0x2000 /* (private) unrecoverable error */
int fts_options; /* fts_open options, global flags */
- /* This data structure records the directories between a starting
- point and the current directory. I.e., a directory is recorded
- here IFF we have visited it once, but we have not yet completed
- processing of all its entries. Every time we visit a new directory,
- we add that directory to this set. When we finish with a directory
- (usually by visiting it a second time), we remove it from this
- set. Each entry in this data structure is a device/inode pair.
- This data structure is used to detect directory cycles efficiently
- and promptly even when the depth of a hierarchy is in the tens
- of thousands. Lazy checking, as done by GNU rm via cycle-check.c,
- wouldn't be appropriate for du. */
- struct hash_table *active_dir_ht;
- struct cycle_check_state *cycle_state;
+# if !_LGPL_PACKAGE
+ union {
+ /* This data structure is used if FTS_TIGHT_CYCLE_CHECK is
+ specified. It records the directories between a starting
+ point and the current directory. I.e., a directory is
+ recorded here IFF we have visited it once, but we have not
+ yet completed processing of all its entries. Every time we
+ visit a new directory, we add that directory to this set.
+ When we finish with a directory (usually by visiting it a
+ second time), we remove it from this set. Each entry in
+ this data structure is a device/inode pair. This data
+ structure is used to detect directory cycles efficiently and
+ promptly even when the depth of a hierarchy is in the tens
+ of thousands. */
+ struct hash_table *ht;
+
+ /* This data structure uses lazy checking, as done by rm via
+ cycle-check.c. It's the default, but it's not appropriate
+ for programs like du. */
+ struct cycle_check_state *state;
+ } fts_cycle;
+# endif
} FTS;
typedef struct _ftsent {