The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/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;