This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add more quad/long long/long double sciency.
[metaconfig.git] / U / modified / Oldconfig.U
... / ...
CommitLineData
1?RCS: $Id: Oldconfig.U,v 3.0.1.10 1997/02/28 15:06:39 ram Exp $
2?RCS:
3?RCS: Copyright (c) 1991-1993, Raphael Manfredi
4?RCS:
5?RCS: You may redistribute only under the terms of the Artistic Licence,
6?RCS: as specified in the README file that comes with the distribution.
7?RCS: You may reuse parts of this distribution only within the terms of
8?RCS: that same Artistic Licence; a copy of which may be found at the root
9?RCS: of the source tree for dist 3.0.
10?RCS:
11?RCS: $Log: Oldconfig.U,v $
12?RCS: Revision 3.0.1.10 1997/02/28 15:06:39 ram
13?RCS: patch61: added support for src.U
14?RCS: patch61: new OSNAME define
15?RCS: patch61: can now sense new OSes
16?RCS:
17?RCS: Revision 3.0.1.9 1995/07/25 13:40:51 ram
18?RCS: patch56: now knows about OS/2 platforms
19?RCS:
20?RCS: Revision 3.0.1.8 1995/05/12 12:04:18 ram
21?RCS: patch54: config.sh reload logic now knows about new -K switch
22?RCS: patch54: cleaned up and extended osvers for DEC OSF/1 (ADO)
23?RCS: patch54: added MachTen detection (ADO)
24?RCS:
25?RCS: Revision 3.0.1.7 1995/02/15 14:13:41 ram
26?RCS: patch51: adapted osvers computation for AIX (ADO)
27?RCS:
28?RCS: Revision 3.0.1.6 1995/01/30 14:27:15 ram
29?RCS: patch49: unit Options.U now exports file optdef.sh, not a variable
30?RCS: patch49: update code for myuname changed (WED)
31?RCS:
32?RCS: Revision 3.0.1.5 1995/01/11 15:15:36 ram
33?RCS: patch45: added quotes around the INITPROG variable (ADO)
34?RCS: patch45: allows variable overriding after config file loading
35?RCS:
36?RCS: Revision 3.0.1.4 1994/10/29 15:57:05 ram
37?RCS: patch36: added ?F: line for metalint file checking
38?RCS: patch36: merged with the version used for perl5's Configure (ADO)
39?RCS:
40?RCS: Revision 3.0.1.3 1994/05/06 14:24:17 ram
41?RCS: patch23: added support for osf1 hints
42?RCS: patch23: new support for solaris and i386 systems (ADO)
43?RCS:
44?RCS: Revision 3.0.1.2 1994/01/24 14:05:02 ram
45?RCS: patch16: added post-processing on myuname for Xenix targets
46?RCS: patch16: message proposing config.sh defaults made consistent
47?RCS:
48?RCS: Revision 3.0.1.1 1993/09/13 15:56:32 ram
49?RCS: patch10: force use of config.sh when -d option is used (WAD)
50?RCS: patch10: complain about non-existent hint files (WAD)
51?RCS: patch10: added Options dependency for fastread variable
52?RCS:
53?RCS: Revision 3.0 1993/08/18 12:05:12 ram
54?RCS: Baseline for dist 3.0 netwide release.
55?RCS:
56?X:
57?X: This unit tries to remember what we did last time we ran Configure, mostly
58?X: for the sake of setting defaults.
59?X:
60?MAKE:Oldconfig hint myuname osname osvers: Instruct Myread uname \
61 sh awk sed test cat rm lns tr n c contains Loc Options Tr src trnl ln
62?MAKE: -pick wipe $@ %<
63?S:myuname:
64?S: The output of 'uname -a' if available, otherwise the hostname. On Xenix,
65?S: pseudo variables assignments in the output are stripped, thank you. The
66?S: whole thing is then lower-cased.
67?S:.
68?S:hint:
69?S: Gives the type of hints used for previous answers. May be one of
70?S: "default", "recommended" or "previous".
71?S:.
72?S:osname:
73?S: This variable contains the operating system name (e.g. sunos,
74?S: solaris, hpux, etc.). It can be useful later on for setting
75?S: defaults. Any spaces are replaced with underscores. It is set
76?S: to a null string if we can't figure it out.
77?S:.
78?S:osvers:
79?S: This variable contains the operating system version (e.g.
80?S: 4.1.3, 5.2, etc.). It is primarily used for helping select
81?S: an appropriate hints file, but might be useful elsewhere for
82?S: setting defaults. It is set to '' if we can't figure it out.
83?S: We try to be flexible about how much of the version number
84?S: to keep, e.g. if 4.1.1, 4.1.2, and 4.1.3 are essentially the
85?S: same for this package, hints files might just be os_4.0 or
86?S: os_4.1, etc., not keeping separate files for each little release.
87?S:.
88?C:OSNAME:
89?C: This symbol contains the name of the operating system, as determined
90?C: by Configure. You shouldn't rely on it too much; the specific
91?C: feature tests from Configure are generally more reliable.
92?C:.
93?H:#define OSNAME "$osname" /**/
94?H:.
95?F:!config.sh
96?T:tmp tmp_n tmp_c tmp_sh file
97?T:xxxxfile xxxfile xxfile xfile hintfile newmyuname
98?T:tans _ isesix INITPROG DJGPP
99?D:osname=''
100?LINT:change n c sh
101: Try to determine whether config.sh was made on this system
102case "$config_sh" in
103'')
104?X: indentation wrong on purpose--RAM
105?X: Leave a white space between first two '(' for ksh. The sub-shell is needed
106?X: on some machines to avoid the error message when uname is not found; e.g.
107?X: old SUN-OS 3.2 would not execute hostname in (uname -a || hostname). Sigh!
108myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
109?X: Special mention for Xenix, whose 'uname -a' gives us output like this:
110?X: sysname=XENIX
111?X: nodename=whatever
112?X: release=2.3.2 .. etc...
113?X: Therefore, we strip all this variable assignment junk and remove all the
114?X: new lines to keep the myuname variable sane... --RAM
115# tr '[A-Z]' '[a-z]' would not work in EBCDIC
116# because the A-Z/a-z are not consecutive.
117myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
118 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
119?X: Save the value we just computed to reset myuname after we get done here.
120newmyuname="$myuname"
121dflt=n
122case "$knowitall" in
123'')
124 if test -f ../config.sh; then
125 if $contains myuname= ../config.sh >/dev/null 2>&1; then
126 eval "`grep myuname= ../config.sh`"
127 fi
128 if test "X$myuname" = "X$newmyuname"; then
129 dflt=y
130 fi
131 fi
132 ;;
133*) dflt=y;;
134esac
135
136@if {test -d ../hints}
137: Get old answers from old config file if Configure was run on the
138: same system, otherwise use the hints.
139hint=default
140cd ..
141?X: Since we are now at the root of the source tree, we must use $src
142?X: to access the sources and not $rsrc. See src.U for details...
143if test -f config.sh; then
144 echo " "
145 rp="I see a config.sh file. Shall I use it to set the defaults?"
146 . UU/myread
147 case "$ans" in
148 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
149 *) echo "Fetching default answers from your old config.sh file..." >&4
150 tmp_n="$n"
151 tmp_c="$c"
152 tmp_sh="$sh"
153 . ./config.sh
154 cp config.sh UU
155 n="$tmp_n"
156 c="$tmp_c"
157 : Older versions did not always set $sh. Catch re-use of such
158 : an old config.sh.
159 case "$sh" in
160 '') sh="$tmp_sh" ;;
161 esac
162 hint=previous
163 ;;
164 esac
165fi
166if test ! -f config.sh; then
167 $cat <<EOM
168
169First time through, eh? I have some defaults handy for some systems
170that need some extra help getting the Configure answers right:
171
172EOM
173 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
174 dflt=''
175 : Half the following guesses are probably wrong... If you have better
176 : tests or hints, please send them to <MAINTLOC>
177 : The metaconfig authors would also appreciate a copy...
178 $test -f /irix && osname=irix
179 $test -f /xenix && osname=sco_xenix
180 $test -f /dynix && osname=dynix
181 $test -f /dnix && osname=dnix
182 $test -f /lynx.os && osname=lynxos
183 $test -f /unicos && osname=unicos && osvers=`$uname -r`
184 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
185 $test -f /bin/mips && /bin/mips && osname=mips
186 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
187 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
188 $test -d /usr/apollo/bin && osname=apollo
189 $test -f /etc/saf/_sactab && osname=svr4
190 $test -d /usr/include/minix && osname=minix
191 if $test -d /MachTen -o -d /MachTen_Folder; then
192?X: MachTen uname -a output looks like
193?X: xxx 4 0.0 Macintosh
194?X: MachTen /sbin/version output looks like
195?X: MachTen 4.0 Mon Aug 28 10:18:00 1995
196?X: MachTen 3.x had the 'version' command in /usr/etc/version.
197 osname=machten
198 if $test -x /sbin/version; then
199 osvers=`/sbin/version | $awk '{print $2}' |
200 $sed -e 's/[A-Za-z]$//'`
201 elif $test -x /usr/etc/version; then
202 osvers=`/usr/etc/version | $awk '{print $2}' |
203 $sed -e 's/[A-Za-z]$//'`
204 else
205 osvers="$2.$3"
206 fi
207 fi
208 $test -f /sys/posix.dll &&
209 $test -f /usr/bin/what &&
210 set X `/usr/bin/what /sys/posix.dll` &&
211 $test "$3" = UWIN &&
212 osname=uwin &&
213 osvers="$5"
214?X: If we have uname, we already computed a suitable uname -a output, correctly
215?X: formatted for Xenix, and it lies in $myuname.
216 if $test -f $uname; then
217 set X $myuname
218 shift
219
220 case "$5" in
221 fps*) osname=fps ;;
222 mips*)
223 case "$4" in
224 umips) osname=umips ;;
225 *) osname=mips ;;
226 esac;;
227 [23]100) osname=mips ;;
228 next*) osname=next ;;
229?X: Interactive Unix.
230 i386*)
231 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
232 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
233 osname='sco'
234 osvers=$tmp
235 elif $test -f /etc/kconfig; then
236 osname=isc
237 if test "$lns" = "$ln -s"; then
238 osvers=4
239 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
240 osvers=3
241 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
242 osvers=2
243 fi
244 fi
245 tmp=''
246 ;;
247?X: MS-DOS djgpp uname -a output looks like:
248?X: ms-dos xxx 6 22 pc
249?X: $1 is the "dos flavor" (need not be "ms-dos").
250?X: $2 is the node name
251?X: $3 and $4 are version/subversion
252?X: $5 is always "pc", but that might not be unique to DJGPP.
253?X: (e.g. Solaris_x86 has $5 = i86pc, which doesn't actually conflict,
254?X: but it's close enought that I can easily imagine other vendors also
255?X: using variants of pc* in $5.)
256?X: The "DJGPP" environment variable is always set when djgpp is active.
257 pc*)
258 if test -n "$DJGPP"; then
259 osname=dos
260 osvers=djgpp
261 fi
262 ;;
263 esac
264
265 case "$1" in
266 aix) osname=aix
267?X: aix 4.1 uname -a output looks like
268?X: AIX foo 1 4 000123456789
269?X: where $4 is the major release number and $3 is the (minor) version.
270?X: More detail on the version is available with the oslevel command.
271?X: in 3.2.x, it output a string (see case statements below). In 4.1,
272?X: it puts out something like 4.1.1.0
273 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
274 case "$tmp" in
275 'not found') osvers="$4"."$3" ;;
276 '<3240'|'<>3240') osvers=3.2.0 ;;
277 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
278 '=3250'|'>3250') osvers=3.2.5 ;;
279 *) osvers=$tmp;;
280 esac
281 ;;
282 *dc.osx) osname=dcosx
283 osvers="$3"
284 ;;
285 dnix) osname=dnix
286 osvers="$3"
287 ;;
288 domainos) osname=apollo
289 osvers="$3"
290 ;;
291 dgux) osname=dgux
292 osvers="$3"
293 ;;
294?X: uname -a returns
295?X: DYNIX/ptx xxx 4.0 V4.1.2 i386
296 dynixptx*) osname=dynixptx
297 osvers=`echo "$4"|sed 's/^v//'`
298 ;;
299 freebsd) osname=freebsd
300 osvers="$3" ;;
301 genix) osname=genix ;;
302?X: HP-UX uname -a gives something like
303?X: HP-UX foobar B.10.20 A 9000/735 2016483812 two-user license
304?X: Preserve the full 10.20 string instead of the previous plain '10'.
305?X: Thanks to Graham Barr. --AD 6/30/1998
306 hp*) osname=hpux
307 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
308 ;;
309 irix*) osname=irix
310 case "$3" in
311 4*) osvers=4 ;;
312 5*) osvers=5 ;;
313 *) osvers="$3" ;;
314 esac
315 ;;
316 linux) osname=linux
317 case "$3" in
318 *) osvers="$3" ;;
319 esac
320 ;;
321 MiNT) osname=mint
322 ;;
323 netbsd*) osname=netbsd
324 osvers="$3"
325 ;;
326 news-os) osvers="$3"
327 case "$3" in
328 4*) osname=newsos4 ;;
329 *) osname=newsos ;;
330 esac
331 ;;
332 bsd386) osname=bsd386
333 osvers=`$uname -r`
334 ;;
335 POSIX-BC | posix-bc ) osname=posix-bc
336 osvers="$3"
337 ;;
338 powerux | power_ux | powermax_os | powermaxos | \
339 powerunix | power_unix) osname=powerux
340 osvers="$3"
341 ;;
342 next*) osname=next ;;
343 solaris) osname=solaris
344 case "$3" in
345 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
346 *) osvers="$3" ;;
347 esac
348 ;;
349 sunos) osname=sunos
350 case "$3" in
351 5*) osname=solaris
352 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
353 *) osvers="$3" ;;
354 esac
355 ;;
356 titanos) osname=titanos
357 case "$3" in
358 1*) osvers=1 ;;
359 2*) osvers=2 ;;
360 3*) osvers=3 ;;
361 4*) osvers=4 ;;
362 *) osvers="$3" ;;
363 esac
364 ;;
365 ultrix) osname=ultrix
366 osvers="$3"
367 ;;
368 osf1|mls+) case "$5" in
369 alpha)
370?X: DEC OSF/1 myuname -a output looks like: osf1 xxxx t3.2 123.4 alpha
371?X: where the version number can be something like [xvt]n.n
372 osname=dec_osf
373 osvers=`echo "$3" | sed 's/^[xvt]//'`
374 ;;
375 hp*) osname=hp_osf1 ;;
376 mips) osname=mips_osf1 ;;
377?X: hp and mips were unsupported Technology Releases -- ADO, 24/10/94
378 esac
379 ;;
380 unixware) osname=svr5
381 osvers="$4"
382 ;;
383 uts) osname=uts
384 osvers="$3"
385 ;;
386 qnx) osname=qnx
387 osvers="$4"
388 ;;
389 $2) case "$osname" in
390 *isc*) ;;
391 *freebsd*) ;;
392 svr*)
393 : svr4.x or possibly later
394 case "svr$3" in
395 ${osname}*)
396 osname=svr$3
397 osvers=$4
398 ;;
399 esac
400 case "$osname" in
401 svr4.0)
402 : Check for ESIX
403 if test -f /stand/boot ; then
404 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
405 if test -n "$INITPROG" -a -f "$INITPROG"; then
406 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
407 if test -n "$isesix"; then
408 osname=esix4
409 fi
410 fi
411 fi
412 ;;
413 esac
414 ;;
415 *) if test -f /etc/systemid; then
416 osname=sco
417 set `echo $3 | $sed 's/\./ /g'` $4
418 if $test -f $src/hints/sco_$1_$2_$3.sh; then
419 osvers=$1.$2.$3
420 elif $test -f $src/hints/sco_$1_$2.sh; then
421 osvers=$1.$2
422 elif $test -f $src/hints/sco_$1.sh; then
423 osvers=$1
424 fi
425 else
426 case "$osname" in
427 '') : Still unknown. Probably a generic Sys V.
428 osname="sysv"
429 osvers="$3"
430 ;;
431 esac
432 fi
433 ;;
434 esac
435 ;;
436 *) case "$osname" in
437 '') : Still unknown. Probably a generic BSD.
438 osname="$1"
439 osvers="$3"
440 ;;
441 esac
442 ;;
443 esac
444 else
445?X: Try to identify sony's NEWS-OS (BSD unix)
446 if test -f /vmunix -a -f $src/hints/news_os.sh; then
447 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
448 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
449 osname=news_os
450 fi
451 $rm -f UU/kernel.what
452?X: Maybe it's OS/2 or DOS or something similar
453 elif test -d c:/.; then
454 set X $myuname
455 osname=os2
456 osvers="$5"
457 fi
458 fi
459
460 : Now look for a hint file osname_osvers, unless one has been
461 : specified already.
462 case "$hintfile" in
463 ''|' ')
464 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
465 : Also try without trailing minor version numbers.
466 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
467 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
468 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
469 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
470 case "$file" in
471 '') dflt=none ;;
472 *) case "$osvers" in
473 '') dflt=$file
474 ;;
475 *) if $test -f $src/hints/$file.sh ; then
476 dflt=$file
477 elif $test -f $src/hints/$xfile.sh ; then
478 dflt=$xfile
479 elif $test -f $src/hints/$xxfile.sh ; then
480 dflt=$xxfile
481 elif $test -f $src/hints/$xxxfile.sh ; then
482 dflt=$xxxfile
483 elif $test -f $src/hints/$xxxxfile.sh ; then
484 dflt=$xxxxfile
485 elif $test -f "$src/hints/${osname}.sh" ; then
486 dflt="${osname}"
487 else
488 dflt=none
489 fi
490 ;;
491 esac
492 ;;
493 esac
494 if $test -f Policy.sh ; then
495 case "$dflt" in
496 *Policy*) ;;
497 none) dflt="Policy" ;;
498 *) dflt="Policy $dflt" ;;
499 esac
500 fi
501 ;;
502 *)
503 dflt=`echo $hintfile | $sed 's/\.sh$//'`
504 ;;
505 esac
506
507 if $test -f Policy.sh ; then
508 $cat <<EOM
509
510There's also a Policy hint file available, which should make the
511site-specific (policy) questions easier to answer.
512EOM
513
514 fi
515
516 $cat <<EOM
517
518You may give one or more space-separated answers, or "none" if appropriate.
519A well-behaved OS will have no hints, so answering "none" or just "Policy"
520is a good thing. DO NOT give a wrong version or a wrong OS.
521
522EOM
523
524 rp="Which of these apply, if any?"
525 . UU/myread
526 tans=$ans
527 for file in $tans; do
528 if $test X$file = XPolicy -a -f Policy.sh; then
529 . Policy.sh
530 $cat Policy.sh >> UU/config.sh
531 elif $test -f $src/hints/$file.sh; then
532 . $src/hints/$file.sh
533 $cat $src/hints/$file.sh >> UU/config.sh
534 elif $test X$tans = X -o X$tans = Xnone ; then
535 : nothing
536 else
537 : Give one chance to correct a possible typo.
538 echo "$file.sh does not exist"
539 dflt=$file
540 rp="hint to use instead?"
541 . UU/myread
542 for file in $ans; do
543 if $test -f "$src/hints/$file.sh"; then
544 . $src/hints/$file.sh
545 $cat $src/hints/$file.sh >> UU/config.sh
546 elif $test X$ans = X -o X$ans = Xnone ; then
547 : nothing
548 else
549 echo "$file.sh does not exist -- ignored."
550 fi
551 done
552 fi
553 done
554
555 hint=recommended
556 : Remember our hint file for later.
557 if $test -f "$src/hints/$file.sh" ; then
558 hintfile="$file"
559 else
560 hintfile=''
561 fi
562fi
563cd UU
564?X: From here on, we must use $rsrc instead of $src
565@else
566: Get old answers, if there is a config file out there
567hint=default
568hintfile=''
569if test -f ../config.sh; then
570 echo " "
571 rp="I see a config.sh file. Shall I use it to set the defaults?"
572 . ./myread
573 case "$ans" in
574 n*|N*) echo "OK, I'll ignore it.";;
575 *) echo "Fetching default answers from your old config.sh file..." >&4
576 tmp_n="$n"
577 tmp_c="$c"
578 . ../config.sh
579 cp ../config.sh .
580 n="$tmp_n"
581 c="$tmp_c"
582 hint=previous
583 ;;
584 esac
585fi
586@end
587?X: remember, indentation is wrong--RAM
588;;
589*)
590 echo " "
591 echo "Fetching default answers from $config_sh..." >&4
592 tmp_n="$n"
593 tmp_c="$c"
594 cd ..
595?X: preserve symbolic links, if any
596 cp $config_sh config.sh 2>/dev/null
597 chmod +w config.sh
598 . ./config.sh
599 cd UU
600 cp ../config.sh .
601 n="$tmp_n"
602 c="$tmp_c"
603 hint=previous
604 ;;
605esac
606test "$override" && . ./optdef.sh
607myuname="$newmyuname"
608
609: Restore computed paths
610for file in $loclist $trylist; do
611 eval $file="\$_$file"
612done
613
614@if osname || osvers
615cat << EOM
616
617Configure uses the operating system name and version to set some defaults.
618The default value is probably right if the name rings a bell. Otherwise,
619since spelling matters for me, either accept the default or answer "none"
620to leave it blank.
621
622EOM
623@end
624@if osname
625case "$osname" in
626 ''|' ')
627 case "$hintfile" in
628 ''|' '|none) dflt=none ;;
629 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
630 esac
631 ;;
632 *) dflt="$osname" ;;
633esac
634rp="Operating system name?"
635. ./myread
636case "$ans" in
637none) osname='' ;;
638*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
639esac
640@end
641@if osvers
642@if osname
643echo " "
644@end
645case "$osvers" in
646 ''|' ')
647 case "$hintfile" in
648 ''|' '|none) dflt=none ;;
649 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
650 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
651 case "$dflt" in
652 ''|' ') dflt=none ;;
653 esac
654 ;;
655 esac
656 ;;
657 *) dflt="$osvers" ;;
658esac
659rp="Operating system version?"
660. ./myread
661case "$ans" in
662none) osvers='' ;;
663*) osvers="$ans" ;;
664esac
665
666@end
667
668. ./posthint.sh
669