File: uninstall.pl

package info (click to toggle)
dlm 0.trunk20050206-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 264 kB
  • ctags: 671
  • sloc: ansic: 4,128; makefile: 189; perl: 165
file content (84 lines) | stat: -rwxr-xr-x 2,473 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/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";
  }
}