QuadPres
view release on metacpan or search on metacpan
lib/QuadPres/FS.pm view on Meta::CPAN
package QuadPres::FS;
$QuadPres::FS::VERSION = '0.32.0';
use 5.016;
use strict;
use warnings;
use parent 'QuadPres::Base';
__PACKAGE__->mk_acc_ref( [qw( gid group )] );
sub _init
{
my $self = shift;
my %args = @_;
my $group;
$group = $args{group};
$self->set_group($group);
# Set the umask to ensure that other users which are a member of $group
# can write to the files and directories generated by the program.
umask(0002);
return 0;
}
sub set_group
{
my $self = shift;
my $group = shift;
$self->group($group);
my $gid;
# Check if the group is not empty.
if ( defined($group) && ( $group !~ /^\s*$/ ) )
{
if ( $group =~ /^\d+$/ )
{
$gid = $group;
}
else
{
my @group_info = getgrnam($group);
if (@group_info)
{
$gid = $group_info[2];
}
}
$self->gid($gid);
}
return 0;
}
sub my_chown
{
my $self = shift;
my $path = shift;
if ( !defined( $self->gid ) )
{
return;
}
chown( -1, $self->gid, $path );
return;
}
sub make_dest_dir
{
my $self = shift;
my $dest_dir = shift;
# Check if the destination directory exists and if not -
# create it.
if ( !-e $dest_dir )
{
mkdir($dest_dir);
# Make it belong to the common group
$self->my_chown($dest_dir);
# Make it a SGID directory
# This means that subsequent files will belong to its group.
# And that subsequent directories inside will also be SGID.
chmod( 02775, $dest_dir );
}
return;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
QuadPres::FS - filesystem utils
=head1 VERSION
version 0.32.0
=head1 SYNOPSIS
=head1 DESCRIPTION
=head1 METHODS
=head2 gid
=head2 group
=head2 make_dest_dir($dest_dir)
=head2 my_chown($dest_dir)
=head2 set_group
=head2
=for :stopwords cpan testmatrix url bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
=head1 SUPPORT
=head2 Websites
The following websites have more information about this module, and may be of help to you. As always,
in addition to those websites please use your favorite search engine to discover more resources.
=over 4
=item *
MetaCPAN
A modern, open-source CPAN search engine, useful to view POD in HTML format.
L<https://metacpan.org/release/QuadPres>
=item *
RT: CPAN's Bug Tracker
The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
L<https://rt.cpan.org/Public/Dist/Display.html?Name=QuadPres>
=item *
CPANTS
The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
L<http://cpants.cpanauthors.org/dist/QuadPres>
=item *
CPAN Testers
The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
L<http://www.cpantesters.org/distro/Q/QuadPres>
=item *
CPAN Testers Matrix
The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
L<http://matrix.cpantesters.org/?dist=QuadPres>
=item *
CPAN Testers Dependencies
( run in 1.575 second using v1.01-cache-2.11-cpan-71847e10f99 )