summaryrefslogtreecommitdiff
path: root/lib/open.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/open.c')
-rw-r--r--lib/open.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/open.c b/lib/open.c
index 480017750..d24f42c2f 100644
--- a/lib/open.c
+++ b/lib/open.c
@@ -16,13 +16,16 @@
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+/* If the user's config.h happens to include <fcntl.h>, let it include only
+ the system's <fcntl.h> here, so that orig_open doesn't recurse to
+ rpl_open. */
+#define __need_system_fcntl_h
#include <config.h>
/* Get the original definition of open. It might be defined as a macro. */
-#define __need_system_fcntl_h
#include <fcntl.h>
-#undef __need_system_fcntl_h
#include <sys/types.h>
+#undef __need_system_fcntl_h
static inline int
orig_open (const char *filename, int flags, mode_t mode)
@@ -31,7 +34,9 @@ orig_open (const char *filename, int flags, mode_t mode)
}
/* Specification. */
-#include <fcntl.h>
+/* Write "fcntl.h" here, not <fcntl.h>, otherwise OSF/1 5.1 DTK cc eliminates
+ this include because of the preliminary #include <fcntl.h> above. */
+#include "fcntl.h"
#include <errno.h>
#include <stdarg.h>