Sys-Config-Manage

 view release on metacpan or  search on metacpan

lib/Sys/Config/Manage/Ownership.pm  view on Meta::CPAN

                $self->{scm}->error.'" errorString="'.$self->{scm}->errorString.'"';
			$self->warn;
            return undef;
        }
		
		#make sure each file asked to be synced is tracked
		while(defined( $files[$int]  )){

			my $matched=0;
			my $int2=0;
			while(defined( $allfiles[$int2] )){
				if( $files[$int] eq $allfiles[$int2] ){
					$matched=1;
				}

				$int2++;
			}

			if(! $matched){
				$self->{error}='8';
				$self->{errorString}='"'.$files[$int].'" does not exist under the configuration directory, "'.$configDir.'",';
				$self->warn;
				return undef;
			}

			$int++;
		}

	}else{
		#if we get here, no files have been specified so we do them all
		@files=$self->{scm}->listConfigFiles($configDir);
		if( $self->{scm}->error ){
			$self->{error}='16';
			$self->{errorString}='Sys::Config::Manage->listConfigFiles errored error="'.
				$self->{scm}->error.'" errorString="'.$self->{scm}->errorString.'"';
			$self->warn;
			return undef;
		}
	}

	#process each file
	$int=0;
	while( defined( $files[$int] ) ){
		#get the perms for the file we will set it on
		my $uid=$self->getUID( $configDir, $files[$int] );
		if( $self->error ){
			warn($self->{module}.' '.$method.': Sys::Config::Manage::Ownership->getUID errored');
			return undef;
		}

		#get the perms for the file we will set it on
		my $gid=$self->getGID( $configDir, $files[$int] );
		if( $self->error ){
			warn($self->{module}.' '.$method.': Sys::Config::Manage::Ownership->getGID errored');
			return undef;
		}

		#try to chmod it
		if(!chmod( $uid, $gid, $files[$int] )){
			$self->{error}='17';
            $self->{errorString}='chown( '.$uid.', '.$gid.', "'.$files[$int].'") errored';
			$self->warn;
            return undef;
		}
		
		$int++;
	}

	return 1;
}

=head2 getGID

This retrieves the GID for a file.

Two arguments are taken.The first is the configuration directory,
which if not defined is automatically chosen. The second is the
file in question.

    my $gid=$foo->getGID( $configDir, $file );
    if($foo->error){
        warn('error:'.$foo->error.': '.$foo->errorString);
    }

=cut

sub getGID{
    my $self=$_[0];
    my $configDir=$_[1];
    my $file=$_[2];
	my $method='getGID';

    #blank any previous errors
    if (!$self->errorblank) {
        return undef;
    }

	#make sure we have a directory to use
	if (!defined($configDir)) {
		$configDir=$self->{scm}->selectConfigDir;
		if ($self->{scm}->error) {
			$self->{error}=5;
			$self->{errorString}='Sys::Config::Manage->selectConfigDir errored error="'.
				$self->{scm}->error.'" errorString="'.$self->{scm}->errorString.'"';
			$self->warn;
			return undef;
		}
	}
	
	#make sure the config directory is valid
	my $valid=$self->{scm}->validConfigDirName($configDir);
	if ($self->{scm}->error) {
		$self->{error}=6;
		$self->{errorString}='Sys::Config::Manage->validConfigDirName errored error="'.
			$self->{scm}->error.'" errorString="'.$self->{scm}->errorString.'"';
		$self->warn;
		return undef;
	}
	if (defined( $valid )) {
		$self->{error}=3;
		$self->{errorString}='The configuration directory name '.$valid;



( run in 1.356 second using v1.01-cache-2.11-cpan-5511b514fd6 )