summaryrefslogtreecommitdiff
path: root/src/dired.c
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2017-11-01 15:26:21 +0100
committerAndreas Schwab <schwab@linux-m68k.org>2017-11-01 21:44:49 +0100
commit8453423c7c5e1886a301fb61c4077650f59e670b (patch)
tree56ff7258819099ba68381be2efd365bf33763683 /src/dired.c
parent70621e25713b8158cc386a70247f63106df3712c (diff)
downloademacs-8453423c7c5e1886a301fb61c4077650f59e670b.tar.gz
Avoid wrong value from file-attributes on Linux kernel before 3.6
* dired.c (file_attributes): Handle unsupported fstat on O_PATH descriptors. (bug#29070)
Diffstat (limited to 'src/dired.c')
-rw-r--r--src/dired.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/dired.c b/src/dired.c
index 28d1cffb44c..239b1acd1fb 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -953,7 +953,14 @@ file_attributes (int fd, char const *name,
{
record_unwind_protect_int (close_file_unwind, namefd);
if (fstat (namefd, &s) != 0)
- err = errno;
+ {
+ err = errno;
+ /* The Linux kernel before version 3.6 does not support
+ fstat on O_PATH file descriptors. Handle this error like
+ missing support for O_PATH. */
+ if (err == EBADF)
+ err = EINVAL;
+ }
else
{
err = 0;