Any-Daemon-HTTP
view release on metacpan or search on metacpan
lib/Any/Daemon/HTTP/Directory.pm view on Meta::CPAN
}
my %filetype =
( &S_IFSOCK => 's', &S_IFLNK => 'l', &S_IFREG => '-', &S_IFBLK => 'b'
, &S_IFDIR => 'd', &S_IFCHR => 'c', &S_IFIFO => 'p');
my @flags = ('---', '--x', '-w-', '-wx', 'r--', 'r-x', 'rw-', 'rwx');
my @stat_fields =
qw/dev ino mode nlink uid gid rdev size atime mtime ctime blksize blocks/;
sub list($@)
{ my ($self, $dirname, %opts) = @_;
opendir my $from_dir, $dirname
or return;
my $names = $opts{names} || qr/^[^.]/;
my $prefilter
= ref $names eq 'Regexp' ? sub { $_[0] =~ $names }
lib/Any/Daemon/HTTP/Directory.pm view on Meta::CPAN
($s,$l) = ($s/1024, 'kB') if $s > 1024;
($s,$l) = ($s/1024, 'MB') if $s > 1024;
($s,$l) = ($s/1024, 'GB') if $s > 1024;
$d{size_nice} = sprintf +($s>=100?"%.0f%s":"%.1f%s"), $s,$l;
}
elsif($d{is_directory})
{ $d{name} .= '/';
}
$d{user} = $users{$d{uid}} ||= getpwuid $d{uid};
$d{group} = $users{$d{gid}} ||= getgrgid $d{gid};
my $mode = $d{mode};
my $b = $filetype{$mode & S_IFMT} || '?';
$b .= $flags[ ($mode & S_IRWXU) >> 6 ];
substr($b, -1, -1) = 's' if $mode & S_ISUID;
$b .= $flags[ ($mode & S_IRWXG) >> 3 ];
substr($b, -1, -1) = 's' if $mode & S_ISGID;
$b .= $flags[ $mode & S_IRWXO ];
substr($b, -1, -1) = 't' if $mode & S_ISVTX;
$d{flags} = $b;
lib/Any/Daemon/HTTP/Directory.pod view on Meta::CPAN
=head2 Return of list()
The L<list()|Any::Daemon::HTTP::Directory/"Actions"> method returns a HASH of HASHes, where the
primary keys are the directory entries, each refering to a HASH
with details. It is designed to ease the connection to template
systems.
The details contain the C<lstat> information plus some additional
helpers. The lstat call provides the fields C<dev>, C<ino>, C<mode>,
C<nlink>, C<uid>, C<gid>, C<rdev>, C<size>, C<atime>, C<mtime>,
C<ctime>, C<blksize>, C<blocks> -as far as supported by your OS.
The entry's C<name> and C<path> are added.
The C<kind> field contains the string C<DIRECTORY>, C<FILE>, C<SYMLINK>,
or C<OTHER>. Besides, you get either an C<is_directory>, C<is_file>,
C<is_symlink>, or C<is_other> field set to true. Equivalent are:
if($entry->{kind} eq 'DIRECTORY')
if($entry->{is_directory})
It depends on the kind of entry which of the following fields are added
additionally. Symlinks will get C<symlink_dest>, C<symlink_dest_exists>.
Files hace the C<size_nice>, which is the size in pleasant humanly readable
format.
Files and directories have the C<mtime_nice> (in localtime). The C<user> and
C<group> which are textual representations of the numeric uid and gid are
added. The C<flags> represents the UNIX standard permission-bit display,
as produced by the "ls -l" command.
=head1 SEE ALSO
This module is part of Any-Daemon-HTTP distribution version 0.30,
built on April 06, 2020. Website: F<http://perl.overmeer.net/any-daemon/>
=head1 LICENSE
( run in 1.036 second using v1.01-cache-2.11-cpan-5735350b133 )