diff options
author | Jim Meyering <jim@meyering.net> | 2001-11-01 21:40:01 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2001-11-01 21:40:01 +0000 |
commit | 6fa5979ccb0a1bb10af49c6a2cf12afc76ca3459 (patch) | |
tree | 1fddb42e02907cd729c388295c79d5504a4c8f2d /src | |
parent | 866d4b9e5965485ad1dbb0ff26cc3ac575364ab9 (diff) | |
download | coreutils-6fa5979ccb0a1bb10af49c6a2cf12afc76ca3459.tar.xz |
Include dirfd.h.
(print_dir): If dirfd fails, resort to using stat.
Diffstat (limited to 'src')
-rw-r--r-- | src/ls.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -108,6 +108,7 @@ int wcwidth (); #include "argmatch.h" #include "dirname.h" +#include "dirfd.h" #include "error.h" #include "hard-locale.h" #include "hash.h" @@ -2036,7 +2037,12 @@ print_dir (const char *name, const char *realname) if (LOOP_DETECT) { struct stat dir_stat; - if (fstat (dirfd (reading), &dir_stat) < 0) + int fd = dirfd (reading); + + /* If dirfd failed, endure the overhead of using stat. */ + if ((0 <= fd + ? fstat (fd, &dir_stat) + : stat (name, &dir_stat)) < 0) { error (0, errno, _("cannot determine device and inode of %s"), quotearg_colon (name)); |