diff options
author | Jim Meyering <jim@meyering.net> | 2000-08-15 13:05:03 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2000-08-15 13:05:03 +0000 |
commit | f0a4b95c5819d1c61f41eff2bc1dcb76c3ecce1f (patch) | |
tree | 45e68dff2a57dd3d3082ffe0516104732b49374c /src | |
parent | d5d043c57a710d445bb2aea86ad3cdd6e17519fc (diff) | |
download | coreutils-f0a4b95c5819d1c61f41eff2bc1dcb76c3ecce1f.tar.xz |
(count_entry): Remember the current directory also for `.'
and `..'. Reported by Stephen Smoogen, based on a patch from H.J. Lu.
Diffstat (limited to 'src')
-rw-r--r-- | src/du.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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))) |