home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / usr / bin / safe-rm < prev    next >
Text File  |  2006-11-29  |  901b  |  48 lines

  1. #!/bin/bash
  2.  
  3. todo=
  4. opts=
  5. case "${0##*/}" in
  6.     safe-rm)    todo=rm    ; opts=-f ;;
  7.     safe-rmdir) todo=rmdir ; opts=   ;;
  8. esac
  9.  
  10. set -o physical
  11. test -n "$todo"     || exit 2
  12. test -x /bin/$todo  || exit 2
  13. test -x /bin/pwd    || exit 2
  14.  
  15. for d; do
  16.     if [[ "$d" != /* ]] ; then
  17.     echo "usage: $0 _absolute_path_to_file" 1>&2
  18.     exit 1
  19.     fi
  20.     path=${d//\/.\//\/}
  21.     name=${path##*/}
  22.  
  23.     if test "/$name" = "$path" ; then
  24.     echo "$0: usage in root directory not allowed" 1>&2
  25.     exit 1
  26.     fi
  27.     path=${path%/*}
  28.  
  29.     if test -z "${path}" ; then
  30.     echo "$0: empty dirname not allowed" 1>&2
  31.     exit 1
  32.     fi
  33.  
  34.     if cd -P "${path}" && test "${path}" = "$(pwd -P)" ; then
  35.  
  36.     if test "$PWD" = "$(/bin/pwd)" ; then
  37.         /bin/$todo $opts -- "$name"
  38.     else
  39.         echo "$0: no symlinks allowed in the path of $d" 1>&2
  40.         exit 1
  41.     fi
  42.  
  43.     else
  44.     echo "$0: no symlinks allowed in the path of $d" 1>&2
  45.     exit 1
  46.     fi
  47. done
  48.