Mercurial > pkg
comparison previous-work/more_control_helpers/lib/chmod @ 1:d6bef198ae71
add work by Matthias S. Benkmann which is the inspiration for this project.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Tue, 08 Jan 2013 11:45:01 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:0b7a589f6e9a | 1:d6bef198ae71 |
---|---|
1 #!/bin/bash | |
2 # Copyright (c) 2004 Matthias S. Benkmann <article AT winterdrache DOT de> | |
3 # You may do everything with this code except misrepresent its origin. | |
4 # PROVIDED `AS IS' WITH ABSOLUTELY NO WARRANTY OF ANY KIND! | |
5 | |
6 DAISY_CHAIN="" | |
7 | |
8 for p in $(type -ap chmod) ; do | |
9 if [ ! $p -ef $0 ]; then DAISY_CHAIN=$p ; break ; fi | |
10 done | |
11 | |
12 if [ ! -n "$DAISY_CHAIN" ]; then | |
13 echo Cannot find real ${0##*/} command | |
14 exit 1 | |
15 fi | |
16 | |
17 if [ $UID == 0 ]; then | |
18 exec $DAISY_CHAIN "$@" | |
19 fi | |
20 | |
21 report=0 | |
22 doit=1 | |
23 reportmsg="*** chmod $@" | |
24 | |
25 set -- "$@" eND_ofLisT | |
26 while true ; do | |
27 arg="$1" | |
28 shift 1 | |
29 case "_$arg" in | |
30 _eND_ofLisT) break ;; | |
31 _g+s|_u+s) report=1; doit=0 ;; | |
32 _4755) arg=755 ; report=1; doit=1 ;; | |
33 _4555) arg=555 ; report=1; doit=1 ;; | |
34 *) ;; | |
35 esac | |
36 set -- "$@" "$arg" | |
37 done | |
38 | |
39 if [ "$report" = 1 ]; then echo 1>&2 "$reportmsg" ; fi | |
40 | |
41 if [ "$doit" = 1 ]; then | |
42 exec $DAISY_CHAIN "$@" | |
43 fi | |
44 | |
45 exit 0 |