1#!/bin/sh
2#
3# A safe wrapper around rm(1) to avoid cleaning out folks' rootfs's or build
4# machines by accident.
5#
6#    Copyright (C) 2010, Cisco Systems Inc.
7#
8#    This program is free software; you can redistribute it and/or modify
9#    it under the terms of the GNU General Public License as published by
10#    the Free Software Foundation; either version 2 of the License, or
11#    (at your option) any later version.
12#
13#    This program is distributed in the hope that it will be useful,
14#    but WITHOUT ANY WARRANTY; without even the implied warranty of
15#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16#    GNU General Public License for more details.
17#
18#    You should have received a copy of the GNU General Public License along
19#    with this program; if not, write to the Free Software Foundation, Inc.,
20#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21#
22# Feel free to use this in your standard builds, or just leave it be (it has
23# been added to the build tests that should be run before each release to avoid
24# build regressions).
25#
26# Ngie Cooper, February 2010
27#
28
29. "${0%/*}/lib/file_functions.sh"
30
31opts=
32opts_parse_done=0
33
34set -e
35
36while [ $# -gt 0 ] ; do
37
38	if [ $opts_parse_done -eq 0 ] ; then
39
40		case "$1" in
41		-*)
42			[ "x$1" = "x--" ] && opts_parse_done=1
43			# None of the options to rm(1) are keyed.
44			opts="$opts $1"
45			;;
46		*)
47			opts_parse_done=1
48			;;
49		esac
50
51	fi
52
53	if [ $opts_parse_done -eq 1 ] ; then
54
55		abspath_file=$(_abspath "$1")
56
57		if [ "x$abspath_file" = "x/" ] ; then
58
59			cat <<EOF >&2
60${0##*/}: ERROR : not removing \`$1' to avoid removing root directory\!
61EOF
62			false
63
64		else
65
66			if [ "x${SIMULATE_RM:-1}" != x1 ] ; then
67				rm ${opts:--f} "$abspath_file"
68			fi
69
70		fi
71
72	fi
73
74	shift
75
76done
77