From fea1ba2d145791e4bf9f4666f4973674dbccbc6d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 20 May 2005 22:33:59 +0000 Subject: [PATCH] (_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. --- lib/fts_.h | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/fts_.h b/lib/fts_.h index 5c5e1c2..954ba56 100644 --- a/lib/fts_.h +++ b/lib/fts_.h @@ -52,6 +52,7 @@ # ifdef _LIBC # include +# 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 { -- 2.7.4