You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.4 KiB
66 lines
1.4 KiB
#!/usr/bin/perl
|
|
|
|
# $RCSfile: unvanish,v $$Revision: 4.1 $$Date: 92/08/07 17:20:52 $
|
|
|
|
sub it {
|
|
if ($olddir ne '.') {
|
|
chop($pwd = `pwd`) if $pwd eq '';
|
|
(chdir $olddir) || die "Directory $olddir is not accesible";
|
|
}
|
|
unless ($olddir eq '.deleted') {
|
|
if (-d '.deleted') {
|
|
chdir '.deleted' || die "Directory .deleted is not accesible";
|
|
}
|
|
else {
|
|
chop($pwd = `pwd`) if $pwd eq '';
|
|
die "Directory .deleted does not exist" unless $pwd =~ /\.deleted$/;
|
|
}
|
|
}
|
|
print `mv $startfiles$filelist..$force`;
|
|
if ($olddir ne '.') {
|
|
(chdir $pwd) || die "Can't get back to original directory $pwd: $!\n";
|
|
}
|
|
}
|
|
|
|
if ($#ARGV < 0) {
|
|
open(lastcmd,'.deleted/.lastcmd') ||
|
|
open(lastcmd,'.lastcmd') ||
|
|
die "No previous vanish in this dir";
|
|
$ARGV = <lastcmd>;
|
|
close(lastcmd);
|
|
@ARGV = split(/[\n ]+/,$ARGV);
|
|
}
|
|
|
|
while ($ARGV[0] =~ /^-/) {
|
|
$_ = shift;
|
|
/^-f/ && ($force = ' >/dev/null 2>&1');
|
|
/^-i/ && ($interactive = 1);
|
|
if (/^-+$/) {
|
|
$startfiles = '- ';
|
|
last;
|
|
}
|
|
}
|
|
|
|
while ($file = shift) {
|
|
if ($file =~ s|^(.*)/||) {
|
|
$dir = $1;
|
|
}
|
|
else {
|
|
$dir = '.';
|
|
}
|
|
|
|
if ($dir ne $olddir) {
|
|
do it() if $olddir;
|
|
$olddir = $dir;
|
|
}
|
|
|
|
if ($interactive) {
|
|
print "unvanish: restore $dir/$file? ";
|
|
next unless <stdin> =~ /^y/i;
|
|
}
|
|
|
|
$filelist .= $file; $filelist .= ' ';
|
|
|
|
}
|
|
|
|
do it() if $olddir;
|