diff options
author | Jim Meyering <jim@meyering.net> | 2005-08-12 13:02:17 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2005-08-12 13:02:17 +0000 |
commit | 956fd9d0d15bad6a98dbfe4617c028490ad16066 (patch) | |
tree | 50f163db0881bd46cfc6655c90c0ab32e558218b /lib | |
parent | fe90fa6a61fbaa3d1f12d18016076a0ac7559bf0 (diff) | |
download | coreutils-956fd9d0d15bad6a98dbfe4617c028490ad16066.tar.xz |
Mention that with FTS_LOGICAL, we use FTS_TIGHT_CYCLE_CHECK.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fts_.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/fts_.h b/lib/fts_.h index 4bf903bd3..42e06c987 100644 --- a/lib/fts_.h +++ b/lib/fts_.h @@ -88,7 +88,8 @@ typedef struct { # define FTS_WHITEOUT 0x0080 /* return whiteout information */ /* There are two ways to detect cycles. - The lazy way, with which one may process a directory that is a + The lazy way (which works only with FTS_PHYSICAL), + with which one may process a directory that is a part of the cycle several times before detecting the cycle. The `tight' way, whereby fts uses more memory (proportional to number of `active' directories, aka distance from root @@ -96,7 +97,19 @@ typedef struct { to detect any cycle right away. For example, du must use this option to avoid counting disk space in a cycle multiple times, but chown -R need not. - The default is to use the constant-memory lazy way. */ + The default is to use the constant-memory lazy way, when possible + (see below). + + However, with FTS_LOGICAL (when following symlinks, e.g., chown -L) + using lazy cycle detection is inadequate. For example, traversing + a directory containing a symbolic link to a peer directory, it is + possible to encounter the same directory twice even though there + is no cycle: + dir + ... + slink -> dir + So, when FTS_LOGICAL is selected, we have to use a different + mode of cycle detection: FTS_TIGHT_CYCLE_CHECK. */ # define FTS_TIGHT_CYCLE_CHECK 0x0100 # define FTS_OPTIONMASK 0x01ff /* valid user option mask */ |