NAME

POSIX::1003::FS - POSIX for the file-system

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.

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.

Warning, POSIX uses different parameter order:

# 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).

utime(ATIME, MTIME, FILENAMES)

Simply CORE::utime()

Warning, 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_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_IFLNK       40960   S_ISVTX       512
FILENAME_MAX  4096    S_IFMT        61440   S_IWGRP       16
MAX_CANON     255     S_IFREG       32768   S_IWOTH       2
NAME_MAX      255     S_IFSOCK      49152   S_IWUSR       128
PATH_MAX      4096    S_IRGRP       32      S_IXGRP       8
R_OK          4       S_IROTH       4       S_IXOTH       1
S_IFBLK       24576   S_IRUSR       256     S_IXUSR       64
S_IFCHR       8192    S_IRWXG       56      W_OK          2
S_IFDIR       16384   S_IRWXO       7       X_OK          1
S_IFIFO       4096    S_IRWXU       448     

All functions and constants which start with S_* can be imported using the :stat tag, including all related S_IF* functions. The *_OK tags can be imported with :access =cut

SEE ALSO

This module is part of POSIX-1003 distribution version 0.92, built on February 25, 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