Commit | Line | Data |
---|---|---|
a0d0e21e LW |
1 | package Fcntl; |
2 | ||
3 | require Exporter; | |
4 | require AutoLoader; | |
5 | require DynaLoader; | |
6 | @ISA = (Exporter, AutoLoader, DynaLoader); | |
7 | # Items to export into callers namespace by default | |
8 | # (move infrequently used names to @EXPORT_OK below) | |
9 | @EXPORT = | |
10 | qw( | |
11 | F_DUPFD F_GETFD F_GETLK F_SETFD F_GETFL F_SETFL F_SETLK F_SETLKW | |
12 | FD_CLOEXEC F_RDLCK F_UNLCK F_WRLCK | |
13 | O_CREAT O_EXCL O_NOCTTY O_TRUNC | |
14 | O_APPEND O_NONBLOCK | |
15 | O_NDELAY | |
16 | O_RDONLY O_RDWR O_WRONLY | |
17 | ); | |
18 | # Other items we are prepared to export if requested | |
19 | @EXPORT_OK = qw( | |
20 | ); | |
21 | ||
22 | sub AUTOLOAD { | |
23 | if (@_ > 1) { | |
24 | $AutoLoader::AUTOLOAD = $AUTOLOAD; | |
25 | goto &AutoLoader::AUTOLOAD; | |
26 | } | |
27 | local($constname); | |
28 | ($constname = $AUTOLOAD) =~ s/.*:://; | |
29 | $val = constant($constname, @_ ? $_[0] : 0); | |
30 | if ($! != 0) { | |
31 | if ($! =~ /Invalid/) { | |
32 | $AutoLoader::AUTOLOAD = $AUTOLOAD; | |
33 | goto &AutoLoader::AUTOLOAD; | |
34 | } | |
35 | else { | |
36 | ($pack,$file,$line) = caller; | |
37 | die "Your vendor has not defined Fcntl macro $constname, used at $file line $line. | |
38 | "; | |
39 | } | |
40 | } | |
41 | eval "sub $AUTOLOAD { $val }"; | |
42 | goto &$AUTOLOAD; | |
43 | } | |
44 | ||
45 | bootstrap Fcntl; | |
46 | ||
47 | # Preloaded methods go here. Autoload methods go after __END__, and are | |
48 | # processed by the autosplit program. | |
49 | package Fcntl; # return to package Fcntl so AutoSplit is happy | |
50 | 1; | |
51 | __END__ |