source: roaraudio/compbins/ast2roar @ 5908:66940b2023ee

Last change on this file since 5908:66940b2023ee was 4930:eb854321dd12, checked in by phi, 13 years ago

Fixed warning on FreeBSD about tempfile in ast2roar (Closes: #47)

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