Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/INIT/execrate.sh
1808 views
1
########################################################################
2
# #
3
# This software is part of the ast package #
4
# Copyright (c) 1994-2011 AT&T Intellectual Property #
5
# and is licensed under the #
6
# Eclipse Public License, Version 1.0 #
7
# by AT&T Intellectual Property #
8
# #
9
# A copy of the License is available at #
10
# http://www.eclipse.org/org/documents/epl-v10.html #
11
# (with md5 checksum b35adb5213ca9657e911e9befb180842) #
12
# #
13
# Information and Software Systems Research #
14
# AT&T Research #
15
# Florham Park NJ #
16
# #
17
# Glenn Fowler <[email protected]> #
18
# #
19
########################################################################
20
: wrapper for .exe challenged win32 systems/commands
21
22
command=execrate
23
24
bins='/bin /usr/bin /usr/sbin'
25
26
case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
27
0123) ARGV0="-a $command"
28
USAGE=$'
29
[-?
30
@(#)$Id: execrate (AT&T Labs Research) 2002-02-02 $
31
]
32
'$USAGE_LICENSE$'
33
[+NAME?execrate - wrapper for .exe challenged commands]
34
[+DESCRIPTION?\bexecrate\b runs \acommand\a after checking the \afile\a
35
operands for standard semantics with respect to \bwin32\b \b.exe\b
36
suffix conventions. This command is only needed on \bwin32\b
37
systems that inconsistently handle \b.exe\b across library and
38
command interfaces. \acommand\a may be one of \bcat\b(1), \bchmod\b(1),
39
\bcmp\b(1), \bcp\b(1), \bln\b(1), \bmv\b(1), or \brm\b(1).
40
Only the 2 argument forms of \bcp\b, \bln\b and \bmv\b are handled.
41
Unsupported commands and commands requiring no change are
42
silently executed.]
43
[+?With no arguments \bexecrate\b exits with status 0 if the current system
44
is \b.exe\b challenged, 1 if the current system is normal.]
45
[n:show?Show the underlying commands but do not execute.]
46
47
command [ option ... ] file ...
48
49
[+SEE ALSO?\bwebster\b(1)]
50
'
51
usage()
52
{
53
OPTIND=0
54
getopts $ARGV0 "$USAGE" OPT '-?'
55
exit 2
56
}
57
exec=1
58
while getopts $ARGV0 "$USAGE" OPT
59
do case $OPT in
60
n) exec=0 ;;
61
*) usage ;;
62
esac
63
done
64
shift `expr $OPTIND - 1`
65
;;
66
*) usage()
67
{
68
echo "Usage: execrate [ -n ] [ command [ option ... ] file ... ]" >&2
69
exit 2
70
}
71
exec=1
72
while :
73
do case $1 in
74
-n) exec=0 ;;
75
-*) usage ;;
76
*) break ;;
77
esac
78
shift
79
done
80
;;
81
esac
82
case $# in
83
0) if test ! -x /bin/cat.exe
84
then exit 1 # normal
85
fi
86
if /bin/cat /bin/cat >/dev/null 2>&1
87
then exit 1 # normal
88
fi
89
exit 0 # challenged
90
;;
91
1) usage
92
;;
93
esac
94
case $1 in
95
*cat|*rm)
96
NUM=0
97
;;
98
*chgrp|*chmod)
99
NUM=1
100
;;
101
*cmp|*cp|*ln|*mv)
102
NUM=2
103
;;
104
*) case $exec in
105
0) echo "$@" ;;
106
*) "$@" ;;
107
esac
108
exit
109
;;
110
esac
111
CMD=$1
112
shift
113
case $CMD in
114
*/*) ;;
115
*) for d in $bins
116
do if test -x $d/$1 -o -x $d/$1.exe
117
then CMD=$d/$1
118
break
119
fi
120
done
121
;;
122
esac
123
while :
124
do case $1 in
125
-*) CMD="$CMD $1" ;;
126
*) break ;;
127
esac
128
shift
129
done
130
case $exec in
131
0) CMD="echo $CMD" ;;
132
esac
133
case $NUM:$# in
134
*:0) ;;
135
1:*) CMD="$CMD $1"
136
NUM=0
137
shift
138
;;
139
esac
140
case $NUM:$# in
141
0:*) status=0
142
for f
143
do if test "$f" -ef "$f".exe
144
then f=$f.exe
145
fi
146
$CMD "$f"
147
case $? in
148
0) ;;
149
*) status=$? ;;
150
esac
151
done
152
exit $status
153
;;
154
2:2) f=$1
155
case $f in
156
*.exe) ;;
157
*) if test "$f" -ef "$f".exe
158
then f=$f.exe
159
fi
160
;;
161
esac
162
case $f in
163
*.exe) if test -d "$2"
164
then t=$2/$f
165
else t=$2
166
fi
167
case $t in
168
*/*) b=`basename "$t"` ;;
169
*) b=$t ;;
170
esac
171
case $b in
172
*.*) $CMD "$f" "$t"; exit ;;
173
*) $CMD "$f" "$t".exe; exit ;;
174
esac
175
;;
176
esac
177
;;
178
esac
179
$CMD "$@"
180
181