summaryrefslogtreecommitdiff
path: root/src/diff.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/diff.c')
-rw-r--r--src/diff.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/diff.c b/src/diff.c
index 6e8c6be..2ed3ae5 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1172,6 +1172,13 @@ compare_files (struct comparison const *parent,
cmp.file[f].desc = STDIN_FILENO;
if (binary && ! isatty (STDIN_FILENO))
set_binary_mode (STDIN_FILENO, O_BINARY);
+#ifdef __hpux
+ /* Recognize file descriptors closed by the parent on HP-UX. */
+ int flags = fcntl (STDIN_FILENO, F_GETFL, NULL);
+ if (flags >= 0 && (flags & FD_CLOEXEC) != 0)
+ cmp.file[f].desc = ERRNO_ENCODE (EBADF);
+ else
+#endif
if (fstat (STDIN_FILENO, &cmp.file[f].stat) != 0)
cmp.file[f].desc = ERRNO_ENCODE (errno);
else