AFS-Command
view release on metacpan or search on metacpan
lib/AFS/Command/PTS.pm view on Meta::CPAN
return if $errors;
return $result;
}
sub listowned {
my $self = shift;
my (%args) = @_;
my $result = AFS::Object::PTServer->new();
$self->{operation} = "listowned";
return unless $self->_parse_arguments(%args);
my $errors = 0;
$errors++ unless $self->_exec_cmds( stderr => 'stdout' );
my $user = undef;
my $group = undef;
while ( defined($_ = $self->{handle}->getline()) ) {
if ( /Groups owned by (\S+) \(id: (-?\d+)\)/ ) {
$result->_addUser($user) if $user;
$result->_addGroup($group) if $group;
my ($name,$id) = ($1,$2);
if ( $id > 0 ) {
$user = AFS::Object::User->new
(
name => $name,
id => $id,
);
$group = undef;
} else {
$group = AFS::Object::Group->new
(
name => $name,
id => $id,
);
$user = undef;
}
} elsif ( /^\s+(\S+)\s*/ ) {
if ( $user ) {
$user->_addOwned($1);
} else {
$group->_addOwned($2);
}
} elsif ( /unable to get owner list/ ) {
#
# pts still (as of OpenAFS 1.2.8) doesn't have proper exit codes.
# If we see this string, then let the command fail, even
# though we might have partial data.
#
$self->{errors} .= $_;
$errors++;
}
}
$result->_addUser($user) if $user;
$result->_addGroup($group) if $group;
$errors++ unless $self->_reap_cmds();
return if $errors;
return $result;
}
sub membership {
my $self = shift;
my (%args) = @_;
my $result = AFS::Object::PTServer->new();
$self->{operation} = "membership";
return unless $self->_parse_arguments(%args);
my $errors = 0;
$errors++ unless $self->_exec_cmds( stderr => 'stdout' );
my $user = undef;
my $group = undef;
while ( defined($_ = $self->{handle}->getline()) ) {
if ( /(\S+) \(id: (-?\d+)\)/ ) {
$result->_addUser($user) if $user;
$result->_addGroup($group) if $group;
my ($name,$id) = ($1,$2);
if ( $id > 0 ) {
$user = AFS::Object::User->new
(
name => $name,
id => $id,
);
$group = undef;
} else {
$group = AFS::Object::Group->new
(
name => $name,
id => $id,
);
$user = undef;
}
} elsif ( /^\s+(\S+)\s*/ ) {
if ( $user ) {
$user->_addMembership($1);
} else {
$group->_addMembership($1);
}
} elsif ( /unable to get membership/ ||
/User or group doesn't exist/ ||
/membership list for id \d+ exceeds display limit/ ) {
#
# pts still (as of OpenAFS 1.2.8) doesn't have proper exit codes.
# If we see this string, then let the command fail, even
# though we might have partial data.
#
$self->{errors} .= $_;
$errors++;
}
}
$result->_addUser($user) if $user;
$result->_addGroup($group) if $group;
$errors++ unless $self->_reap_cmds();
return if $errors;
return $result;
}
1;
( run in 1.833 second using v1.01-cache-2.11-cpan-d8267643d1d )