summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <Jarkko.Hietaniemi@cc.hut.fi>1997-01-19 20:11:22 +0200
committerChip Salzenberg <chip@atlantic.net>1997-01-25 15:58:00 +1200
commit705af49881f30cfecf0e96f7cd0ee83dea50d68d (patch)
treef1319bda08fbd2913a0c2a0e8868d84aafd2267e
parentff7f3c60e77f15ff4f5a3176285a6a22c685a51b (diff)
downloadperl-705af49881f30cfecf0e96f7cd0ee83dea50d68d.tar.gz
Fcntl: add more constants
Subject: O_EXLOCK, O_SHLOCK to Fcntl. p5p-msgid: <199701191717.TAA17694@alpha.hut.fi> private-msgid: <199701191811.UAA16346@alpha.hut.fi>
-rw-r--r--ext/Fcntl/Fcntl.pm10
-rw-r--r--ext/Fcntl/Fcntl.xs54
2 files changed, 62 insertions, 2 deletions
diff --git a/ext/Fcntl/Fcntl.pm b/ext/Fcntl/Fcntl.pm
index 489853416d..d9e36943d5 100644
--- a/ext/Fcntl/Fcntl.pm
+++ b/ext/Fcntl/Fcntl.pm
@@ -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
diff --git a/ext/Fcntl/Fcntl.xs b/ext/Fcntl/Fcntl.xs
index 0f51b100d7..4ecdf91e9c 100644
--- a/ext/Fcntl/Fcntl.xs
+++ b/ext/Fcntl/Fcntl.xs
@@ -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;