NAME
POSIX::1003::FS - POSIX for the file-system
INHERITANCE
POSIX::1003::FS
is a POSIX::1003::Module
SYNOPSIS
use POSIX::1003::FS ':access';
if(access $fn, R_OK) # $fn is readible?
use POSIX::1003::FS qw(mkfifo :stat);
mkfifo($path, S_IRUSR|S_IWUSR) or die $!;
# Absorbed from Unix::Mknod
use POSIX::1003::FS qw(mknod major minor makedev);
use File::stat
my $st = stat '/dev/null';
my $major = major $st->rdev;
my $minor = minor $st->rdev;
mknod '/tmp/special', S_IFCHR|0600, makedev($major,$minor+1);
DESCRIPTION
You may also need POSIX::1003::Pathconf.
See documentation in the base class.
METHODS
See documentation in the base class.
FUNCTIONS
Standard POSIX
- access(FILENAME, FLAGS)
-
Read
man filetest
before you start using this function! Use the*_OK
constants for FLAGS. - lchown(UID, GID, FILENAMES)
-
Like
chown()
, but does not follow symlinks when encountered. Returns the number of files successfully changed.Be Warned that the POSIX specification uses different parameter order. For Perl was decided to accept a list of filenames. Passing more than one filename, however, hinders correct error reporting.
# POSIX specification: # int lchown(const char *path, uid_t owner, gid_t group); # Perl core implementation: my $successes = chown($uid, $gid, @filenames); use POSIX; POSIX::lchown($uid, $gid, $filename) or die $!; use POSIX::1003::FS 'lchown'; my @successes = lchown($uid, $gid, @filenames);
- mkdir([FILENAME [MASK]])
-
Simple
CORE::mkdir()
- mkfifo(FILENAME, MODE)
- mknod(PATH, MODE, DEVICE)
-
Create a special device node on PATH. Useful symbols for MODE can be collected from Fcntl (import tag
:mode
). The DEVICE number is a combination from the type (major number), a sequence number and usage information (combined in a minor number). - rename(OLDNAME, NEWNAME)
-
[0.93] Give a file or directory a new name, the basis of the UNIX
mv
('move') command. This will useCORE::rename()
.Be warned that Window's
rename
implementation will fail when NEWNAME exists. That behavior is not POSIX compliant. On many platforms (especially the older), arename
between different partitions is not allowed. - utime(ATIME, MTIME, FILENAMES)
-
Simply
CORE::utime()
Be Warned that
POSIX.pm
uses a different parameter order than CORE.POSIX::utime($filename, $atime, $mtime); CORE::utime($atime, $mtime, @filenames);
Additional
- S_ISBLK(MODE)
- S_ISCHR(MODE)
- S_ISDIR(MODE)
-
example:
use File::stat 'stat'; if(S_ISDIR(stat($fn)->mode)) ... if(S_ISDIR((lstat $fn)[2])) ...
- S_ISFIFO(MODE)
- S_ISLNK(MODE)
- S_ISREG(MODE)
- S_ISSOCK(MODE)
- S_ISVTX(MODE)
- S_ISWHT(MODE)
- major(DEVICE)
- makedev(MAJOR, MINOR)
-
Combine MAJOR and MINOR into a single DEVICE number.
my $device = (stat $filename)[6]; my $device_type = major $device; my $sequence_nr = minor $device; my $device = makedev $major, $minor; mknod $specialfile, $mode, $device;
- minor(DEVICE)
CONSTANTS
The following constants are exported, shown here with the values discovered during installation of this module:
F_OK 0 S_IFMT 61440 S_ISVTX 512
FILENAME_MAX 4096 S_IFREG 32768 S_IWGRP 16
MAX_CANON 255 S_IFSOCK 49152 S_IWOTH 2
NAME_MAX 255 S_IRGRP 32 S_IWUSR 128
PATH_MAX 4096 S_IROTH 4 S_IXGRP 8
R_OK 4 S_IRUSR 256 S_IXOTH 1
S_IFBLK 24576 S_IRWXG 56 S_IXUSR 64
S_IFCHR 8192 S_IRWXO 7 W_OK 2
S_IFDIR 16384 S_IRWXU 448 X_OK 1
S_IFIFO 4096 S_ISGID 1024
S_IFLNK 40960 S_ISUID 2048
All functions and constants which start with S_*
can be imported using the :stat
tag, including all related S_IS*
functions.
The *_OK
tags can be imported with :access
Permission flags get loaded with :perms
.
SEE ALSO
This module is part of POSIX-1003 distribution version 0.96, built on November 28, 2013. Website: http://perl.overmeer.net. The code is based on POSIX, which is released with Perl itself. See also POSIX::Util for additional functionality.
COPYRIGHTS
Copyrights 2011-2013 on the perl code and the related documentation by [Mark Overmeer]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html