changeset 36826:eeb06b19cdea

fcntl-h: support GNU flags like O_IGNORE_CTTY * doc/posix-headers/fcntl.texi (fcntl.h): Support O_IGNORE_CTTY, O_NOLINK, and O_NOTRANS. These flags are nonzero on GNU/Hurd systems. Discovered when using fcntl-h with GNU Emacs, which uses O_IGNORE_CTTY. Fix misspelling of F_SETLKW. * lib/fcntl.in.h (O_IGNORE_CTTY, O_NOLINK, O_NOTRANS): Define to 0 if not already defined. * tests/test-fcntl-h.c: Test these new flags.
author Paul Eggert <eggert@cs.ucla.edu>
date Mon, 15 Oct 2012 09:31:07 -0700
parents f3bc58f169b7
children 53d45ca95adb
files ChangeLog doc/posix-headers/fcntl.texi lib/fcntl.in.h tests/test-fcntl-h.c
diffstat 4 files changed, 39 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Oct 14 22:31:28 2012 -0700
+++ b/ChangeLog	Mon Oct 15 09:31:07 2012 -0700
@@ -1,3 +1,14 @@
+2012-10-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+	fcntl-h: support GNU flags like O_IGNORE_CTTY
+	* doc/posix-headers/fcntl.texi (fcntl.h): Support O_IGNORE_CTTY,
+	O_NOLINK, and O_NOTRANS.  These flags are nonzero on GNU/Hurd
+	systems.  Discovered when using fcntl-h with GNU Emacs, which uses
+	O_IGNORE_CTTY.  Fix misspelling of F_SETLKW.
+	* lib/fcntl.in.h (O_IGNORE_CTTY, O_NOLINK, O_NOTRANS):
+	Define to 0 if not already defined.
+	* tests/test-fcntl-h.c: Test these new flags.
+
 2012-10-14  Paul Eggert  <eggert@cs.ucla.edu>
 
 	faccessat, etc.: support AT_FDCWD-only use
--- a/doc/posix-headers/fcntl.texi	Sun Oct 14 22:31:28 2012 -0700
+++ b/doc/posix-headers/fcntl.texi	Mon Oct 15 09:31:07 2012 -0700
@@ -45,8 +45,9 @@
 not on others.
 
 @item
-@samp{O_DIRECT}, @samp{O_NDELAY}, @samp{O_NOATIME},
-and @samp{O_NOLINKS} (not specified by POSIX) are defined
+@samp{O_DIRECT}, @samp{O_IGNORE_CTTY}, @samp{O_NDELAY},
+@samp{O_NOATIME}, @samp{O_NOLINK}, @samp{O_NOLINKS}, and
+@samp{O_NOTRANS} (not specified by POSIX) are defined
 on some platforms but not on others.
 
 @item
@@ -77,7 +78,7 @@
 @itemize
 @item
 @samp{F_SETFD}, @samp{F_GETFL}, @samp{F_SETFL}, @samp{F_GETLK},
-@samp{F_SETLK}, @samp{F_SETLOKW}, @samp{F_GETOWN}, and @samp{F_SETOWN}
+@samp{F_SETLK}, @samp{F_SETLKW}, @samp{F_GETOWN}, and @samp{F_SETOWN}
 are not defined on some platforms:
 mingw, MSVC 9.
 
--- a/lib/fcntl.in.h	Sun Oct 14 22:31:28 2012 -0700
+++ b/lib/fcntl.in.h	Mon Oct 15 09:31:07 2012 -0700
@@ -216,6 +216,10 @@
 # define O_EXEC O_RDONLY /* This is often close enough in older systems.  */
 #endif
 
+#ifndef O_IGNORE_CTTY
+# define O_IGNORE_CTTY 0
+#endif
+
 #ifndef O_NDELAY
 # define O_NDELAY 0
 #endif
@@ -249,10 +253,18 @@
 # define O_NOFOLLOW 0
 #endif
 
+#ifndef O_NOLINK
+# define O_NOLINK 0
+#endif
+
 #ifndef O_NOLINKS
 # define O_NOLINKS 0
 #endif
 
+#ifndef O_NOTRANS
+# define O_NOTRANS 0
+#endif
+
 #ifndef O_RSYNC
 # define O_RSYNC 0
 #endif
--- a/tests/test-fcntl-h.c	Sun Oct 14 22:31:28 2012 -0700
+++ b/tests/test-fcntl-h.c	Mon Oct 15 09:31:07 2012 -0700
@@ -21,9 +21,9 @@
 #include <fcntl.h>
 
 /* Check that the various O_* macros are defined.  */
-int o = O_DIRECT | O_DIRECTORY | O_DSYNC | O_NDELAY | O_NOATIME | O_NONBLOCK
-        | O_NOCTTY | O_NOFOLLOW | O_NOLINKS | O_RSYNC | O_SYNC | O_TTY_INIT
-        | O_BINARY | O_TEXT;
+int o = (O_DIRECT | O_DIRECTORY | O_DSYNC | O_IGNORE_CTTY | O_NDELAY | O_NOATIME
+	 | O_NONBLOCK | O_NOCTTY | O_NOFOLLOW | O_NOLINK | O_NOLINKS | O_NOTRANS
+	 | O_RSYNC | O_SYNC | O_TTY_INIT | O_BINARY | O_TEXT);
 
 /* Check that the various SEEK_* macros are defined.  */
 int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
@@ -84,6 +84,9 @@
 #if O_DSYNC
     case O_DSYNC:
 #endif
+#if O_IGNORE_CTTY
+    case O_IGNORE_CTTY:
+#endif
 #if O_NOATIME
     case O_NOATIME:
 #endif
@@ -96,9 +99,15 @@
 #if O_NOFOLLOW
     case O_NOFOLLOW:
 #endif
+#if O_NOLINK
+    case O_NOLINK:
+#endif
 #if O_NOLINKS
     case O_NOLINKS:
 #endif
+#if O_NOTRANS
+    case O_NOTRANS:
+#endif
 #if O_RSYNC && O_RSYNC != O_DSYNC
     case O_RSYNC:
 #endif