File Coverage

/home/pjcj/Test-Smoke/perl-current-gcov/lib/Fcntl.pm
Criterion Covered Total %
statement 3 3 100.0
branch n/a
condition n/a
subroutine 1 1 100.0
total 4 4 100.0


line stmt bran cond sub time code
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 file.
15           Unlike the old mechanism of requiring a translated F
16           file, this uses the B 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.
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 to learn about the uses of the O_* constants
50           with sysopen().
51            
52           See L and L about the SEEK_* constants.
53            
54           See L about the S_I* constants.
55            
56           =cut
57            
58 1     1 6 use strict;
  1       2  
  1       355  
59           our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
60            
61           require Exporter;
62           require XSLoader;
63           @ISA = qw(Exporter);
64           $VERSION = '1.11';
65            
66           XSLoader::load();
67            
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            
88           # Items to export into callers namespace by default
89           # (move infrequently used names to @EXPORT_OK below)
90           @EXPORT =
91           qw(
92           FD_CLOEXEC
93           F_ALLOCSP
94           F_ALLOCSP64
95           F_COMPAT
96           F_DUP2FD
97           F_DUPFD
98           F_EXLCK
99           F_FREESP
100           F_FREESP64
101           F_FSYNC
102           F_FSYNC64
103           F_GETFD
104           F_GETFL
105           F_GETLK
106           F_GETLK64
107           F_GETOWN
108           F_NODNY
109           F_POSIX
110           F_RDACC
111           F_RDDNY
112           F_RDLCK
113           F_RWACC
114           F_RWDNY
115           F_SETFD
116           F_SETFL
117           F_SETLK
118           F_SETLK64
119           F_SETLKW
120           F_SETLKW64
121           F_SETOWN
122           F_SHARE
123           F_SHLCK
124           F_UNLCK
125           F_UNSHARE
126           F_WRACC
127           F_WRDNY
128           F_WRLCK
129           O_ACCMODE
130           O_ALIAS
131           O_APPEND
132           O_ASYNC
133           O_BINARY
134           O_CREAT
135           O_DEFER
136           O_DIRECT
137           O_DIRECTORY
138           O_DSYNC
139           O_EXCL
140           O_EXLOCK
141           O_LARGEFILE
142           O_NDELAY
143           O_NOCTTY
144           O_NOFOLLOW
145           O_NOINHERIT
146           O_NONBLOCK
147           O_RANDOM
148           O_RAW
149           O_RDONLY
150           O_RDWR
151           O_RSRC
152           O_RSYNC
153           O_SEQUENTIAL
154           O_SHLOCK
155           O_SYNC
156           O_TEMPORARY
157           O_TEXT
158           O_TRUNC
159           O_WRONLY
160           );
161            
162           # Other items we are prepared to export if requested
163           @EXPORT_OK = (qw(
164           DN_ACCESS
165           DN_ATTRIB
166           DN_CREATE
167           DN_DELETE
168           DN_MODIFY
169           DN_MULTISHOT
170           DN_RENAME
171           F_GETLEASE
172           F_GETSIG
173           F_NOTIFY
174           F_SETLEASE
175           F_SETSIG
176           LOCK_MAND
177           LOCK_READ
178           LOCK_RW
179           LOCK_WRITE
180           O_IGNORE_CTTY
181           O_NOATIME
182           O_NOLINK
183           O_NOTRANS
184           ), map {@{$_}} values %EXPORT_TAGS);
185            
186           1;