summaryrefslogtreecommitdiff
path: root/ext/Fcntl
diff options
context:
space:
mode:
authorTim Bunce <Tim.Bunce@ig.co.uk>1997-06-11 12:00:00 +1200
committerTim Bunce <Tim.Bunce@ig.co.uk>1997-06-11 12:00:00 +1200
commit3e3baf6d63945cb64e829d6e5c70a7d00f3d3d03 (patch)
tree0143be655536dc428f4fa3cc7d01f6bcffe14c01 /ext/Fcntl
parent08aa1457cd52a368c210ab76a3da91cfadabea1a (diff)
parent3458556dd685b1767b760a72bd2e9007b5c4575e (diff)
downloadperl-3e3baf6d63945cb64e829d6e5c70a7d00f3d3d03.tar.gz
[differences between cumulative patch application and perl5.004_01]perl-5.004_01
[editor's note: The changes between this and 5.004 were processed from the m1t2 release, which was a bad idea as it was the _01 release which had the final corrected attributions. The differences between the various m*t* releases do that; I considered it most valuable just to look at the _NN releases. Many patches have been separated out and/or applied from the p5p archives nonetheless.]
Diffstat (limited to 'ext/Fcntl')
-rw-r--r--ext/Fcntl/Fcntl.pm24
-rw-r--r--ext/Fcntl/Fcntl.xs58
2 files changed, 74 insertions, 8 deletions
diff --git a/ext/Fcntl/Fcntl.pm b/ext/Fcntl/Fcntl.pm
index 678b7fd897..6214323c31 100644
--- a/ext/Fcntl/Fcntl.pm
+++ b/ext/Fcntl/Fcntl.pm
@@ -24,10 +24,18 @@ pack up your own arguments to pass as args for locking functions, etc.
=head1 EXPORTED SYMBOLS
-By default your system's F_* and O_* constants (eg, F_DUPFD and O_CREAT)
-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>.
+By default your system's F_* and O_* constants (eg, F_DUPFD and
+O_CREAT) and the FD_CLOEXEC constant 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>.
+
+You can request that the old constants (FAPPEND, FASYNC, FCREAT,
+FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for
+compatibility reasons by using the tag C<:Fcompat>. For new
+applications the newer versions of these constants are suggested
+(O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK,
+O_SYNC, O_TRUNC).
Please refer to your native fcntl() and open() documentation to see
what constants are implemented in your system.
@@ -45,11 +53,12 @@ $VERSION = "1.03";
@EXPORT =
qw(
F_DUPFD F_GETFD F_GETLK F_SETFD F_GETFL F_SETFL F_SETLK F_SETLKW
- FD_CLOEXEC F_RDLCK F_UNLCK F_WRLCK
+ FD_CLOEXEC F_RDLCK F_UNLCK F_WRLCK F_POSIX
O_CREAT O_EXCL O_NOCTTY O_TRUNC
O_APPEND O_NONBLOCK
O_NDELAY O_DEFER
O_RDONLY O_RDWR O_WRONLY
+ O_BINARY O_TEXT
O_EXLOCK O_SHLOCK O_ASYNC O_DSYNC O_RSYNC O_SYNC
F_SETOWN F_GETOWN
);
@@ -57,10 +66,13 @@ $VERSION = "1.03";
# Other items we are prepared to export if requested
@EXPORT_OK = qw(
LOCK_SH LOCK_EX LOCK_NB LOCK_UN
+ FAPPEND FASYNC FCREAT FDEFER FEXCL FNDELAY FNONBLOCK FSYNC FTRUNC
);
# Named groups of exports
%EXPORT_TAGS = (
- 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)],
+ 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)],
+ 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FEXCL
+ FNDELAY FNONBLOCK FSYNC FTRUNC)],
);
sub AUTOLOAD {
diff --git a/ext/Fcntl/Fcntl.xs b/ext/Fcntl/Fcntl.xs
index a94864332e..9034031c9c 100644
--- a/ext/Fcntl/Fcntl.xs
+++ b/ext/Fcntl/Fcntl.xs
@@ -75,6 +75,12 @@ int arg;
#else
goto not_there;
#endif
+ if (strEQ(name, "F_POSIX"))
+#ifdef F_POSIX
+ return F_POSIX;
+#else
+ goto not_there;
+#endif
if (strEQ(name, "F_SETFL"))
#ifdef F_SETFL
return F_SETFL;
@@ -119,13 +125,61 @@ int arg;
#endif
errno = EINVAL;
return 0;
- } else
- if (strEQ(name, "FD_CLOEXEC"))
+ }
+ if (strEQ(name, "FAPPEND"))
+#ifdef FAPPEND
+ return FAPPEND;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FASYNC"))
+#ifdef FASYNC
+ return FASYNC;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FCREAT"))
+#ifdef FCREAT
+ return FCREAT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FD_CLOEXEC"))
#ifdef FD_CLOEXEC
return FD_CLOEXEC;
#else
goto not_there;
#endif
+ if (strEQ(name, "FEXCL"))
+#ifdef FEXCL
+ return FEXCL;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FNDELAY"))
+#ifdef FNDELAY
+ return FNDELAY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FNONBLOCK"))
+#ifdef FNONBLOCK
+ return FNONBLOCK;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FSYNC"))
+#ifdef FSYNC
+ return FSYNC;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FTRUNC"))
+#ifdef FTRUNC
+ return FTRUNC;
+#else
+ goto not_there;
+#endif
break;
case 'L':
if (strnEQ(name, "LOCK_", 5)) {