From e408ac408cd769543db22d82db7c1689972ee727 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sun, 13 Oct 2002 13:59:25 +0000 Subject: (count_entry): Also save cwd when dereferencing (via --dereference-args, -D) a command-line argument. Reported by Michal Svec. Based on a patch by Andreas Schwab. --- src/du.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/du.c') diff --git a/src/du.c b/src/du.c index a60ad6411..1da41411a 100644 --- a/src/du.c +++ b/src/du.c @@ -401,10 +401,14 @@ count_entry (const char *ent, int top, dev_t last_dev, int depth) { uintmax_t size; struct stat stat_buf; + int (*tmp_stat) (); - if (((top && opt_dereference_arguments) - ? stat (ent, &stat_buf) - : (*xstat) (ent, &stat_buf)) < 0) + if (top && opt_dereference_arguments) + tmp_stat = stat; + else + tmp_stat = xstat; + + if ((*tmp_stat) (ent, &stat_buf) < 0) { error (0, errno, "%s", quote (path->text)); exit_status = 1; @@ -448,7 +452,7 @@ count_entry (const char *ent, int top, dev_t last_dev, int depth) to one of those. */ if (strchr (ent, '/') || DOT_OR_DOTDOT (ent) - || (xstat == stat + || (tmp_stat == stat && lstat (ent, &e_buf) == 0 && S_ISLNK (e_buf.st_mode))) { -- cgit v1.2.3-54-g00ecf