rlm@1: #!/bin/bash
rlm@1: # Copyright (c) 2004 Matthias S. Benkmann <article AT winterdrache DOT de>
rlm@1: # You may do everything with this code except misrepresent its origin.
rlm@1: # PROVIDED `AS IS' WITH ABSOLUTELY NO WARRANTY OF ANY KIND!
rlm@1: 
rlm@1: DAISY_CHAIN=""
rlm@1: 
rlm@1: for p in $(type -ap chmod) ; do
rlm@1:   if [ ! $p -ef $0 ]; then DAISY_CHAIN=$p ; break ; fi
rlm@1: done
rlm@1: 
rlm@1: if [ ! -n "$DAISY_CHAIN" ]; then
rlm@1:   echo Cannot find real ${0##*/} command 
rlm@1:   exit 1
rlm@1: fi
rlm@1: 
rlm@1: if [ $UID == 0 ]; then
rlm@1:   exec $DAISY_CHAIN "$@"
rlm@1: fi
rlm@1: 
rlm@1: report=0
rlm@1: doit=1
rlm@1: reportmsg="*** chmod $@"
rlm@1: 
rlm@1: set -- "$@" eND_ofLisT
rlm@1: while true ; do
rlm@1:   arg="$1"
rlm@1:   shift 1
rlm@1:   case "_$arg" in
rlm@1:     _eND_ofLisT) break ;;
rlm@1:     _g+s|_u+s) report=1; doit=0  ;;
rlm@1:     _4755) arg=755 ; report=1; doit=1 ;;
rlm@1:     _4555) arg=555 ; report=1; doit=1 ;;
rlm@1:     *) ;;
rlm@1:   esac
rlm@1:   set -- "$@" "$arg"
rlm@1: done
rlm@1: 
rlm@1: if [ "$report" = 1 ]; then echo 1>&2 "$reportmsg" ; fi
rlm@1: 
rlm@1: if [ "$doit" = 1 ]; then  
rlm@1:   exec $DAISY_CHAIN "$@"
rlm@1: fi
rlm@1: 
rlm@1: exit 0