From: Jim Meyering Date: Fri, 12 Aug 2005 13:02:17 +0000 (+0000) Subject: Mention that with FTS_LOGICAL, we use FTS_TIGHT_CYCLE_CHECK. X-Git-Tag: CPPI-1_12~182 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=956fd9d0d15bad6a98dbfe4617c028490ad16066;p=platform%2Fupstream%2Fcoreutils.git Mention that with FTS_LOGICAL, we use FTS_TIGHT_CYCLE_CHECK. --- diff --git a/lib/fts_.h b/lib/fts_.h index 4bf903b..42e06c9 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 */