=head1 DESCRIPTION
-This module is just a translation of the C F<fnctl.h> file.
-Unlike the old mechanism of requiring a translated F<fnctl.ph>
+This module is just a translation of the C F<fcntl.h> file.
+Unlike the old mechanism of requiring a translated F<fcntl.ph>
file, this uses the B<h2xs> program (see the Perl source distribution)
and your native C compiler. This means that it has a
far more likely chance of getting the numbers right.
require Exporter;
use XSLoader ();
@ISA = qw(Exporter);
-$VERSION = "1.04";
+BEGIN {
+ $VERSION = "1.05";
+}
+
# Items to export into callers namespace by default
# (move infrequently used names to @EXPORT_OK below)
@EXPORT =
)],
);
-sub S_IFMT { @_ ? ( $_[0] & _S_IFMT() ) : _S_IFMT() }
+# Force the constants to become inlined
+BEGIN {
+ XSLoader::load 'Fcntl', $VERSION;
+}
+
+sub S_IFMT { @_ ? ( $_[0] & _S_IFMT ) : _S_IFMT }
sub S_IMODE { $_[0] & 07777 }
-sub S_ISREG { ( $_[0] & _S_IFMT() ) == S_IFREG() }
-sub S_ISDIR { ( $_[0] & _S_IFMT() ) == S_IFDIR() }
-sub S_ISLNK { ( $_[0] & _S_IFMT() ) == S_IFLNK() }
-sub S_ISSOCK { ( $_[0] & _S_IFMT() ) == S_IFSOCK() }
-sub S_ISBLK { ( $_[0] & _S_IFMT() ) == S_IFBLK() }
-sub S_ISCHR { ( $_[0] & _S_IFMT() ) == S_IFCHR() }
-sub S_ISFIFO { ( $_[0] & _S_IFMT() ) == S_IFIFO() }
-sub S_ISWHT { ( $_[0] & _S_IFMT() ) == S_IFWHT() }
-sub S_ISENFMT { ( $_[0] & _S_IFMT() ) == S_IFENFMT() }
+sub S_ISREG { ( $_[0] & _S_IFMT ) == S_IFREG }
+sub S_ISDIR { ( $_[0] & _S_IFMT ) == S_IFDIR }
+sub S_ISLNK { ( $_[0] & _S_IFMT ) == S_IFLNK }
+sub S_ISSOCK { ( $_[0] & _S_IFMT ) == S_IFSOCK }
+sub S_ISBLK { ( $_[0] & _S_IFMT ) == S_IFBLK }
+sub S_ISCHR { ( $_[0] & _S_IFMT ) == S_IFCHR }
+sub S_ISFIFO { ( $_[0] & _S_IFMT ) == S_IFIFO }
+sub S_ISWHT { ( $_[0] & _S_IFMT ) == S_IFWHT }
+sub S_ISENFMT { ( $_[0] & _S_IFMT ) == S_IFENFMT }
sub AUTOLOAD {
(my $constname = $AUTOLOAD) =~ s/.*:://;
goto &$AUTOLOAD;
}
-XSLoader::load 'Fcntl', $VERSION;
-
1;