ClearCase-Wrapper-DSB
view release on metacpan or search on metacpan
}
if (-e "$vws/.pid") {
warn Msg('W', "cannot protect running view $vws");
$rc = 1;
next;
}
}
if ($opt{chown} || $opt{chgrp} || $opt{chmod}) {
my $uid = $opt{chown} || (stat "$idedir/uid")[4];
$uid = (getpwnam($uid))[2] unless $uid =~ /^\d+$/;
my $gid = $opt{chgrp} || (stat "$idedir/gid")[5];
$gid = (getgrnam($gid))[2] unless $gid =~ /^\d+$/;
if ($opt{replace}) {
my $fp = Argv->new('/usr/atria/etc/utils/fix_prot');
$fp->opts(qw(-root -recurse));
$fp->opts($fp->opts, '-force') if $opt{force};
$fp->opts($fp->opts, '-chown', $uid);
$fp->opts($fp->opts, '-chgrp', $gid);
$fp->opts($fp->opts, '-chmod', $opt{chmod}) if $opt{chmod};
$fp->args($vws);
if ($fp->system) {
$rc = 1;
next;
}
} else {
if ($opt{chown} || $opt{chgrp}) {
unlink("$idedir/group.$gid") if $opt{chgrp};
if (Argv->chown([qw(-R -h)], "$uid:$gid", $vws)->system) {
$rc = 1;
next;
}
}
if ($opt{chmod}) {
if (Argv->chmod(['-R'], $opt{chmod}, $vws)->system) {
$rc = 1;
next;
}
for my $grp (glob("$idedir/group.*")) {
chmod(0102410, $grp) || warn Msg('W', "$grp: $!");
}
}
chmod(0104400, "$idedir/uid") ||
warn Msg('W', "$idedir/uid: $!");
chmod(0102410, "$idedir/gid") ||
warn Msg('W', "$idedir/gid: $!");
}
}
if ($opt{delete_group}) {
for (split ',', $opt{delete_group}) {
my $gid = /^\d+$/ ? $_ : (getgrnam($_))[2];
if (! $gid) {
warn Msg('W', "no such group: $_");
$rc = 1;
next;
}
my $grp = "$idedir/group.$gid";
unlink($grp);
}
}
if ($opt{add_group}) {
for (split ',', $opt{add_group}) {
my $gid = /^\d+$/ ? $_ : (getgrnam($_))[2];
if (! $gid) {
warn Msg('W', "no such group: $_");
$rc = 1;
next;
}
my $grp = "$idedir/group.$gid";
unlink($grp);
if (! open(GID, ">$grp")) {
warn Msg('W', "$vws: unable to add group $_");
$rc = 1;
next;
}
close(GID);
if (! chown(-1, $gid, $grp) || ! chmod(0102410, $grp)) {
warn Msg('W', "$vws: unable to add group $_: $!");
$rc = 1;
next;
}
}
}
}
exit($rc);
}
grep {!m%\.(?:mvfs|nfs)\d+|cmake\.state%} @list;
exit 0 if ! %set;
if ($opt{'print'}) {
for (keys %set) {
print $_, "\n";
}
print $opt{meta}, "\n" if $opt{meta};
exit 0;
}
# Shared DO's should be g+w!
(my $egid = $)) =~ s%\s.*%%;
for (keys %set) {
my($mode, $uid, $gid) = (stat($_))[2,4,5];
if (!defined($mode)) {
warn Msg('W', "no such file: $_");
delete $set{$_};
next;
}
next if $uid != $> || ($mode & 0222) || ($mode & 0220 && $gid == $egid);
chmod(($mode & 07777) | 0220, $_);
}
my @dolist = sort keys %set;
# Add the -meta file to the list of DO's if specified.
if ($opt{meta}) {
if ($dbg) {
my $num = @dolist;
print STDERR "+ associating $num files with $opt{meta} ...\n";
}
open(META, ">$opt{meta}") || die Msg('E', "$opt{meta}: $!");
( run in 1.412 second using v1.01-cache-2.11-cpan-5735350b133 )