#!/usr/bin/perl ############################################################################### ############################################################################### ## ## Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. ## Copyright (C) 2004 Red Hat, Inc. All rights reserved. ## ## This copyrighted material is made available to anyone wishing to use, ## modify, copy, or redistribute it subject to the terms and conditions ## of the GNU General Public License v.2. ## ############################################################################### ############################################################################### ## Description: Basically the reverse of the install program, except it ## only supports a list of files and a directory as arguments $| = 1; use Getopt::Std; # list all valid options here. User will get errors if invalid options are # specified on the command line getopts('hD'); $args = 1; # We need at least two arguments to uninstall if(!defined($ARGV[1])) { $args = 0; } # if the user set the help flag or didn't provide enough args, print help # and die. if(defined($opt_h) || ($args == 0)) { $msg = "usage: $0 [OPTIONS] TARGET DIRECTORY\n"; $msg = $msg . "\t-D\tRemove specified directory if empty\n"; $msg = $msg . "\t-h\tDisplay this help message\n"; die $msg; } # find out how many command line arguments we have $length = $#ARGV; # We need a special case if there is only one file specified if($length > 1) { @filelist = @ARGV; $#filelist = $length - 1; } else { @filelist = @ARGV[0]; } # the last argument is the directory $dir = @ARGV[$length]; # prepend the directory name to all files in the filelist $i = 0; print "Attempting to remove the following files from directory $dir/:\n"; while($i < $length) { print "@filelist[$i] "; @filelist[$i] = "$dir/" . @filelist[$i]; $i++; } print "\n"; #print "Files:@filelist\n"; #print "Directory: $dir\n"; # delete the files in filelist $unlinked = unlink @filelist; if($unlinked < $length) { print "Error! Unable to remove all files in $dir:\n\tYou may have to manually delete some of them.\n" } # if user specifed they want the directory deleted, try to delete it. Print # error message if not able to delete directory, including error. if(defined($opt_D)) { $result = rmdir($dir); if($result == FALSE) { print "Error! Unable to remove directory $dir/:\n\t$!\n"; } }