perl 5.000
[p5sagit/p5-mst-13.2.git] / ext / Fcntl / Fcntl.pm
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__