(count_entry): Remember the current directory also for `.'
authorJim Meyering <jim@meyering.net>
Tue, 15 Aug 2000 13:05:03 +0000 (13:05 +0000)
committerJim Meyering <jim@meyering.net>
Tue, 15 Aug 2000 13:05:03 +0000 (13:05 +0000)
and `..'.  Reported by Stephen Smoogen, based on a patch from H.J. Lu.

src/du.c

index ec64bb3..97d6257 100644 (file)
--- a/src/du.c
+++ b/src/du.c
@@ -529,8 +529,12 @@ count_entry (const char *ent, int top, dev_t last_dev, int depth)
       /* If we're traversing more than one level, or if we're
         dereferencing symlinks and we're about to chdir through a
         symlink, remember the current directory so we can return to
-        it later.  In other cases, chdir ("..") works fine.  */
+        it later.  In other cases, chdir ("..") works fine.
+        Treat `.' and `..' like multi-level paths, since `chdir ("..")'
+        wont't restore the current working directory after a `chdir'
+        to one of those.  */
       if (strchr (ent, '/')
+         || DOT_OR_DOTDOT (ent)
          || (xstat == stat
              && lstat (ent, &e_buf) == 0
              && S_ISLNK (e_buf.st_mode)))