Commit | Line | Data |
---|---|---|
a0d0e21e LW |
1 | package Fcntl; |
2 | ||
3b35bae3 AD |
3 | =head1 NAME |
4 | ||
5 | Fcntl - load the C Fcntl.h defines | |
6 | ||
7 | =head1 SYNOPSIS | |
8 | ||
9 | use Fcntl; | |
7e1af8bc | 10 | use Fcntl qw(:DEFAULT :flock); |
3b35bae3 AD |
11 | |
12 | =head1 DESCRIPTION | |
13 | ||
554ad1fc JH |
14 | This module is just a translation of the C F<fcntl.h> file. |
15 | Unlike the old mechanism of requiring a translated F<fcntl.ph> | |
3b35bae3 AD |
16 | file, this uses the B<h2xs> program (see the Perl source distribution) |
17 | and your native C compiler. This means that it has a | |
18 | far more likely chance of getting the numbers right. | |
19 | ||
20 | =head1 NOTE | |
21 | ||
22 | Only C<#define> symbols get translated; you must still correctly | |
23 | pack up your own arguments to pass as args for locking functions, etc. | |
24 | ||
7e1af8bc | 25 | =head1 EXPORTED SYMBOLS |
26 | ||
3e3baf6d TB |
27 | By default your system's F_* and O_* constants (eg, F_DUPFD and |
28 | O_CREAT) and the FD_CLOEXEC constant are exported into your namespace. | |
29 | ||
30 | You can request that the flock() constants (LOCK_SH, LOCK_EX, LOCK_NB | |
31 | and LOCK_UN) be provided by using the tag C<:flock>. See L<Exporter>. | |
32 | ||
33 | You can request that the old constants (FAPPEND, FASYNC, FCREAT, | |
34 | FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for | |
35 | compatibility reasons by using the tag C<:Fcompat>. For new | |
36 | applications the newer versions of these constants are suggested | |
37 | (O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK, | |
38 | O_SYNC, O_TRUNC). | |
7e1af8bc | 39 | |
ca6e1c26 JH |
40 | For ease of use also the SEEK_* constants (for seek() and sysseek(), |
41 | e.g. SEEK_END) and the S_I* constants (for chmod() and stat()) are | |
42 | available for import. They can be imported either separately or using | |
43 | the tags C<:seek> and C<:mode>. | |
44 | ||
45 | Please refer to your native fcntl(2), open(2), fseek(3), lseek(2) | |
46 | (equal to Perl's seek() and sysseek(), respectively), and chmod(2) | |
47 | documentation to see what constants are implemented in your system. | |
48 | ||
49 | See L<perlopentut> to learn about the uses of the O_* constants | |
50 | with sysopen(). | |
51 | ||
52 | See L<perlfunc/seek> and L<perlfunc/sysseek> about the SEEK_* constants. | |
53 | ||
54 | See L<perlfunc/stat> about the S_I* constants. | |
705af498 | 55 | |
3b35bae3 AD |
56 | =cut |
57 | ||
0f680395 | 58 | use strict; |
7f39e0ae | 59 | our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); |
73c78b0a | 60 | |
a0d0e21e | 61 | require Exporter; |
923cc1bb | 62 | require XSLoader; |
9426adcd | 63 | @ISA = qw(Exporter); |
e57c1822 | 64 | $VERSION = '1.11'; |
923cc1bb NC |
65 | |
66 | XSLoader::load(); | |
0e6f150f | 67 | |
b8a48bdd NC |
68 | # Named groups of exports |
69 | %EXPORT_TAGS = ( | |
70 | 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)], | |
71 | 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE | |
72 | FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)], | |
73 | 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)], | |
74 | 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT | |
75 | _S_IFMT S_IFREG S_IFDIR S_IFLNK | |
76 | S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT | |
77 | S_IRUSR S_IWUSR S_IXUSR S_IRWXU | |
78 | S_IRGRP S_IWGRP S_IXGRP S_IRWXG | |
79 | S_IROTH S_IWOTH S_IXOTH S_IRWXO | |
80 | S_IREAD S_IWRITE S_IEXEC | |
81 | S_ISREG S_ISDIR S_ISLNK S_ISSOCK | |
82 | S_ISBLK S_ISCHR S_ISFIFO | |
83 | S_ISWHT S_ISENFMT | |
84 | S_IFMT S_IMODE | |
85 | )], | |
86 | ); | |
87 | ||
a0d0e21e LW |
88 | # Items to export into callers namespace by default |
89 | # (move infrequently used names to @EXPORT_OK below) | |
90 | @EXPORT = | |
91 | qw( | |
0fd60c2a | 92 | FD_CLOEXEC |
ac88732c JH |
93 | F_ALLOCSP |
94 | F_ALLOCSP64 | |
95 | F_COMPAT | |
96 | F_DUP2FD | |
0fd60c2a JH |
97 | F_DUPFD |
98 | F_EXLCK | |
ac88732c JH |
99 | F_FREESP |
100 | F_FREESP64 | |
101 | F_FSYNC | |
102 | F_FSYNC64 | |
0fd60c2a JH |
103 | F_GETFD |
104 | F_GETFL | |
105 | F_GETLK | |
5ff3f7a4 | 106 | F_GETLK64 |
0fd60c2a | 107 | F_GETOWN |
ac88732c | 108 | F_NODNY |
0fd60c2a | 109 | F_POSIX |
ac88732c JH |
110 | F_RDACC |
111 | F_RDDNY | |
0fd60c2a | 112 | F_RDLCK |
ac88732c JH |
113 | F_RWACC |
114 | F_RWDNY | |
0fd60c2a JH |
115 | F_SETFD |
116 | F_SETFL | |
117 | F_SETLK | |
5ff3f7a4 | 118 | F_SETLK64 |
0fd60c2a | 119 | F_SETLKW |
5ff3f7a4 | 120 | F_SETLKW64 |
0fd60c2a | 121 | F_SETOWN |
ac88732c | 122 | F_SHARE |
0fd60c2a JH |
123 | F_SHLCK |
124 | F_UNLCK | |
ac88732c JH |
125 | F_UNSHARE |
126 | F_WRACC | |
127 | F_WRDNY | |
0fd60c2a JH |
128 | F_WRLCK |
129 | O_ACCMODE | |
ca6e1c26 | 130 | O_ALIAS |
0fd60c2a JH |
131 | O_APPEND |
132 | O_ASYNC | |
133 | O_BINARY | |
134 | O_CREAT | |
135 | O_DEFER | |
ca6e1c26 JH |
136 | O_DIRECT |
137 | O_DIRECTORY | |
0fd60c2a JH |
138 | O_DSYNC |
139 | O_EXCL | |
140 | O_EXLOCK | |
5ff3f7a4 | 141 | O_LARGEFILE |
0fd60c2a JH |
142 | O_NDELAY |
143 | O_NOCTTY | |
ca6e1c26 | 144 | O_NOFOLLOW |
8c99d73e | 145 | O_NOINHERIT |
0fd60c2a | 146 | O_NONBLOCK |
8c99d73e GS |
147 | O_RANDOM |
148 | O_RAW | |
0fd60c2a JH |
149 | O_RDONLY |
150 | O_RDWR | |
ca6e1c26 | 151 | O_RSRC |
0fd60c2a | 152 | O_RSYNC |
8c99d73e | 153 | O_SEQUENTIAL |
0fd60c2a JH |
154 | O_SHLOCK |
155 | O_SYNC | |
ca6e1c26 | 156 | O_TEMPORARY |
0fd60c2a JH |
157 | O_TEXT |
158 | O_TRUNC | |
159 | O_WRONLY | |
a0d0e21e | 160 | ); |
705af498 | 161 | |
a0d0e21e | 162 | # Other items we are prepared to export if requested |
b8a48bdd | 163 | @EXPORT_OK = (qw( |
5bb8c70c JH |
164 | DN_ACCESS |
165 | DN_ATTRIB | |
166 | DN_CREATE | |
167 | DN_DELETE | |
168 | DN_MODIFY | |
169 | DN_MULTISHOT | |
170 | DN_RENAME | |
5bb8c70c JH |
171 | F_GETLEASE |
172 | F_GETSIG | |
173 | F_NOTIFY | |
174 | F_SETLEASE | |
175 | F_SETSIG | |
5bb8c70c | 176 | LOCK_MAND |
5bb8c70c JH |
177 | LOCK_READ |
178 | LOCK_RW | |
5bb8c70c JH |
179 | LOCK_WRITE |
180 | O_IGNORE_CTTY | |
181 | O_NOATIME | |
182 | O_NOLINK | |
183 | O_NOTRANS | |
b8a48bdd | 184 | ), map {@{$_}} values %EXPORT_TAGS); |
a0d0e21e | 185 | |
a0d0e21e | 186 | 1; |