NAME
File::Stat::Bits - stat(2) bit mask constants
SYNOPSIS
use
File::Stat::Bits;
my
$st
=
stat
(
$file
) or
die
"Can't stat $file: $!"
;
if
( S_ISCHR(
$st
->mode) ) {
my
(
$major
,
$minor
) = dev_split(
$st
->rdev );
"$file is character device $major:$minor\n"
;
}
printf
"Permissions are %04o\n"
,
$st
->mode & ALLPERMS;
(Too many S_IF* constants to example)
DESCRIPTION
Lots of Perl modules use the Unix file permissions and type bits directly in binary form with risk of non-portability for some exotic bits. Note that the POSIX module does not provides all needed constants and I can't wait when the POSIX module will be updated.
This separate module provides file type/mode bit and more constants from sys/stat.ph and sys/sysmacros.ph without pollution caller's namespace by other unneeded symbols from these headers. Most of these constants exported by this module are Constant Functions (see perlsub).
Since some of Perl builds does not include these converted headers, the build procedure will generate it for itself in the its own lib directory.
This module also should concentrate all portability and compatibility issues.
CONSTANTS
File type bit masks (for the st_mode field):
S_IFMT bitmask
for
the file type bitfields
S_IFDIR directory
S_IFCHR character device
S_IFBLK block device
S_IFREG regular file
S_IFIFO fifo (named
pipe
)
S_IFLNK symbolic
link
S_IFSOCK
socket
File access permission bit masks (for the st_mode field):
S_IRWXU mask
for
file owner permissions
S_IRUSR owner
has
read
permission
S_IWUSR owner
has
write
permission
S_IXUSR owner
has
execute permission
S_ISUID set UID bit
S_IRWXG mask
for
group permissions
S_IRGRP group
has
read
permission
S_IWGRP group
has
write
permission
S_IXGRP group
has
execute permission
S_ISGID set GID bit
S_IRWXO mask
for
permissions
for
others
S_IROTH others have
read
permission
S_IWOTH others have
write
permisson
S_IXOTH others have execute permission
S_ISVTX sticky bit
Common mode bit masks:
ACCESSPERMS 0777
ALLPERMS 07777
DEFFILEMODE 0666
FUNCTIONS
File type test macros (for the st_mode field):
S_ISDIR ( mode ) directory?
S_ISCHR ( mode ) character device?
S_ISBLK ( mode ) block device?
S_ISREG ( mode ) regular file?
S_ISFIFO( mode ) fifo (named
pipe
)?
S_ISLNK ( mode ) is it a symbolic
link
?
S_ISSOCK( mode )
socket
?
All returns boolean value.
$major = major( $st_rdev )
Returns major device number of st_rdev
$minor = minor( $st_rdev )
Returns minor device number of st_rdev
($major, $minor) = dev_split( $st_rdev )
Splits st_rdev to major and minor device numbers
$st_rdev = dev_join( $major, $minor )
Makes st_rdev from major and minor device numbers (makedev())
NOTE
If major/minor definitions absent in reasonable set of system C headers all major/minor related functions returns undef.
SEE ALSO
AUTHOR
Dmitry Fedorov <dm.fedorov@gmail.com>
COPYRIGHT
Copyright (C) 2003 Dmitry Fedorov <dm.fedorov@gmail.com>
LICENSE
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
DISCLAIMER
The author disclaims any responsibility for any mangling of your system etc, that this script may cause.