Meta

 view release on metacpan or  search on metacpan

Meta/Utils/File/Prop.pm  view on Meta::CPAN

#!/bin/echo This is a perl module and should not be run

package Meta::Utils::File::Prop;

use strict qw(vars refs subs);
use File::stat qw();
use Meta::Utils::Utils qw();
use Meta::Utils::Output qw();
use Error qw(:try);

our($VERSION,@ISA);
$VERSION="0.31";
@ISA=qw();

#sub chown($$$);
#sub chown_curr($);
#sub chmod_r($);
#sub chmod_x($);
#sub chmod_agw($);
#sub chmod_rgw($);
#sub same_mode($$);
#sub stat($);
#sub size($);
#sub mode($);
#sub is_r($);
#sub TEST($);

#__DATA__

sub chown($$$) {
	my($uidx,$gidx,$file)=@_;
	if(!CORE::chown($uidx,$gidx,$file)) {
		throw Meta::Error::Simple("unable to chown [".$file."] to [".$uidx.",".$gidx."]");
	}
}

sub chown_curr($) {
	my($file)=@_;
	&chown(Meta::Utils::Utils::cuid(),Meta::Utils::Utils::cgid(),$file);
}

sub chmod_r($) {
	my($file)=@_;
	if(!CORE::chmod(0444,$file)) {
		throw Meta::Error::Simple("unable to chmod file [".$file."] to [0444]");
	}
}

sub chmod_x($) {
	my($file)=@_;
	if(!CORE::chmod(0755,$file)) {
		throw Meta::Error::Simple("unable to chmod file [".$file."] to [0755]\n");
	}
}

sub chmod_agw($) {
	my($file)=@_;
	if(!CORE::chmod(mode($file) | 00020,$file)) {
		throw Meta::Error::Simple("unable to chmod file [".$file."] to [| 00020]");
	}
}

sub chmod_rgw($) {
	my($file)=@_;
	if(!CORE::chmod(mode($file) & 07757,$file)) {
		throw Meta::Error::Simple("unable to chmod file [".$file."] to [& 07757]");
	}
}

sub same_mode($$) {
	my($fn1,$fn2)=@_;
	my($mode)=&mode($fn1);
	if(!CORE::chmod($mode,$fn2)) {
		throw Meta::Error::Simple("unable to chmod file [".$fn2."] to [".$mode."]");
	}
}

sub stat($) {
	my($file)=@_;
	my($sb)=File::stat::stat($file);
	if(!$sb) {
		throw Meta::Error::Simple("unable to stat the file [".$file."]");
	}
	return($sb);
}

sub size($) {
	my($file)=@_;
	return(&stat($file)->size());
}

sub mode($) {
	my($file)=@_;
	return(&stat($file)->mode());
}

sub is_r($) {
	my($file)=@_;
	return(&mode($file)==444);
}

sub TEST($) {
	my($context)=@_;
	return(1);
}

1;

__END__

=head1 NAME

Meta::Utils::File::Prop - library to help you chmod files and test file properties.

=head1 COPYRIGHT

Copyright (C) 2001, 2002 Mark Veltzer;
All rights reserved.

=head1 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.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.

=head1 DETAILS

	MANIFEST: Prop.pm
	PROJECT: meta
	VERSION: 0.31

=head1 SYNOPSIS

	package foo;
	use Meta::Utils::File::Prop qw();
	Meta::Utils::File::Prop::chmod_r($file);

=head1 DESCRIPTION

This module eases setting permissions on files.
This module provides method to:
1. change ownerships on files.
2. change read/write/execute permissions on files.
3. get various pieces of info on the file using the stat function.
and other things.

=head1 FUNCTIONS

	chown($$$)
	chown_curr($)
	chmod_r($)
	chmod_x($)
	chmod_agw($)
	chmod_rgw($)
	same_mode($$)
	stat($)
	size($)
	mode($)
	is_r($)
	TEST($)

=head1 FUNCTION DOCUMENTATION

=over 4

=item B<chown($$$)>

This functions receives a uid and a gid and changes a certain files owner
to that uid and gid. The function dies if it cannot do so.

=item B<chown_curr($)>

Changes the owner id and group id of a certain file to the current group
id and owner id.

=item B<chmod_r($)>

This function makes a file read only (receives only one file as argument).

=item B<chmod_x($)>

This function make a file executable too (receives only one file as argument).

=item B<chmod_agw($)>

This functions adds a g+w permission to a file or a directory.

=item B<chmod_rgw($)>

This function adds a g-w permission to a file or a directory.

=item B<same_mode($$)>

This function gets two file names and makes the mode of the second be like
the first.

=item B<stat($)>

This method will stat the file and return the stat structure.

=item B<size($)>

This method returns the size of the file given.

=item B<mode($)>

This functions returns the current mode of a file.
The function dies if it cannot stat the file (which means the file does not
exist...).

=item B<is_r($)>

This function tests whether a file is indeed read only.

=item B<TEST($)>

Test suite for this module.

=back

=head1 SUPER CLASSES

None.

=head1 BUGS

None.

=head1 AUTHOR

	Name: Mark Veltzer



( run in 0.553 second using v1.01-cache-2.11-cpan-71847e10f99 )