Fcntl: add more constants
Jarkko Hietaniemi [Sun, 19 Jan 1997 18:11:22 +0000 (20:11 +0200)]
Subject: O_EXLOCK, O_SHLOCK to Fcntl.

p5p-msgid: <199701191717.TAA17694@alpha.hut.fi>
private-msgid: <199701191811.UAA16346@alpha.hut.fi>

ext/Fcntl/Fcntl.pm
ext/Fcntl/Fcntl.xs

index 4898534..d9e3694 100644 (file)
@@ -29,6 +29,9 @@ are exported into your namespace.  You can request that the flock()
 constants (LOCK_SH, LOCK_EX, LOCK_NB and LOCK_UN) be provided by using
 the tag C<:flock>.  See L<Exporter>.
 
+Please refer to your native fcntl() and open() documentation to see
+what constants are implemented in your system.
+
 =cut
 
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD);
@@ -36,7 +39,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD);
 require Exporter;
 require DynaLoader;
 @ISA = qw(Exporter DynaLoader);
-$VERSION = "1.01";
+$VERSION = "1.02";
 # Items to export into callers namespace by default
 # (move infrequently used names to @EXPORT_OK below)
 @EXPORT =
@@ -45,9 +48,12 @@ $VERSION = "1.01";
      FD_CLOEXEC F_RDLCK F_UNLCK F_WRLCK
      O_CREAT O_EXCL O_NOCTTY O_TRUNC
      O_APPEND O_NONBLOCK
-     O_NDELAY
+     O_NDELAY O_DEFER
      O_RDONLY O_RDWR O_WRONLY
+     O_EXLOCK O_SHLOCK O_ASYNC O_DSYNC O_RSYNC O_SYNC
+     F_SETOWN F_GETOWN
      );
+
 # Other items we are prepared to export if requested
 @EXPORT_OK = qw(
     LOCK_SH LOCK_EX LOCK_NB LOCK_UN
index 0f51b10..4ecdf91 100644 (file)
@@ -214,6 +214,60 @@ int arg;
 #else
                goto not_there;
 #endif
+           if (strEQ(name, "O_EXLOCK"))
+#ifdef O_EXLOCK
+               return O_EXLOCK;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "O_SHLOCK"))
+#ifdef O_SHLOCK
+               return O_SHLOCK;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "O_ASYNC"))
+#ifdef O_ASYNC
+               return O_ASYNC;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "O_DSYNC"))
+#ifdef O_DSYNC
+               return O_DSYNC;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "O_RSYNC"))
+#ifdef O_RSYNC
+               return O_RSYNC;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "O_SYNC"))
+#ifdef O_SYNC
+               return O_SYNC;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "F_SETOWN"))
+#ifdef F_SETOWN
+               return F_SETOWN;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "F_GETOWN"))
+#ifdef F_GETOWN
+               return F_GETOWN;
+#else
+               goto not_there;
+#endif
+           if (strEQ(name, "O_DEFER"))
+#ifdef O_DEFER
+               return O_DEFER;
+#else
+               goto not_there;
+#endif
        } else
          goto not_there;
        break;