[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 package Fcntl; 2 3 =head1 NAME 4 5 Fcntl - load the C Fcntl.h defines 6 7 =head1 SYNOPSIS 8 9 use Fcntl; 10 use Fcntl qw(:DEFAULT :flock); 11 12 =head1 DESCRIPTION 13 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> 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 25 =head1 EXPORTED SYMBOLS 26 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). 39 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. 55 56 =cut 57 58 use strict; 59 our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $AUTOLOAD); 60 61 require Exporter; 62 use XSLoader (); 63 @ISA = qw(Exporter); 64 BEGIN { 65 $VERSION = "1.06"; 66 } 67 68 # Items to export into callers namespace by default 69 # (move infrequently used names to @EXPORT_OK below) 70 @EXPORT = 71 qw( 72 FD_CLOEXEC 73 F_ALLOCSP 74 F_ALLOCSP64 75 F_COMPAT 76 F_DUP2FD 77 F_DUPFD 78 F_EXLCK 79 F_FREESP 80 F_FREESP64 81 F_FSYNC 82 F_FSYNC64 83 F_GETFD 84 F_GETFL 85 F_GETLK 86 F_GETLK64 87 F_GETOWN 88 F_NODNY 89 F_POSIX 90 F_RDACC 91 F_RDDNY 92 F_RDLCK 93 F_RWACC 94 F_RWDNY 95 F_SETFD 96 F_SETFL 97 F_SETLK 98 F_SETLK64 99 F_SETLKW 100 F_SETLKW64 101 F_SETOWN 102 F_SHARE 103 F_SHLCK 104 F_UNLCK 105 F_UNSHARE 106 F_WRACC 107 F_WRDNY 108 F_WRLCK 109 O_ACCMODE 110 O_ALIAS 111 O_APPEND 112 O_ASYNC 113 O_BINARY 114 O_CREAT 115 O_DEFER 116 O_DIRECT 117 O_DIRECTORY 118 O_DSYNC 119 O_EXCL 120 O_EXLOCK 121 O_LARGEFILE 122 O_NDELAY 123 O_NOCTTY 124 O_NOFOLLOW 125 O_NOINHERIT 126 O_NONBLOCK 127 O_RANDOM 128 O_RAW 129 O_RDONLY 130 O_RDWR 131 O_RSRC 132 O_RSYNC 133 O_SEQUENTIAL 134 O_SHLOCK 135 O_SYNC 136 O_TEMPORARY 137 O_TEXT 138 O_TRUNC 139 O_WRONLY 140 ); 141 142 # Other items we are prepared to export if requested 143 @EXPORT_OK = qw( 144 DN_ACCESS 145 DN_ATTRIB 146 DN_CREATE 147 DN_DELETE 148 DN_MODIFY 149 DN_MULTISHOT 150 DN_RENAME 151 FAPPEND 152 FASYNC 153 FCREAT 154 FDEFER 155 FDSYNC 156 FEXCL 157 FLARGEFILE 158 FNDELAY 159 FNONBLOCK 160 FRSYNC 161 FSYNC 162 FTRUNC 163 F_GETLEASE 164 F_GETSIG 165 F_NOTIFY 166 F_SETLEASE 167 F_SETSIG 168 LOCK_EX 169 LOCK_MAND 170 LOCK_NB 171 LOCK_READ 172 LOCK_RW 173 LOCK_SH 174 LOCK_UN 175 LOCK_WRITE 176 O_IGNORE_CTTY 177 O_NOATIME 178 O_NOLINK 179 O_NOTRANS 180 SEEK_CUR 181 SEEK_END 182 SEEK_SET 183 S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT 184 S_IREAD S_IWRITE S_IEXEC 185 S_IRGRP S_IWGRP S_IXGRP S_IRWXG 186 S_IROTH S_IWOTH S_IXOTH S_IRWXO 187 S_IRUSR S_IWUSR S_IXUSR S_IRWXU 188 S_ISUID S_ISGID S_ISVTX S_ISTXT 189 _S_IFMT S_IFREG S_IFDIR S_IFLNK 190 &S_ISREG &S_ISDIR &S_ISLNK &S_ISSOCK &S_ISBLK &S_ISCHR &S_ISFIFO 191 &S_ISWHT &S_ISENFMT &S_IFMT &S_IMODE 192 ); 193 # Named groups of exports 194 %EXPORT_TAGS = ( 195 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)], 196 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE 197 FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)], 198 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)], 199 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT 200 _S_IFMT S_IFREG S_IFDIR S_IFLNK 201 S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT 202 S_IRUSR S_IWUSR S_IXUSR S_IRWXU 203 S_IRGRP S_IWGRP S_IXGRP S_IRWXG 204 S_IROTH S_IWOTH S_IXOTH S_IRWXO 205 S_IREAD S_IWRITE S_IEXEC 206 S_ISREG S_ISDIR S_ISLNK S_ISSOCK 207 S_ISBLK S_ISCHR S_ISFIFO 208 S_ISWHT S_ISENFMT 209 S_IFMT S_IMODE 210 )], 211 ); 212 213 # Force the constants to become inlined 214 BEGIN { 215 XSLoader::load 'Fcntl', $VERSION; 216 } 217 218 sub S_IFMT { @_ ? ( $_[0] & _S_IFMT() ) : _S_IFMT() } 219 sub S_IMODE { $_[0] & 07777 } 220 221 sub S_ISREG { ( $_[0] & _S_IFMT() ) == S_IFREG() } 222 sub S_ISDIR { ( $_[0] & _S_IFMT() ) == S_IFDIR() } 223 sub S_ISLNK { ( $_[0] & _S_IFMT() ) == S_IFLNK() } 224 sub S_ISSOCK { ( $_[0] & _S_IFMT() ) == S_IFSOCK() } 225 sub S_ISBLK { ( $_[0] & _S_IFMT() ) == S_IFBLK() } 226 sub S_ISCHR { ( $_[0] & _S_IFMT() ) == S_IFCHR() } 227 sub S_ISFIFO { ( $_[0] & _S_IFMT() ) == S_IFIFO() } 228 sub S_ISWHT { ( $_[0] & _S_IFMT() ) == S_IFWHT() } 229 sub S_ISENFMT { ( $_[0] & _S_IFMT() ) == S_IFENFMT() } 230 231 sub AUTOLOAD { 232 (my $constname = $AUTOLOAD) =~ s/.*:://; 233 die "&Fcntl::constant not defined" if $constname eq 'constant'; 234 my ($error, $val) = constant($constname); 235 if ($error) { 236 my (undef,$file,$line) = caller; 237 die "$error at $file line $line.\n"; 238 } 239 no strict 'refs'; 240 *$AUTOLOAD = sub { $val }; 241 goto &$AUTOLOAD; 242 } 243 244 1;
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |