source: roaraudio/compbins/ast2roar @ 3784:435f61201111

Last change on this file since 3784:435f61201111 was 3754:db000f902334, checked in by phi, 14 years ago

fixed small tempfile bug

  • Property exe set to *
File size: 4.9 KB
Line 
1#!/bin/sh
2
3DOS=false
4SECTIONC=0
5
6if [ "$1" = '--dos' ]
7then
8 DOS=true;
9 shift;
10fi
11
12OUT="$1"
13IN="$2"
14
15if tempfile --help > /dev/null 2> /dev/null
16then
17 HELPFILE=`tempfile -p $$- -s .help`
18else
19 HELPFILE=tempfile-$$.help
20 touch $HELPFILE
21fi
22
23HELPOPTS=''
24
25ARGS_END_OPTS_ON_NON_OPT=false
26
27ast2roar_help() {
28 HELPOPTS="$*"
29
30 cat > $HELPFILE
31}
32
33
34if [ -r $IN ]
35then
36 . ./$IN
37else
38 rm $HELPFILE
39 exit 1;
40fi
41
42{
43 $DOS && echo '@ECHO OFF'
44 $DOS || echo '#!/bin/sh'
45 echo
46
47 $DOS && echo "SET _ARGS=$ARGS_ADD_OPTS"
48 $DOS || echo "_args='$ARGS_ADD_OPTS';"
49
50 if $DOS
51 then
52  cat <<_E_O_F_
53
54:mloop
55IF "x%1" == "x" GOTO mloopend
56SET k=%1
57SHIFT
58
59IF "%k%" == "--" GOTO mloopend
60_E_O_F_
61 else
62  cat <<_E_O_F_
63
64while [ -n "\$1" ]
65do
66 k="\$1";
67 shift;
68
69 case "\$k" in
70  '--')
71   break;
72  ;;
73_E_O_F_
74 fi
75
76 if [ "$HELPOPTS" != '' ]
77 then
78  if $DOS
79  then
80   for o in $HELPOPTS
81   do
82    echo "IF \"%k%\" == \"$o\" GOTO help"
83   done
84  else
85   _opts=`echo "$HELPOPTS" | sed "s/^/\'/; s/$/\'/; s/ /\'\|\'/g"`
86   echo "  $_opts)";
87   echo '   cat <<__AST2ROAR__END_OF_HELP_TEXT__'
88   cat $HELPFILE
89   echo '__AST2ROAR__END_OF_HELP_TEXT__'
90   echo '   exit 0;'
91   echo '  ;;';
92  fi
93 fi
94
95 for o in $ARGS_IGNORE_OPTS
96 do
97  on=`echo $o | cut -d: -f1`
98  oa=`echo $o | cut -d: -f2`
99  if $DOS
100  then
101   if $oa
102   then
103    echo "IF \"%k%\" == \"$on\" GOTO nextshift"
104   else
105    echo "IF \"%k%\" == \"$on\" GOTO next"
106   fi
107  else
108   echo "  '$on')";
109   if $oa
110   then
111    echo '   shift;';
112   fi
113   echo '  ;;';
114  fi
115 done
116
117 for o in $ARGS_PASS_OPTS
118 do
119  on=`echo $o | cut -d: -f1`
120  oa=`echo $o | cut -d: -f2`
121  if $DOS
122  then
123   if $oa
124   then
125    echo 'IF "%k%" == "'"$on"'" GOTO passval';
126   else
127    echo 'IF "%k%" == "'"$on"'" GOTO pass';
128   fi
129  else
130   echo "  '$on')";
131   if $oa
132   then
133    echo '   _args="$_args '"$on"' $1";';
134    echo '   shift;';
135   else
136    echo '   _args="$_args '"$on"'";';
137   fi
138   echo '  ;;';
139  fi
140 done
141
142 for o in $ARGS_MAP_OPTS
143 do
144  on=`echo $o | cut -d: -f1`
145  oa=`echo $o | cut -d: -f2`
146  or=`echo $o | cut -d: -f3`
147  if $DOS
148  then
149   sec=sec$SECTIONC
150   SECTIONC=`expr $SECTIONC + 1`
151   if $oa
152   then
153    cat <<_E_O_F_
154IF NOT "%k%" == "$on" GOTO ${sec}end
155SET _ARGV=%_ARGV% $or %1
156GOTO nextshift
157:${sec}end
158
159_E_O_F_
160   else
161    cat <<_E_O_F_
162IF NOT "%k%" == "$on" GOTO ${sec}end
163SET _ARGV=%_ARGV% $or
164GOTO next
165:${sec}end
166
167_E_O_F_
168   fi
169  else
170   echo "  '$on')";
171   if $oa
172   then
173    echo '   _args="$_args '"$or"' $1";';
174    echo '   shift;';
175   else
176    echo '   _args="$_args '"$or"'";';
177   fi
178   echo '  ;;';
179  fi
180 done
181
182 for o in $ARGS_DEEQ_OPTS
183 do
184  if $DOS
185  then
186   echo "REM IGNORED DEEQ: $o";
187   echo "Warning: can not compile DEEQ as target does not support DEEQ: $o" >&2
188  else
189   echo "  '$o='*)";
190   echo '   _para=`echo "$k" | cut -d= -f2`;';
191   echo '   _args="$_args '"$o"' $_para";';
192   echo '  ;;';
193  fi
194 done
195
196 for o in $ARGS_ENV_OPTS
197 do
198  on=`echo $o | cut -d: -f1`
199  or=`echo $o | cut -d: -f2`
200  if $DOS
201  then
202   sec=sec$SECTIONC
203   SECTIONC=`expr $SECTIONC + 1`
204   cat <<_E_O_F_
205IF NOT "%k%" == "$on" GOTO ${sec}end
206SET $or=%1
207GOTO nextshift
208:${sec}end
209_E_O_F_
210  else
211   echo "  '$on')";
212   echo "   export $or=\"\$1\"";
213   echo '   shift;';
214   echo '  ;;';
215   echo "  '$on='*)";
216   echo '   _para=`echo "$k" | cut -d= -f2`;';
217   echo "   export $or=\"\$_para\"";
218   echo '  ;;';
219  fi
220 done
221
222 if $DOS
223 then
224  : # we ignore this here and handle in the next section
225 else
226  cat <<_E_O_F_
227  '-'*)
228   echo "Unknown option" >&2;
229   exit 1;
230  ;;
231  *)
232_E_O_F_
233 fi
234
235 if $ARGS_PASS_NON_OPTS
236 then
237  if $DOS
238  then
239   echo "Warning: can not compile unknown options check in as target does not support it" >&2
240   echo "REM IGNORED UNKNOWN OPTION CHECK"
241   if $ARGS_END_OPTS_ON_NON_OPT
242   then
243    cat <<_E_O_F_
244SET _ARGV=%_ARGV% %k%
245GOTO mloopend
246_E_O_F_
247   else
248    echo 'GOTO addshift';
249   fi
250  else
251   echo '   _args="$_args $k";';
252   if $ARGS_END_OPTS_ON_NON_OPT
253   then
254    echo '   break;';
255   fi
256  fi
257 else
258  if $DOS
259  then
260   echo 'GOTO erruopt'
261  else
262   echo '   echo "Unknown option" >&2;';
263   echo '   exit 1;';
264  fi
265 fi
266
267 if $DOS
268 then
269  cat <<_E_O_F_
270
271GOTO next
272:pass
273SET _ARGV=%_ARGV% %k%
274GOTO next
275:passval
276SET _ARGV=%_ARGV% %k%
277:addshift
278SET _ARGV=%_ARGV% %1
279:nextshift
280SHIFT
281
282:next
283GOTO mloop
284:mloopend
285
286_E_O_F_
287 else
288  cat <<_E_O_F_
289  ;;
290 esac;
291done
292
293_E_O_F_
294 fi
295
296 if $ARGS_PASS_NON_OPTS
297 then
298  $DOS && echo "SET _ARGS=%_ARGS% %1 %2 %3 %4 %5 %6 %7 %8 %9"
299  $DOS || echo '_args="$_args $*";';
300 else
301  if $DOS
302  then
303   echo 'IF "%1%2%3%4%5%6%7%8%9" GOTO erruopt'
304  else
305   echo 'if [ "$*" != '' ]';
306   echo 'then';
307   echo ' echo "Unknown option" >&2;';
308   echo ' exit 1;';
309   echo 'fi';
310  fi
311 fi
312
313 if $DOS
314 then
315  cat <<_E_O_F_
316
317$RNAME %_ARGS%
318
319GOTO end
320
321:erruopt
322ECHO Unknown option
323EXIT 1
324GOTO end
325
326:help
327_E_O_F_
328  if [ "$HELPOPTS" != '' ]
329  then
330   sed 's/^$/./; s/^/echo /; s/</#/g; s/>/#/g;' $HELPFILE
331  fi
332  cat <<_E_O_F_
333GOTO end
334
335:end
336
337_E_O_F_
338 else
339  cat <<_E_O_F_
340
341exec $RNAME \$_args
342
343_E_O_F_
344 fi
345
346 echo
347 $DOS && echo 'REM ll'
348 $DOS || echo '#ll'
349} > $OUT
350
351chmod a+rx $OUT
352
353rm $HELPFILE
354
355exit 0;
356
357#ll
Note: See TracBrowser for help on using the repository browser.