cb335335ca549316d749103f691603f29c30f0d9
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Sat Apr 19 20:43:09 EET DST 2003 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 perllibs=''
192 dynamic_ext=''
193 extensions=''
194 known_extensions=''
195 nonxs_ext=''
196 static_ext=''
197 useopcode=''
198 useposix=''
199 extras=''
200 d_bsd=''
201 d_eunice=''
202 d_xenix=''
203 eunicefix=''
204 Mcc=''
205 ar=''
206 awk=''
207 bash=''
208 bison=''
209 byacc=''
210 cat=''
211 chgrp=''
212 chmod=''
213 chown=''
214 comm=''
215 compress=''
216 cp=''
217 cpio=''
218 cpp=''
219 csh=''
220 date=''
221 echo=''
222 egrep=''
223 emacs=''
224 expr=''
225 find=''
226 flex=''
227 gmake=''
228 grep=''
229 gzip=''
230 inews=''
231 ksh=''
232 less=''
233 line=''
234 lint=''
235 ln=''
236 lp=''
237 lpr=''
238 ls=''
239 mail=''
240 mailx=''
241 make=''
242 mkdir=''
243 more=''
244 mv=''
245 nm=''
246 nroff=''
247 perl=''
248 pg=''
249 pmake=''
250 pr=''
251 rm=''
252 rmail=''
253 sed=''
254 sendmail=''
255 shar=''
256 sleep=''
257 smail=''
258 sort=''
259 submit=''
260 tail=''
261 tar=''
262 tbl=''
263 tee=''
264 test=''
265 touch=''
266 tr=''
267 troff=''
268 uname=''
269 uniq=''
270 uuname=''
271 vi=''
272 zcat=''
273 zip=''
274 full_ar=''
275 full_sed=''
276 libswanted=''
277 hint=''
278 myuname=''
279 osname=''
280 osvers=''
281 Author=''
282 Date=''
283 Header=''
284 Id=''
285 Locker=''
286 Log=''
287 RCSfile=''
288 Revision=''
289 Source=''
290 State=''
291 _a=''
292 _exe=''
293 _o=''
294 archobjs=''
295 exe_ext=''
296 firstmakefile=''
297 lib_ext=''
298 obj_ext=''
299 path_sep=''
300 afs=''
301 afsroot=''
302 alignbytes=''
303 ansi2knr=''
304 archlib=''
305 archlibexp=''
306 d_archlib=''
307 installarchlib=''
308 archname=''
309 myarchname=''
310 d_atolf=''
311 d_atoll=''
312 baserev=''
313 bin=''
314 binexp=''
315 installbin=''
316 byteorder=''
317 cc=''
318 ccflags=''
319 cppflags=''
320 ldflags=''
321 lkflags=''
322 locincpth=''
323 optimize=''
324 cf_email=''
325 cf_by=''
326 cf_time=''
327 charsize=''
328 contains=''
329 cpp_stuff=''
330 cpplast=''
331 cppminus=''
332 cpprun=''
333 cppstdin=''
334 d__fwalk=''
335 d_access=''
336 d_accessx=''
337 d_aintl=''
338 d_alarm=''
339 asctime_r_proto=''
340 d_asctime_r=''
341 d_attribut=''
342 d_bcmp=''
343 d_bcopy=''
344 d_bzero=''
345 d_casti32=''
346 castflags=''
347 d_castneg=''
348 d_chown=''
349 d_chroot=''
350 d_chsize=''
351 d_class=''
352 d_closedir=''
353 d_void_closedir=''
354 d_cmsghdr_s=''
355 d_const=''
356 d_copysignl=''
357 cryptlib=''
358 d_crypt=''
359 crypt_r_proto=''
360 d_crypt_r=''
361 d_csh=''
362 full_csh=''
363 ctermid_r_proto=''
364 d_ctermid_r=''
365 ctime_r_proto=''
366 d_ctime_r=''
367 d_cuserid=''
368 d_dbl_dig=''
369 d_dbminitproto=''
370 d_difftime=''
371 d_dirfd=''
372 d_dlerror=''
373 d_dlopen=''
374 d_dlsymun=''
375 d_dosuid=''
376 d_suidsafe=''
377 d_drand48_r=''
378 drand48_r_proto=''
379 d_drand48proto=''
380 d_dup2=''
381 d_eaccess=''
382 d_endgrent=''
383 d_endgrent_r=''
384 endgrent_r_proto=''
385 d_endhent=''
386 d_endhostent_r=''
387 endhostent_r_proto=''
388 d_endnent=''
389 d_endnetent_r=''
390 endnetent_r_proto=''
391 d_endpent=''
392 d_endprotoent_r=''
393 endprotoent_r_proto=''
394 d_endpwent=''
395 d_endpwent_r=''
396 endpwent_r_proto=''
397 d_endsent=''
398 d_endservent_r=''
399 endservent_r_proto=''
400 d_fchdir=''
401 d_fchmod=''
402 d_fchown=''
403 d_fcntl=''
404 d_fcntl_can_lock=''
405 d_fd_macros=''
406 d_fd_set=''
407 d_fds_bits=''
408 d_fgetpos=''
409 d_finite=''
410 d_finitel=''
411 d_flexfnam=''
412 d_flock=''
413 d_flockproto=''
414 d_fork=''
415 d_fp_class=''
416 d_fpclass=''
417 d_fpclassify=''
418 d_fpclassl=''
419 d_fpos64_t=''
420 d_frexpl=''
421 d_fs_data_s=''
422 d_fseeko=''
423 d_fsetpos=''
424 d_fstatfs=''
425 d_fsync=''
426 d_ftello=''
427 d_ftime=''
428 d_gettimeod=''
429 d_Gconvert=''
430 d_getcwd=''
431 d_getespwnam=''
432 d_getfsstat=''
433 d_getgrent=''
434 d_getgrent_r=''
435 getgrent_r_proto=''
436 d_getgrgid_r=''
437 getgrgid_r_proto=''
438 d_getgrnam_r=''
439 getgrnam_r_proto=''
440 d_getgrps=''
441 d_gethbyaddr=''
442 d_gethbyname=''
443 d_gethent=''
444 aphostname=''
445 d_gethname=''
446 d_phostname=''
447 d_uname=''
448 d_gethostbyaddr_r=''
449 gethostbyaddr_r_proto=''
450 d_gethostbyname_r=''
451 gethostbyname_r_proto=''
452 d_gethostent_r=''
453 gethostent_r_proto=''
454 d_gethostprotos=''
455 d_getitimer=''
456 d_getlogin=''
457 d_getlogin_r=''
458 getlogin_r_proto=''
459 d_getmnt=''
460 d_getmntent=''
461 d_getnbyaddr=''
462 d_getnbyname=''
463 d_getnent=''
464 d_getnetbyaddr_r=''
465 getnetbyaddr_r_proto=''
466 d_getnetbyname_r=''
467 getnetbyname_r_proto=''
468 d_getnetent_r=''
469 getnetent_r_proto=''
470 d_getnetprotos=''
471 d_getpagsz=''
472 d_getpent=''
473 d_getpgid=''
474 d_getpgrp2=''
475 d_bsdgetpgrp=''
476 d_getpgrp=''
477 d_getppid=''
478 d_getprior=''
479 d_getpbyname=''
480 d_getpbynumber=''
481 d_getprotobyname_r=''
482 getprotobyname_r_proto=''
483 d_getprotobynumber_r=''
484 getprotobynumber_r_proto=''
485 d_getprotoent_r=''
486 getprotoent_r_proto=''
487 d_getprotoprotos=''
488 d_getprpwnam=''
489 d_getpwent=''
490 d_getpwent_r=''
491 getpwent_r_proto=''
492 d_getpwnam_r=''
493 getpwnam_r_proto=''
494 d_getpwuid_r=''
495 getpwuid_r_proto=''
496 d_getsent=''
497 d_getservbyname_r=''
498 getservbyname_r_proto=''
499 d_getservbyport_r=''
500 getservbyport_r_proto=''
501 d_getservent_r=''
502 getservent_r_proto=''
503 d_getservprotos=''
504 d_getspnam=''
505 d_getspnam_r=''
506 getspnam_r_proto=''
507 d_getsbyname=''
508 d_getsbyport=''
509 d_gmtime_r=''
510 gmtime_r_proto=''
511 d_gnulibc=''
512 gnulibc_version=''
513 d_hasmntopt=''
514 d_htonl=''
515 d_ilogbl=''
516 d_inetaton=''
517 d_int64_t=''
518 d_isascii=''
519 d_isfinite=''
520 d_isinf=''
521 d_isnan=''
522 d_isnanl=''
523 d_killpg=''
524 d_lchown=''
525 d_ldbl_dig=''
526 d_link=''
527 d_localtime_r=''
528 localtime_r_proto=''
529 d_locconv=''
530 d_lockf=''
531 d_longdbl=''
532 longdblsize=''
533 d_longlong=''
534 longlongsize=''
535 d_lseekproto=''
536 d_lstat=''
537 d_madvise=''
538 d_mblen=''
539 d_mbstowcs=''
540 d_mbtowc=''
541 d_memchr=''
542 d_memcmp=''
543 d_memcpy=''
544 d_memmove=''
545 d_memset=''
546 d_mkdir=''
547 d_mkdtemp=''
548 d_mkfifo=''
549 d_mkstemp=''
550 d_mkstemps=''
551 d_mktime=''
552 d_mmap=''
553 mmaptype=''
554 d_modfl=''
555 d_modfl_pow32_bug=''
556 d_modflproto=''
557 d_mprotect=''
558 d_msg=''
559 d_msgctl=''
560 d_msgget=''
561 d_msghdr_s=''
562 d_msgrcv=''
563 d_msgsnd=''
564 d_msync=''
565 d_munmap=''
566 d_nanosleep=''
567 d_nice=''
568 d_nl_langinfo=''
569 d_off64_t=''
570 d_open3=''
571 d_fpathconf=''
572 d_pathconf=''
573 d_pause=''
574 d_pipe=''
575 d_poll=''
576 d_portable=''
577 d_procselfexe=''
578 procselfexe=''
579 d_old_pthread_create_joinable=''
580 old_pthread_create_joinable=''
581 d_pthread_atfork=''
582 d_pthread_yield=''
583 d_sched_yield=''
584 sched_yield=''
585 d_qgcvt=''
586 d_random_r=''
587 random_r_proto=''
588 d_readdir64_r=''
589 readdir64_r_proto=''
590 d_readdir=''
591 d_rewinddir=''
592 d_seekdir=''
593 d_telldir=''
594 d_readdir_r=''
595 readdir_r_proto=''
596 d_readlink=''
597 d_readv=''
598 d_recvmsg=''
599 d_rename=''
600 d_rmdir=''
601 d_safebcpy=''
602 d_safemcpy=''
603 d_sanemcmp=''
604 d_sbrkproto=''
605 d_scalbnl=''
606 d_select=''
607 d_sem=''
608 d_semctl=''
609 d_semget=''
610 d_semop=''
611 d_sendmsg=''
612 d_setegid=''
613 d_seteuid=''
614 d_setgrent=''
615 d_setgrent_r=''
616 setgrent_r_proto=''
617 d_setgrps=''
618 d_sethent=''
619 d_sethostent_r=''
620 sethostent_r_proto=''
621 d_setitimer=''
622 d_setlinebuf=''
623 d_setlocale=''
624 d_setlocale_r=''
625 setlocale_r_proto=''
626 d_setnent=''
627 d_setnetent_r=''
628 setnetent_r_proto=''
629 d_setpent=''
630 d_setpgid=''
631 d_setpgrp2=''
632 d_bsdsetpgrp=''
633 d_setpgrp=''
634 d_setprior=''
635 d_setproctitle=''
636 d_setprotoent_r=''
637 setprotoent_r_proto=''
638 d_setpwent=''
639 d_setpwent_r=''
640 setpwent_r_proto=''
641 d_setregid=''
642 d_setresgid=''
643 d_setresuid=''
644 d_setreuid=''
645 d_setrgid=''
646 d_setruid=''
647 d_setsent=''
648 d_setservent_r=''
649 setservent_r_proto=''
650 d_setsid=''
651 d_setvbuf=''
652 d_sfio=''
653 usesfio=''
654 d_shm=''
655 d_shmat=''
656 d_shmatprototype=''
657 shmattype=''
658 d_shmctl=''
659 d_shmdt=''
660 d_shmget=''
661 d_sigaction=''
662 d_sigprocmask=''
663 d_sigsetjmp=''
664 d_sockatmark=''
665 d_sockatmarkproto=''
666 d_msg_ctrunc=''
667 d_msg_dontroute=''
668 d_msg_oob=''
669 d_msg_peek=''
670 d_msg_proxy=''
671 d_oldsock=''
672 d_scm_rights=''
673 d_socket=''
674 d_sockpair=''
675 sockethdr=''
676 socketlib=''
677 d_socklen_t=''
678 d_socks5_init=''
679 d_sqrtl=''
680 d_srand48_r=''
681 srand48_r_proto=''
682 d_srandom_r=''
683 srandom_r_proto=''
684 d_sresgproto=''
685 d_sresuproto=''
686 d_statblks=''
687 d_statfs_f_flags=''
688 d_statfs_s=''
689 d_fstatvfs=''
690 d_statvfs=''
691 d_stdio_cnt_lval=''
692 d_stdio_ptr_lval=''
693 d_stdio_ptr_lval_nochange_cnt=''
694 d_stdio_ptr_lval_sets_cnt=''
695 d_stdiobase=''
696 d_stdstdio=''
697 stdio_base=''
698 stdio_bufsiz=''
699 stdio_cnt=''
700 stdio_filbuf=''
701 stdio_ptr=''
702 d_index=''
703 d_strchr=''
704 d_strcoll=''
705 d_strctcpy=''
706 d_strerrm=''
707 d_strerror=''
708 d_sysernlst=''
709 d_syserrlst=''
710 d_strerror_r=''
711 strerror_r_proto=''
712 d_strftime=''
713 d_strtod=''
714 d_strtol=''
715 d_strtold=''
716 d_strtoll=''
717 d_strtoq=''
718 d_strtoul=''
719 d_strtoull=''
720 d_strtouq=''
721 d_strxfrm=''
722 d_symlink=''
723 d_syscall=''
724 d_syscallproto=''
725 d_sysconf=''
726 d_system=''
727 d_tcgetpgrp=''
728 d_tcsetpgrp=''
729 d_telldirproto=''
730 d_time=''
731 timetype=''
732 clocktype=''
733 d_times=''
734 d_tmpnam_r=''
735 tmpnam_r_proto=''
736 d_truncate=''
737 d_ttyname_r=''
738 ttyname_r_proto=''
739 d_tzname=''
740 d_u32align=''
741 d_ualarm=''
742 d_umask=''
743 d_semctl_semid_ds=''
744 d_semctl_semun=''
745 d_union_semun=''
746 d_unordered=''
747 d_usleep=''
748 d_usleepproto=''
749 d_ustat=''
750 d_vfork=''
751 usevfork=''
752 d_voidsig=''
753 signal_t=''
754 d_volatile=''
755 d_charvspr=''
756 d_vprintf=''
757 d_wait4=''
758 d_waitpid=''
759 d_wcstombs=''
760 d_wctomb=''
761 d_writev=''
762 dlext=''
763 cccdlflags=''
764 ccdlflags=''
765 dlsrc=''
766 ld=''
767 lddlflags=''
768 usedl=''
769 doublesize=''
770 ebcdic=''
771 fflushNULL=''
772 fflushall=''
773 fpossize=''
774 fpostype=''
775 gccansipedantic=''
776 gccosandvers=''
777 gccversion=''
778 gidformat=''
779 gidsign=''
780 gidsize=''
781 gidtype=''
782 groupstype=''
783 h_fcntl=''
784 h_sysfile=''
785 html1dir=''
786 html1direxp=''
787 installhtml1dir=''
788 html3dir=''
789 html3direxp=''
790 installhtml3dir=''
791 i_arpainet=''
792 i_crypt=''
793 db_hashtype=''
794 db_prefixtype=''
795 db_version_major=''
796 db_version_minor=''
797 db_version_patch=''
798 i_db=''
799 i_dbm=''
800 i_rpcsvcdbm=''
801 d_dirnamlen=''
802 direntrytype=''
803 i_dirent=''
804 i_dld=''
805 i_dlfcn=''
806 i_fcntl=''
807 i_float=''
808 i_fp=''
809 i_fp_class=''
810 i_gdbm=''
811 d_grpasswd=''
812 i_grp=''
813 i_ieeefp=''
814 i_inttypes=''
815 i_langinfo=''
816 i_libutil=''
817 i_limits=''
818 i_locale=''
819 i_machcthr=''
820 i_malloc=''
821 i_math=''
822 i_memory=''
823 i_mntent=''
824 i_ndbm=''
825 i_netdb=''
826 i_neterrno=''
827 i_netinettcp=''
828 i_niin=''
829 i_sysin=''
830 i_poll=''
831 i_prot=''
832 i_pthread=''
833 d_pwage=''
834 d_pwchange=''
835 d_pwclass=''
836 d_pwcomment=''
837 d_pwexpire=''
838 d_pwgecos=''
839 d_pwpasswd=''
840 d_pwquota=''
841 i_pwd=''
842 i_sfio=''
843 i_shadow=''
844 i_socks=''
845 i_stddef=''
846 i_stdlib=''
847 i_string=''
848 strings=''
849 i_sunmath=''
850 i_sysaccess=''
851 i_sysdir=''
852 i_sysfile=''
853 d_voidtty=''
854 i_bsdioctl=''
855 i_sysfilio=''
856 i_sysioctl=''
857 i_syssockio=''
858 i_syslog=''
859 i_sysmman=''
860 i_sysmode=''
861 i_sysmount=''
862 i_sysndir=''
863 i_sysparam=''
864 i_sysresrc=''
865 i_syssecrt=''
866 i_sysselct=''
867 i_sysstat=''
868 i_sysstatfs=''
869 i_sysstatvfs=''
870 i_systimes=''
871 i_systypes=''
872 i_sysuio=''
873 i_sysun=''
874 i_sysutsname=''
875 i_sysvfs=''
876 i_syswait=''
877 i_sgtty=''
878 i_termio=''
879 i_termios=''
880 d_tm_tm_gmtoff=''
881 d_tm_tm_zone=''
882 i_systime=''
883 i_systimek=''
884 i_time=''
885 timeincl=''
886 i_unistd=''
887 i_ustat=''
888 i_utime=''
889 i_values=''
890 i_stdarg=''
891 i_varargs=''
892 i_varhdr=''
893 i_vfork=''
894 inc_version_list=''
895 inc_version_list_init=''
896 installprefix=''
897 installprefixexp=''
898 installstyle=''
899 installusrbinperl=''
900 intsize=''
901 longsize=''
902 shortsize=''
903 issymlink=''
904 libc=''
905 ldlibpthname=''
906 libperl=''
907 shrpenv=''
908 useshrplib=''
909 glibpth=''
910 libpth=''
911 loclibpth=''
912 plibpth=''
913 xlibpth=''
914 ignore_versioned_solibs=''
915 libs=''
916 libsdirs=''
917 libsfiles=''
918 libsfound=''
919 libspath=''
920 lns=''
921 d_PRIEUldbl=''
922 d_PRIFUldbl=''
923 d_PRIGUldbl=''
924 d_PRIeldbl=''
925 d_PRIfldbl=''
926 d_PRIgldbl=''
927 d_SCNfldbl=''
928 sPRIEUldbl=''
929 sPRIFUldbl=''
930 sPRIGUldbl=''
931 sPRIeldbl=''
932 sPRIfldbl=''
933 sPRIgldbl=''
934 sSCNfldbl=''
935 lseeksize=''
936 lseektype=''
937 make_set_make=''
938 d_mymalloc=''
939 freetype=''
940 mallocobj=''
941 mallocsrc=''
942 malloctype=''
943 usemymalloc=''
944 installman1dir=''
945 man1dir=''
946 man1direxp=''
947 man1ext=''
948 installman3dir=''
949 man3dir=''
950 man3direxp=''
951 man3ext=''
952 modetype=''
953 multiarch=''
954 mydomain=''
955 myhostname=''
956 phostname=''
957 c=''
958 n=''
959 d_eofnblk=''
960 eagain=''
961 o_nonblock=''
962 rd_nodata=''
963 need_va_copy=''
964 netdb_hlen_type=''
965 netdb_host_type=''
966 netdb_name_type=''
967 netdb_net_type=''
968 groupcat=''
969 hostcat=''
970 passcat=''
971 orderlib=''
972 ranlib=''
973 d_perl_otherlibdirs=''
974 otherlibdirs=''
975 package=''
976 spackage=''
977 pager=''
978 api_revision=''
979 api_subversion=''
980 api_version=''
981 api_versionstring=''
982 patchlevel=''
983 perl_patchlevel=''
984 revision=''
985 subversion=''
986 version=''
987 version_patchlevel_string=''
988 perl5=''
989 perladmin=''
990 perlpath=''
991 d_nv_preserves_uv=''
992 i16size=''
993 i16type=''
994 i32size=''
995 i32type=''
996 i64size=''
997 i64type=''
998 i8size=''
999 i8type=''
1000 ivsize=''
1001 ivtype=''
1002 nv_preserves_uv_bits=''
1003 nvsize=''
1004 nvtype=''
1005 u16size=''
1006 u16type=''
1007 u32size=''
1008 u32type=''
1009 u64size=''
1010 u64type=''
1011 u8size=''
1012 u8type=''
1013 uvsize=''
1014 uvtype=''
1015 ivdformat=''
1016 nvEUformat=''
1017 nvFUformat=''
1018 nvGUformat=''
1019 nveformat=''
1020 nvfformat=''
1021 nvgformat=''
1022 uvXUformat=''
1023 uvoformat=''
1024 uvuformat=''
1025 uvxformat=''
1026 pidtype=''
1027 prefix=''
1028 prefixexp=''
1029 installprivlib=''
1030 privlib=''
1031 privlibexp=''
1032 prototype=''
1033 ptrsize=''
1034 d_PRIXU64=''
1035 d_PRId64=''
1036 d_PRIi64=''
1037 d_PRIo64=''
1038 d_PRIu64=''
1039 d_PRIx64=''
1040 sPRIXU64=''
1041 sPRId64=''
1042 sPRIi64=''
1043 sPRIo64=''
1044 sPRIu64=''
1045 sPRIx64=''
1046 d_quad=''
1047 quadkind=''
1048 quadtype=''
1049 uquadtype=''
1050 drand01=''
1051 randbits=''
1052 randfunc=''
1053 randseedtype=''
1054 seedfunc=''
1055 installscript=''
1056 scriptdir=''
1057 scriptdirexp=''
1058 selectminbits=''
1059 selecttype=''
1060 sh=''
1061 sig_count=''
1062 sig_name=''
1063 sig_name_init=''
1064 sig_num=''
1065 sig_num_init=''
1066 sig_size=''
1067 installsitearch=''
1068 sitearch=''
1069 sitearchexp=''
1070 installsitebin=''
1071 sitebin=''
1072 sitebinexp=''
1073 installsitehtml1=''
1074 sitehtml1=''
1075 sitehtml1exp=''
1076 installsitehtml3=''
1077 sitehtml3=''
1078 sitehtml3exp=''
1079 installsitelib=''
1080 sitelib=''
1081 sitelib_stem=''
1082 sitelibexp=''
1083 installsiteman1=''
1084 siteman1=''
1085 siteman1exp=''
1086 installsiteman3=''
1087 siteman3=''
1088 siteman3exp=''
1089 siteprefix=''
1090 siteprefixexp=''
1091 installsitescript=''
1092 sitescript=''
1093 sitescriptexp=''
1094 sizesize=''
1095 sizetype=''
1096 so=''
1097 socksizetype=''
1098 sharpbang=''
1099 shsharp=''
1100 spitshell=''
1101 src=''
1102 ssizetype=''
1103 startperl=''
1104 startsh=''
1105 stdchar=''
1106 d_stdio_stream_array=''
1107 stdio_stream_array=''
1108 sysman=''
1109 trnl=''
1110 uidformat=''
1111 uidsign=''
1112 uidsize=''
1113 uidtype=''
1114 archname64=''
1115 use64bitall=''
1116 use64bitint=''
1117 ccflags_uselargefiles=''
1118 ldflags_uselargefiles=''
1119 libswanted_uselargefiles=''
1120 uselargefiles=''
1121 uselongdouble=''
1122 usemorebits=''
1123 usemultiplicity=''
1124 nm_opt=''
1125 nm_so_opt=''
1126 runnm=''
1127 usenm=''
1128 useperlio=''
1129 usesocks=''
1130 d_oldpthreads=''
1131 use5005threads=''
1132 useithreads=''
1133 usereentrant=''
1134 usethreads=''
1135 incpath=''
1136 mips_type=''
1137 usrinc=''
1138 d_vendorarch=''
1139 installvendorarch=''
1140 vendorarch=''
1141 vendorarchexp=''
1142 d_vendorbin=''
1143 installvendorbin=''
1144 vendorbin=''
1145 vendorbinexp=''
1146 installvendorhtml1=''
1147 vendorhtml1=''
1148 vendorhtml1exp=''
1149 installvendorhtml3=''
1150 vendorhtml3=''
1151 vendorhtml3exp=''
1152 d_vendorlib=''
1153 installvendorlib=''
1154 vendorlib=''
1155 vendorlib_stem=''
1156 vendorlibexp=''
1157 installvendorman1=''
1158 vendorman1=''
1159 vendorman1exp=''
1160 installvendorman3=''
1161 vendorman3=''
1162 vendorman3exp=''
1163 usevendorprefix=''
1164 vendorprefix=''
1165 vendorprefixexp=''
1166 d_vendorscript=''
1167 installvendorscript=''
1168 vendorscript=''
1169 vendorscriptexp=''
1170 versiononly=''
1171 defvoidused=''
1172 voidflags=''
1173 pm_apiversion=''
1174 xs_apiversion=''
1175 yacc=''
1176 yaccflags=''
1177 CONFIG=''
1178
1179 define='define'
1180 undef='undef'
1181 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1182 rmlist=''
1183
1184 : We must find out about Eunice early
1185 eunicefix=':'
1186 if test -f /etc/unixtovms; then
1187         eunicefix=/etc/unixtovms
1188 fi
1189 if test -f /etc/unixtovms.exe; then
1190         eunicefix=/etc/unixtovms.exe
1191 fi
1192
1193 : Set executable suffix now -- needed before hints available
1194 if test -f "/libs/version.library"; then
1195 : Amiga OS
1196     _exe=""
1197 elif test -f "/system/gnu_library/bin/ar.pm"; then
1198 : Stratus VOS
1199     _exe=".pm"
1200 elif test -n "$DJGPP"; then
1201 : DOS DJGPP
1202     _exe=".exe"
1203 elif test -d c:/. -o -n "$is_os2" ; then
1204 : OS/2 or cygwin
1205     _exe=".exe"
1206 fi
1207
1208 i_whoami=''
1209 : Possible local include directories to search.
1210 : Set locincpth to "" in a hint file to defeat local include searches.
1211 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1212 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1213 :
1214 : no include file wanted by default
1215 inclwanted=''
1216
1217 siteman1=''
1218 siteman3=''
1219 sitescript=''
1220 : Trailing extension.  Override this in a hint file, if needed.
1221 : Extra object files, if any, needed on this platform.
1222 archobjs=''
1223 groupstype=''
1224 libnames=''
1225 : change the next line if compiling for Xenix/286 on Xenix/386
1226 xlibpth='/usr/lib/386 /lib/386'
1227 : Possible local library directories to search.
1228 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1229 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1230
1231 : general looking path for locating libraries
1232 glibpth="/lib /usr/lib $xlibpth"
1233 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1234 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1235 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1236
1237 : Private path used by Configure to find libraries.  Its value
1238 : is prepended to libpth. This variable takes care of special
1239 : machines, like the mips.  Usually, it should be empty.
1240 plibpth=''
1241
1242 : default library list
1243 libswanted=''
1244 : some systems want to use only the non-versioned libso:s
1245 ignore_versioned_solibs=''
1246 : full support for void wanted by default
1247 defvoidused=15
1248
1249 ccname=''
1250 ccversion=''
1251 perllibs=''
1252 : set useposix=false in your hint file to disable the POSIX extension.
1253 useposix=true
1254 : set useopcode=false in your hint file to disable the Opcode extension.
1255 useopcode=true
1256 archname64=''
1257 ccflags_uselargefiles=''
1258 ldflags_uselargefiles=''
1259 libswanted_uselargefiles=''
1260 : set usemultiplicity on the Configure command line to enable multiplicity.
1261 : set usesocks on the Configure command line to enable socks.
1262 archname=''
1263 : set usethreads on the Configure command line to enable threads.
1264 usereentrant='undef'
1265 : List of libraries we want.
1266 : If anyone needs -lnet, put it in a hint file.
1267 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1268 libswanted="$libswanted dld ld sun m c cposix posix"
1269 libswanted="$libswanted ndir dir crypt sec"
1270 libswanted="$libswanted ucb bsd BSD PW x util rt posix4"
1271 : We probably want to search /usr/shlib before most other libraries.
1272 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1273 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1274 glibpth="/usr/shlib $glibpth"
1275 : Do not use vfork unless overridden by a hint file.
1276 usevfork=false
1277
1278 : Find the basic shell for Bourne shell scripts
1279 case "$sh" in
1280 '')
1281         case "$SYSTYPE" in
1282         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1283         *) xxx='/bin/sh';;
1284         esac
1285         if test -f "$xxx"; then
1286                 sh="$xxx"
1287         else
1288                 : Build up a list and do a single loop so we can 'break' out.
1289                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1290                 for xxx in sh bash ksh pdksh ash; do
1291                         for p in $pth; do
1292                                 try="$try ${p}/${xxx}"
1293                         done
1294                 done
1295                 for xxx in $try; do
1296                         if test -f "$xxx"; then
1297                                 sh="$xxx";
1298                                 break
1299                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1300                                 sh="$xxx";
1301                                 break
1302                         elif test -f "$xxx.exe"; then
1303                                 sh="$xxx";
1304                                 break
1305                         fi
1306                 done
1307         fi
1308         ;;
1309 esac
1310
1311 case "$sh" in
1312 '')     cat >&2 <<EOM
1313 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1314
1315 Usually it's in /bin/sh.  How did you even get this far?
1316 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1317 we'll try to straighten this all out.
1318 EOM
1319         exit 1
1320         ;;
1321 esac
1322
1323 : see if sh knows # comments
1324 if `$sh -c '#' >/dev/null 2>&1`; then
1325         shsharp=true
1326         spitshell=cat
1327         xcat=/bin/cat
1328         test -f $xcat$_exe || xcat=/usr/bin/cat
1329         if test ! -f $xcat$_exe; then
1330                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1331                         if test -f $p/cat$_exe; then
1332                                 xcat=$p/cat
1333                                 break
1334                         fi
1335                 done
1336                 if test ! -f $xcat$_exe; then
1337                         echo "Can't find cat anywhere!"
1338                         exit 1
1339                 fi
1340         fi
1341         echo "#!$xcat" >sharp
1342         $eunicefix sharp
1343         chmod +x sharp
1344         ./sharp > today
1345         if test -s today; then
1346                 sharpbang='#!'
1347         else
1348                 echo "#! $xcat" > sharp
1349                 $eunicefix sharp
1350                 chmod +x sharp
1351                 ./sharp > today
1352                 if test -s today; then
1353                         sharpbang='#! '
1354                 else
1355                         sharpbang=': use '
1356                 fi
1357         fi
1358 else
1359         echo " "
1360         echo "Your $sh doesn't grok # comments--I will strip them later on."
1361         shsharp=false
1362         cd ..
1363         echo "exec grep -v '^[  ]*#'" >spitshell
1364         chmod +x spitshell
1365         $eunicefix spitshell
1366         spitshell=`pwd`/spitshell
1367         cd UU
1368         echo "I presume that if # doesn't work, #! won't work either!"
1369         sharpbang=': use '
1370 fi
1371 rm -f sharp today
1372
1373 : figure out how to guarantee sh startup
1374 case "$startsh" in
1375 '') startsh=${sharpbang}${sh} ;;
1376 *)
1377 esac
1378 cat >sharp <<EOSS
1379 $startsh
1380 set abc
1381 test "$?abc" != 1
1382 EOSS
1383
1384 chmod +x sharp
1385 $eunicefix sharp
1386 if ./sharp; then
1387         : echo "Yup, it does."
1388 else
1389         echo "Hmm... '$startsh' does not guarantee sh startup..."
1390         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1391 fi
1392 rm -f sharp
1393
1394
1395 : Save command line options in file UU/cmdline.opt for later use in
1396 : generating config.sh.
1397 cat > cmdline.opt <<EOSH
1398 # Configure command line arguments.
1399 config_arg0='$0'
1400 config_args='$*'
1401 config_argc=$#
1402 EOSH
1403 argn=1
1404 args_exp=''
1405 args_sep=''
1406 for arg in "$@"; do
1407         cat >>cmdline.opt <<EOSH
1408 config_arg$argn='$arg'
1409 EOSH
1410         # Extreme backslashitis: replace each ' by '"'"'
1411         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1412 $arg
1413 EOC
1414         arg_exp=`cat cmdl.opt`
1415         args_exp="$args_exp$args_sep'$arg_exp'"
1416         argn=`expr $argn + 1`
1417         args_sep=' '
1418 done
1419 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1420 # used by ./hints/os2.sh
1421 rm -f cmdl.opt
1422
1423 : produce awk script to parse command line options
1424 cat >options.awk <<'EOF'
1425 BEGIN {
1426         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1427
1428         len = length(optstr);
1429         for (i = 1; i <= len; i++) {
1430                 c = substr(optstr, i, 1);
1431                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1432                 if (a == ":") {
1433                         arg[c] = 1;
1434                         i++;
1435                 }
1436                 opt[c] = 1;
1437         }
1438 }
1439 {
1440         expect = 0;
1441         str = $0;
1442         if (substr(str, 1, 1) != "-") {
1443                 printf("'%s'\n", str);
1444                 next;
1445         }
1446         len = length($0);
1447         for (i = 2; i <= len; i++) {
1448                 c = substr(str, i, 1);
1449                 if (!opt[c]) {
1450                         printf("-%s\n", substr(str, i));
1451                         next;
1452                 }
1453                 printf("-%s\n", c);
1454                 if (arg[c]) {
1455                         if (i < len)
1456                                 printf("'%s'\n", substr(str, i + 1));
1457                         else
1458                                 expect = 1;
1459                         next;
1460                 }
1461         }
1462 }
1463 END {
1464         if (expect)
1465                 print "?";
1466 }
1467 EOF
1468
1469 : process the command line options
1470 set X `for arg in "$@"; do echo "X$arg"; done |
1471         sed -e s/X// | awk -f options.awk`
1472 eval "set $*"
1473 shift
1474 rm -f options.awk
1475
1476 : set up default values
1477 fastread=''
1478 reuseval=false
1479 config_sh=''
1480 alldone=''
1481 error=''
1482 silent=''
1483 extractsh=''
1484 override=''
1485 knowitall=''
1486 rm -f optdef.sh posthint.sh
1487 cat >optdef.sh <<EOS
1488 $startsh
1489 EOS
1490
1491
1492 : option parsing
1493 while test $# -gt 0; do
1494         case "$1" in
1495         -d) shift; fastread=yes;;
1496         -e) shift; alldone=cont;;
1497         -f)
1498                 shift
1499                 cd ..
1500                 if test -r "$1"; then
1501                         config_sh="$1"
1502                 else
1503                         echo "$me: cannot read config file $1." >&2
1504                         error=true
1505                 fi
1506                 cd UU
1507                 shift;;
1508         -h) shift; error=true;;
1509         -r) shift; reuseval=true;;
1510         -s) shift; silent=true; realsilent=true;;
1511         -E) shift; alldone=exit;;
1512         -K) shift; knowitall=true;;
1513         -O) shift; override=true;;
1514         -S) shift; silent=true; extractsh=true;;
1515         -D)
1516                 shift
1517                 case "$1" in
1518                 *=)
1519                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1520                         echo "$me: ignoring -D $1" >&2
1521                         ;;
1522                 *=*) echo "$1" | \
1523                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1524                 *) echo "$1='define'" >> optdef.sh;;
1525                 esac
1526                 shift
1527                 ;;
1528         -U)
1529                 shift
1530                 case "$1" in
1531                 *=) echo "$1" >> optdef.sh;;
1532                 *=*)
1533                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1534                         echo "$me: ignoring -U $1" >&2
1535                         ;;
1536                 *) echo "$1='undef'" >> optdef.sh;;
1537                 esac
1538                 shift
1539                 ;;
1540         -A)
1541             shift
1542             xxx=''
1543             yyy="$1"
1544             zzz=''
1545             uuu=undef
1546             case "$yyy" in
1547             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1548                  case "$zzz" in
1549                  *:*) zzz='' ;;
1550                  *)   xxx=append
1551                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1552                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1553                  esac
1554                  ;;
1555             esac
1556             case "$xxx" in
1557             '')  case "$yyy" in
1558                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1559                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1560                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1561                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1562                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1563                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1564                  esac
1565                  ;;       
1566             esac
1567             case "$xxx" in
1568             append)
1569                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1570             clear)
1571                 echo "$yyy=''"                  >> posthint.sh ;;
1572             define)
1573                 case "$zzz" in
1574                 '') zzz=define ;;
1575                 esac
1576                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1577             eval)
1578                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1579             prepend)
1580                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1581             undef)
1582                 case "$zzz" in
1583                 '') zzz="$uuu" ;;
1584                 esac
1585                 echo "$yyy=$zzz"                >> posthint.sh ;;
1586             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1587             esac
1588             shift
1589             ;;
1590         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1591             exit 0;;
1592         --) break;;
1593         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1594         *) break;;
1595         esac
1596 done
1597
1598 case "$error" in
1599 true)
1600         cat >&2 <<EOM
1601 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1602                  [-U symbol] [-U symbol=] [-A command:symbol...]
1603   -d : use defaults for all answers.
1604   -e : go on without questioning past the production of config.sh.
1605   -f : specify an alternate default configuration file.
1606   -h : print this help message and exit (with an error status).
1607   -r : reuse C symbols value if possible (skips costly nm extraction).
1608   -s : silent mode, only echoes questions and essential information.
1609   -D : define symbol to have some value:
1610          -D symbol         symbol gets the value 'define'
1611          -D symbol=value   symbol gets the value 'value'
1612   -E : stop at the end of questions, after having produced config.sh.
1613   -K : do not use unless you know what you are doing.
1614   -O : let -D and -U override definitions from loaded configuration file.
1615   -S : perform variable substitutions on all .SH files (can mix with -f)
1616   -U : undefine symbol:
1617          -U symbol    symbol gets the value 'undef'
1618          -U symbol=   symbol gets completely empty
1619   -A : manipulate symbol after the platform specific hints have been applied:
1620          -A symbol=value                append " "value to symbol
1621          -A append:symbol=value         append value to symbol
1622          -A define:symbol=value         define symbol to have value
1623          -A clear:symbol                define symbol to be ''
1624          -A define:symbol               define symbol to be 'define'
1625          -A eval:symbol=value           define symbol to be eval of value
1626          -A prepend:symbol=value        prepend value to symbol
1627          -A undef:symbol                define symbol to be 'undef'
1628          -A undef:symbol=               define symbol to be ''
1629   -V : print version number and exit (with a zero status).
1630 EOM
1631         exit 1
1632         ;;
1633 esac
1634
1635 : Sanity checks
1636 case "$fastread$alldone" in
1637 yescont|yesexit) ;;
1638 *)
1639         case "$extractsh" in
1640         true) ;;
1641         *)
1642                 if test ! -t 0; then
1643                         echo "Say 'sh Configure', not 'sh <Configure'"
1644                         exit 1
1645                 fi
1646                 ;;
1647         esac
1648         ;;
1649 esac
1650
1651 exec 4>&1
1652 case "$silent" in
1653 true) exec 1>/dev/null;;
1654 esac
1655
1656 : run the defines and the undefines, if any, but leave the file out there...
1657 touch optdef.sh
1658 . ./optdef.sh
1659 : create the posthint manipulation script and leave the file out there...
1660 touch posthint.sh
1661
1662 : set package name
1663 package=perl5
1664 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1665 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1666 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1667 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1668 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1669 esac
1670
1671 : Some greps do not return status, grrr.
1672 echo "grimblepritz" >grimble
1673 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1674         contains=contains
1675 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1676         contains=grep
1677 else
1678         contains=contains
1679 fi
1680 rm -f grimble
1681 : the following should work in any shell
1682 case "$contains" in
1683 contains*)
1684         echo " "
1685         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1686         cat >contains <<'EOSS'
1687 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1688 EOSS
1689 chmod +x contains
1690 esac
1691
1692 : Find the path to the source tree
1693 case "$src" in
1694 '') case "$0" in
1695     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1696          case "$src" in
1697          /*)    ;;
1698          .)     ;;
1699          *)     src=`cd ../$src && pwd` ;;
1700          esac
1701          ;;
1702     *)   src='.';;
1703     esac;;
1704 esac
1705 case "$src" in
1706 '')     src=/
1707         rsrc=/
1708         ;;
1709 /*) rsrc="$src";;
1710 *) rsrc="../$src";;
1711 esac
1712 if test -f $rsrc/Configure && \
1713         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1714 then
1715    : found it, so we are ok.
1716 else
1717         rsrc=''
1718         for src in . .. ../.. ../../.. ../../../..; do
1719                 if test -f ../$src/Configure && \
1720                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1721                 then
1722                         rsrc=../$src
1723                         break
1724                 fi
1725         done
1726 fi
1727 case "$rsrc" in
1728 '')
1729         cat <<EOM >&4
1730
1731 Sorry, I can't seem to locate the source dir for $package.  Please start
1732 Configure with an explicit path -- i.e. /some/path/Configure.
1733
1734 EOM
1735         exit 1
1736         ;;
1737 ../.)   rsrc='..';;
1738 *)
1739         echo " "
1740         echo "Sources for $package found in \"$src\"." >&4
1741         ;;
1742 esac
1743
1744 : script used to extract .SH files with variable substitutions
1745 cat >extract <<'EOS'
1746 PERL_CONFIG_SH=true
1747 echo "Doing variable substitutions on .SH files..."
1748 if test -f MANIFEST; then
1749         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1750 else
1751         echo "(Looking for .SH files under the source directory.)"
1752         set x `(cd "$src"; find . -name "*.SH" -print)`
1753 fi
1754 shift
1755 case $# in
1756 0) set x `(cd "$src"; echo *.SH)`; shift;;
1757 esac
1758 if test ! -f "$src/$1"; then
1759         shift
1760 fi
1761 mkdir_p='
1762 name=$1;
1763 create="";
1764 while test $name; do
1765         if test ! -d "$name"; then
1766                 create="$name $create";
1767                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1768                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1769         else
1770                 name="";
1771         fi;
1772 done;
1773 for file in $create; do
1774         mkdir $file;
1775 done
1776 '
1777 for file in $*; do
1778         case "$src" in
1779         ".")
1780                 case "$file" in
1781                 */*)
1782                         dir=`expr X$file : 'X\(.*\)/'`
1783                         file=`expr X$file : 'X.*/\(.*\)'`
1784                         (cd "$dir" && . ./$file)
1785                         ;;
1786                 *)
1787                         . ./$file
1788                         ;;
1789                 esac
1790                 ;;
1791         *)
1792                 case "$file" in
1793                 */*)
1794                         dir=`expr X$file : 'X\(.*\)/'`
1795                         file=`expr X$file : 'X.*/\(.*\)'`
1796                         (set x $dir; shift; eval $mkdir_p)
1797                         sh <"$src/$dir/$file"
1798                         ;;
1799                 *)
1800                         sh <"$src/$file"
1801                         ;;
1802                 esac
1803                 ;;
1804         esac
1805 done
1806 if test -f "$src/config_h.SH"; then
1807         if test ! -f config.h; then
1808         : oops, they left it out of MANIFEST, probably, so do it anyway.
1809         . "$src/config_h.SH"
1810         fi
1811 fi
1812 EOS
1813
1814 : extract files and exit if asked to do so
1815 case "$extractsh" in
1816 true)
1817         case "$realsilent" in
1818         true) ;;
1819         *) exec 1>&4;;
1820         esac
1821         case "$config_sh" in
1822         '') config_sh='config.sh';;
1823         esac
1824         echo " "
1825         echo "Fetching answers from $config_sh..."
1826         cd ..
1827         . $config_sh
1828         test "$override" && . ./optdef.sh
1829         echo " "
1830         . UU/extract
1831         rm -rf UU
1832         echo "Extraction done."
1833         exit 0
1834         ;;
1835 esac
1836
1837 : Eunice requires " " instead of "", can you believe it
1838 echo " "
1839 : Here we go...
1840 echo "Beginning of configuration questions for $package."
1841
1842 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1843
1844 : first determine how to suppress newline on echo command
1845 echo " "
1846 echo "Checking echo to see how to suppress newlines..."
1847 (echo "hi there\c" ; echo " ") >.echotmp
1848 if $contains c .echotmp >/dev/null 2>&1 ; then
1849         echo "...using -n."
1850         n='-n'
1851         c=''
1852 else
1853         cat <<'EOM'
1854 ...using \c
1855 EOM
1856         n=''
1857         c='\c'
1858 fi
1859 echo $n "The star should be here-->$c"
1860 echo '*'
1861 rm -f .echotmp
1862
1863 : Now test for existence of everything in MANIFEST
1864 echo " "
1865 if test -f "$rsrc/MANIFEST"; then
1866         echo "First let's make sure your kit is complete.  Checking..." >&4
1867         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1868         rm -f missing
1869         tmppwd=`pwd`
1870         for filelist in x??; do
1871                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1872         done
1873         if test -s missing; then
1874                 cat missing >&4
1875                 cat >&4 <<'EOM'
1876
1877 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1878
1879 You have the option of continuing the configuration process, despite the
1880 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1881 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1882 and contact the author (perlbug@perl.org).
1883
1884 EOM
1885                 echo $n "Continue? [n] $c" >&4
1886                 read ans
1887                 case "$ans" in
1888                 y*)
1889                         echo "Continuing..." >&4
1890                         rm -f missing
1891                         ;;
1892                 *)
1893                         echo "ABORTING..." >&4
1894                         kill $$
1895                         ;;
1896                 esac
1897         else
1898                 echo "Looks good..."
1899         fi
1900 else
1901         echo "There is no MANIFEST file.  I hope your kit is complete !"
1902 fi
1903 rm -f missing x??
1904
1905 echo " "
1906 : Find the appropriate value for a newline for tr
1907 if test -n "$DJGPP"; then
1908        trnl='\012'
1909 fi
1910 if test X"$trnl" = X; then
1911         case "`echo foo|tr '\n' x 2>/dev/null`" in
1912         foox) trnl='\n' ;;
1913         esac
1914 fi
1915 if test X"$trnl" = X; then
1916         case "`echo foo|tr '\012' x 2>/dev/null`" in
1917         foox) trnl='\012' ;;
1918         esac
1919 fi
1920 if test X"$trnl" = X; then
1921        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1922        fooxy) trnl='\n\r' ;;
1923        esac
1924 fi
1925 if test X"$trnl" = X; then
1926         cat <<EOM >&2
1927
1928 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1929
1930 EOM
1931         exit 1
1932 fi
1933
1934 : compute the number of columns on the terminal for proper question formatting
1935 case "$COLUMNS" in
1936 '') COLUMNS='80';;
1937 esac
1938
1939 : set up the echo used in my read
1940 myecho="case \"\$xxxm\" in
1941 '') echo $n \"\$rp $c\" >&4;;
1942 *) case \"\$rp\" in
1943         '') echo $n \"[\$xxxm] $c\";;
1944         *)
1945                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1946                         echo \"\$rp\" >&4
1947                         echo $n \"[\$xxxm] $c\" >&4
1948                 else
1949                         echo $n \"\$rp [\$xxxm] $c\" >&4
1950                 fi
1951                 ;;
1952         esac;;
1953 esac"
1954
1955 : now set up to do reads with possible shell escape and default assignment
1956 cat <<EOSC >myread
1957 $startsh
1958 xxxm=\$dflt
1959 $myecho
1960 ans='!'
1961 case "\$fastread" in
1962 yes) case "\$dflt" in
1963         '') ;;
1964         *) ans='';
1965                 case "\$silent-\$rp" in
1966                 true-) ;;
1967                 *) echo " " >&4;;
1968                 esac;;
1969         esac;;
1970 *) case "\$silent" in
1971         true) case "\$rp" in
1972                 '') ans='';;
1973                 esac;;
1974         esac;;
1975 esac
1976 while expr "X\$ans" : "X!" >/dev/null; do
1977         read answ
1978         set x \$xxxm
1979         shift
1980         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1981         case  "\$answ" in
1982         "!")
1983                 sh 1>&4
1984                 echo " "
1985                 $myecho
1986                 ;;
1987         !*)
1988                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1989                 shift
1990                 sh 1>&4 -c "\$*"
1991                 echo " "
1992                 $myecho
1993                 ;;
1994         "\$ans")
1995                 case "\$ans" in
1996                 \\&*)
1997                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1998                         shift
1999                         case "\$1" in
2000                         -d)
2001                                 fastread=yes
2002                                 echo "(OK, I'll run with -d after this question.)" >&4
2003                                 ;;
2004                         -*)
2005                                 echo "*** Sorry, \$1 not supported yet." >&4
2006                                 ;;
2007                         esac
2008                         $myecho
2009                         ans=!
2010                         ;;
2011                 esac;;
2012         *)
2013                 case "\$aok" in
2014                 y)
2015                         echo "*** Substitution done -- please confirm."
2016                         xxxm="\$ans"
2017                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2018                         xxxm="\$ans"
2019                         ans=!
2020                         ;;
2021                 *)
2022                         echo "*** Error -- try again."
2023                         ans=!
2024                         ;;
2025                 esac
2026                 $myecho
2027                 ;;
2028         esac
2029         case "\$ans\$xxxm\$nostick" in
2030         '')
2031                 ans=!
2032                 $myecho
2033                 ;;
2034         esac
2035 done
2036 case "\$ans" in
2037 '') ans="\$xxxm";;
2038 esac
2039 EOSC
2040
2041 : create .config dir to save info across Configure sessions
2042 test -d ../.config || mkdir ../.config
2043 cat >../.config/README <<EOF
2044 This directory created by Configure to save information that should
2045 persist across sessions for $package.
2046
2047 You may safely delete it if you wish.
2048 EOF
2049
2050 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2051 case "$usedevel" in
2052 $define|true|[yY]*) ;;
2053 *) case "$xversion" in
2054    *[13579])
2055         cat >&4 <<EOH
2056 *** WHOA THERE!!! ***
2057
2058     This is an UNSTABLE DEVELOPMENT release.
2059     The version of this $package distribution is $xversion, that is, odd,
2060     (as opposed to even) and that signifies a development release.
2061     If you want a maintenance release, you want an even-numbered version.
2062
2063     Do ***NOT*** install this into production use.
2064     Data corruption and crashes are possible.
2065
2066     It is most seriously suggested that you do not continue any further
2067     unless you want to help in developing and debugging Perl.
2068
2069     If you *still* want to build perl, you can answer 'y' now,
2070     or pass -Dusedevel to Configure.
2071
2072 EOH
2073         rp='Do you really want to continue?'
2074         dflt='n'
2075         . ./myread
2076         case "$ans" in
2077         [yY]) echo >&4 "Okay, continuing."
2078               usedevel="$define" ;;
2079         *) echo >&4 "Okay, bye."
2080            exit 1
2081            ;;
2082         esac
2083         ;;
2084     esac
2085     ;;
2086 esac
2087 case "$usedevel" in
2088 $define|true|[yY]*)
2089         case "$versiononly" in
2090         '') versiononly="$define" ;;
2091         esac
2092         case "$installusrbinperl" in
2093         '') installusrbinperl="$undef" ;;
2094         esac
2095         ;;
2096 esac
2097
2098 : general instructions
2099 needman=true
2100 firsttime=true
2101 user=`(logname) 2>/dev/null`
2102 case "$user" in
2103 '') user=`whoami 2>&1`;;
2104 esac
2105 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2106         firsttime=false
2107         echo " "
2108         rp='Would you like to see the instructions?'
2109         dflt=n
2110         . ./myread
2111         case "$ans" in
2112         [yY]*) ;;
2113         *) needman=false;;
2114         esac
2115 fi
2116 if $needman; then
2117         cat <<EOH
2118
2119 This installation shell script will examine your system and ask you questions
2120 to determine how the perl5 package should be installed. If you get
2121 stuck on a question, you may use a ! shell escape to start a subshell or
2122 execute a command.  Many of the questions will have default answers in square
2123 brackets; typing carriage return will give you the default.
2124
2125 On some of the questions which ask for file or directory names you are allowed
2126 to use the ~name construct to specify the login directory belonging to "name",
2127 even if you don't have a shell which knows about that.  Questions where this is
2128 allowed will be marked "(~name ok)".
2129
2130 EOH
2131         rp=''
2132         dflt='Type carriage return to continue'
2133         . ./myread
2134         cat <<'EOH'
2135
2136 The prompter used in this script allows you to use shell variables and
2137 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2138 in the default answer, as if the default line was a set of arguments given to a
2139 script shell.  This means you may also use $* to repeat the whole default line,
2140 so you do not have to re-type everything to add something to the default.
2141
2142 Everytime there is a substitution, you will have to confirm.  If there is an
2143 error (e.g. an unmatched backtick), the default answer will remain unchanged
2144 and you will be prompted again.
2145
2146 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2147 the questions and use the computed defaults (or the previous answers if there
2148 was already a config.sh file). Type 'Configure -h' for a list of options.
2149 You may also start interactively and then answer '& -d' at any prompt to turn
2150 on the non-interactive behaviour for the remainder of the execution.
2151
2152 EOH
2153         . ./myread
2154         cat <<EOH
2155
2156 Much effort has been expended to ensure that this shell script will run on any
2157 Unix system.  If despite that it blows up on yours, your best bet is to edit
2158 Configure and run it again.  If you can't run Configure for some reason,
2159 you'll have to generate a config.sh file by hand.  Whatever problems you
2160 have, let me (perlbug@perl.org) know how I blew it.
2161
2162 This installation script affects things in two ways:
2163
2164 1) it may do direct variable substitutions on some of the files included
2165    in this kit.
2166 2) it builds a config.h file for inclusion in C programs.  You may edit
2167    any of these files as the need arises after running this script.
2168
2169 If you make a mistake on a question, there is no easy way to back up to it
2170 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2171 files.  Configure will offer to let you do this before it runs the SH files.
2172
2173 EOH
2174         dflt='Type carriage return to continue'
2175         . ./myread
2176         case "$firsttime" in
2177         true) echo $user >>../.config/instruct;;
2178         esac
2179 fi
2180
2181 : find out where common programs are
2182 echo " "
2183 echo "Locating common programs..." >&4
2184 cat <<EOSC >loc
2185 $startsh
2186 case \$# in
2187 0) exit 1;;
2188 esac
2189 thing=\$1
2190 shift
2191 dflt=\$1
2192 shift
2193 for dir in \$*; do
2194         case "\$thing" in
2195         .)
2196         if test -d \$dir/\$thing; then
2197                 echo \$dir
2198                 exit 0
2199         fi
2200         ;;
2201         *)
2202         for thisthing in \$dir/\$thing; do
2203                 : just loop through to pick last item
2204         done
2205         if test -f \$thisthing; then
2206                 echo \$thisthing
2207                 exit 0
2208         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2209                 echo \$thisthing
2210                 exit 0
2211         elif test -f \$dir/\$thing.exe; then
2212                 if test -n "$DJGPP"; then
2213                         echo \$dir/\$thing.exe
2214                 elif test "$eunicefix" != ":"; then
2215                         : on Eunice apparently
2216                         echo \$dir/\$thing
2217                         exit 0
2218                 fi
2219                 exit 0
2220         fi
2221         ;;
2222         esac
2223 done
2224 echo \$dflt
2225 exit 1
2226 EOSC
2227 chmod +x loc
2228 $eunicefix loc
2229 loclist="
2230 awk
2231 cat
2232 chmod
2233 comm
2234 cp
2235 echo
2236 expr
2237 grep
2238 ls
2239 mkdir
2240 rm
2241 sed
2242 sort
2243 touch
2244 tr
2245 uniq
2246 "
2247 trylist="
2248 Mcc
2249 ar
2250 bison
2251 byacc
2252 cpp
2253 csh
2254 date
2255 egrep
2256 gmake
2257 gzip
2258 less
2259 ln
2260 make
2261 more
2262 nm
2263 nroff
2264 pg
2265 test
2266 uname
2267 zip
2268 "
2269 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2270 pth="$pth /lib /usr/lib"
2271 for file in $loclist; do
2272         eval xxx=\$$file
2273         case "$xxx" in
2274         /*|?:[\\/]*)
2275                 if test -f "$xxx"; then
2276                         : ok
2277                 else
2278                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2279                         xxx=`./loc $file $file $pth`
2280                 fi
2281                 ;;
2282         '') xxx=`./loc $file $file $pth`;;
2283         *) xxx=`./loc $xxx $xxx $pth`;;
2284         esac
2285         eval $file=$xxx$_exe
2286         eval _$file=$xxx
2287         case "$xxx" in
2288         /*)
2289                 echo $file is in $xxx.
2290                 ;;
2291         ?:[\\/]*)
2292                 echo $file is in $xxx.
2293                 ;;
2294         *)
2295                 echo "I don't know where '$file' is, and my life depends on it." >&4
2296                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2297                 exit 1
2298                 ;;
2299         esac
2300 done
2301 echo " "
2302 echo "Don't worry if any of the following aren't found..."
2303 say=offhand
2304 for file in $trylist; do
2305         eval xxx=\$$file
2306         case "$xxx" in
2307         /*|?:[\\/]*)
2308                 if test -f "$xxx"; then
2309                         : ok
2310                 else
2311                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2312                         xxx=`./loc $file $file $pth`
2313                 fi
2314                 ;;
2315         '') xxx=`./loc $file $file $pth`;;
2316         *) xxx=`./loc $xxx $xxx $pth`;;
2317         esac
2318         eval $file=$xxx$_exe
2319         eval _$file=$xxx
2320         case "$xxx" in
2321         /*)
2322                 echo $file is in $xxx.
2323                 ;;
2324         ?:[\\/]*)
2325                 echo $file is in $xxx.
2326                 ;;
2327         *)
2328                 echo "I don't see $file out there, $say."
2329                 say=either
2330                 ;;
2331         esac
2332 done
2333 case "$egrep" in
2334 egrep)
2335         echo "Substituting grep for egrep."
2336         egrep=$grep
2337         _egrep=$grep
2338         ;;
2339 esac
2340 case "$ln" in
2341 ln)
2342         echo "Substituting cp for ln."
2343         ln=$cp
2344         _ln=$cp
2345         ;;
2346 esac
2347 case "$make" in
2348 make)   
2349         case "$gmake" in
2350         gmake)
2351         echo "I can't find make or gmake, and my life depends on it." >&4
2352         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2353         exit 1
2354         ;;
2355         esac
2356         ;;
2357 esac    
2358 case "$gmake" in
2359 gmake)  ;;
2360 *)      # We can't have osname yet.
2361         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2362                 # Assume that gmake, if found, is definitely GNU make
2363                 # and prefer it over the system make.
2364                 echo "Substituting gmake for make."
2365                 make=$gmake
2366                 _make=$gmake
2367         fi
2368         ;;
2369 esac
2370 case "$test" in
2371 test)
2372         echo "Hopefully test is built into your sh."
2373         ;;
2374 *)
2375         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2376                 echo "Using the test built into your sh."
2377                 test=test
2378                 _test=test
2379         fi
2380         ;;
2381 esac
2382 case "$echo" in
2383 echo)
2384         echo "Hopefully echo is built into your sh."
2385         ;;
2386 '') ;;
2387 *)
2388         echo " "
2389 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2390         $echo $n "hi there$c" >foo1
2391         echo $n "hi there$c" >foo2
2392         if cmp foo1 foo2 >/dev/null 2>&1; then
2393                 echo "They are compatible.  In fact, they may be identical."
2394         else
2395                 case "$n" in
2396                 '-n') n='' c='\c';;
2397                 *) n='-n' c='';;
2398                 esac
2399                 cat <<FOO
2400 They are not compatible!  You are probably running ksh on a non-USG system.
2401 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2402 have echo built in and we may have to run some Bourne shell scripts.  That
2403 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2404
2405 FOO
2406                 $echo $n "The star should be here-->$c"
2407                 $echo "*"
2408         fi
2409         $rm -f foo1 foo2
2410         ;;
2411 esac
2412
2413 cat <<EOS >trygcc
2414 $startsh
2415 EOS
2416 cat <<'EOSC' >>trygcc
2417 case "$cc" in
2418 '') ;;
2419 *)  $rm -f try try.*
2420     $cat >try.c <<EOM
2421 int main(int argc, char *argv[]) {
2422   return 0;
2423 }
2424 EOM
2425     if $cc -o try $ccflags $ldflags try.c; then
2426        :
2427     else
2428         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2429         despair=yes
2430         trygcc=yes
2431         case "$cc" in
2432         *gcc*) trygcc=no ;;
2433         esac
2434         case "`$cc -v -c try.c 2>&1`" in
2435         *gcc*) trygcc=no ;;
2436         esac
2437         if $test X"$trygcc" = Xyes; then
2438             if gcc -o try -c try.c; then
2439                 echo " "
2440                 echo "You seem to have a working gcc, though." >&4
2441                 rp="Would you like to use it?"
2442                 dflt=y
2443                 if $test -f myread; then
2444                     . ./myread
2445                 else
2446                     if $test -f UU/myread; then
2447                         . ./UU/myread
2448                     else
2449                         echo "Cannot find myread, sorry.  Aborting." >&2
2450                         exit 1
2451                     fi
2452                 fi  
2453                 case "$ans" in
2454                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2455                        if $test -f usethreads.cbu; then
2456                            $cat >&4 <<EOM 
2457
2458 *** However, any setting of the C compiler flags (e.g. for thread support)
2459 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2460 *** (together with e.g. -Dusethreads).
2461
2462 EOM
2463                        fi;;
2464                 esac
2465             fi
2466         fi
2467     fi
2468     $rm -f try try.*
2469     ;;
2470 esac
2471 EOSC
2472
2473 cat <<EOS >checkcc
2474 $startsh
2475 EOS
2476 cat <<'EOSC' >>checkcc
2477 case "$cc" in        
2478 '') ;;
2479 *)  $rm -f try try.*              
2480     $cat >try.c <<EOM
2481 int main(int argc, char *argv[]) {
2482   return 0;
2483 }
2484 EOM
2485     if $cc -o try $ccflags $ldflags try.c; then
2486        :
2487     else
2488         if $test X"$despair" = Xyes; then
2489            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490         fi
2491         $cat >&4 <<EOM         
2492 You need to find a working C compiler.
2493 Either (purchase and) install the C compiler supplied by your OS vendor,
2494 or for a free C compiler try http://gcc.gnu.org/
2495 I cannot continue any further, aborting.
2496 EOM
2497         exit 1
2498     fi
2499     $rm -f try try.*
2500     ;;
2501 esac
2502 EOSC
2503
2504 : determine whether symbolic links are supported
2505 echo " "
2506 $touch blurfl
2507 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2508         echo "Symbolic links are supported." >&4
2509         lns="$ln -s"
2510 else
2511         echo "Symbolic links are NOT supported." >&4
2512         lns="$ln"
2513 fi
2514 $rm -f blurfl sym
2515
2516 : determine whether symbolic links are supported
2517 echo " "
2518 case "$lns" in
2519 *"ln"*" -s")
2520         echo "Checking how to test for symbolic links..." >&4
2521         $lns blurfl sym
2522         if $test "X$issymlink" = X; then
2523                 case "$newsh" in
2524                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 esac
2527                 if test $? = 0; then
2528                         issymlink="test -h"
2529                 else
2530                         echo "Your builtin 'test -h' may be broken." >&4
2531                         case "$test" in
2532                         /*)     ;;
2533                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2534                                 for p in $pth
2535                                 do
2536                                         if test -f "$p/$test"; then
2537                                                 test="$p/$test"
2538                                                 break
2539                                         fi
2540                                 done
2541                                 ;;
2542                         esac
2543                         case "$test" in
2544                         /*)
2545                                 echo "Trying external '$test -h'." >&4
2546                                 issymlink="$test -h"
2547                                 if $test ! -h sym >/dev/null 2>&1; then
2548                                         echo "External '$test -h' is broken, too." >&4
2549                                         issymlink=''
2550                                 fi
2551                                 ;;
2552                         *)      issymlink='' ;;
2553                         esac
2554                 fi              
2555         fi
2556         if $test "X$issymlink" = X; then
2557                 if $test -L sym 2>/dev/null; then
2558                         issymlink="$test -L"
2559                         echo "The builtin '$test -L' worked." >&4
2560                 fi
2561         fi
2562         if $test "X$issymlink" != X; then
2563                 echo "You can test for symbolic links with '$issymlink'." >&4
2564         else
2565                 echo "I do not know how you can test for symbolic links." >&4
2566         fi
2567         $rm -f blurfl sym
2568         ;;
2569 *)      echo "No symbolic links, so not testing for their testing..." >&4
2570         ;;
2571 esac
2572 echo " "
2573
2574
2575 case "$mksymlinks" in
2576 $define|true|[yY]*)
2577         case "$src" in
2578         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2579                 exit 1
2580                 ;;
2581         *)      case "$lns:$issymlink" in
2582                 *"ln"*" -s:"*"test -"?)
2583                         echo "Creating the symbolic links..." >&4
2584                         echo "(First creating the subdirectories...)" >&4
2585                         cd ..
2586                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2587                                 read directory
2588                                 test -z "$directory" && break
2589                                 mkdir -p $directory
2590                         done
2591                         # Sanity check 1.
2592                         if test ! -d t/base; then
2593                                 echo "Failed to create the subdirectories.  Aborting." >&4
2594                                 exit 1
2595                         fi
2596                         echo "(Then creating the symlinks...)" >&4
2597                         awk '{print $1}' $src/MANIFEST | while true; do
2598                                 read filename
2599                                 test -z "$filename" && break
2600                                 if test -f $filename; then
2601                                         if $issymlink $filename; then
2602                                                 rm -f $filename
2603                                         fi
2604                                 fi
2605                                 if test -f $filename; then
2606                                         echo "$filename already exists, not symlinking."
2607                                 else
2608                                         ln -s $src/$filename $filename
2609                                 fi
2610                         done
2611                         # Sanity check 2.
2612                         if test ! -f t/base/lex.t; then
2613                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2614                                 exit 1
2615                         fi
2616                         cd UU
2617                         ;;
2618                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2619                         ;;
2620                 esac
2621                 ;;
2622         esac
2623         ;;
2624 esac
2625
2626
2627 case "$usecrosscompile" in
2628 $define|true|[yY]*)
2629         $echo "Cross-compiling..."
2630         croak=''
2631         case "$cc" in
2632         *-*-gcc) # A cross-compiling gcc, probably.
2633             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2634             ar=$targetarch-ar
2635             # leave out ld, choosing it is more complex
2636             nm=$targetarch-nm
2637             ranlib=$targetarch-ranlib
2638             $echo 'extern int foo;' > try.c
2639             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2640             shift
2641             if $test $# -gt 0; then
2642                 incpth="$incpth $*"
2643                 incpth="`$echo $incpth|$sed 's/^ //'`"
2644                 echo "Guessing incpth '$incpth'." >&4
2645                 for i in $*; do
2646                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2647                     if $test -d $j; then
2648                         libpth="$libpth $j"
2649                     fi
2650                 done   
2651                 libpth="`$echo $libpth|$sed 's/^ //'`"
2652                 echo "Guessing libpth '$libpth'." >&4
2653             fi
2654             $rm -f try.c
2655             ;;
2656         esac
2657         case "$targetarch" in
2658         '') echo "Targetarch not defined." >&4; croak=y ;;
2659         *)  echo "Using targetarch $targetarch." >&4 ;;
2660         esac
2661         case "$incpth" in
2662         '') echo "Incpth not defined." >&4; croak=y ;;
2663         *)  echo "Using incpth '$incpth'." >&4 ;;
2664         esac
2665         case "$libpth" in
2666         '') echo "Libpth not defined." >&4; croak=y ;;
2667         *)  echo "Using libpth '$libpth'." >&4 ;;
2668         esac
2669         case "$usrinc" in
2670         '') for i in $incpth; do
2671                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2672                     usrinc=$i
2673                     echo "Guessing usrinc $usrinc." >&4
2674                     break
2675                 fi
2676             done
2677             case "$usrinc" in
2678             '') echo "Usrinc not defined." >&4; croak=y ;;
2679             esac
2680             ;;
2681         *)  echo "Using usrinc $usrinc." >&4 ;;
2682         esac
2683         case "$targethost" in
2684         '') echo "Targethost not defined." >&4; croak=y ;;
2685         *)  echo "Using targethost $targethost." >&4
2686         esac
2687         locincpth=' '
2688         loclibpth=' '
2689         case "$croak" in
2690         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2691         esac
2692         case "$src" in
2693         /*) run=$src/Cross/run
2694             targetmkdir=$src/Cross/mkdir
2695             to=$src/Cross/to
2696             from=$src/Cross/from
2697             ;;
2698         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2699             run=$pwd/Cross/run
2700             targetmkdir=$pwd/Cross/mkdir
2701             to=$pwd/Cross/to
2702             from=$pwd/Cross/from
2703             ;;
2704         esac
2705         case "$targetrun" in
2706         '') targetrun=ssh ;;
2707         esac
2708         case "$targetto" in
2709         '') targetto=scp ;;
2710         esac
2711         case "$targetfrom" in
2712         '') targetfrom=scp ;;
2713         esac
2714         run=$run-$targetrun
2715         to=$to-$targetto
2716         from=$from-$targetfrom
2717         case "$targetdir" in
2718         '')  targetdir=/tmp
2719              echo "Guessing targetdir $targetdir." >&4
2720              ;;
2721         esac
2722         case "$targetuser" in
2723         '')  targetuser=root
2724              echo "Guessing targetuser $targetuser." >&4
2725              ;;
2726         esac
2727         case "$targetfrom" in
2728         scp)    q=-q ;;
2729         *)      q='' ;;
2730         esac
2731         case "$targetrun" in
2732         ssh|rsh)
2733             cat >$run <<EOF
2734 #!/bin/sh
2735 case "\$1" in
2736 -cwd)
2737   shift
2738   cwd=\$1
2739   shift
2740   ;;
2741 esac
2742 case "\$cwd" in
2743 '') cwd=$targetdir ;;
2744 esac
2745 exe=\$1
2746 shift
2747 if $test ! -f \$exe.xok; then
2748   $to \$exe
2749   $touch \$exe.xok
2750 fi
2751 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2752 EOF
2753             ;;
2754         *)  echo "Unknown targetrun '$targetrun'" >&4
2755             exit 1
2756             ;;
2757         esac
2758         case "$targetmkdir" in
2759         */Cross/mkdir)
2760             cat >$targetmkdir <<EOF
2761 #!/bin/sh
2762 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2763 EOF
2764             $chmod a+rx $targetmkdir
2765             ;;
2766         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2767             exit 1
2768             ;;
2769         esac
2770         case "$targetto" in
2771         scp|rcp)
2772             cat >$to <<EOF
2773 #!/bin/sh
2774 for f in \$@
2775 do
2776   case "\$f" in
2777   /*)
2778     $targetmkdir \`dirname \$f\`
2779     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2780     ;;
2781   *)
2782     $targetmkdir $targetdir/\`dirname \$f\`
2783     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2784     ;;
2785   esac
2786 done
2787 exit 0
2788 EOF
2789             ;;
2790         cp) cat >$to <<EOF
2791 #!/bin/sh
2792 for f in \$@
2793 do
2794   case "\$f" in
2795   /*)
2796     $mkdir -p $targetdir/\`dirname \$f\`
2797     $cp \$f $targetdir/\$f || exit 1
2798     ;;
2799   *)
2800     $targetmkdir $targetdir/\`dirname \$f\`
2801     $cp \$f $targetdir/\$f || exit 1
2802     ;;
2803   esac
2804 done
2805 exit 0
2806 EOF
2807             ;;
2808         *)  echo "Unknown targetto '$targetto'" >&4
2809             exit 1
2810             ;;
2811         esac
2812         case "$targetfrom" in
2813         scp|rcp)
2814           cat >$from <<EOF
2815 #!/bin/sh
2816 for f in \$@
2817 do
2818   $rm -f \$f
2819   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2820 done
2821 exit 0
2822 EOF
2823             ;;
2824         cp) cat >$from <<EOF
2825 #!/bin/sh
2826 for f in \$@
2827 do
2828   $rm -f \$f
2829   cp $targetdir/\$f . || exit 1
2830 done
2831 exit 0
2832 EOF
2833             ;;
2834         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2835             exit 1
2836             ;;
2837         esac
2838         if $test ! -f $run; then
2839             echo "Target 'run' script '$run' not found." >&4
2840         else
2841             $chmod a+rx $run
2842         fi
2843         if $test ! -f $to; then
2844             echo "Target 'to' script '$to' not found." >&4
2845         else
2846             $chmod a+rx $to
2847         fi
2848         if $test ! -f $from; then
2849             echo "Target 'from' script '$from' not found." >&4
2850         else
2851             $chmod a+rx $from
2852         fi
2853         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2854             exit 1
2855         fi
2856         cat >&4 <<EOF
2857 Using '$run' for remote execution,
2858 and '$from' and '$to'
2859 for remote file transfer.
2860 EOF
2861         ;;
2862 *)      run=''
2863         to=:
2864         from=:
2865         usecrosscompile='undef'
2866         targetarch=''
2867         ;;
2868 esac
2869
2870 : see whether [:lower:] and [:upper:] are supported character classes
2871 echo " "
2872 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2873 ABYZ)
2874         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2875         up='[:upper:]'
2876         low='[:lower:]'
2877         ;;
2878 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2879         # (0xc9 and 0xd1), therefore that is a nice testing point.
2880         if test "X$up" = X -o "X$low" = X; then
2881             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2882             ij) up='[A-Z]'
2883                 low='[a-z]'
2884                 ;;
2885             esac
2886         fi
2887         if test "X$up" = X -o "X$low" = X; then
2888             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2889             ij) up='A-Z'
2890                 low='a-z'
2891                 ;;
2892             esac
2893         fi
2894         if test "X$up" = X -o "X$low" = X; then
2895             case "`echo IJ | od -x 2>/dev/null`" in
2896             *C9D1*|*c9d1*)
2897                 echo "Hey, this might be EBCDIC." >&4
2898                 if test "X$up" = X -o "X$low" = X; then
2899                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900                     ij) up='[A-IJ-RS-Z]'
2901                         low='[a-ij-rs-z]'
2902                         ;;
2903                     esac
2904                 fi
2905                 if test "X$up" = X -o "X$low" = X; then
2906                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907                     ij) up='A-IJ-RS-Z'
2908                         low='a-ij-rs-z'
2909                         ;;
2910                     esac
2911                 fi
2912                 ;;
2913             esac
2914         fi
2915 esac
2916 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917 ij)
2918     echo "Using $up and $low to convert case." >&4
2919     ;;
2920 *)
2921     echo "I don't know how to translate letters from upper to lower case." >&4
2922     echo "Your tr is not acting any way I know of." >&4
2923     exit 1
2924     ;;
2925 esac
2926 : set up the translation script tr, must be called with ./tr of course
2927 cat >tr <<EOSC
2928 $startsh
2929 case "\$1\$2" in
2930 '[A-Z][a-z]') exec $tr '$up' '$low';;
2931 '[a-z][A-Z]') exec $tr '$low' '$up';;
2932 esac
2933 exec $tr "\$@"
2934 EOSC
2935 chmod +x tr
2936 $eunicefix tr
2937
2938 : Try to determine whether config.sh was made on this system
2939 case "$config_sh" in
2940 '')
2941 myuname=`$uname -a 2>/dev/null`
2942 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2943 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944 # because the A-Z/a-z are not consecutive.
2945 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2946         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2947 newmyuname="$myuname"
2948 dflt=n
2949 case "$knowitall" in
2950 '')
2951         if test -f ../config.sh; then
2952                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953                         eval "`grep myuname= ../config.sh`"
2954                 fi
2955                 if test "X$myuname" = "X$newmyuname"; then
2956                         dflt=y
2957                 fi
2958         fi
2959         ;;
2960 *) dflt=y;;
2961 esac
2962
2963 : Get old answers from old config file if Configure was run on the
2964 : same system, otherwise use the hints.
2965 hint=default
2966 cd ..
2967 if test -f config.sh; then
2968         echo " "
2969         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2970         . UU/myread
2971         case "$ans" in
2972         n*|N*) echo "OK, I'll ignore it."
2973                 mv config.sh config.sh.old
2974                 myuname="$newmyuname"
2975                 ;;
2976         *)  echo "Fetching default answers from your old config.sh file..." >&4
2977                 tmp_n="$n"
2978                 tmp_c="$c"
2979                 tmp_sh="$sh"
2980                 . ./config.sh
2981                 cp config.sh UU
2982                 n="$tmp_n"
2983                 c="$tmp_c"
2984                 : Older versions did not always set $sh.  Catch re-use of such
2985                 : an old config.sh.
2986                 case "$sh" in
2987                 '') sh="$tmp_sh" ;;
2988                 esac
2989                 hint=previous
2990                 ;;
2991         esac
2992 fi
2993 . ./UU/checkcc
2994 if test ! -f config.sh; then
2995         $cat <<EOM
2996
2997 First time through, eh?  I have some defaults handy for some systems
2998 that need some extra help getting the Configure answers right:
2999
3000 EOM
3001         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3002         dflt=''
3003         : Half the following guesses are probably wrong... If you have better
3004         : tests or hints, please send them to perlbug@perl.org
3005         : The metaconfig authors would also appreciate a copy...
3006         $test -f /irix && osname=irix
3007         $test -f /xenix && osname=sco_xenix
3008         $test -f /dynix && osname=dynix
3009         $test -f /dnix && osname=dnix
3010         $test -f /lynx.os && osname=lynxos
3011         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3012         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /bin/mips && /bin/mips && osname=mips
3015         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3017         $test -d /usr/apollo/bin && osname=apollo
3018         $test -f /etc/saf/_sactab && osname=svr4
3019         $test -d /usr/include/minix && osname=minix
3020         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3021         if $test -d /MachTen -o -d /MachTen_Folder; then
3022                 osname=machten
3023                 if $test -x /sbin/version; then
3024                         osvers=`/sbin/version | $awk '{print $2}' |
3025                         $sed -e 's/[A-Za-z]$//'`
3026                 elif $test -x /usr/etc/version; then
3027                         osvers=`/usr/etc/version | $awk '{print $2}' |
3028                         $sed -e 's/[A-Za-z]$//'`
3029                 else
3030                         osvers="$2.$3"
3031                 fi
3032         fi
3033
3034         $test -f /sys/posix.dll &&
3035                 $test -f /usr/bin/what &&
3036                 set X `/usr/bin/what /sys/posix.dll` &&
3037                 $test "$3" = UWIN &&
3038                 osname=uwin &&
3039                 osvers="$5"
3040
3041         if $test -f $uname; then
3042                 set X $myuname
3043                 shift
3044
3045                 case "$5" in
3046                 fps*) osname=fps ;;
3047                 mips*)
3048                         case "$4" in
3049                         umips) osname=umips ;;
3050                         *) osname=mips ;;
3051                         esac;;
3052                 [23]100) osname=mips ;;
3053                 next*) osname=next ;;
3054                 i386*)
3055                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3057                                 osname='sco'
3058                                 osvers=$tmp
3059                         elif $test -f /etc/kconfig; then
3060                                 osname=isc
3061                                 if test "$lns" = "$ln -s"; then
3062                                         osvers=4
3063                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064                                         osvers=3
3065                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3066                                         osvers=2
3067                                 fi
3068                         fi
3069                         tmp=''
3070                         ;;
3071                 pc*)
3072                         if test -n "$DJGPP"; then
3073                                 osname=dos
3074                                 osvers=djgpp
3075                         fi
3076                         ;;
3077                 esac
3078
3079                 case "$1" in
3080                 aix) osname=aix
3081                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082                         case "$tmp" in
3083                         'not found') osvers="$4"."$3" ;;
3084                         '<3240'|'<>3240') osvers=3.2.0 ;;
3085                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086                         '=3250'|'>3250') osvers=3.2.5 ;;
3087                         *) osvers=$tmp;;
3088                         esac
3089                         ;;
3090                 bsd386) osname=bsd386
3091                         osvers=`$uname -r`
3092                         ;;
3093                 cygwin*) osname=cygwin
3094                         osvers="$3"
3095                         ;;
3096                 *dc.osx) osname=dcosx
3097                         osvers="$3"
3098                         ;;
3099                 dnix) osname=dnix
3100                         osvers="$3"
3101                         ;;
3102                 domainos) osname=apollo
3103                         osvers="$3"
3104                         ;;
3105                 dgux) osname=dgux 
3106                         osvers="$3"
3107                         ;;
3108                 dynixptx*) osname=dynixptx
3109                         osvers=`echo "$4"|sed 's/^v//'`
3110                         ;;
3111                 freebsd) osname=freebsd 
3112                         osvers="$3" ;;
3113                 genix) osname=genix ;;
3114                 hp*) osname=hpux 
3115                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3116                         ;;
3117                 irix*) osname=irix
3118                         case "$3" in
3119                         4*) osvers=4 ;;
3120                         5*) osvers=5 ;;
3121                         *)      osvers="$3" ;;
3122                         esac
3123                         ;;
3124                 linux) osname=linux
3125                         case "$3" in
3126                         *)      osvers="$3" ;;
3127                         esac
3128                         ;;
3129                 MiNT) osname=mint
3130                         ;;
3131                 netbsd*) osname=netbsd
3132                         osvers="$3"
3133                         ;;
3134                 news-os) osvers="$3"
3135                         case "$3" in
3136                         4*) osname=newsos4 ;;
3137                         *) osname=newsos ;;
3138                         esac
3139                         ;;
3140                 next*) osname=next ;;
3141                 nonstop-ux) osname=nonstopux ;;
3142                 openbsd) osname=openbsd
3143                         osvers="$3"
3144                         ;;
3145                 os2)    osname=os2
3146                         osvers="$4"
3147                         ;;
3148                 POSIX-BC | posix-bc ) osname=posix-bc
3149                         osvers="$3"
3150                         ;;
3151                 powerux | power_ux | powermax_os | powermaxos | \
3152                 powerunix | power_unix) osname=powerux
3153                         osvers="$3"
3154                         ;;
3155                 qnx) osname=qnx
3156                         osvers="$4"
3157                         ;;
3158                 solaris) osname=solaris
3159                         case "$3" in
3160                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3161                         *)      osvers="$3" ;;
3162                         esac
3163                         ;;
3164                 sunos) osname=sunos
3165                         case "$3" in
3166                         5*) osname=solaris
3167                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3168                         *)      osvers="$3" ;;
3169                         esac
3170                         ;;
3171                 titanos) osname=titanos
3172                         case "$3" in
3173                         1*) osvers=1 ;;
3174                         2*) osvers=2 ;;
3175                         3*) osvers=3 ;;
3176                         4*) osvers=4 ;;
3177                         *)      osvers="$3" ;;
3178                         esac
3179                         ;;
3180                 ultrix) osname=ultrix
3181                         osvers="$3"
3182                         ;;
3183                 osf1|mls+)      case "$5" in
3184                                 alpha)
3185                                         osname=dec_osf
3186                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3187                                         case "$osvers" in
3188                                         [1-9].[0-9]*) ;;
3189                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3190                                         esac
3191                                         ;;
3192                         hp*)    osname=hp_osf1  ;;
3193                         mips)   osname=mips_osf1 ;;
3194                         esac
3195                         ;;
3196                 unixware) osname=svr5
3197                         osvers="$4"
3198                         ;;
3199                 uts)    osname=uts
3200                         osvers="$3"
3201                         ;;
3202                 vos) osvers="$3"
3203                         ;;
3204                 $2) case "$osname" in
3205                         *isc*) ;;
3206                         *freebsd*) ;;
3207                         svr*)
3208                                 : svr4.x or possibly later
3209                                 case "svr$3" in 
3210                                 ${osname}*)
3211                                         osname=svr$3
3212                                         osvers=$4
3213                                         ;;
3214                                 esac
3215                                 case "$osname" in
3216                                 svr4.0)
3217                                         : Check for ESIX
3218                                         if test -f /stand/boot ; then
3219                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3220                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3221                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3222                                                         if test -n "$isesix"; then
3223                                                                 osname=esix4
3224                                                         fi
3225                                                 fi
3226                                         fi
3227                                         ;;
3228                                 esac
3229                                 ;;
3230                         *)      if test -f /etc/systemid; then
3231                                         osname=sco
3232                                         set `echo $3 | $sed 's/\./ /g'` $4
3233                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3234                                                 osvers=$1.$2.$3
3235                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3236                                                 osvers=$1.$2
3237                                         elif $test -f $src/hints/sco_$1.sh; then
3238                                                 osvers=$1
3239                                         fi
3240                                 else
3241                                         case "$osname" in
3242                                         '') : Still unknown.  Probably a generic Sys V.
3243                                                 osname="sysv"
3244                                                 osvers="$3"
3245                                                 ;;
3246                                         esac
3247                                 fi
3248                                 ;;
3249                         esac
3250                         ;;
3251                 *)      case "$osname" in
3252                         '') : Still unknown.  Probably a generic BSD.
3253                                 osname="$1"
3254                                 osvers="$3"
3255                                 ;;
3256                         esac
3257                         ;;
3258                 esac
3259         else
3260                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3261                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3262                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3263                                 osname=news_os
3264                         fi
3265                         $rm -f UU/kernel.what
3266                 elif test -d c:/. -o -n "$is_os2" ; then
3267                         set X $myuname
3268                         osname=os2
3269                         osvers="$5"
3270                 fi
3271         fi
3272         
3273         case "$targetarch" in
3274         '') ;;
3275         *)  hostarch=$osname
3276             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3277             osvers=''
3278             ;;
3279         esac
3280
3281         : Now look for a hint file osname_osvers, unless one has been
3282         : specified already.
3283         case "$hintfile" in
3284         ''|' ')
3285                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3286                 : Also try without trailing minor version numbers.
3287                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3288                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3289                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3290                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3291                 case "$file" in
3292                 '') dflt=none ;;
3293                 *)  case "$osvers" in
3294                         '') dflt=$file
3295                                 ;;
3296                         *)  if $test -f $src/hints/$file.sh ; then
3297                                         dflt=$file
3298                                 elif $test -f $src/hints/$xfile.sh ; then
3299                                         dflt=$xfile
3300                                 elif $test -f $src/hints/$xxfile.sh ; then
3301                                         dflt=$xxfile
3302                                 elif $test -f $src/hints/$xxxfile.sh ; then
3303                                         dflt=$xxxfile
3304                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3305                                         dflt=$xxxxfile
3306                                 elif $test -f "$src/hints/${osname}.sh" ; then
3307                                         dflt="${osname}"
3308                                 else
3309                                         dflt=none
3310                                 fi
3311                                 ;;
3312                         esac
3313                         ;;
3314                 esac
3315                 if $test -f Policy.sh ; then
3316                         case "$dflt" in
3317                         *Policy*) ;;
3318                         none) dflt="Policy" ;;
3319                         *) dflt="Policy $dflt" ;;
3320                         esac
3321                 fi
3322                 ;;
3323         *)
3324                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3325                 ;;
3326         esac
3327
3328         if $test -f Policy.sh ; then
3329                 $cat <<EOM
3330
3331 There's also a Policy hint file available, which should make the
3332 site-specific (policy) questions easier to answer.
3333 EOM
3334
3335         fi
3336
3337         $cat <<EOM
3338
3339 You may give one or more space-separated answers, or "none" if appropriate.
3340 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3341 is a good thing.  DO NOT give a wrong version or a wrong OS.
3342
3343 EOM
3344
3345         rp="Which of these apply, if any?"
3346         . UU/myread
3347         tans=$ans
3348         for file in $tans; do
3349                 if $test X$file = XPolicy -a -f Policy.sh; then
3350                         . Policy.sh
3351                         $cat Policy.sh >> UU/config.sh
3352                 elif $test -f $src/hints/$file.sh; then
3353                         . $src/hints/$file.sh
3354                         $cat $src/hints/$file.sh >> UU/config.sh
3355                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3356                         : nothing
3357                 else
3358                         : Give one chance to correct a possible typo.
3359                         echo "$file.sh does not exist"
3360                         dflt=$file
3361                         rp="hint to use instead?"
3362                         . UU/myread
3363                         for file in $ans; do
3364                                 if $test -f "$src/hints/$file.sh"; then
3365                                         . $src/hints/$file.sh
3366                                         $cat $src/hints/$file.sh >> UU/config.sh
3367                                 elif $test X$ans = X -o X$ans = Xnone ; then
3368                                         : nothing
3369                                 else
3370                                         echo "$file.sh does not exist -- ignored."
3371                                 fi
3372                         done
3373                 fi
3374         done
3375
3376         hint=recommended
3377         : Remember our hint file for later.
3378         if $test -f "$src/hints/$file.sh" ; then
3379                 hintfile="$file"
3380         else
3381                 hintfile=''
3382         fi
3383 fi
3384 cd UU
3385 ;;
3386 *)
3387         echo " "
3388         echo "Fetching default answers from $config_sh..." >&4
3389         tmp_n="$n"
3390         tmp_c="$c"
3391         cd ..
3392         cp $config_sh config.sh 2>/dev/null
3393         chmod +w config.sh
3394         . ./config.sh
3395         cd UU
3396         cp ../config.sh .
3397         n="$tmp_n"
3398         c="$tmp_c"
3399         hint=previous
3400         ;;
3401 esac
3402 test "$override" && . ./optdef.sh
3403
3404 : Restore computed paths
3405 for file in $loclist $trylist; do
3406         eval $file="\$_$file"
3407 done
3408
3409 cat << EOM
3410
3411 Configure uses the operating system name and version to set some defaults.
3412 The default value is probably right if the name rings a bell. Otherwise,
3413 since spelling matters for me, either accept the default or answer "none"
3414 to leave it blank.
3415
3416 EOM
3417 case "$osname" in
3418         ''|' ')
3419                 case "$hintfile" in
3420                 ''|' '|none) dflt=none ;;
3421                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3422                 esac
3423                 ;;
3424         *) dflt="$osname" ;;
3425 esac
3426 rp="Operating system name?"
3427 . ./myread
3428 case "$ans" in
3429 none)  osname='' ;;
3430 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3431 esac
3432 echo " "
3433 case "$osvers" in
3434         ''|' ')
3435                 case "$hintfile" in
3436                 ''|' '|none) dflt=none ;;
3437                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3438                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3439                         case "$dflt" in
3440                         ''|' ') dflt=none ;;
3441                         esac
3442                         ;;
3443                 esac
3444                 ;;
3445         *) dflt="$osvers" ;;
3446 esac
3447 rp="Operating system version?"
3448 . ./myread
3449 case "$ans" in
3450 none)  osvers='' ;;
3451 *) osvers="$ans" ;;
3452 esac
3453
3454
3455 . ./posthint.sh
3456
3457 : who configured the system
3458 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3459 cf_by=`(logname) 2>/dev/null`
3460 case "$cf_by" in
3461 "")
3462         cf_by=`(whoami) 2>/dev/null`
3463         case "$cf_by" in
3464         "") cf_by=unknown ;;
3465         esac ;;
3466 esac
3467
3468 : set up the script used to warn in case of inconsistency
3469 cat <<EOS >whoa
3470 $startsh
3471 EOS
3472 cat <<'EOSC' >>whoa
3473 dflt=y
3474 echo " "
3475 echo "*** WHOA THERE!!! ***" >&4
3476 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3477 rp="    Keep the $hint value?"
3478 . ./myread
3479 case "$ans" in
3480 y) td=$was; tu=$was;;
3481 esac
3482 EOSC
3483
3484 : function used to set $1 to $val
3485 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3486 case "$val$was" in
3487 $define$undef) . ./whoa; eval "$var=\$td";;
3488 $undef$define) . ./whoa; eval "$var=\$tu";;
3489 *) eval "$var=$val";;
3490 esac'
3491
3492 case "$usesocks" in
3493 $define|true|[yY]*)     dflt='y';;
3494 *) dflt='n';;
3495 esac
3496 cat <<EOM
3497
3498 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3499 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3500 to use the PerlIO abstraction layer, this will be implicitly selected.
3501
3502 If this doesn't make any sense to you, just accept the default '$dflt'.
3503 EOM
3504 rp='Build Perl for SOCKS?'
3505 . ./myread
3506 case "$ans" in
3507 y|Y)    val="$define" ;;     
3508 *)      val="$undef" ;;
3509 esac
3510 set usesocks
3511 eval $setvar
3512
3513 case "$usesocks" in
3514 $define|true|[yY]*) useperlio="$define";;
3515 esac
3516
3517 case "$useperlio" in
3518 $define|true|[yY]*|'')  dflt='y';;
3519 *) dflt='n';;
3520 esac
3521 cat <<EOM
3522
3523 Previous version of $package used the standard IO mechanisms as
3524 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3525 alternate IO mechanisms via the PerlIO abstraction layer, but the
3526 stdio mechanism is still available if needed.  The abstraction layer
3527 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3528 Using PerlIO with sfio may cause problems with some extension modules.
3529
3530 If this doesn't make any sense to you, just accept the default '$dflt'.
3531 EOM
3532 rp='Use the PerlIO abstraction layer?'
3533 . ./myread
3534 case "$ans" in
3535 y|Y) 
3536         val="$define"
3537         ;;
3538 *)      
3539         echo "Ok, doing things the stdio way."
3540         val="$undef"
3541         ;;
3542 esac
3543 set useperlio
3544 eval $setvar 
3545
3546 case "$usesocks" in
3547 $define|true|[yY]*)
3548         case "$useperlio" in
3549         $define|true|[yY]*) ;;
3550         *)      cat >&4 <<EOM
3551
3552 You are using the SOCKS proxy protocol library which means that you
3553 should also use the PerlIO layer.  You may be headed for trouble.
3554
3555 EOM
3556                 ;;
3557         esac
3558         ;;
3559 esac
3560
3561         
3562 case "$usethreads" in
3563 $define|true|[yY]*)     dflt='y';;
3564 *)     # Catch case where user specified ithreads or 5005threads but
3565        # forgot -Dusethreads (A.D. 4/2002)
3566        case "$useithreads$use5005threads" in
3567        *$define*)      
3568                 case "$useperlio" in
3569                 "$define")      dflt='y' ;;
3570                 *)              dflt='n' ;;
3571                 esac
3572                 ;;
3573        *)       dflt='n';;
3574        esac
3575        ;;
3576 esac
3577 cat <<EOM
3578
3579 Perl can be built to take advantage of threads on some systems.
3580 To do so, Configure can be run with -Dusethreads.
3581
3582 Note that Perl built with threading support runs slightly slower
3583 and uses more memory than plain Perl. The current implementation
3584 is believed to be stable, but it is fairly new, and so should be
3585 treated with caution.
3586
3587 If this doesn't make any sense to you, just accept the default '$dflt'.
3588 EOM
3589 rp='Build a threading Perl?'
3590 . ./myread
3591 case "$ans" in
3592 y|Y)    val="$define" ;;
3593 *)      val="$undef" ;;
3594 esac
3595 set usethreads
3596 eval $setvar
3597
3598 case "$usethreads" in
3599 $define)
3600         $cat <<EOM
3601
3602 Since release 5.6, Perl has had two different threading implementations,
3603 the newer interpreter-based version (ithreads) with one interpreter per
3604 thread, and the older 5.005 version (5005threads).
3605 The 5005threads version is effectively unmaintained and will probably be
3606 removed in Perl 5.10, so there should be no need to build a Perl using it
3607 unless needed for backwards compatibility with some existing 5.005threads
3608 code.
3609
3610 EOM
3611         : Default to ithreads unless overridden on command line or with
3612         : old config.sh
3613         dflt='y'
3614         case "$use5005threads" in
3615                 $define|true|[yY]*) dflt='n';;
3616         esac
3617         case "$useithreads" in
3618                 $undef|false|[nN]*) dflt='n';;
3619         esac
3620         rp='Use the newer interpreter-based ithreads?'
3621         . ./myread
3622         case "$ans" in
3623         y|Y)    val="$define" ;;
3624         *)      val="$undef" ;;
3625         esac
3626         set useithreads
3627         eval $setvar
3628         : Now set use5005threads to the opposite value.
3629         case "$useithreads" in
3630         $define) val="$undef" ;;
3631         *) val="$define" ;;
3632         esac
3633         set use5005threads
3634         eval $setvar
3635         ;;
3636 *)
3637         useithreads="$undef"
3638         use5005threads="$undef"
3639         ;;
3640 esac
3641
3642 case "$useithreads$use5005threads" in
3643 "$define$define")
3644         $cat >&4 <<EOM
3645
3646 You cannot have both the ithreads and the 5.005 threads enabled
3647 at the same time.  Disabling the 5.005 threads since they are
3648 much less stable than the ithreads.
3649
3650 EOM
3651         use5005threads="$undef"
3652         ;;
3653 esac
3654
3655 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3656         cat >&4 <<EOF
3657 ***
3658 *** To build with ithreads you must also use the PerlIO layer.
3659 *** Cannot continue, aborting.
3660 ***
3661 EOF
3662         exit 1
3663 fi
3664
3665 case "$d_oldpthreads" in
3666 '')     : Configure tests would be welcome here.  For now, assume undef.
3667         val="$undef" ;;
3668 *)      val="$d_oldpthreads" ;;
3669 esac
3670 set d_oldpthreads
3671 eval $setvar
3672
3673
3674 case "$usethreads" in
3675 "$define"|true|[yY]*)
3676 : Look for a hint-file generated 'call-back-unit'.  If the
3677 : user has specified that a threading perl is to be built,
3678 : we may need to set or change some other defaults.
3679         if $test -f usethreads.cbu; then
3680                 echo "Your platform has some specific hints for threaded builds, using them..."
3681                 . ./usethreads.cbu
3682         else
3683                 $cat <<EOM
3684 (Your platform doesn't have any specific hints for threaded builds.
3685  Assuming POSIX threads, then.)
3686 EOM
3687         fi
3688         ;;
3689 esac
3690
3691 cat <<EOM
3692
3693 Perl can be built so that multiple Perl interpreters can coexist
3694 within the same Perl executable.
3695 EOM
3696
3697 case "$useithreads" in
3698 $define)
3699         cat <<EOM
3700 This multiple interpreter support is required for interpreter-based threads.
3701 EOM
3702         val="$define"
3703         ;;
3704 *)      case "$usemultiplicity" in
3705         $define|true|[yY]*)     dflt='y';;
3706         *) dflt='n';;
3707         esac
3708         echo " "
3709         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3710         rp='Build Perl for multiplicity?'
3711         . ./myread
3712         case "$ans" in
3713         y|Y)    val="$define" ;;
3714         *)      val="$undef" ;;
3715         esac
3716         ;;
3717 esac
3718 set usemultiplicity
3719 eval $setvar
3720
3721
3722 case "$usemorebits" in
3723 "$define"|true|[yY]*)
3724         use64bitint="$define"
3725         uselongdouble="$define"
3726         usemorebits="$define"
3727         ;;
3728 *)      usemorebits="$undef"
3729         ;;
3730 esac
3731
3732 : make some quick guesses about what we are up against
3733 echo " "
3734 $echo $n "Hmm...  $c"
3735 echo exit 1 >bsd
3736 echo exit 1 >usg
3737 echo exit 1 >v7
3738 echo exit 1 >osf1
3739 echo exit 1 >eunice
3740 echo exit 1 >xenix
3741 echo exit 1 >venix
3742 echo exit 1 >os2
3743 d_bsd="$undef"
3744 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3745 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3746 then
3747         echo "Looks kind of like an OSF/1 system, but we'll see..."
3748         echo exit 0 >osf1
3749 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3750         xxx=`./loc addbib blurfl $pth`
3751         if $test -f $xxx; then
3752         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3753                 echo exit 0 >bsd
3754                 echo exit 0 >usg
3755         else
3756                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3757                         echo "Looks kind of like an extended USG system, but we'll see..."
3758                 else
3759                         echo "Looks kind of like a USG system, but we'll see..."
3760                 fi
3761                 echo exit 0 >usg
3762         fi
3763 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3764         echo "Looks kind of like a BSD system, but we'll see..."
3765         d_bsd="$define"
3766         echo exit 0 >bsd
3767 else
3768         echo "Looks kind of like a Version 7 system, but we'll see..."
3769         echo exit 0 >v7
3770 fi
3771 case "$eunicefix" in
3772 *unixtovms*)
3773         $cat <<'EOI'
3774 There is, however, a strange, musty smell in the air that reminds me of
3775 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3776 EOI
3777         echo exit 0 >eunice
3778         d_eunice="$define"
3779 : it so happens the Eunice I know will not run shell scripts in Unix format
3780         ;;
3781 *)
3782         echo " "
3783         echo "Congratulations.  You aren't running Eunice."
3784         d_eunice="$undef"
3785         ;;
3786 esac
3787 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3788 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3789 : semicolon as a patch separator
3790 case "$p_" in
3791 :) ;;
3792 *)
3793         $cat <<'EOI'
3794 I have the feeling something is not exactly right, however...don't tell me...
3795 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3796 (Or you may be running DOS with DJGPP.)
3797 EOI
3798         echo exit 0 >os2
3799         ;;
3800 esac
3801 if test -f /xenix; then
3802         echo "Actually, this looks more like a XENIX system..."
3803         echo exit 0 >xenix
3804         d_xenix="$define"
3805 else
3806         echo " "
3807         echo "It's not Xenix..."
3808         d_xenix="$undef"
3809 fi
3810 chmod +x xenix
3811 $eunicefix xenix
3812 if test -f /venix; then
3813         echo "Actually, this looks more like a VENIX system..."
3814         echo exit 0 >venix
3815 else
3816         echo " "
3817         if ./xenix; then
3818                 : null
3819         else
3820                 echo "Nor is it Venix..."
3821         fi
3822 fi
3823 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3824 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3825 $rm -f foo
3826
3827 case "$cc" in
3828 '') dflt=cc;;
3829 *) dflt="$cc";;
3830 esac
3831 rp="Use which C compiler?"
3832 . ./myread
3833 cc="$ans"
3834
3835 : See if they have not cc but they do have gcc
3836 . ./trygcc
3837 : Look for a hint-file generated 'call-back-unit'.  Now that the
3838 : user has specified the compiler, we may need to set or change some
3839 : other defaults.
3840 if $test -f cc.cbu; then
3841     . ./cc.cbu
3842 fi
3843 . ./checkcc
3844
3845 echo " "
3846 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3847 $cat >try.c <<EOM
3848 #include <stdio.h>
3849 int main() {
3850 #ifdef __GNUC__
3851 #ifdef __VERSION__
3852         printf("%s\n", __VERSION__);
3853 #else
3854         printf("%s\n", "1");
3855 #endif
3856 #endif
3857         return(0);
3858 }
3859 EOM
3860 if $cc -o try $ccflags $ldflags try.c; then
3861         gccversion=`$run ./try`
3862         case "$gccversion" in
3863         '') echo "You are not using GNU cc." ;;
3864         *)  echo "You are using GNU cc $gccversion."
3865             ccname=gcc
3866             ;;
3867         esac
3868 else
3869         echo " "
3870         echo "*** WHOA THERE!!! ***" >&4
3871         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3872         case "$knowitall" in
3873         '')
3874         echo "    You'd better start hunting for one and let me know about it." >&4
3875                 exit 1
3876                 ;;
3877         esac
3878 fi
3879 $rm -f try try.*
3880 case "$gccversion" in
3881 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3882 esac
3883 case "$gccversion" in
3884 '') gccosandvers='' ;;
3885 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3886    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3887    gccshortvers=''
3888    case "$gccosandvers" in
3889    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3890    $osname$osvers) ;; # looking good
3891    $osname*) cat <<EOM >&4
3892
3893 *** WHOA THERE!!! ***
3894
3895     Your gcc has not been compiled for the exact release of
3896     your operating system ($gccosandvers versus $osname$osvers).
3897
3898     In general it is a good idea to keep gcc synchronized with
3899     the operating system because otherwise serious problems
3900     may ensue when trying to compile software, like Perl.
3901
3902     I'm trying to be optimistic here, though, and will continue.
3903     If later during the configuration and build icky compilation
3904     problems appear (headerfile conflicts being the most common
3905     manifestation), I suggest reinstalling the gcc to match
3906     your operating system release.
3907
3908 EOM
3909       ;;
3910    *) gccosandvers='' ;; # failed to parse, better be silent
3911    esac
3912    ;;
3913 esac
3914 case "$ccname" in
3915 '') ccname="$cc" ;;
3916 esac
3917
3918 # gcc 3.* complain about adding -Idirectories that they already know about,
3919 # so we will take those off from locincpth.
3920 case "$gccversion" in
3921 3*)
3922     echo "main(){}">try.c
3923     for incdir in $locincpth; do
3924        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3925              grep '^c[cp]p*[01]: warning: changing search order '`
3926        if test "X$warn" != X; then
3927            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3928        fi
3929     done
3930     $rm -f try try.*
3931 esac
3932
3933 : decide how portable to be.  Allow command line overrides.
3934 case "$d_portable" in
3935 "$undef") ;;
3936 *)      d_portable="$define" ;;
3937 esac
3938
3939 : set up shell script to do ~ expansion
3940 cat >filexp <<EOSS
3941 $startsh
3942 : expand filename
3943 case "\$1" in
3944  ~/*|~)
3945         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3946         ;;
3947  ~*)
3948         if $test -f /bin/csh; then
3949                 /bin/csh -f -c "glob \$1"
3950                 failed=\$?
3951                 echo ""
3952                 exit \$failed
3953         else
3954                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3955                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3956                 if $test ! -d "\$dir"; then
3957                         me=\`basename \$0\`
3958                         echo "\$me: can't locate home directory for: \$name" >&2
3959                         exit 1
3960                 fi
3961                 case "\$1" in
3962                 */*)
3963                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3964                         ;;
3965                 *)
3966                         echo \$dir
3967                         ;;
3968                 esac
3969         fi
3970         ;;
3971 *)
3972         echo \$1
3973         ;;
3974 esac
3975 EOSS
3976 chmod +x filexp
3977 $eunicefix filexp
3978
3979 : now set up to get a file name
3980 cat <<EOS >getfile
3981 $startsh
3982 EOS
3983 cat <<'EOSC' >>getfile
3984 tilde=''
3985 fullpath=''
3986 already=''
3987 skip=''
3988 none_ok=''
3989 exp_file=''
3990 nopath_ok=''
3991 orig_rp="$rp"
3992 orig_dflt="$dflt"
3993 case "$gfpth" in
3994 '') gfpth='.' ;;
3995 esac
3996
3997 case "$fn" in
3998 *\(*)
3999         : getfile will accept an answer from the comma-separated list
4000         : enclosed in parentheses even if it does not meet other criteria.
4001         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4002         fn=`echo $fn | sed 's/(.*)//'`
4003         ;;
4004 esac
4005
4006 case "$fn" in
4007 *:*)
4008         loc_file=`expr $fn : '.*:\(.*\)'`
4009         fn=`expr $fn : '\(.*\):.*'`
4010         ;;
4011 esac
4012
4013 case "$fn" in
4014 *~*) tilde=true;;
4015 esac
4016 case "$fn" in
4017 */*) fullpath=true;;
4018 esac
4019 case "$fn" in
4020 *+*) skip=true;;
4021 esac
4022 case "$fn" in
4023 *n*) none_ok=true;;
4024 esac
4025 case "$fn" in
4026 *e*) exp_file=true;;
4027 esac
4028 case "$fn" in
4029 *p*) nopath_ok=true;;
4030 esac
4031
4032 case "$fn" in
4033 *f*) type='File';;
4034 *d*) type='Directory';;
4035 *l*) type='Locate';;
4036 esac
4037
4038 what="$type"
4039 case "$what" in
4040 Locate) what='File';;
4041 esac
4042
4043 case "$exp_file" in
4044 '')
4045         case "$d_portable" in
4046         "$define") ;;
4047         *) exp_file=true;;
4048         esac
4049         ;;
4050 esac
4051
4052 cd ..
4053 while test "$type"; do
4054         redo=''
4055         rp="$orig_rp"
4056         dflt="$orig_dflt"
4057         case "$tilde" in
4058         true) rp="$rp (~name ok)";;
4059         esac
4060         . UU/myread
4061         if test -f UU/getfile.ok && \
4062                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4063         then
4064                 value="$ans"
4065                 ansexp="$ans"
4066                 break
4067         fi
4068         case "$ans" in
4069         none)
4070                 value=''
4071                 ansexp=''
4072                 case "$none_ok" in
4073                 true) type='';;
4074                 esac
4075                 ;;
4076         *)
4077                 case "$tilde" in
4078                 '') value="$ans"
4079                         ansexp="$ans";;
4080                 *)
4081                         value=`UU/filexp $ans`
4082                         case $? in
4083                         0)
4084                                 if test "$ans" != "$value"; then
4085                                         echo "(That expands to $value on this system.)"
4086                                 fi
4087                                 ;;
4088                         *) value="$ans";;
4089                         esac
4090                         ansexp="$value"
4091                         case "$exp_file" in
4092                         '') value="$ans";;
4093                         esac
4094                         ;;
4095                 esac
4096                 case "$fullpath" in
4097                 true)
4098                         case "$ansexp" in
4099                         /*) value="$ansexp" ;;
4100                         [a-zA-Z]:/*) value="$ansexp" ;;
4101                         *)
4102                                 redo=true
4103                                 case "$already" in
4104                                 true)
4105                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4106                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4107                                         ;;
4108                                 *)
4109                                 echo "Please give a full path name, starting with slash." >&4
4110                                         case "$tilde" in
4111                                         true)
4112                                 echo "Note that using ~name is ok provided it expands well." >&4
4113                                                 already=true
4114                                                 ;;
4115                                         esac
4116                                 esac
4117                                 ;;
4118                         esac
4119                         ;;
4120                 esac
4121                 case "$redo" in
4122                 '')
4123                         case "$type" in
4124                         File)
4125                                 for fp in $gfpth; do
4126                                         if test "X$fp" = X.; then
4127                                             pf="$ansexp"
4128                                         else    
4129                                             pf="$fp/$ansexp"
4130                                         fi
4131                                         if test -f "$pf"; then
4132                                                 type=''
4133                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4134                                         then
4135                                                 echo "($value is not a plain file, but that's ok.)"
4136                                                 type=''
4137                                         fi
4138                                         if test X"$type" = X; then
4139                                             value="$pf"
4140                                             break
4141                                         fi
4142                                 done
4143                                 ;;
4144                         Directory)
4145                                 for fp in $gfpth; do
4146                                         if test "X$fp" = X.; then
4147                                             dir="$ans"
4148                                             direxp="$ansexp"
4149                                         else    
4150                                             dir="$fp/$ansexp"
4151                                             direxp="$fp/$ansexp"
4152                                         fi
4153                                         if test -d "$direxp"; then
4154                                                 type=''
4155                                                 value="$dir"
4156                                                 break
4157                                         fi
4158                                 done
4159                                 ;;
4160                         Locate)
4161                                 if test -d "$ansexp"; then
4162                                         echo "(Looking for $loc_file in directory $value.)"
4163                                         value="$value/$loc_file"
4164                                         ansexp="$ansexp/$loc_file"
4165                                 fi
4166                                 if test -f "$ansexp"; then
4167                                         type=''
4168                                 fi
4169                                 case "$nopath_ok" in
4170                                 true)   case "$value" in
4171                                         */*) ;;
4172                                         *)      echo "Assuming $value will be in people's path."
4173                                                 type=''
4174                                                 ;;
4175                                         esac
4176                                         ;;
4177                                 esac
4178                                 ;;
4179                         esac
4180
4181                         case "$skip" in
4182                         true) type='';
4183                         esac
4184
4185                         case "$type" in
4186                         '') ;;
4187                         *)
4188                                 if test "$fastread" = yes; then
4189                                         dflt=y
4190                                 else
4191                                         dflt=n
4192                                 fi
4193                                 rp="$what $value doesn't exist.  Use that name anyway?"
4194                                 . UU/myread
4195                                 dflt=''
4196                                 case "$ans" in
4197                                 y*) type='';;
4198                                 *) echo " ";;
4199                                 esac
4200                                 ;;
4201                         esac
4202                         ;;
4203                 esac
4204                 ;;
4205         esac
4206 done
4207 cd UU
4208 ans="$value"
4209 rp="$orig_rp"
4210 dflt="$orig_dflt"
4211 rm -f getfile.ok
4212 test "X$gfpthkeep" != Xy && gfpth=""
4213 EOSC
4214
4215 : What should the include directory be ?
4216 echo " "
4217 $echo $n "Hmm...  $c"
4218 dflt='/usr/include'
4219 incpath=''
4220 mips_type=''
4221 if $test -f /bin/mips && /bin/mips; then
4222         echo "Looks like a MIPS system..."
4223         $cat >usr.c <<'EOCP'
4224 #ifdef SYSTYPE_BSD43
4225 /bsd43
4226 #endif
4227 EOCP
4228         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4229                 dflt='/bsd43/usr/include'
4230                 incpath='/bsd43'
4231                 mips_type='BSD 4.3'
4232         else
4233                 mips_type='System V'
4234         fi
4235         $rm -f usr.c usr.out
4236         echo "and you're compiling with the $mips_type compiler and libraries."
4237         xxx_prompt=y
4238         echo "exit 0" >mips
4239 else
4240         echo "Doesn't look like a MIPS system."
4241         xxx_prompt=n
4242         echo "exit 1" >mips
4243 fi
4244 chmod +x mips
4245 $eunicefix mips
4246 case "$usrinc" in
4247 '') ;;
4248 *) dflt="$usrinc";;
4249 esac
4250 case "$xxx_prompt" in
4251 y)      fn=d/
4252         echo " "
4253         rp='Where are the include files you want to use?'
4254         . ./getfile
4255         usrinc="$ans"
4256         ;;
4257 *)      usrinc="$dflt"
4258         ;;
4259 esac
4260
4261 : see how we invoke the C preprocessor
4262 echo " "
4263 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4264 cat <<'EOT' >testcpp.c
4265 #define ABC abc
4266 #define XYZ xyz
4267 ABC.XYZ
4268 EOT
4269 cd ..
4270 if test ! -f cppstdin; then
4271         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4272                 # AIX cc -E doesn't show the absolute headerfile
4273                 # locations but we'll cheat by using the -M flag.
4274                 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
4275         else
4276                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4277         fi
4278 else
4279         echo "Keeping your $hint cppstdin wrapper."
4280 fi
4281 chmod 755 cppstdin
4282 wrapper=`pwd`/cppstdin
4283 ok='false'
4284 cd UU
4285
4286 if $test "X$cppstdin" != "X" && \
4287         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4288         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4289 then
4290         echo "You used to use $cppstdin $cppminus so we'll use that again."
4291         case "$cpprun" in
4292         '') echo "But let's see if we can live without a wrapper..." ;;
4293         *)
4294                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4295                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4296                 then
4297                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4298                         ok='true'
4299                 else
4300                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4301                 fi
4302                 ;;
4303         esac
4304 else
4305         case "$cppstdin" in
4306         '') ;;
4307         *)
4308                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4309                 ;;
4310         esac
4311 fi
4312
4313 if $ok; then
4314         : nothing
4315 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4316         $cc -E <testcpp.c >testcpp.out 2>&1; \
4317         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4318         echo "Yup, it does."
4319         x_cpp="$cc -E"
4320         x_minus='';
4321 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4322         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4323         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4324         echo "Yup, it does."
4325         x_cpp="$cc -E"
4326         x_minus='-';
4327 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4328         $cc -P <testcpp.c >testcpp.out 2>&1; \
4329         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330         echo "Yipee, that works!"
4331         x_cpp="$cc -P"
4332         x_minus='';
4333 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4334         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4335         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4336         echo "At long last!"
4337         x_cpp="$cc -P"
4338         x_minus='-';
4339 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4340         $cpp <testcpp.c >testcpp.out 2>&1; \
4341         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342         echo "It works!"
4343         x_cpp="$cpp"
4344         x_minus='';
4345 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4346         $cpp - <testcpp.c >testcpp.out 2>&1; \
4347         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4348         echo "Hooray, it works!  I was beginning to wonder."
4349         x_cpp="$cpp"
4350         x_minus='-';
4351 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4352         $wrapper <testcpp.c >testcpp.out 2>&1; \
4353         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354         x_cpp="$wrapper"
4355         x_minus=''
4356         echo "Eureka!"
4357 else
4358         dflt=''
4359         rp="No dice.  I can't find a C preprocessor.  Name one:"
4360         . ./myread
4361         x_cpp="$ans"
4362         x_minus=''
4363         $x_cpp <testcpp.c >testcpp.out 2>&1
4364         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4365                 echo "OK, that will do." >&4
4366         else
4367 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4368                 exit 1
4369         fi
4370 fi
4371
4372 case "$ok" in
4373 false)
4374         cppstdin="$x_cpp"
4375         cppminus="$x_minus"
4376         cpprun="$x_cpp"
4377         cpplast="$x_minus"
4378         set X $x_cpp
4379         shift
4380         case "$1" in
4381         "$cpp")
4382                 echo "Perhaps can we force $cc -E using a wrapper..."
4383                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4384                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4385                 then
4386                         echo "Yup, we can."
4387                         cppstdin="$wrapper"
4388                         cppminus='';
4389                 else
4390                         echo "Nope, we'll have to live without it..."
4391                 fi
4392                 ;;
4393         esac
4394         case "$cpprun" in
4395         "$wrapper")
4396                 cpprun=''
4397                 cpplast=''
4398                 ;;
4399         esac
4400         ;;
4401 esac
4402
4403 case "$cppstdin" in
4404 "$wrapper"|'cppstdin') ;;
4405 *) $rm -f $wrapper;;
4406 esac
4407 $rm -f testcpp.c testcpp.out
4408
4409 : Set private lib path
4410 case "$plibpth" in
4411 '') if ./mips; then
4412                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4413         fi;;
4414 esac
4415 case "$libpth" in
4416 ' ') dlist='';;
4417 '') dlist="$loclibpth $plibpth $glibpth";;
4418 *) dlist="$libpth";;
4419 esac
4420
4421 : Now check and see which directories actually exist, avoiding duplicates
4422 libpth=''
4423 for xxx in $dlist
4424 do
4425     if $test -d $xxx; then
4426                 case " $libpth " in
4427                 *" $xxx "*) ;;
4428                 *) libpth="$libpth $xxx";;
4429                 esac
4430     fi
4431 done
4432 $cat <<'EOM'
4433
4434 Some systems have incompatible or broken versions of libraries.  Among
4435 the directories listed in the question below, please remove any you
4436 know not to be holding relevant libraries, and add any that are needed.
4437 Say "none" for none.
4438
4439 EOM
4440 case "$libpth" in
4441 '') dflt='none';;
4442 *)
4443         set X $libpth
4444         shift
4445         dflt=${1+"$@"}
4446         ;;
4447 esac
4448 rp="Directories to use for library searches?"
4449 . ./myread
4450 case "$ans" in
4451 none) libpth=' ';;
4452 *) libpth="$ans";;
4453 esac
4454
4455 : compute shared library extension
4456 case "$so" in
4457 '')
4458         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4459                 dflt='sl'
4460         else
4461                 dflt='so'
4462         fi
4463         ;;
4464 *) dflt="$so";;
4465 esac
4466 $cat <<EOM
4467
4468 On some systems, shared libraries may be available.  Answer 'none' if
4469 you want to suppress searching of shared libraries for the remainder
4470 of this configuration.
4471
4472 EOM
4473 rp='What is the file extension used for shared libraries?'
4474 . ./myread
4475 so="$ans"
4476
4477 : Define several unixisms.
4478 : Hints files or command line option can be used to override them.
4479 : The convoluted testing is in case hints files set either the old
4480 : or the new name.
4481 case "$_exe" in
4482 '')     case "$exe_ext" in
4483         '')     ;;
4484         *)      _exe="$exe_ext" ;;
4485         esac
4486         ;;
4487 esac
4488 case "$_a" in
4489 '')     case "$lib_ext" in
4490     '') _a='.a';;
4491         *)      _a="$lib_ext" ;;
4492         esac
4493         ;;
4494 esac
4495 case "$_o" in
4496 '') case "$obj_ext" in
4497         '')     _o='.o';;
4498         *)      _o="$obj_ext";;
4499         esac
4500         ;;
4501 esac
4502 case "$p_" in
4503 '') case "$path_sep" in
4504         '')     p_=':';;
4505         *)      p_="$path_sep";;
4506         esac
4507         ;;
4508 esac
4509 exe_ext=$_exe
4510 lib_ext=$_a
4511 obj_ext=$_o
4512 path_sep=$p_
4513
4514 : Which makefile gets called first.  This is used by make depend.
4515 case "$firstmakefile" in
4516 '') firstmakefile='makefile';;
4517 esac
4518
4519 case "$ccflags" in
4520 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4521 esac
4522
4523 case "$uselongdouble" in
4524 $define|true|[yY]*)     dflt='y';;
4525 *) dflt='n';;
4526 esac
4527 cat <<EOM
4528
4529 Perl can be built to take advantage of long doubles which
4530 (if available) may give more accuracy and range for floating point numbers.
4531
4532 If this doesn't make any sense to you, just accept the default '$dflt'.
4533 EOM
4534 rp='Try to use long doubles if available?'
4535 . ./myread
4536 case "$ans" in
4537 y|Y)    val="$define"   ;;
4538 *)      val="$undef"    ;;
4539 esac
4540 set uselongdouble
4541 eval $setvar
4542
4543 case "$uselongdouble" in
4544 true|[yY]*) uselongdouble="$define" ;;
4545 esac
4546
4547 case "$uselongdouble" in
4548 $define)
4549 : Look for a hint-file generated 'call-back-unit'.  If the
4550 : user has specified that long doubles should be used,
4551 : we may need to set or change some other defaults.
4552         if $test -f uselongdouble.cbu; then
4553                 echo "Your platform has some specific hints for long doubles, using them..."
4554                 . ./uselongdouble.cbu
4555         else
4556                 $cat <<EOM
4557 (Your platform doesn't have any specific hints for long doubles.)
4558 EOM
4559         fi
4560         ;;
4561 esac
4562
4563 : Looking for optional libraries
4564 echo " "
4565 echo "Checking for optional libraries..." >&4
4566 case "$libs" in
4567 ' '|'') dflt='';;
4568 *) dflt="$libs";;
4569 esac
4570 case "$libswanted" in
4571 '') libswanted='c_s';;
4572 esac
4573 case "$usesocks" in
4574 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4575 esac
4576 libsfound=''
4577 libsfiles=''
4578 libsdirs=''
4579 libspath=''
4580 for thisdir in $libpth $xlibpth; do
4581   test -d $thisdir && libspath="$libspath $thisdir"
4582 done
4583 for thislib in $libswanted; do
4584         for thisdir in $libspath; do
4585             xxx=''
4586             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4587                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4588                 $test -f "$xxx" && eval $libscheck
4589                 $test -f "$xxx" && libstyle=shared
4590             fi
4591             if test ! -f "$xxx"; then
4592                 xxx=$thisdir/lib$thislib.$so
4593                 $test -f "$xxx" && eval $libscheck
4594                 $test -f "$xxx" && libstyle=shared
4595             fi  
4596             if test ! -f "$xxx"; then
4597                 xxx=$thisdir/lib$thislib$_a
4598                 $test -f "$xxx" && eval $libscheck
4599                 $test -f "$xxx" && libstyle=static
4600             fi
4601             if test ! -f "$xxx"; then
4602                 xxx=$thisdir/$thislib$_a
4603                 $test -f "$xxx" && eval $libscheck
4604                 $test -f "$xxx" && libstyle=static
4605             fi
4606             if test ! -f "$xxx"; then
4607                 xxx=$thisdir/lib${thislib}_s$_a
4608                 $test -f "$xxx" && eval $libscheck
4609                 $test -f "$xxx" && libstyle=static
4610                 $test -f "$xxx" && thislib=${thislib}_s
4611             fi
4612             if test ! -f "$xxx"; then
4613                 xxx=$thisdir/Slib$thislib$_a
4614                 $test -f "$xxx" && eval $libscheck
4615                 $test -f "$xxx" && libstyle=static
4616             fi
4617             if $test -f "$xxx"; then
4618                 case "$libstyle" in
4619                 shared) echo "Found -l$thislib (shared)." ;;
4620                 static) echo "Found -l$thislib." ;;
4621                 *)      echo "Found -l$thislib ($libstyle)." ;;
4622                 esac
4623                 case " $dflt " in
4624                 *"-l$thislib "*);;
4625                 *) dflt="$dflt -l$thislib"
4626                    libsfound="$libsfound $xxx"
4627                    yyy=`basename $xxx`
4628                    libsfiles="$libsfiles $yyy"
4629                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4630                    case " $libsdirs " in
4631                    *" $yyy "*) ;;
4632                    *) libsdirs="$libsdirs $yyy" ;;
4633                    esac
4634                    ;;
4635                 esac
4636                 break
4637             fi  
4638         done
4639         if $test ! -f "$xxx"; then
4640             echo "No -l$thislib."
4641         fi
4642 done
4643 set X $dflt
4644 shift
4645 dflt="$*"
4646 case "$libs" in
4647 '') dflt="$dflt";;
4648 *) dflt="$libs";;
4649 esac
4650 case "$dflt" in
4651 ' '|'') dflt='none';;
4652 esac
4653
4654 $cat <<EOM
4655
4656 In order to compile $package on your machine, a number of libraries
4657 are usually needed.  Include any other special libraries here as well.
4658 Say "none" for none.  The default list is almost always right.
4659 EOM
4660
4661 echo " "
4662 rp="What libraries to use?"
4663 . ./myread
4664 case "$ans" in
4665 none) libs=' ';;
4666 *) libs="$ans";;
4667 esac
4668
4669 : determine optimization, if desired, or use for debug flag also
4670 case "$optimize" in
4671 ' '|$undef) dflt='none';;
4672 '') dflt='-O';;
4673 *) dflt="$optimize";;
4674 esac
4675 $cat <<EOH
4676
4677 By default, $package compiles with the -O flag to use the optimizer.
4678 Alternately, you might want to use the symbolic debugger, which uses
4679 the -g flag (on traditional Unix systems).  Either flag can be
4680 specified here.  To use neither flag, specify the word "none".
4681
4682 EOH
4683 rp="What optimizer/debugger flag should be used?"
4684 . ./myread
4685 optimize="$ans"
4686 case "$optimize" in
4687 'none') optimize=" ";;
4688 esac
4689
4690 dflt=''
4691 : We will not override a previous value, but we might want to
4692 : augment a hint file
4693 case "$hint" in
4694 default|recommended)
4695         case "$gccversion" in
4696         1*) dflt='-fpcc-struct-return' ;;
4697         esac
4698         case "$optimize" in
4699         *-g*) dflt="$dflt -DDEBUGGING";;
4700         esac
4701         case "$gccversion" in
4702         2*) if test -d /etc/conf/kconfig.d &&
4703                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4704                 then
4705                         dflt="$dflt -posix"
4706                 fi
4707                 ;;
4708         esac
4709         case "$gccversion" in
4710         1*) ;;
4711         2.[0-8]*) ;;
4712         ?*)     echo " "
4713                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4714                 echo 'int main(void) { return 0; }' > gcctest.c
4715                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4716                         echo "Yes, it does." 2>&1
4717                         case "$ccflags" in
4718                         *strict-aliasing*) 
4719                                 echo "Leaving current flags $ccflags alone." 2>&1
4720                                 ;;
4721                         *) dflt="$dflt -fno-strict-aliasing" ;;
4722                         esac
4723                 else
4724                         echo "Nope, it doesn't, but that's ok." 2>&1
4725                 fi
4726                 ;;
4727         esac
4728         ;;
4729 esac
4730
4731 case "$mips_type" in
4732 *BSD*|'') inclwanted="$locincpth $usrinc";;
4733 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4734 esac
4735 for thisincl in $inclwanted; do
4736         if $test -d $thisincl; then
4737                 if $test x$thisincl != x$usrinc; then
4738                         case "$dflt" in
4739                         *" -I$thisincl "*);;
4740                         *) dflt="$dflt -I$thisincl ";;
4741                         esac
4742                 fi
4743         fi
4744 done
4745
4746 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4747         xxx=true;
4748 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4749         xxx=true;
4750 else
4751         xxx=false;
4752 fi;
4753 if $xxx; then
4754         case "$dflt" in
4755         *$2*);;
4756         *) dflt="$dflt -D$2";;
4757         esac;
4758 fi'
4759
4760 set signal.h LANGUAGE_C; eval $inctest
4761
4762 case "$usesocks" in
4763 $define)
4764         ccflags="$ccflags -DSOCKS"
4765         ;;
4766 esac
4767
4768 case "$hint" in
4769 default|recommended) dflt="$ccflags $dflt" ;;
4770 *) dflt="$ccflags";;
4771 esac
4772
4773 case "$dflt" in
4774 ''|' ') dflt=none;;
4775 esac
4776
4777 $cat <<EOH
4778
4779 Your C compiler may want other flags.  For this question you should include
4780 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4781 but you should NOT include libraries or ld flags like -lwhatever.  If you
4782 want $package to honor its debug switch, you should include -DDEBUGGING here.
4783 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4784
4785 To use no flags, specify the word "none".
4786
4787 EOH
4788 set X $dflt
4789 shift
4790 dflt=${1+"$@"}
4791 rp="Any additional cc flags?"
4792 . ./myread
4793 case "$ans" in
4794 none) ccflags='';;
4795 *) ccflags="$ans";;
4796 esac
4797
4798 : the following weeds options from ccflags that are of no interest to cpp
4799 case "$cppflags" in
4800 '') cppflags="$ccflags" ;;
4801 *)  cppflags="$cppflags $ccflags" ;;
4802 esac
4803 case "$gccversion" in
4804 1*) cppflags="$cppflags -D__GNUC__"
4805 esac
4806 case "$mips_type" in
4807 '');;
4808 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4809 esac
4810 case "$cppflags" in
4811 '');;
4812 *)
4813         echo " "
4814         echo "Let me guess what the preprocessor flags are..." >&4
4815         set X $cppflags
4816         shift
4817         cppflags=''
4818         $cat >cpp.c <<'EOM'
4819 #define BLURFL foo
4820
4821 BLURFL xx LFRULB
4822 EOM
4823         previous=''
4824         for flag in $*
4825         do
4826                 case "$flag" in
4827                 -*) ftry="$flag";;
4828                 *) ftry="$previous $flag";;
4829                 esac
4830                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4831                         >cpp1.out 2>/dev/null && \
4832                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4833                         >cpp2.out 2>/dev/null && \
4834                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4835                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4836                 then
4837                         cppflags="$cppflags $ftry"
4838                         previous=''
4839                 else
4840                         previous="$flag"
4841                 fi
4842         done
4843         set X $cppflags
4844         shift
4845         cppflags=${1+"$@"}
4846         case "$cppflags" in
4847         *-*)  echo "They appear to be: $cppflags";;
4848         esac
4849         $rm -f cpp.c cpp?.out
4850         ;;
4851 esac
4852
4853 : flags used in final linking phase
4854 case "$ldflags" in
4855 '') if ./venix; then
4856                 dflt='-i -z'
4857         else
4858                 dflt=''
4859         fi
4860         case "$ccflags" in
4861         *-posix*) dflt="$dflt -posix" ;;
4862         esac
4863         ;;
4864 *) dflt="$ldflags";;
4865 esac
4866
4867 : Try to guess additional flags to pick up local libraries.
4868 for thislibdir in $libpth; do
4869         case " $loclibpth " in
4870         *" $thislibdir "*)
4871                 case "$dflt " in 
4872                 *"-L$thislibdir "*) ;;
4873                 *)  dflt="$dflt -L$thislibdir" ;;
4874                 esac
4875                 ;;
4876         esac
4877 done
4878
4879 case "$dflt" in
4880 '') dflt='none' ;;
4881 esac
4882
4883 $cat <<EOH
4884
4885 Your C linker may need flags.  For this question you should
4886 include -L/whatever and any other flags used by the C linker, but you
4887 should NOT include libraries like -lwhatever.
4888
4889 Make sure you include the appropriate -L/path flags if your C linker
4890 does not normally search all of the directories you specified above,
4891 namely
4892         $libpth
4893 To use no flags, specify the word "none".
4894
4895 EOH
4896
4897 rp="Any additional ld flags (NOT including libraries)?"
4898 . ./myread
4899 case "$ans" in
4900 none) ldflags='';;
4901 *) ldflags="$ans";;
4902 esac
4903 rmlist="$rmlist pdp11"
4904
4905 : coherency check
4906 echo " "
4907 echo "Checking your choice of C compiler and flags for coherency..." >&4
4908 $cat > try.c <<'EOF'
4909 #include <stdio.h>
4910 int main() { printf("Ok\n"); return(0); }
4911 EOF
4912 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4913 shift
4914 $cat >try.msg <<'EOM'
4915 I've tried to compile and run the following simple program:
4916
4917 EOM
4918 $cat try.c >> try.msg
4919
4920 $cat >> try.msg <<EOM
4921
4922 I used the command:
4923
4924         $*
4925         $run ./try
4926
4927 and I got the following output:
4928
4929 EOM
4930 dflt=y
4931 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4932         if $sh -c "$run ./try" >>try.msg 2>&1; then
4933                 xxx=`$run ./try`
4934                 case "$xxx" in
4935                 "Ok") dflt=n ;;
4936                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4937                         case " $libs " in
4938                         *" -lsfio "*)
4939                                 cat >> try.msg <<'EOQS'
4940 If $libs contains -lsfio, and sfio is mis-configured, then it
4941 sometimes (apparently) runs and exits with a 0 status, but with no
4942 output!  It may have to do with sfio's use of _exit vs. exit.
4943
4944 EOQS
4945                                 rp="You have a big problem.  Shall I abort Configure"
4946                                 dflt=y
4947                                 ;;
4948                         esac
4949                         ;;
4950                 esac
4951         else
4952                 echo "The program compiled OK, but exited with status $?." >>try.msg
4953                 rp="You have a problem.  Shall I abort Configure"
4954                 dflt=y
4955         fi
4956 else
4957         echo "I can't compile the test program." >>try.msg
4958         rp="You have a BIG problem.  Shall I abort Configure"
4959         dflt=y
4960 fi
4961 case "$dflt" in
4962 y)
4963         $cat try.msg >&4
4964         case "$knowitall" in
4965         '')
4966                 echo "(The supplied flags or libraries might be incorrect.)"
4967                 ;;
4968         *) dflt=n;;
4969         esac
4970         echo " "
4971         . ./myread
4972         case "$ans" in
4973         n*|N*) ;;
4974         *)      echo "Ok.  Stopping Configure." >&4
4975                 exit 1
4976                 ;;
4977         esac
4978         ;;
4979 n) echo "OK, that should do.";;
4980 esac
4981 $rm -f try try.* core
4982
4983 : define a shorthand compile call
4984 compile='
4985 mc_file=$1;
4986 shift;
4987 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4988 : define a shorthand compile call for compilations that should be ok.
4989 compile_ok='
4990 mc_file=$1;
4991 shift;
4992 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4993
4994 : determine filename position in cpp output
4995 echo " "
4996 echo "Computing filename position in cpp output for #include directives..." >&4
4997 case "$osname" in
4998 vos) testaccess=-e ;;
4999 *)   testaccess=-r ;;
5000 esac
5001 echo '#include <stdio.h>' > foo.c
5002 $cat >fieldn <<EOF
5003 $startsh
5004 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5005 $grep '^[       ]*#.*stdio\.h' | \
5006 while read cline; do
5007         pos=1
5008         set \$cline
5009         while $test \$# -gt 0; do
5010                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5011                         echo "\$pos"
5012                         exit 0
5013                 fi
5014                 shift
5015                 pos=\`expr \$pos + 1\`
5016         done
5017 done
5018 EOF
5019 chmod +x fieldn
5020 fieldn=`./fieldn`
5021 $rm -f foo.c fieldn
5022 case $fieldn in
5023 '') pos='???';;
5024 1) pos=first;;
5025 2) pos=second;;
5026 3) pos=third;;
5027 *) pos="${fieldn}th";;
5028 esac
5029 echo "Your cpp writes the filename in the $pos field of the line."
5030
5031 case "$osname" in
5032 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5033 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5034 *)   cppfilter='' ;;
5035 esac
5036 : locate header file
5037 $cat >findhdr <<EOF
5038 $startsh
5039 wanted=\$1
5040 name=''
5041 for usrincdir in $usrinc
5042 do
5043         if test -f \$usrincdir/\$wanted; then
5044                 echo "\$usrincdir/\$wanted"
5045                 exit 0
5046         fi
5047 done
5048 awkprg='{ print \$$fieldn }'
5049 echo "#include <\$wanted>" > foo\$\$.c
5050 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5051 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5052 while read cline; do
5053         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5054         case "\$name" in
5055         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5056         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5057         *) exit 2;;
5058         esac;
5059 done;
5060 #
5061 # status = 0: grep returned 0 lines, case statement not executed
5062 # status = 1: headerfile found
5063 # status = 2: while loop executed, no headerfile found
5064 #
5065 status=\$?
5066 $rm -f foo\$\$.c;
5067 if test \$status -eq 1; then
5068         exit 0;
5069 fi
5070 exit 1
5071 EOF
5072 chmod +x findhdr
5073
5074 : define an alternate in-header-list? function
5075 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5076 cont=true; xxf="echo \"<\$1> found.\" >&4";
5077 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5078 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5079 esac;
5080 case $# in 4) instead=instead;; *) instead="at last";; esac;
5081 while $test "$cont"; do
5082         xxx=`./findhdr $1`
5083         var=$2; eval "was=\$$2";
5084         if $test "$xxx" && $test -r "$xxx";
5085         then eval $xxf;
5086         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5087                 cont="";
5088         else eval $xxnf;
5089         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5090         set $yyy; shift; shift; yyy=$@;
5091         case $# in 0) cont="";;
5092         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5093                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5094         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5095                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5096         esac;
5097 done;
5098 while $test "$yyy";
5099 do set $yyy; var=$2; eval "was=\$$2";
5100         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5101         set $yyy; shift; shift; yyy=$@;
5102 done'
5103
5104 : see if stdlib is available
5105 set stdlib.h i_stdlib
5106 eval $inhdr
5107
5108 : check for lengths of integral types
5109 echo " "
5110 case "$intsize" in
5111 '')
5112         echo "Checking to see how big your integers are..." >&4
5113         $cat >try.c <<EOCP
5114 #include <stdio.h>
5115 #$i_stdlib I_STDLIB
5116 #ifdef I_STDLIB
5117 #include <stdlib.h>
5118 #endif
5119 int main()
5120 {
5121         printf("intsize=%d;\n", (int)sizeof(int));
5122         printf("longsize=%d;\n", (int)sizeof(long));
5123         printf("shortsize=%d;\n", (int)sizeof(short));
5124         exit(0);
5125 }
5126 EOCP
5127         set try
5128         if eval $compile_ok && $run ./try > /dev/null; then
5129                 eval `$run ./try`
5130                 echo "Your integers are $intsize bytes long."
5131                 echo "Your long integers are $longsize bytes long."
5132                 echo "Your short integers are $shortsize bytes long."
5133         else
5134                 $cat >&4 <<EOM
5135 !
5136 Help! I can't compile and run the intsize test program: please enlighten me!
5137 (This is probably a misconfiguration in your system or libraries, and
5138 you really ought to fix it.  Still, I'll try anyway.)
5139 !
5140 EOM
5141                 dflt=4
5142                 rp="What is the size of an integer (in bytes)?"
5143                 . ./myread
5144                 intsize="$ans"
5145                 dflt=$intsize
5146                 rp="What is the size of a long integer (in bytes)?"
5147                 . ./myread
5148                 longsize="$ans"
5149                 dflt=2
5150                 rp="What is the size of a short integer (in bytes)?"
5151                 . ./myread
5152                 shortsize="$ans"
5153         fi
5154         ;;
5155 esac
5156 $rm -f try try.*
5157
5158 : check for long long
5159 echo " "
5160 echo "Checking to see if you have long long..." >&4
5161 echo 'int main() { long long x = 7; return 0; }' > try.c
5162 set try
5163 if eval $compile; then
5164         val="$define"
5165         echo "You have long long."
5166 else
5167         val="$undef"
5168         echo "You do not have long long."
5169 fi
5170 $rm try.*
5171 set d_longlong
5172 eval $setvar
5173
5174 : check for length of long long
5175 case "${d_longlong}${longlongsize}" in
5176 $define)
5177         echo " "
5178         echo "Checking to see how big your long longs are..." >&4
5179         $cat >try.c <<'EOCP'
5180 #include <stdio.h>
5181 int main()
5182 {
5183     printf("%d\n", (int)sizeof(long long));
5184     return(0);
5185 }
5186 EOCP
5187         set try
5188         if eval $compile_ok; then
5189                 longlongsize=`$run ./try`
5190                 echo "Your long longs are $longlongsize bytes long."
5191         else
5192                 dflt='8'
5193                 echo " "
5194                 echo "(I can't seem to compile the test program.  Guessing...)"
5195                 rp="What is the size of a long long (in bytes)?"
5196                 . ./myread
5197                 longlongsize="$ans"
5198         fi
5199         if $test "X$longsize" = "X$longlongsize"; then
5200                 echo "(That isn't any different from an ordinary long.)"
5201         fi      
5202         ;;
5203 esac
5204 $rm -f try.* try
5205
5206 : see if inttypes.h is available
5207 : we want a real compile instead of Inhdr because some systems
5208 : have an inttypes.h which includes non-existent headers
5209 echo " "
5210 $cat >try.c <<EOCP
5211 #include <inttypes.h>
5212 int main() {
5213         static int32_t foo32 = 0x12345678;
5214 }
5215 EOCP
5216 set try
5217 if eval $compile; then
5218         echo "<inttypes.h> found." >&4
5219         val="$define"
5220 else
5221         echo "<inttypes.h> NOT found." >&4
5222         val="$undef"
5223 fi
5224 $rm -f try.c try
5225 set i_inttypes
5226 eval $setvar
5227
5228 : check for int64_t
5229 echo " "
5230 echo "Checking to see if you have int64_t..." >&4
5231 $cat >try.c <<EOCP
5232 #include <sys/types.h>
5233 #$i_inttypes I_INTTYPES
5234 #ifdef I_INTTYPES
5235 #include <inttypes.h>
5236 #endif
5237 int main() { int64_t x = 7; }
5238 EOCP
5239 set try
5240 if eval $compile; then
5241         val="$define"
5242         echo "You have int64_t."
5243 else
5244         val="$undef"
5245         echo "You do not have int64_t."
5246 fi
5247 $rm -f try try.*
5248 set d_int64_t
5249 eval $setvar
5250
5251
5252 echo " "
5253 echo "Checking which 64-bit integer type we could use..." >&4
5254
5255 case "$intsize" in
5256 8) val=int
5257    set quadtype
5258    eval $setvar
5259    val='"unsigned int"'
5260    set uquadtype
5261    eval $setvar
5262    quadkind=1
5263    ;;
5264 *) case "$longsize" in
5265    8) val=long
5266       set quadtype
5267       eval $setvar
5268       val='"unsigned long"'
5269       set uquadtype
5270       eval $setvar
5271       quadkind=2
5272       ;;
5273    *) case "$d_longlong:$longlongsize" in
5274       define:8)
5275         val='"long long"'
5276         set quadtype
5277         eval $setvar
5278         val='"unsigned long long"'
5279         set uquadtype
5280         eval $setvar
5281         quadkind=3
5282         ;;
5283       *) case "$d_int64_t" in
5284          define)
5285            val=int64_t
5286            set quadtype
5287            eval $setvar
5288            val=uint64_t
5289            set uquadtype
5290            eval $setvar
5291            quadkind=4
5292            ;;
5293          esac
5294          ;;
5295       esac
5296       ;;
5297    esac
5298    ;;
5299 esac
5300
5301 case "$quadtype" in
5302 '')     echo "Alas, no 64-bit integer types in sight." >&4
5303         d_quad="$undef"
5304         ;;
5305 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5306         d_quad="$define"
5307         ;;
5308 esac
5309
5310
5311 case "$uselonglong" in
5312 "$define"|true|[yY]*)
5313         cat <<EOM >&4
5314
5315 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5316 EOM
5317         use64bitint="$define"
5318         ;;
5319 esac                          
5320 case "$use64bits" in
5321 "$define"|true|[yY]*)
5322         cat <<EOM >&4
5323
5324 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5325 EOM
5326         use64bitint="$define"
5327         ;;
5328 esac                          
5329 case "$use64bitints" in
5330 "$define"|true|[yY]*)
5331         cat <<EOM >&4
5332
5333 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5334 EOM
5335         use64bitint="$define"
5336         ;;
5337 esac                          
5338 case "$use64bitsint" in
5339 "$define"|true|[yY]*)
5340         cat <<EOM >&4
5341
5342 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5343 EOM
5344         use64bitint="$define"
5345         ;;
5346 esac                          
5347 case "$uselonglongs" in
5348 "$define"|true|[yY]*)
5349         cat <<EOM >&4
5350
5351 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5352 EOM
5353         use64bitint="$define"
5354         ;;
5355 esac                          
5356 case "$use64bitsall" in
5357 "$define"|true|[yY]*)
5358         cat <<EOM >&4
5359
5360 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5361 EOM
5362         use64bitall="$define"
5363         ;;
5364 esac                          
5365
5366 case "$ccflags" in
5367 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5368 esac
5369 case "$use64bitall" in
5370 "$define"|true|[yY]*) use64bitint="$define" ;;
5371 esac
5372
5373 case "$longsize" in
5374 8) cat <<EOM
5375
5376 You have natively 64-bit long integers.
5377 EOM
5378    val="$define"
5379    ;;
5380 *) case "$use64bitint" in
5381    "$define"|true|[yY]*) dflt='y';;
5382    *) dflt='n';;
5383    esac
5384    case "$d_quad" in
5385    "$define") ;;
5386    *) dflt='n' ;;
5387    esac
5388    cat <<EOM
5389
5390 Perl can be built to take advantage of 64-bit integer types
5391 on some systems.  To do so, Configure can be run with -Duse64bitint.
5392 Choosing this option will most probably introduce binary incompatibilities.
5393
5394 If this doesn't make any sense to you, just accept the default '$dflt'.
5395 (The default has been chosen based on your configuration.)
5396 EOM
5397    rp='Try to use 64-bit integers, if available?'
5398    . ./myread
5399    case "$ans" in
5400    [yY]*) val="$define" ;;
5401    *)     val="$undef"  ;;
5402    esac
5403    ;;
5404 esac
5405 set use64bitint
5406 eval $setvar
5407
5408 case "$use64bitall" in
5409 "$define"|true|[yY]*) dflt='y' ;;
5410 *) case "$longsize" in
5411    8) dflt='y' ;;
5412    *) dflt='n' ;;
5413    esac
5414    ;;
5415 esac    
5416 cat <<EOM
5417
5418 You may also choose to try maximal 64-bitness.  It means using as much
5419 64-bitness as possible on the platform.  This in turn means even more
5420 binary incompatibilities.  On the other hand, your platform may not
5421 have any more 64-bitness available than what you already have chosen.
5422
5423 If this doesn't make any sense to you, just accept the default '$dflt'.
5424 (The default has been chosen based on your configuration.)
5425 EOM
5426 rp='Try to use maximal 64-bit support, if available?'
5427 . ./myread
5428 case "$ans" in
5429 [yY]*) val="$define" ;;
5430 *)     val="$undef"  ;;
5431 esac
5432 set use64bitall
5433 eval $setvar
5434 case "$use64bitall" in
5435 "$define")
5436         case "$use64bitint" in
5437         "$undef")
5438                 cat <<EOM
5439
5440 Since you have chosen a maximally 64-bit build, I'm also turning on
5441 the use of 64-bit integers.
5442 EOM
5443                 use64bitint="$define" ;;
5444         esac
5445         ;;
5446 esac
5447
5448 case "$use64bitint" in
5449 "$define"|true|[yY]*)
5450 : Look for a hint-file generated 'call-back-unit'.  If the
5451 : user has specified that a 64-bit perl is to be built,
5452 : we may need to set or change some other defaults.
5453         if $test -f use64bitint.cbu; then
5454                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5455                 . ./use64bitint.cbu
5456         fi
5457         case "$longsize" in
5458         4) case "$archname64" in
5459            '') archname64=64int ;;
5460            esac
5461            ;;
5462         esac
5463         ;;
5464 esac
5465
5466 case "$use64bitall" in
5467 "$define"|true|[yY]*)
5468 : Look for a hint-file generated 'call-back-unit'.  If the
5469 : user has specified that a maximally 64-bit perl is to be built,
5470 : we may need to set or change some other defaults.
5471         if $test -f use64bitall.cbu; then
5472                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5473                 . ./use64bitall.cbu
5474         fi
5475         case "$longsize" in
5476         4) case "$archname64" in
5477            ''|64int) archname64=64all ;;
5478            esac
5479            ;;
5480         esac
5481         ;;
5482 esac
5483
5484 : check for length of double
5485 echo " "
5486 case "$doublesize" in
5487 '')
5488         echo "Checking to see how big your double precision numbers are..." >&4
5489         $cat >try.c <<EOCP
5490 #include <stdio.h>
5491 int main()
5492 {
5493     printf("%d\n", (int)sizeof(double));
5494     return(0);
5495 }
5496 EOCP
5497         set try
5498         if eval $compile_ok; then
5499                 doublesize=`$run ./try`
5500                 echo "Your double is $doublesize bytes long."
5501         else
5502                 dflt='8'
5503                 echo "(I can't seem to compile the test program.  Guessing...)"
5504                 rp="What is the size of a double precision number (in bytes)?"
5505                 . ./myread
5506                 doublesize="$ans"
5507         fi
5508         ;;
5509 esac
5510 $rm -f try.c try
5511
5512 : check for long doubles
5513 echo " "
5514 echo "Checking to see if you have long double..." >&4
5515 echo 'int main() { long double x = 7.0; }' > try.c
5516 set try
5517 if eval $compile; then
5518         val="$define"
5519         echo "You have long double."
5520 else
5521         val="$undef"
5522         echo "You do not have long double."
5523 fi
5524 $rm try.*
5525 set d_longdbl
5526 eval $setvar
5527
5528 : check for length of long double
5529 case "${d_longdbl}${longdblsize}" in
5530 $define)
5531         echo " "
5532         echo "Checking to see how big your long doubles are..." >&4
5533         $cat >try.c <<'EOCP'
5534 #include <stdio.h>
5535 int main()
5536 {
5537         printf("%d\n", sizeof(long double));
5538 }
5539 EOCP
5540         set try
5541         set try
5542         if eval $compile; then
5543                 longdblsize=`$run ./try`
5544                 echo "Your long doubles are $longdblsize bytes long."
5545         else
5546                 dflt='8'
5547                 echo " "
5548                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5549                 rp="What is the size of a long double (in bytes)?"
5550                 . ./myread
5551                 longdblsize="$ans"
5552         fi
5553         if $test "X$doublesize" = "X$longdblsize"; then
5554                 echo "(That isn't any different from an ordinary double.)"
5555         fi      
5556         ;;
5557 esac
5558 $rm -f try.* try
5559
5560 : determine the architecture name
5561 echo " "
5562 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5563         tarch=`arch`"-$osname"
5564 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5565         if uname -m > tmparch 2>&1 ; then
5566                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5567                         -e 's/$/'"-$osname/" tmparch`
5568         else
5569                 tarch="$osname"
5570         fi
5571         $rm -f tmparch
5572 else
5573         tarch="$osname"
5574 fi
5575 case "$myarchname" in
5576 ''|"$tarch") ;;
5577 *)
5578         echo "(Your architecture name used to be $myarchname.)"
5579         archname=''
5580         ;;
5581 esac
5582 case "$targetarch" in
5583 '') ;;
5584 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5585 esac
5586 myarchname="$tarch"
5587 case "$archname" in
5588 '') dflt="$tarch";;
5589 *) dflt="$archname";;
5590 esac
5591 rp='What is your architecture name'
5592 . ./myread
5593 archname="$ans"
5594 case "$usethreads" in
5595 $define)
5596         echo "Threads selected." >&4
5597         case "$archname" in
5598         *-thread*) echo "...and architecture name already has -thread." >&4
5599                 ;;
5600         *)      archname="$archname-thread"
5601                 echo "...setting architecture name to $archname." >&4
5602                 ;;
5603         esac
5604         ;;
5605 esac
5606 case "$usemultiplicity" in
5607 $define)
5608         echo "Multiplicity selected." >&4
5609         case "$archname" in
5610         *-multi*) echo "...and architecture name already has -multi." >&4
5611                 ;;
5612         *)      archname="$archname-multi"
5613                 echo "...setting architecture name to $archname." >&4
5614                 ;;
5615         esac
5616         ;;
5617 esac
5618 case "$use64bitint$use64bitall" in
5619 *"$define"*)
5620         case "$archname64" in
5621         '')
5622                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5623                 ;;
5624         *)
5625                 case "$use64bitint" in
5626                 "$define") echo "64 bit integers selected." >&4 ;;
5627                 esac
5628                 case "$use64bitall" in
5629                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5630                 esac
5631                 case "$archname" in
5632                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5633                         ;;
5634                 *)      archname="$archname-$archname64"
5635                         echo "...setting architecture name to $archname." >&4
5636                         ;;
5637                 esac
5638                 ;;
5639         esac
5640 esac
5641 case "$uselongdouble" in
5642 $define)
5643         echo "Long doubles selected." >&4
5644         case "$longdblsize" in
5645         $doublesize)
5646                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5647                 ;;
5648         *)
5649                 case "$archname" in
5650                 *-ld*) echo "...and architecture name already has -ld." >&4
5651                         ;;
5652                 *)      archname="$archname-ld"
5653                         echo "...setting architecture name to $archname." >&4
5654                         ;;
5655                 esac
5656                 ;;
5657         esac
5658         ;;
5659 esac
5660 case "$useperlio" in
5661 $define)
5662         echo "Perlio selected." >&4
5663         ;;
5664 *)
5665         echo "Perlio not selected, using stdio." >&4
5666         case "$archname" in
5667         *-stdio*) echo "...and architecture name already has -stdio." >&4
5668                 ;;
5669         *)      archname="$archname-stdio"
5670                 echo "...setting architecture name to $archname." >&4
5671                 ;;
5672         esac
5673         ;;
5674 esac
5675
5676 : determine root of directory hierarchy where package will be installed.
5677 case "$prefix" in
5678 '')
5679         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5680         ;;
5681 *?/)
5682         dflt=`echo "$prefix" | sed 's/.$//'`
5683         ;;
5684 *)
5685         dflt="$prefix"
5686         ;;
5687 esac
5688 $cat <<EOM
5689
5690 By default, $package will be installed in $dflt/bin, manual pages
5691 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5692 installation directories. Typically this is something like /usr/local.
5693 If you wish to have binaries under /usr/bin but other parts of the
5694 installation under /usr/local, that's ok: you will be prompted
5695 separately for each of the installation directories, the prefix being
5696 only used to set the defaults.
5697
5698 EOM
5699 fn=d~
5700 rp='Installation prefix to use?'
5701 . ./getfile
5702 oldprefix=''
5703 case "$prefix" in
5704 '') ;;
5705 *)
5706         case "$ans" in
5707         "$prefix") ;;
5708         *) oldprefix="$prefix";;
5709         esac
5710         ;;
5711 esac
5712 prefix="$ans"
5713 prefixexp="$ansexp"
5714
5715 case "$afsroot" in
5716 '')     afsroot=/afs ;;
5717 *)      afsroot=$afsroot ;;
5718 esac
5719
5720 : is AFS running?
5721 echo " "
5722 case "$afs" in
5723 $define|true)   afs=true ;;
5724 $undef|false)   afs=false ;;
5725 *)      if test -d $afsroot; then
5726                 afs=true
5727         else
5728                 afs=false
5729         fi
5730         ;;
5731 esac
5732 if $afs; then
5733         echo "AFS may be running... I'll be extra cautious then..." >&4
5734 else
5735         echo "AFS does not seem to be running..." >&4
5736 fi
5737
5738 : determine installation prefix for where package is to be installed.
5739 if $afs; then 
5740 $cat <<EOM
5741
5742 Since you are running AFS, I need to distinguish the directory in which
5743 files will reside from the directory in which they are installed (and from
5744 which they are presumably copied to the former directory by occult means).
5745
5746 EOM
5747         case "$installprefix" in
5748         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5749         *) dflt="$installprefix";;
5750         esac
5751 else
5752 $cat <<EOM
5753
5754 In some special cases, particularly when building $package for distribution,
5755 it is convenient to distinguish the directory in which files should be
5756 installed from the directory ($prefix) in which they will
5757 eventually reside.  For most users, these two directories are the same.
5758
5759 EOM
5760         case "$installprefix" in
5761         '') dflt=$prefix ;;
5762         *) dflt=$installprefix;;
5763         esac
5764 fi
5765 fn=d~
5766 rp='What installation prefix should I use for installing files?'
5767 . ./getfile
5768 installprefix="$ans"
5769 installprefixexp="$ansexp"
5770
5771 : set the prefixit variable, to compute a suitable default value
5772 prefixit='case "$3" in
5773 ""|none)
5774         case "$oldprefix" in
5775         "") eval "$1=\"\$$2\"";;
5776         *)
5777                 case "$3" in
5778                 "") eval "$1=";;
5779                 none)
5780                         eval "tp=\"\$$2\"";
5781                         case "$tp" in
5782                         ""|" ") eval "$1=\"\$$2\"";;
5783                         *) eval "$1=";;
5784                         esac;;
5785                 esac;;
5786         esac;;
5787 *)
5788         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5789         case "$tp" in
5790         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5791         /*-$oldprefix/*|\~*-$oldprefix/*)
5792                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5793         *) eval "$1=\"\$$2\"";;
5794         esac;;
5795 esac'
5796
5797 : get the patchlevel
5798 echo " "
5799 echo "Getting the current patchlevel..." >&4
5800 if $test -r $rsrc/patchlevel.h;then
5801         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5802         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5803         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5804         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5805         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5806         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5807        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5808 else
5809         revision=0
5810         patchlevel=0
5811         subversion=0
5812         api_revision=0
5813         api_version=0
5814         api_subversion=0
5815         perl_patchlevel=0
5816         $echo "(You do not have patchlevel.h.  Eek.)"
5817 fi
5818 if $test -r $rsrc/.patch ; then  
5819         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5820                 perl_patchlevel=`cat $rsrc/.patch`
5821         fi
5822 fi
5823 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5824 version_patchlevel_string="version $patchlevel subversion $subversion"
5825 case "$perl_patchlevel" in
5826 0|'') ;;
5827 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5828 esac
5829
5830 $echo "(You have $package $version_patchlevel_string.)"
5831
5832 case "$osname" in
5833 dos|vms)
5834         : XXX Should be a Configure test for double-dots in filenames.
5835         version=`echo $revision $patchlevel $subversion | \
5836                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5837         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5838                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5839         ;;
5840 *)
5841         version=`echo $revision $patchlevel $subversion | \
5842                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5843         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5844                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5845         ;;
5846 esac
5847 : Special case the 5.005_xx maintenance series, which used 5.005
5848 : without any subversion label as a subdirectory in $sitelib
5849 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5850         api_versionstring='5.005'
5851 fi
5852
5853 : determine installation style
5854 : For now, try to deduce it from prefix unless it is already set.
5855 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5856 case "$installstyle" in
5857 '')     case "$prefix" in
5858                 *perl*) dflt='lib';;
5859                 *) dflt='lib/perl5' ;;
5860         esac
5861         ;;
5862 *)      dflt="$installstyle" ;;
5863 esac
5864 : Probably not worth prompting for this since we prompt for all
5865 : the directories individually, and the prompt would be too long and
5866 : confusing anyway.
5867 installstyle=$dflt
5868
5869 : determine where private library files go
5870 : Usual default is /usr/local/lib/perl5/$version.
5871 : Also allow things like /opt/perl/lib/$version, since 
5872 : /opt/perl/lib/perl5... would be redundant.
5873 : The default "style" setting is made in installstyle.U
5874 case "$installstyle" in
5875 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5876 *)       set dflt privlib lib/$version ;;
5877 esac
5878 eval $prefixit
5879 $cat <<EOM
5880
5881 There are some auxiliary files for $package that need to be put into a
5882 private library directory that is accessible by everyone.
5883
5884 EOM
5885 fn=d~+
5886 rp='Pathname where the private library files will reside?'
5887 . ./getfile
5888 privlib="$ans"
5889 privlibexp="$ansexp"
5890 : Change installation prefix, if necessary.
5891 if $test X"$prefix" != X"$installprefix"; then
5892         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5893 else
5894         installprivlib="$privlibexp"
5895 fi
5896
5897 : set the prefixup variable, to restore leading tilda escape
5898 prefixup='case "$prefixexp" in
5899 "$prefix") ;;
5900 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5901 esac'
5902
5903 : determine where public architecture dependent libraries go
5904 set archlib archlib
5905 eval $prefixit
5906 : privlib default is /usr/local/lib/$package/$version
5907 : archlib default is /usr/local/lib/$package/$version/$archname
5908 : privlib may have an optional trailing /share.
5909 tdflt=`echo $privlib | $sed 's,/share$,,'`
5910 tdflt=$tdflt/$archname
5911 case "$archlib" in
5912 '')     dflt=$tdflt
5913         ;;
5914 *)      dflt="$archlib"
5915     ;;
5916 esac
5917 $cat <<EOM
5918
5919 $spackage contains architecture-dependent library files.  If you are
5920 sharing libraries in a heterogeneous environment, you might store
5921 these files in a separate location.  Otherwise, you can just include
5922 them with the rest of the public library files.
5923
5924 EOM
5925 fn=d+~
5926 rp='Where do you want to put the public architecture-dependent libraries?'
5927 . ./getfile
5928 archlib="$ans"
5929 archlibexp="$ansexp"
5930 if $test X"$archlib" = X"$privlib"; then
5931         d_archlib="$undef"
5932 else
5933         d_archlib="$define"
5934 fi
5935 : Change installation prefix, if necessary.
5936 if $test X"$prefix" != X"$installprefix"; then
5937         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5938 else
5939         installarchlib="$archlibexp"
5940 fi
5941
5942 : see if setuid scripts can be secure
5943 $cat <<EOM
5944
5945 Some kernels have a bug that prevents setuid #! scripts from being
5946 secure.  Some sites have disabled setuid #! scripts because of this.
5947
5948 First let's decide if your kernel supports secure setuid #! scripts.
5949 (If setuid #! scripts would be secure but have been disabled anyway,
5950 don't say that they are secure if asked.)
5951
5952 EOM
5953
5954 val="$undef"
5955 if $test -d /dev/fd; then
5956         echo "#!$ls" >reflect
5957         chmod +x,u+s reflect
5958         ./reflect >flect 2>&1
5959         if $contains "/dev/fd" flect >/dev/null; then
5960                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5961                 val="$define"
5962         else
5963                 $cat <<EOM
5964 If you are not sure if they are secure, I can check but I'll need a
5965 username and password different from the one you are using right now.
5966 If you don't have such a username or don't want me to test, simply
5967 enter 'none'.
5968
5969 EOM
5970                 rp='Other username to test security of setuid scripts with?'
5971                 dflt='none'
5972                 . ./myread
5973                 case "$ans" in
5974                 n|none)
5975                         case "$d_suidsafe" in
5976                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5977                                 dflt=n;;
5978                         "$undef")
5979                                 echo "Well, the $hint value is *not* secure." >&4
5980                                 dflt=n;;
5981                         *)      echo "Well, the $hint value *is* secure." >&4
5982                                 dflt=y;;
5983                         esac
5984                         ;;
5985                 *)
5986                         $rm -f reflect flect
5987                         echo "#!$ls" >reflect
5988                         chmod +x,u+s reflect
5989                         echo >flect
5990                         chmod a+w flect
5991                         echo '"su" will (probably) prompt you for '"$ans's password."
5992                         su $ans -c './reflect >flect'
5993                         if $contains "/dev/fd" flect >/dev/null; then
5994                                 echo "Okay, it looks like setuid scripts are secure." >&4
5995                                 dflt=y
5996                         else
5997                                 echo "I don't think setuid scripts are secure." >&4
5998                                 dflt=n
5999                         fi
6000                         ;;
6001                 esac
6002                 rp='Does your kernel have *secure* setuid scripts?'
6003                 . ./myread
6004                 case "$ans" in
6005                 [yY]*)  val="$define";;
6006                 *)      val="$undef";;
6007                 esac
6008         fi
6009 else
6010         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6011         echo "(That's for file descriptors, not floppy disks.)"
6012         val="$undef"
6013 fi
6014 set d_suidsafe
6015 eval $setvar
6016
6017 $rm -f reflect flect
6018
6019 : now see if they want to do setuid emulation
6020 echo " "
6021 val="$undef"
6022 case "$d_suidsafe" in
6023 "$define")
6024         val="$undef"
6025         echo "No need to emulate SUID scripts since they are secure here." >&4
6026         ;;
6027 *)
6028         $cat <<EOM
6029 Some systems have disabled setuid scripts, especially systems where
6030 setuid scripts cannot be secure.  On systems where setuid scripts have
6031 been disabled, the setuid/setgid bits on scripts are currently
6032 useless.  It is possible for $package to detect those bits and emulate
6033 setuid/setgid in a secure fashion.  This emulation will only work if
6034 setuid scripts have been disabled in your kernel.
6035
6036 EOM
6037         case "$d_dosuid" in
6038         "$define") dflt=y ;;
6039         *) dflt=n ;;
6040         esac
6041         rp="Do you want to do setuid/setgid emulation?"
6042         . ./myread
6043         case "$ans" in
6044         [yY]*)  val="$define";;
6045         *)      val="$undef";;
6046         esac
6047         ;;
6048 esac
6049 set d_dosuid
6050 eval $setvar
6051
6052 : see if this is a malloc.h system
6053 : we want a real compile instead of Inhdr because some systems have a
6054 : malloc.h that just gives a compile error saying to use stdlib.h instead
6055 echo " "
6056 $cat >try.c <<EOCP
6057 #include <stdlib.h>
6058 #include <malloc.h>
6059 int main () { return 0; }
6060 EOCP
6061 set try
6062 if eval $compile; then
6063     echo "<malloc.h> found." >&4
6064     val="$define"
6065 else
6066     echo "<malloc.h> NOT found." >&4
6067     val="$undef"
6068 fi
6069 $rm -f try.c try
6070 set i_malloc
6071 eval $setvar
6072
6073 : check for void type
6074 echo " "
6075 echo "Checking to see how well your C compiler groks the void type..." >&4
6076 case "$voidflags" in
6077 '')
6078         $cat >try.c <<EOCP
6079 #$i_stdlib I_STDLIB
6080 #ifdef I_STDLIB
6081 #include <stdlib.h>
6082 #endif
6083 #if TRY & 1
6084 void sub() {
6085 #else
6086 sub() {
6087 #endif
6088         extern void moo();      /* function returning void */
6089         void (*goo)();          /* ptr to func returning void */
6090 #if TRY & 8
6091         void *hue;              /* generic ptr */
6092 #endif
6093 #if TRY & 2
6094         void (*foo[10])();
6095 #endif
6096
6097 #if TRY & 4
6098         if(goo == moo) {
6099                 exit(0);
6100         }
6101 #endif
6102         exit(0);
6103 }
6104 int main() { sub(); }
6105 EOCP
6106         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6107                 voidflags=$defvoidused
6108         echo "Good.  It appears to support void to the level $package wants.">&4
6109                 if $contains warning .out >/dev/null 2>&1; then
6110                         echo "However, you might get some warnings that look like this:"
6111                         $cat .out
6112                 fi
6113         else
6114 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6115                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6116                         echo "It supports 1..."
6117                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6118                                 echo "It also supports 2..."
6119                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6120                                         voidflags=7
6121                                         echo "And it supports 4 but not 8 definitely."
6122                                 else
6123                                         echo "It doesn't support 4..."
6124                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6125                                                 voidflags=11
6126                                                 echo "But it supports 8."
6127                                         else
6128                                                 voidflags=3
6129                                                 echo "Neither does it support 8."
6130                                         fi
6131                                 fi
6132                         else
6133                                 echo "It does not support 2..."
6134                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6135                                         voidflags=13
6136                                         echo "But it supports 4 and 8."
6137                                 else
6138                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6139                                                 voidflags=5
6140                                                 echo "And it supports 4 but has not heard about 8."
6141                                         else
6142                                                 echo "However it supports 8 but not 4."
6143                                         fi
6144                                 fi
6145                         fi
6146                 else
6147                         echo "There is no support at all for void."
6148                         voidflags=0
6149                 fi
6150         fi
6151 esac
6152 case "$voidflags" in
6153 "$defvoidused") ;;
6154 *)      $cat >&4 <<'EOM'
6155   Support flag bits are:
6156     1: basic void declarations.
6157     2: arrays of pointers to functions returning void.
6158     4: operations between pointers to and addresses of void functions.
6159     8: generic void pointers.
6160 EOM
6161         dflt="$voidflags";
6162         rp="Your void support flags add up to what?"
6163         . ./myread
6164         voidflags="$ans"
6165         ;;
6166 esac
6167 $rm -f try.* .out
6168
6169 : check for length of pointer
6170 echo " "
6171 case "$ptrsize" in
6172 '')
6173         echo "Checking to see how big your pointers are..." >&4
6174         if test "$voidflags" -gt 7; then
6175                 echo '#define VOID_PTR char *' > try.c
6176         else
6177                 echo '#define VOID_PTR void *' > try.c
6178         fi
6179         $cat >>try.c <<EOCP
6180 #include <stdio.h>
6181 #$i_stdlib I_STDLIB
6182 #ifdef I_STDLIB
6183 #include <stdlib.h>
6184 #endif
6185 int main()
6186 {
6187     printf("%d\n", (int)sizeof(VOID_PTR));
6188     exit(0);
6189 }
6190 EOCP
6191         set try
6192         if eval $compile_ok; then
6193                 ptrsize=`$run ./try`
6194                 echo "Your pointers are $ptrsize bytes long."
6195         else
6196                 dflt='4'
6197                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6198                 rp="What is the size of a pointer (in bytes)?"
6199                 . ./myread
6200                 ptrsize="$ans"
6201         fi
6202         ;;
6203 esac
6204 $rm -f try.c try
6205 case "$use64bitall" in
6206 "$define"|true|[yY]*)
6207         case "$ptrsize" in
6208         4)      cat <<EOM >&4
6209
6210 *** You have chosen a maximally 64-bit build, but your pointers
6211 *** are only 4 bytes wide, disabling maximal 64-bitness.
6212
6213 EOM
6214                 use64bitall="$undef"
6215                 case "$use64bitint" in
6216                 "$define"|true|[yY]*) ;;
6217                 *)      cat <<EOM >&4
6218
6219 *** Downgrading from maximal 64-bitness to using 64-bit integers.
6220
6221 EOM
6222                         use64bitint="$define"
6223                         ;;
6224                 esac
6225                 ;;
6226         esac
6227         ;;
6228 esac
6229
6230
6231 : determine which malloc to compile in
6232 echo " "
6233 case "$usemymalloc" in
6234 [yY]*|true|$define)     dflt='y' ;;
6235 [nN]*|false|$undef)     dflt='n' ;;
6236 *)      case "$ptrsize" in
6237         4) dflt='y' ;;
6238         *) dflt='n' ;;
6239         esac
6240         ;;
6241 esac
6242 rp="Do you wish to attempt to use the malloc that comes with $package?"
6243 . ./myread
6244 usemymalloc="$ans"
6245 case "$ans" in
6246 y*|true)
6247         usemymalloc='y'
6248         mallocsrc='malloc.c'
6249         mallocobj="malloc$_o"
6250         d_mymalloc="$define"
6251         case "$libs" in
6252         *-lmalloc*)
6253                 : Remove malloc from list of libraries to use
6254                 echo "Removing unneeded -lmalloc from library list" >&4
6255                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6256                 shift
6257                 libs="$*"
6258                 echo "libs = $libs" >&4
6259                 ;;
6260         esac
6261         ;;
6262 *)
6263         usemymalloc='n'
6264         mallocsrc=''
6265         mallocobj=''
6266         d_mymalloc="$undef"
6267         ;;
6268 esac
6269
6270 : compute the return types of malloc and free
6271 echo " "
6272 $cat >malloc.c <<END
6273 #$i_malloc I_MALLOC
6274 #$i_stdlib I_STDLIB
6275 #include <stdio.h>
6276 #include <sys/types.h>
6277 #ifdef I_MALLOC
6278 #include <malloc.h>
6279 #endif
6280 #ifdef I_STDLIB
6281 #include <stdlib.h>
6282 #endif
6283 #ifdef TRY_MALLOC
6284 void *malloc();
6285 #endif
6286 #ifdef TRY_FREE
6287 void free();
6288 #endif
6289 END
6290 case "$malloctype" in
6291 '')
6292         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6293                 malloctype='void *'
6294         else
6295                 malloctype='char *'
6296         fi
6297         ;;
6298 esac
6299 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6300
6301 case "$freetype" in
6302 '')
6303         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6304                 freetype='void'
6305         else
6306                 freetype='int'
6307         fi
6308         ;;
6309 esac
6310 echo "Your system uses $freetype free(), it would seem." >&4
6311 $rm -f malloc.[co]
6312 $cat <<EOM
6313
6314 After $package is installed, you may wish to install various
6315 add-on modules and utilities.  Typically, these add-ons will
6316 be installed under $prefix with the rest
6317 of this package.  However, you may wish to install such add-ons
6318 elsewhere under a different prefix.
6319
6320 If you do not wish to put everything under a single prefix, that's
6321 ok.  You will be prompted for the individual locations; this siteprefix
6322 is only used to suggest the defaults.
6323
6324 The default should be fine for most people.
6325
6326 EOM
6327 fn=d~+
6328 rp='Installation prefix to use for add-on modules and utilities?'
6329 : XXX Here might be another good place for an installstyle setting.
6330 case "$siteprefix" in
6331 '') dflt=$prefix ;;
6332 *)  dflt=$siteprefix ;;
6333 esac
6334 . ./getfile
6335 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6336 oldsiteprefix=''
6337 case "$siteprefix" in
6338 '') ;;
6339 *)      case "$ans" in
6340         "$prefix") ;;
6341         *) oldsiteprefix="$prefix";;
6342         esac
6343         ;;
6344 esac
6345 siteprefix="$ans"
6346 siteprefixexp="$ansexp"
6347
6348 : determine where site specific libraries go.
6349 : Usual default is /usr/local/lib/perl5/site_perl/$version
6350 : The default "style" setting is made in installstyle.U
6351 : XXX No longer works with Prefixit stuff.
6352 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6353 case "$sitelib" in
6354 '') case "$installstyle" in
6355         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6356         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6357         esac
6358         ;;
6359 *)      dflt="$sitelib"
6360         ;;
6361 esac
6362 $cat <<EOM
6363
6364 The installation process will create a directory for
6365 site-specific extensions and modules.  Most users find it convenient
6366 to place all site-specific files in this directory rather than in the
6367 main distribution directory.
6368
6369 EOM
6370 fn=d~+
6371 rp='Pathname for the site-specific library files?'
6372 . ./getfile
6373 sitelib="$ans"
6374 sitelibexp="$ansexp"
6375 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6376 : Change installation prefix, if necessary.
6377 if $test X"$prefix" != X"$installprefix"; then
6378         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6379 else
6380         installsitelib="$sitelibexp"
6381 fi
6382
6383 : determine where site specific architecture-dependent libraries go.
6384 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6385 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6386 : sitelib may have an optional trailing /share.
6387 case "$sitearch" in
6388 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6389         dflt="$dflt/$archname"
6390         ;;
6391 *)      dflt="$sitearch"
6392         ;;
6393 esac
6394 set sitearch sitearch none
6395 eval $prefixit
6396 $cat <<EOM
6397
6398 The installation process will also create a directory for
6399 architecture-dependent site-specific extensions and modules.
6400
6401 EOM
6402 fn=d~+
6403 rp='Pathname for the site-specific architecture-dependent library files?'
6404 . ./getfile
6405 sitearch="$ans"
6406 sitearchexp="$ansexp"
6407 : Change installation prefix, if necessary.
6408 if $test X"$prefix" != X"$installprefix"; then
6409         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6410 else
6411         installsitearch="$sitearchexp"
6412 fi
6413
6414 $cat <<EOM
6415
6416 The installation process will also create a directory for
6417 vendor-supplied add-ons.  Vendors who supply perl with their system
6418 may find it convenient to place all vendor-supplied files in this
6419 directory rather than in the main distribution directory.  This will
6420 ease upgrades between binary-compatible maintenance versions of perl.
6421
6422 Of course you may also use these directories in whatever way you see
6423 fit.  For example, you might use them to access modules shared over a
6424 company-wide network.
6425
6426 The default answer should be fine for most people.
6427 This causes further questions about vendor add-ons to be skipped
6428 and no vendor-specific directories will be configured for perl.
6429
6430 EOM
6431 rp='Do you want to configure vendor-specific add-on directories?'
6432 case "$usevendorprefix" in
6433 define|true|[yY]*) dflt=y ;;
6434 *)      : User may have set vendorprefix directly on Configure command line.
6435         case "$vendorprefix" in
6436         ''|' ') dflt=n ;;
6437         *)      dflt=y ;;
6438         esac
6439         ;;
6440 esac
6441 . ./myread
6442 case "$ans" in
6443 [yY]*)  fn=d~+
6444         rp='Installation prefix to use for vendor-supplied add-ons?'
6445         case "$vendorprefix" in
6446         '') dflt='' ;;
6447         *)  dflt=$vendorprefix ;;
6448         esac
6449         . ./getfile
6450         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6451         oldvendorprefix=''
6452         case "$vendorprefix" in
6453         '') ;;
6454         *)      case "$ans" in
6455                 "$prefix") ;;
6456                 *) oldvendorprefix="$prefix";;
6457                 esac
6458                 ;;
6459         esac
6460         usevendorprefix="$define"
6461         vendorprefix="$ans"
6462         vendorprefixexp="$ansexp"
6463         ;;
6464 *)      usevendorprefix="$undef"
6465         vendorprefix=''
6466         vendorprefixexp=''
6467         ;;
6468 esac
6469
6470 case "$vendorprefix" in
6471 '')     d_vendorlib="$undef"
6472         vendorlib=''
6473         vendorlibexp=''
6474         ;;
6475 *)      d_vendorlib="$define"
6476         : determine where vendor-supplied modules go.
6477         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6478         case "$vendorlib" in
6479         '')
6480                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6481                 case "$installstyle" in
6482                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6483                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6484                 esac
6485                 ;;
6486         *)      dflt="$vendorlib"
6487                 ;;
6488         esac
6489         fn=d~+
6490         rp='Pathname for the vendor-supplied library files?'
6491         . ./getfile
6492         vendorlib="$ans"
6493         vendorlibexp="$ansexp"
6494         ;;
6495 esac
6496 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6497 : Change installation prefix, if necessary.
6498 if $test X"$prefix" != X"$installprefix"; then
6499         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6500 else
6501         installvendorlib="$vendorlibexp"
6502 fi
6503
6504 case "$vendorprefix" in
6505 '')     d_vendorarch="$undef"
6506         vendorarch=''
6507         vendorarchexp=''
6508         ;;
6509 *)      d_vendorarch="$define"
6510         : determine where vendor-supplied architecture-dependent libraries go.
6511         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6512         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6513         : vendorlib may have an optional trailing /share.
6514         case "$vendorarch" in
6515         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6516                 dflt="$dflt/$archname"
6517                 ;;
6518         *)      dflt="$vendorarch" ;;
6519         esac
6520         fn=d~+
6521         rp='Pathname for vendor-supplied architecture-dependent files?'
6522         . ./getfile
6523         vendorarch="$ans"
6524         vendorarchexp="$ansexp"
6525         ;;
6526 esac
6527 : Change installation prefix, if necessary.
6528 if $test X"$prefix" != X"$installprefix"; then
6529         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6530 else
6531         installvendorarch="$vendorarchexp"
6532 fi
6533
6534 : Final catch-all directories to search
6535 $cat <<EOM
6536
6537 Lastly, you can have perl look in other directories for extensions and
6538 modules in addition to those already specified.
6539 These directories will be searched after 
6540         $sitearch 
6541         $sitelib 
6542 EOM
6543 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6544 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6545 echo ' '
6546 case "$otherlibdirs" in
6547 ''|' ') dflt='none' ;;
6548 *)      dflt="$otherlibdirs" ;;
6549 esac
6550 $cat <<EOM
6551 Enter a colon-separated set of extra paths to include in perl's @INC
6552 search path, or enter 'none' for no extra paths.
6553
6554 EOM
6555
6556 rp='Colon-separated list of additional directories for perl to search?'
6557 . ./myread
6558 case "$ans" in
6559 ' '|''|none)    otherlibdirs=' ' ;;     
6560 *)      otherlibdirs="$ans" ;;
6561 esac
6562 case "$otherlibdirs" in
6563 ' ') val=$undef ;;
6564 *)      val=$define ;;
6565 esac
6566 set d_perl_otherlibdirs
6567 eval $setvar
6568
6569 : Cruising for prototypes
6570 echo " "
6571 echo "Checking out function prototypes..." >&4
6572 $cat >prototype.c <<EOCP
6573 #$i_stdlib I_STDLIB
6574 #ifdef I_STDLIB
6575 #include <stdlib.h>
6576 #endif
6577 int main(int argc, char *argv[]) {
6578         exit(0);}
6579 EOCP
6580 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6581         echo "Your C compiler appears to support function prototypes."
6582         val="$define"
6583 else
6584         echo "Your C compiler doesn't seem to understand function prototypes."
6585         val="$undef"
6586 fi
6587 set prototype
6588 eval $setvar
6589 $rm -f prototype*
6590
6591 case "$prototype" in
6592 "$define") ;;
6593 *)      ansi2knr='ansi2knr'
6594         echo " "
6595         cat <<EOM >&4
6596
6597 $me:  FATAL ERROR:
6598 This version of $package can only be compiled by a compiler that 
6599 understands function prototypes.  Unfortunately, your C compiler 
6600         $cc $ccflags
6601 doesn't seem to understand them.  Sorry about that.
6602
6603 If GNU cc is available for your system, perhaps you could try that instead.  
6604
6605 Eventually, we hope to support building Perl with pre-ANSI compilers.
6606 If you would like to help in that effort, please contact <perlbug@perl.org>.
6607
6608 Aborting Configure now.
6609 EOM
6610         exit 2
6611         ;;
6612 esac
6613
6614 : determine where public executables go
6615 echo " "
6616 set dflt bin bin
6617 eval $prefixit
6618 fn=d~
6619 rp='Pathname where the public executables will reside?'
6620 . ./getfile
6621 if $test "X$ansexp" != "X$binexp"; then
6622         installbin=''
6623 fi
6624 bin="$ans"
6625 binexp="$ansexp"
6626 : Change installation prefix, if necessary.
6627 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6628 if $test X"$prefix" != X"$installprefix"; then
6629         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6630 else
6631         installbin="$binexp"
6632 fi
6633
6634 echo " "
6635 case "$extras" in
6636 '') dflt='n';;
6637 *) dflt='y';;
6638 esac
6639 cat <<EOM
6640 Perl can be built with extra modules or bundles of modules which
6641 will be fetched from the CPAN and installed alongside Perl.
6642
6643 Notice that you will need access to the CPAN; either via the Internet,
6644 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6645 be asked later to configure the CPAN.pm module which will in turn do
6646 the installation of the rest of the extra modules or bundles.)
6647
6648 Notice also that if the modules require any external software such as
6649 libraries and headers (the libz library and the zlib.h header for the
6650 Compress::Zlib module, for example) you MUST have any such software
6651 already installed, this configuration process will NOT install such
6652 things for you.
6653
6654 If this doesn't make any sense to you, just accept the default '$dflt'.
6655 EOM
6656 rp='Install any extra modules (y or n)?'
6657 . ./myread
6658 case "$ans" in
6659 y|Y)
6660         cat <<EOM
6661
6662 Please list any extra modules or bundles to be installed from CPAN,
6663 with spaces between the names.  The names can be in any format the
6664 'install' command of CPAN.pm will understand.  (Answer 'none',
6665 without the quotes, to install no extra modules or bundles.)
6666 EOM
6667         rp='Extras?'
6668         dflt="$extras"
6669         . ./myread
6670         extras="$ans"
6671 esac
6672 case "$extras" in
6673 ''|'none')
6674         val=''
6675         $rm -f ../extras.lst
6676         ;;
6677 *)      echo "(Saving the list of extras for later...)"
6678         echo "$extras" > ../extras.lst
6679         val="'$extras'"
6680         ;;
6681 esac
6682 set extras
6683 eval $setvar
6684 echo " "
6685
6686 : determine where html pages for programs go
6687 set html1dir html1dir none
6688 eval $prefixit
6689 $cat <<EOM
6690
6691 If you wish to install html files for programs in $spackage, indicate 
6692 the appropriate directory here.  To skip installing html files,
6693 answer "none".
6694 EOM
6695 case "$html1dir" in
6696 ''|none|$undef|' ') dflt=none ;;
6697 *) dflt=$html1dir ;;
6698 esac
6699 fn=dn+~
6700 rp="Directory for the main $spackage html pages?"
6701 . ./getfile
6702 html1dir="$ans"
6703 html1direxp="$ansexp"
6704 : Use ' ' for none so value is preserved next time through Configure
6705 $test X"$html1dir" = "X" && html1dir=' '
6706 : Change installation prefix, if necessary.
6707 if $test X"$prefix" != X"$installprefix"; then
6708         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6709 else
6710         installhtml1dir="$html1direxp"
6711 fi
6712
6713 : determine where html pages for libraries and modules go
6714 set html3dir html3dir none
6715 eval $prefixit
6716 $cat <<EOM
6717
6718 If you wish to install html files for modules associated with $spackage,
6719 indicate the appropriate directory here.  To skip installing html files,
6720 answer "none".
6721 EOM
6722 : There is no obvious default.  If they have specified html1dir, then
6723 : try to key off that, possibly changing .../html1 into .../html3.
6724 case "$html3dir" in
6725 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6726 *) dflt=$html3dir ;;
6727 esac
6728 fn=dn+~
6729 rp="Directory for the $spackage module html pages?"
6730 . ./getfile
6731 html3dir="$ans"
6732 html3direxp="$ansexp"
6733 : Use ' ' for none so value is preserved next time through Configure
6734 $test X"$html3dir" = "X" && html3dir=' '
6735 : Change installation prefix, if necessary.
6736 if $test X"$prefix" != X"$installprefix"; then
6737         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6738 else
6739         installhtml3dir="$html3direxp"
6740 fi
6741
6742 : Find perl5.005 or later.
6743 echo "Looking for a previously installed perl5.005 or later... "
6744 case "$perl5" in
6745 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6746                 : Check if this perl is recent and can load a simple module
6747                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6748                         perl5=$tdir/perl
6749                         break;
6750                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6751                         perl5=$tdir/perl5
6752                         break;
6753                 fi
6754         done
6755         ;;
6756 *)      perl5="$perl5"
6757         ;;
6758 esac
6759 case "$perl5" in
6760 '')     echo "None found.  That's ok.";;
6761 *)      echo "Using $perl5." ;;
6762 esac
6763
6764 : Determine list of previous versions to include in @INC
6765 $cat > getverlist <<EOPL
6766 #!$perl5 -w
6767 use File::Basename;
6768 \$api_versionstring = "$api_versionstring";
6769 \$version = "$version";
6770 \$stem = "$sitelib_stem";
6771 \$archname = "$archname";
6772 EOPL
6773         $cat >> getverlist <<'EOPL'
6774 # Can't have leading @ because metaconfig interprets it as a command!
6775 ;@inc_version_list=();
6776 # XXX Redo to do opendir/readdir? 
6777 if (-d $stem) {
6778     chdir($stem);
6779     ;@candidates = glob("5.*");
6780 }
6781 else {
6782     ;@candidates = ();
6783 }
6784
6785 # XXX ToDo:  These comparisons must be reworked when two-digit
6786 # subversions come along, so that 5.7.10 compares as greater than
6787 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6788 # widespread that we can use the built-in version vectors rather
6789 # than reinventing them here.  For 5.6.0, however, we must
6790 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6791 foreach $d (@candidates) {
6792     if ($d lt $version) {
6793         if ($d ge $api_versionstring) {
6794             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6795         }
6796         elsif ($d ge "5.005") {
6797             unshift(@inc_version_list, grep { -d } $d);
6798         }
6799     }
6800     else {
6801         # Skip newer version.  I.e. don't look in
6802         # 5.7.0 if we're installing 5.6.1.
6803     }
6804 }
6805
6806 if (@inc_version_list) {
6807     print join(' ', @inc_version_list);
6808 }
6809 else {
6810     # Blank space to preserve value for next Configure run.
6811     print " ";
6812 }
6813 EOPL
6814 chmod +x getverlist
6815 case "$inc_version_list" in
6816 '')     if test -x "$perl5$exe_ext"; then
6817                 dflt=`$perl5 getverlist`
6818         else
6819                 dflt='none'
6820         fi
6821         ;;
6822 $undef) dflt='none' ;;
6823 *)  eval dflt=\"$inc_version_list\" ;;
6824 esac
6825 case "$dflt" in
6826 ''|' ') dflt=none ;;
6827 esac
6828 case "$dflt" in
6829 5.005) dflt=none ;;
6830 esac
6831 $cat <<EOM
6832
6833 In order to ease the process of upgrading, this version of perl 
6834 can be configured to use modules built and installed with earlier 
6835 versions of perl that were installed under $prefix.  Specify here
6836 the list of earlier versions that this version of perl should check.
6837 If Configure detected no earlier versions of perl installed under
6838 $prefix, then the list will be empty.  Answer 'none' to tell perl
6839 to not search earlier versions.
6840
6841 The default should almost always be sensible, so if you're not sure,
6842 just accept the default.
6843 EOM
6844
6845 rp='List of earlier versions to include in @INC?'
6846 . ./myread
6847 case "$ans" in
6848 [Nn]one|''|' ') inc_version_list=' ' ;;
6849 *) inc_version_list="$ans" ;;
6850 esac
6851 case "$inc_version_list" in
6852 ''|' ') 
6853         inc_version_list_init='0';;
6854 *)      inc_version_list_init=`echo $inc_version_list |
6855                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6856         ;;
6857 esac
6858 $rm -f getverlist
6859
6860 : determine whether to install perl also as /usr/bin/perl
6861
6862 echo " "
6863 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6864         $cat <<EOM
6865 Many scripts expect perl to be installed as /usr/bin/perl.
6866
6867 If you want to, I can install the perl you are about to compile
6868 as /usr/bin/perl (in addition to $bin/perl).
6869 EOM
6870         if test -f /usr/bin/perl; then
6871             $cat <<EOM
6872
6873 However, please note that because you already have a /usr/bin/perl,
6874 overwriting that with a new Perl would very probably cause problems.
6875 Therefore I'm assuming you don't want to do that (unless you insist).
6876
6877 EOM
6878             case "$installusrbinperl" in
6879             "$define"|[yY]*)    dflt='y';;
6880             *)                  dflt='n';;
6881             esac
6882         else
6883             $cat <<EOM
6884
6885 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6886
6887 EOM
6888             case "$installusrbinperl" in
6889             "$undef"|[nN]*)     dflt='n';;
6890             *)                  dflt='y';;
6891             esac
6892         fi
6893         rp="Do you want to install perl as /usr/bin/perl?"
6894         . ./myread
6895         case "$ans" in
6896         [yY]*)  val="$define";;
6897         *)      val="$undef" ;;
6898         esac
6899 else
6900         val="$undef"
6901 fi
6902 set installusrbinperl
6903 eval $setvar
6904
6905 echo " "
6906 echo "Checking for GNU C Library..." >&4
6907 cat >try.c <<'EOCP'
6908 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6909    alone are insufficient to distinguish different versions, such as
6910    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6911    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6912 */
6913 #include <stdio.h>
6914 int main(void)
6915 {
6916 #ifdef __GLIBC__
6917 #   ifdef __GLIBC_MINOR__
6918 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6919 #           include <gnu/libc-version.h>
6920             printf("%s\n",  gnu_get_libc_version());
6921 #       else
6922             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6923 #       endif
6924 #   else
6925         printf("%d\n",  __GLIBC__);
6926 #   endif
6927     return 0;
6928 #else
6929     return 1;
6930 #endif
6931 }
6932 EOCP
6933 set try
6934 if eval $compile_ok && $run ./try > glibc.ver; then
6935         val="$define"
6936         gnulibc_version=`$cat glibc.ver`
6937         echo "You are using the GNU C Library version $gnulibc_version"
6938 else
6939         val="$undef"
6940         gnulibc_version=''
6941         echo "You are not using the GNU C Library"
6942 fi
6943 $rm -f try try.* glibc.ver
6944 set d_gnulibc
6945 eval $setvar
6946
6947 : see if nm is to be used to determine whether a symbol is defined or not
6948 case "$usenm" in
6949 '')
6950         dflt=''
6951         case "$d_gnulibc" in
6952         "$define")
6953                 echo " "
6954                 echo "nm probably won't work on the GNU C Library." >&4
6955                 dflt=n
6956                 ;;
6957         esac
6958         case "$dflt" in
6959         '') 
6960                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6961                         echo " "
6962                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6963                         echo "'nm' won't be sufficient on this sytem." >&4
6964                         dflt=n
6965                 fi
6966                 ;;
6967         esac
6968         case "$dflt" in
6969         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6970                 if $test $dflt -gt 20; then
6971                         dflt=y
6972                 else
6973                         dflt=n
6974                 fi
6975                 ;;
6976         esac
6977         ;;
6978 *)
6979         case "$usenm" in
6980         true|$define) dflt=y;;
6981         *) dflt=n;;
6982         esac
6983         ;;
6984 esac
6985 $cat <<EOM
6986
6987 I can use $nm to extract the symbols from your C libraries. This
6988 is a time consuming task which may generate huge output on the disk (up
6989 to 3 megabytes) but that should make the symbols extraction faster. The
6990 alternative is to skip the 'nm' extraction part and to compile a small
6991 test program instead to determine whether each symbol is present. If
6992 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
6993 this may be the best solution.
6994
6995 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
6996
6997 EOM
6998 rp="Shall I use $nm to extract C symbols from the libraries?"
6999 . ./myread
7000 case "$ans" in
7001 [Nn]*) usenm=false;;
7002 *) usenm=true;;
7003 esac
7004
7005 runnm=$usenm
7006 case "$reuseval" in
7007 true) runnm=false;;
7008 esac
7009
7010 : nm options which may be necessary
7011 case "$nm_opt" in
7012 '') if $test -f /mach_boot; then
7013                 nm_opt=''       # Mach
7014         elif $test -d /usr/ccs/lib; then
7015                 nm_opt='-p'     # Solaris (and SunOS?)
7016         elif $test -f /dgux; then
7017                 nm_opt='-p'     # DG-UX
7018         elif $test -f /lib64/rld; then
7019                 nm_opt='-p'     # 64-bit Irix
7020         else
7021                 nm_opt=''
7022         fi;;
7023 esac
7024
7025 : nm options which may be necessary for shared libraries but illegal
7026 : for archive libraries.  Thank you, Linux.
7027 case "$nm_so_opt" in
7028 '')     case "$myuname" in
7029         *linux*)
7030                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7031                         nm_so_opt='--dynamic'
7032                 fi
7033                 ;;
7034         esac
7035         ;;
7036 esac
7037
7038 case "$runnm" in
7039 true)
7040 : get list of predefined functions in a handy place
7041 echo " "
7042 case "$libc" in
7043 '') libc=unknown
7044         case "$libs" in
7045         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7046         esac
7047         ;;
7048 esac
7049 case "$libs" in
7050 '') ;;
7051 *)  for thislib in $libs; do
7052         case "$thislib" in
7053         -lc|-lc_s)
7054                 : Handle C library specially below.
7055                 ;;
7056         -l*)
7057                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7058                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7059                         :
7060                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7061                         :
7062                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7063                         :
7064                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7065                         :
7066                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7067                         :
7068                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7069                         :
7070                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7071                         :
7072                 else
7073                         try=''
7074                 fi
7075                 libnames="$libnames $try"
7076                 ;;
7077         *) libnames="$libnames $thislib" ;;
7078         esac
7079         done
7080         ;;
7081 esac
7082 xxx=normal
7083 case "$libc" in
7084 unknown)
7085         set /lib/libc.$so
7086         for xxx in $libpth; do
7087                 $test -r $1 || set $xxx/libc.$so
7088                 : The messy sed command sorts on library version numbers.
7089                 $test -r $1 || \
7090                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7091                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7092                                 h
7093                                 s/[0-9][0-9]*/0000&/g
7094                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7095                                 G
7096                                 s/\n/ /' | \
7097                          $sort | $sed -e 's/^.* //'`
7098                 eval set \$$#
7099         done
7100         $test -r $1 || set /usr/ccs/lib/libc.$so
7101         $test -r $1 || set /lib/libsys_s$_a
7102         ;;
7103 *)
7104         set blurfl
7105         ;;
7106 esac
7107 if $test -r "$1"; then
7108         echo "Your (shared) C library seems to be in $1."
7109         libc="$1"
7110 elif $test -r /lib/libc && $test -r /lib/clib; then
7111         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7112         xxx=apollo
7113         libc='/lib/clib /lib/libc'
7114         if $test -r /lib/syslib; then
7115                 echo "(Your math library is in /lib/syslib.)"
7116                 libc="$libc /lib/syslib"
7117         fi
7118 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7119         echo "Your C library seems to be in $libc, as you said before."
7120 elif $test -r $incpath/usr/lib/libc$_a; then
7121         libc=$incpath/usr/lib/libc$_a;
7122         echo "Your C library seems to be in $libc.  That's fine."
7123 elif $test -r /lib/libc$_a; then
7124         libc=/lib/libc$_a;
7125         echo "Your C library seems to be in $libc.  You're normal."
7126 else
7127         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7128                 :
7129         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7130                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7131         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7132                 :
7133         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7134                 :
7135         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7136                 :
7137         else
7138                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7139         fi
7140         if $test -r "$tans"; then
7141                 echo "Your C library seems to be in $tans, of all places."
7142                 libc=$tans
7143         else
7144                 libc='blurfl'
7145         fi
7146 fi
7147 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7148         dflt="$libc"
7149         cat <<EOM
7150
7151 If the guess above is wrong (which it might be if you're using a strange
7152 compiler, or your machine supports multiple models), you can override it here.
7153
7154 EOM
7155 else
7156         dflt=''
7157         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7158         cat >&4 <<EOM
7159 I can't seem to find your C library.  I've looked in the following places:
7160
7161 EOM
7162         $sed 's/^/      /' libpath
7163         cat <<EOM
7164
7165 None of these seems to contain your C library. I need to get its name...
7166
7167 EOM
7168 fi
7169 fn=f
7170 rp='Where is your C library?'
7171 . ./getfile
7172 libc="$ans"
7173
7174 echo " "
7175 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7176 set X `cat libnames`
7177 shift
7178 xxx=files
7179 case $# in 1) xxx=file; esac
7180 echo "Extracting names from the following $xxx for later perusal:" >&4
7181 echo " "
7182 $sed 's/^/      /' libnames >&4
7183 echo " "
7184 $echo $n "This may take a while...$c" >&4
7185
7186 for file in $*; do
7187         case $file in
7188         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7189         *) $nm $nm_opt $file 2>/dev/null;;
7190         esac
7191 done >libc.tmp
7192
7193 $echo $n ".$c"
7194 $grep fprintf libc.tmp > libc.ptf
7195 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7196 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7197 xxx='[ADTSIW]'
7198 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
7199         eval $xscan;\
7200         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7201                 eval $xrun
7202 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7203         eval $xscan;\
7204         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7205                 eval $xrun
7206 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7207         eval $xscan;\
7208         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7209                 eval $xrun
7210 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7211         eval $xscan;\
7212         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7213                 eval $xrun
7214 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7215         eval $xscan;\
7216         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7217                 eval $xrun
7218 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7219         eval $xscan;\
7220         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7221                 eval $xrun
7222 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7223                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7224         eval $xscan;\
7225         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7226                 eval $xrun
7227 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7228         eval $xscan;\
7229         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7230                 eval $xrun
7231 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7232         eval $xscan;\
7233         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7234                 eval $xrun
7235 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7236         eval $xscan;\
7237         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7238                 eval $xrun
7239 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7240         eval $xscan;\
7241         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7242                 eval $xrun
7243 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7244         eval $xscan;\
7245         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7246                 eval $xrun
7247 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7248         eval $xscan;\
7249         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7250                 eval $xrun
7251 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7252         eval $xscan;\
7253         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254                 eval $xrun
7255 else
7256         $nm -p $* 2>/dev/null >libc.tmp
7257         $grep fprintf libc.tmp > libc.ptf
7258         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7259                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7260         then
7261                 nm_opt='-p'
7262                 eval $xrun
7263         else
7264                 echo " "
7265                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7266                 com=''
7267                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7268                         for thisname in $libnames $libc; do
7269                                 $ar t $thisname >>libc.tmp
7270                         done
7271                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7272                         echo "Ok." >&4
7273                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7274                         # Repeat libc to extract forwarders to DLL entries too
7275                         for thisname in $libnames $libc; do
7276                                 $ar tv $thisname >>libc.tmp
7277                                 # Revision 50 of EMX has bug in $ar.
7278                                 # it will not extract forwarders to DLL entries
7279                                 # Use emximp which will extract exactly them.
7280                                 emximp -o tmp.imp $thisname \
7281                                     2>/dev/null && \
7282                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7283                                     < tmp.imp >>libc.tmp
7284                                 $rm tmp.imp
7285                         done
7286                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7287                         echo "Ok." >&4
7288                 else
7289                         echo "$ar didn't seem to work right." >&4
7290                         echo "Maybe this is a Cray...trying bld instead..." >&4
7291                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7292                         then
7293                                 for thisname in $libnames; do
7294                                         bld t $libnames | \
7295                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7296                                         $ar t $thisname >>libc.tmp
7297                                 done
7298                                 echo "Ok." >&4
7299                         else
7300                                 echo "That didn't work either.  Giving up." >&4
7301                                 exit 1
7302                         fi
7303                 fi
7304         fi
7305 fi
7306 nm_extract="$com"
7307 case "$PASE" in
7308 define)
7309     echo " "
7310     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7311     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7312     ;;
7313 *)  if $test -f /lib/syscalls.exp; then
7314         echo " "
7315         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7316         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7317     fi
7318     ;;
7319 esac
7320 ;;
7321 esac
7322 $rm -f libnames libpath
7323
7324 : see if dld is available
7325 set dld.h i_dld
7326 eval $inhdr
7327
7328 : is a C symbol defined?
7329 csym='tlook=$1;
7330 case "$3" in
7331 -v) tf=libc.tmp; tc=""; tdc="";;
7332 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
7333 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
7334 esac;
7335 tx=yes;
7336 case "$reuseval-$4" in
7337 true-) ;;
7338 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7339 esac;
7340 case "$tx" in
7341 yes)
7342         case "$runnm" in
7343         true)
7344                 if $contains $tlook $tf >/dev/null 2>&1;
7345                 then tval=true;
7346                 else tval=false;
7347                 fi;;
7348         *)
7349                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7350                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
7351                 then tval=true;
7352                 else tval=false;
7353                 fi;
7354                 $rm -f t t.c;;
7355         esac;;
7356 *)
7357         case "$tval" in
7358         $define) tval=true;;
7359         *) tval=false;;
7360         esac;;
7361 esac;
7362 eval "$2=$tval"'
7363
7364 : define an is-in-libc? function
7365 inlibc='echo " "; td=$define; tu=$undef;
7366 sym=$1; var=$2; eval "was=\$$2";
7367 tx=yes;
7368 case "$reuseval$was" in
7369 true) ;;
7370 true*) tx=no;;
7371 esac;
7372 case "$tx" in
7373 yes)
7374         set $sym tres -f;
7375         eval $csym;
7376         case "$tres" in
7377         true)
7378                 echo "$sym() found." >&4;
7379                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7380         *)
7381                 echo "$sym() NOT found." >&4;
7382                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7383         esac;;
7384 *)
7385         case "$was" in
7386         $define) echo "$sym() found." >&4;;
7387         *) echo "$sym() NOT found." >&4;;
7388         esac;;
7389 esac'
7390
7391 : see if dlopen exists
7392 xxx_runnm="$runnm"
7393 runnm=false
7394 set dlopen d_dlopen
7395 eval $inlibc
7396 runnm="$xxx_runnm"
7397
7398 : determine which dynamic loading, if any, to compile in
7399 echo " "
7400 dldir="ext/DynaLoader"
7401 case "$usedl" in
7402 $define|y|true)
7403         dflt='y'
7404         usedl="$define"
7405         ;;
7406 $undef|n|false)
7407         dflt='n'
7408         usedl="$undef"
7409         ;;
7410 *) 
7411         dflt='n'
7412         case "$d_dlopen" in
7413             $define) dflt='y' ;;
7414         esac
7415         case "$i_dld" in
7416             $define) dflt='y' ;;
7417         esac
7418         : Does a dl_xxx.xs file exist for this operating system
7419         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7420         ;;
7421 esac
7422 rp="Do you wish to use dynamic loading?"
7423 . ./myread
7424 usedl="$ans"
7425 case "$ans" in
7426 y*) usedl="$define"
7427         case "$dlsrc" in
7428         '')
7429                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7430                         dflt="$dldir/dl_${osname}.xs"
7431                 elif $test "$d_dlopen" = "$define" ; then
7432                         dflt="$dldir/dl_dlopen.xs"
7433                 elif $test "$i_dld" = "$define" ; then
7434                         dflt="$dldir/dl_dld.xs"
7435                 else
7436                         dflt=''
7437                 fi
7438                 ;;
7439         *)      dflt="$dldir/$dlsrc"
7440                 ;;
7441         esac
7442     echo "The following dynamic loading files are available:"
7443         : Can not go over to $dldir because getfile has path hard-coded in.
7444         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7445         rp="Source file to use for dynamic loading"
7446         fn="fne"
7447         gfpth="$src"
7448         . ./getfile
7449         usedl="$define"
7450         : emulate basename
7451         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7452
7453         $cat << EOM
7454
7455 Some systems may require passing special flags to $cc -c to
7456 compile modules that will be used to create a shared library.
7457 To use no flags, say "none".
7458
7459 EOM
7460     case "$cccdlflags" in
7461     '') case "$gccversion" in
7462                 '') case "$osname" in
7463                         hpux)   dflt='+z' ;;
7464                         next)   dflt='none' ;;
7465                         irix*)  dflt='-KPIC' ;;
7466                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7467                         sunos)  dflt='-pic' ;;
7468                         *)      dflt='none' ;;
7469                     esac
7470                         ;;
7471                 *)  case "$osname" in
7472                         darwin) dflt='none' ;;
7473                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7474                         *)      dflt='-fpic' ;;
7475                     esac ;;
7476             esac ;;
7477         ' ') dflt='none' ;;
7478     *)  dflt="$cccdlflags" ;;
7479     esac
7480     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7481     . ./myread
7482     case "$ans" in
7483     none) cccdlflags=' ' ;;
7484     *) cccdlflags="$ans" ;;
7485     esac
7486
7487     cat << EOM
7488
7489 Some systems use ld to create libraries that can be dynamically loaded,
7490 while other systems (such as those using ELF) use $cc.
7491
7492 EOM
7493         case "$ld" in
7494         '')     $cat >try.c <<EOM
7495 /* Test for whether ELF binaries are produced */
7496 #include <fcntl.h>
7497 #$i_stdlib I_STDLIB
7498 #ifdef I_STDLIB
7499 #include <stdlib.h>
7500 #endif
7501 int main() {
7502         char b[4];
7503         int i = open("a.out",O_RDONLY);
7504         if(i == -1) 
7505                 exit(1); /* fail */
7506         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7507                 exit(0); /* succeed (yes, it's ELF) */
7508         else
7509                 exit(1); /* fail */
7510 }
7511 EOM
7512                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7513                         cat <<EOM
7514 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7515 EOM
7516                         dflt="$cc"
7517                 else
7518                         echo "I'll use ld to build dynamic libraries."
7519                         dflt='ld'
7520                 fi
7521                 rm -f try.c a.out
7522                 ;;
7523         *)      dflt="$ld"
7524                 ;;
7525         esac
7526
7527     rp="What command should be used to create dynamic libraries?"
7528     . ./myread
7529         ld="$ans"
7530
7531     cat << EOM
7532
7533 Some systems may require passing special flags to $ld to create a
7534 library that can be dynamically loaded.  If your ld flags include
7535 -L/other/path options to locate libraries outside your loader's normal
7536 search path, you may need to specify those -L options here as well.  To
7537 use no flags, say "none".
7538
7539 EOM
7540     case "$lddlflags" in
7541     '') case "$osname" in
7542                         beos) dflt='-nostart' ;;
7543                         hpux) dflt='-b';
7544                               case "$gccversion" in
7545                               '') dflt="$dflt +vnocompatwarnings" ;;
7546                               esac
7547                               ;;        
7548                         linux|irix*)    dflt='-shared' ;;
7549                         next)  dflt='none' ;;
7550                         solaris) dflt='-G' ;;
7551                         sunos) dflt='-assert nodefinitions' ;;
7552                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7553                 *)     dflt='none' ;;
7554                         esac
7555                         ;;
7556     *) dflt="$lddlflags" ;;
7557     esac
7558
7559         : Try to guess additional flags to pick up local libraries.
7560         : Be careful not to append to a plain 'none'
7561         case "$dflt" in
7562         none) dflt='' ;;
7563         esac
7564         for thisflag in $ldflags; do
7565                 case "$thisflag" in
7566                 -L*|-R*|-Wl,-R*)
7567                         case " $dflt " in
7568                         *" $thisflag "*) ;;
7569                         *) dflt="$dflt $thisflag" ;;
7570                         esac
7571                         ;;
7572                 esac
7573         done
7574
7575         case "$dflt" in
7576         ''|' ') dflt='none' ;;
7577         esac
7578
7579     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7580     . ./myread
7581     case "$ans" in
7582     none) lddlflags=' ' ;;
7583     *) lddlflags="$ans" ;;
7584     esac
7585
7586         cat <<EOM
7587
7588 Some systems may require passing special flags to $cc to indicate that
7589 the resulting executable will use dynamic linking.  To use no flags,
7590 say "none".
7591
7592 EOM
7593     case "$ccdlflags" in
7594     '') case "$osname" in
7595                 hpux)   dflt='-Wl,-E' ;;
7596                 linux)  dflt='-rdynamic' ;;
7597                 next)   dflt='none' ;;
7598                 sunos)  dflt='none' ;;
7599                 *)      dflt='none' ;;
7600             esac ;;
7601     ' ')  dflt='none' ;;
7602     *)  dflt="$ccdlflags" ;;
7603     esac
7604     rp="Any special flags to pass to $cc to use dynamic linking?"
7605     . ./myread
7606     case "$ans" in
7607     none) ccdlflags=' ' ;;
7608     *) ccdlflags="$ans" ;;
7609     esac
7610     ;;
7611 *)  usedl="$undef"
7612         ld='ld'
7613     dlsrc='dl_none.xs'
7614     lddlflags=''
7615     ccdlflags=''
7616     ;;
7617 esac
7618
7619 also=''
7620 case "$usedl" in
7621 $undef)
7622         # No dynamic loading being used, so don't bother even to prompt.
7623         useshrplib='false'
7624         ;;
7625 *)      case "$useshrplib" in
7626         '')     case "$osname" in
7627                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7628                         dflt=y
7629                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7630                         ;;
7631                 next*)
7632                         case "$osvers" in
7633                         4*)     dflt=y
7634                                 also='Building a shared libperl is needed for MAB support.'
7635                                 ;;
7636                         *)      dflt=n
7637                                 ;;
7638                         esac
7639                         ;;
7640                 *)      dflt=n
7641                         ;;
7642                 esac
7643                 ;;
7644         $define|true|[Yy]*)
7645                 dflt=y
7646                 ;;
7647         *)      dflt=n
7648                 ;;
7649         esac
7650         $cat << EOM
7651
7652 The perl executable is normally obtained by linking perlmain.c with
7653 libperl${_a}, any static extensions (usually just DynaLoader), and
7654 any other libraries needed on this system (such as -lm, etc.).  Since
7655 your system supports dynamic loading, it is probably possible to build
7656 a shared libperl.$so.  If you will have more than one executable linked
7657 to libperl.$so, this will significantly reduce the size of each
7658 executable, but it may have a noticeable affect on performance.  The
7659 default is probably sensible for your system.
7660 $also
7661
7662 EOM
7663         rp="Build a shared libperl.$so (y/n)"
7664         . ./myread
7665         case "$ans" in
7666         true|$define|[Yy]*)
7667                 useshrplib='true'  ;;
7668         *)      useshrplib='false' ;;
7669         esac
7670         ;;
7671 esac
7672
7673 case "$useshrplib" in
7674 true)
7675         case "$libperl" in
7676         '')
7677                 # Figure out a good name for libperl.so.  Since it gets stored in
7678                 # a version-specific architecture-dependent library, the version
7679                 # number isn't really that important, except for making cc/ld happy.
7680                 #
7681                 # A name such as libperl.so.3.1
7682                 majmin="libperl.$so.$patchlevel.$subversion"
7683                 # A name such as libperl.so.301
7684                 majonly=`echo $patchlevel $subversion |
7685                         $awk '{printf "%d%02d", $1, $2}'`
7686                 majonly=libperl.$so.$majonly
7687                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7688                 # rely on figuring it out from the naming of libc.
7689                 case "${osname}${osvers}" in
7690                 next4*)
7691                         dflt=libperl.5.$so
7692                         # XXX How handle the --version stuff for MAB?
7693                         ;;
7694                 linux*)  # ld won't link with a bare -lperl otherwise.
7695                         dflt=libperl.$so
7696                         ;;
7697                 cygwin*) # ld links against an importlib
7698                         dflt=libperl$lib_ext
7699                         ;;
7700                 *)      # Try to guess based on whether libc has major.minor.
7701                         case "$libc" in
7702                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7703                         *libc.$so.[0-9]*) dflt=$majonly ;;
7704                         *)      dflt=libperl.$so ;;
7705                         esac
7706                         ;;
7707                 esac
7708                 ;;
7709         *)      dflt=$libperl
7710                 ;;
7711         esac
7712         cat << EOM
7713
7714 I need to select a good name for the shared libperl.  If your system uses
7715 library names with major and minor numbers, then you might want something
7716 like $majmin.  Alternatively, if your system uses a single version
7717 number for shared libraries, then you might want to use $majonly.
7718 Or, your system might be quite happy with a simple libperl.$so.
7719
7720 Since the shared libperl will get installed into a version-specific
7721 architecture-dependent directory, the version number of the shared perl
7722 library probably isn't important, so the default should be o.k.
7723
7724 EOM
7725         rp='What name do you want to give to the shared libperl?'
7726         . ./myread
7727         libperl=$ans
7728         echo "Ok, I'll use $libperl"
7729         ;;
7730 *)
7731         libperl="libperl${_a}"
7732         ;;
7733 esac
7734
7735 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7736 case "$shrpdir" in
7737 '') ;;
7738 *)      $cat >&4 <<EOM
7739 WARNING:  Use of the shrpdir variable for the installation location of
7740 the shared $libperl is not supported.  It was never documented and
7741 will not work in this version.  Let me (perlbug@perl.org)
7742 know of any problems this may cause.
7743
7744 EOM
7745         case "$shrpdir" in
7746         "$archlibexp/CORE")
7747                 $cat >&4 <<EOM
7748 But your current setting of $shrpdir is
7749 the default anyway, so it's harmless.
7750 EOM
7751                 ;;
7752         *)
7753                 $cat >&4 <<EOM
7754 Further, your current attempted setting of $shrpdir
7755 conflicts with the value of $archlibexp/CORE
7756 that installperl will use.
7757 EOM
7758                 ;;
7759         esac
7760         ;;
7761 esac
7762
7763 # How will the perl executable find the installed shared $libperl?
7764 # Add $xxx to ccdlflags.
7765 # If we can't figure out a command-line option, use $shrpenv to
7766 # set env LD_RUN_PATH.  The main perl makefile uses this.
7767 shrpdir=$archlibexp/CORE
7768 xxx=''
7769 tmp_shrpenv=''
7770 if "$useshrplib"; then
7771     case "$osname" in 
7772         aix)
7773                 # We'll set it in Makefile.SH...
7774                 ;;
7775         solaris)
7776                 xxx="-R $shrpdir"
7777                 ;;
7778         freebsd|netbsd|openbsd)
7779                 xxx="-Wl,-R$shrpdir"
7780                 ;;
7781         bsdos|linux|irix*|dec_osf)
7782                 xxx="-Wl,-rpath,$shrpdir"
7783                 ;;
7784         next)
7785                 # next doesn't like the default...
7786                 ;;
7787         beos)
7788                 # beos doesn't like the default, either.
7789                 ;;
7790         hpux*)
7791                 # hpux doesn't like the default, either.
7792                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7793                 ;;
7794         *)
7795                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7796                 ;;
7797         esac
7798         case "$xxx" in
7799         '') ;;
7800         *)      
7801                 # Only add $xxx if it isn't already in ccdlflags.
7802                 case " $ccdlflags " in
7803                 *" $xxx "*)     ;;
7804                 *)      ccdlflags="$ccdlflags $xxx"
7805                         cat <<EOM >&4
7806
7807 Adding $xxx to the flags
7808 passed to $ld so that the perl executable will find the 
7809 installed shared $libperl.
7810
7811 EOM
7812                         ;;
7813                 esac
7814                 ;;
7815         esac
7816 fi
7817 # Fix ccdlflags in AIX for building external extensions.
7818 # (For building Perl itself bare -bE:perl.exp is needed,
7819 #  Makefile.SH takes care of this.)
7820 case "$osname" in
7821 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7822 esac
7823 # Respect a hint or command-line value.
7824 case "$shrpenv" in
7825 '') shrpenv="$tmp_shrpenv" ;;
7826 esac
7827 case "$ldlibpthname" in
7828 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7829 none)   ldlibpthname='' ;;
7830 esac
7831
7832 : determine where manual pages are on this system
7833 echo " "
7834 case "$sysman" in
7835 '') 
7836         syspath='/usr/share/man/man1 /usr/man/man1'
7837         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7838         syspath="$syspath /usr/man/u_man/man1"
7839         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7840         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7841         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7842         sysman=`./loc . /usr/man/man1 $syspath`
7843         ;;
7844 esac
7845 if $test -d "$sysman"; then
7846         echo "System manual is in $sysman." >&4
7847 else
7848         echo "Could not find manual pages in source form." >&4
7849 fi
7850
7851 : determine where manual pages go
7852 set man1dir man1dir none
7853 eval $prefixit
7854 $cat <<EOM
7855
7856 $spackage has manual pages available in source form.
7857 EOM
7858 case "$nroff" in
7859 nroff)
7860         echo "However, you don't have nroff, so they're probably useless to you."
7861         case "$man1dir" in
7862         '') man1dir="none";;
7863         esac;;
7864 esac
7865 echo "If you don't want the manual sources installed, answer 'none'."
7866 case "$man1dir" in
7867 ' ') dflt=none
7868         ;;
7869 '')
7870         lookpath="$prefixexp/share/man/man1"
7871         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7872         lookpath="$lookpath $prefixexp/man/p_man/man1"
7873         lookpath="$lookpath $prefixexp/man/u_man/man1"
7874         lookpath="$lookpath $prefixexp/man/man.1"
7875         case "$sysman" in
7876         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7877         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7878         esac
7879         set dflt
7880         eval $prefixup
7881         ;;
7882 *)  dflt="$man1dir"
7883         ;;
7884 esac
7885 echo " "
7886 fn=dn+~
7887 rp="Where do the main $spackage manual pages (source) go?"
7888 . ./getfile
7889 if $test "X$man1direxp" != "X$ansexp"; then
7890         installman1dir=''
7891 fi
7892 man1dir="$ans"
7893 man1direxp="$ansexp"
7894 case "$man1dir" in
7895 '')     man1dir=' '
7896         installman1dir='';;
7897 esac
7898
7899 : Change installation prefix, if necessary.
7900 if $test X"$prefix" != X"$installprefix"; then
7901         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7902 else
7903         installman1dir="$man1direxp"
7904 fi
7905
7906 : What suffix to use on installed man pages
7907
7908 case "$man1dir" in
7909 ' ')
7910         man1ext='0'
7911         ;;
7912 *)
7913         rp="What suffix should be used for the main $spackage man pages?"
7914         case "$man1ext" in
7915         '')     case "$man1dir" in
7916                 *1)  dflt=1 ;;
7917                 *1p) dflt=1p ;;
7918                 *1pm) dflt=1pm ;;
7919                 *l) dflt=l;;
7920                 *n) dflt=n;;
7921                 *o) dflt=o;;
7922                 *p) dflt=p;;
7923                 *C) dflt=C;;
7924                 *L) dflt=L;;
7925                 *L1) dflt=L1;;
7926                 *) dflt=1;;
7927                 esac
7928                 ;;
7929         *)      dflt="$man1ext";;
7930         esac
7931         . ./myread
7932         man1ext="$ans"
7933         ;;
7934 esac
7935
7936 : see if we can have long filenames
7937 echo " "
7938 first=123456789abcdef
7939 $rm -f $first
7940 if (echo hi >$first) 2>/dev/null; then
7941         if $test -f 123456789abcde; then
7942                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7943                 val="$undef"
7944         else
7945                 echo 'You can have filenames longer than 14 characters.'>&4
7946                 val="$define"
7947         fi
7948 else
7949         $cat <<'EOM'
7950 You can't have filenames longer than 14 chars.
7951 You can't even think about them!
7952 EOM
7953         val="$undef"
7954 fi 
7955 set d_flexfnam
7956 eval $setvar
7957 $rm -rf 123456789abcde*
7958
7959 : determine where library module manual pages go
7960 set man3dir man3dir none
7961 eval $prefixit
7962 $cat <<EOM
7963
7964 $spackage has manual pages for many of the library modules.
7965 EOM
7966
7967 case "$nroff" in
7968 nroff)
7969         $cat <<'EOM'
7970 However, you don't have nroff, so they're probably useless to you.
7971 EOM
7972         case "$man3dir" in
7973         '') man3dir="none";;
7974         esac;;
7975 esac
7976
7977 case "$d_flexfnam" in
7978 undef)
7979         $cat <<'EOM'
7980 However, your system can't handle the long file names like File::Basename.3. 
7981 EOM
7982         case "$man3dir" in
7983         '') man3dir="none";;
7984         esac;;
7985 esac
7986
7987 echo "If you don't want the manual sources installed, answer 'none'."
7988 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7989 case "$man3dir" in
7990 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7991         if $test -d "$privlib/man/man3"; then
7992                 cat <<EOM >&4
7993
7994 WARNING:  Previous versions of perl installed man3 pages into
7995 $privlib/man/man3.  This version will suggest a 
7996 new default of $dflt.  
7997 EOM
7998                 tdflt=$dflt
7999                 dflt='n'
8000                 rp='Do you wish to preserve the old behavior?(y/n)'
8001                 . ./myread
8002                 case "$ans" in
8003                 y*) dflt="$privlib/man/man3" ;;
8004                 *)  dflt=$tdflt ;;
8005                 esac
8006     fi
8007         ;;
8008 *)      dflt="$man3dir" ;;
8009 esac
8010 case "$dflt" in
8011 ' ') dflt=none ;;
8012 esac
8013 echo " "
8014 fn=dn+~
8015 rp="Where do the $package library man pages (source) go?"
8016 . ./getfile
8017 man3dir="$ans"
8018 man3direxp="$ansexp"
8019 case "$man3dir" in
8020 '')     man3dir=' '
8021         installman3dir='';;
8022 esac
8023
8024 : Change installation prefix, if necessary.
8025 if $test X"$prefix" != X"$installprefix"; then
8026         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8027 else
8028         installman3dir="$man3direxp"
8029 fi
8030
8031 : What suffix to use on installed man pages
8032 case "$man3dir" in
8033 ' ')
8034         man3ext='0'
8035         ;;
8036 *)
8037         rp="What suffix should be used for the $package library man pages?"
8038         case "$man3ext" in
8039         '')     case "$man3dir" in
8040                 *3)  dflt=3 ;;
8041                 *3p) dflt=3p ;;
8042                 *3pm) dflt=3pm ;;
8043                 *l) dflt=l;;
8044                 *n) dflt=n;;
8045                 *o) dflt=o;;
8046                 *p) dflt=p;;
8047                 *C) dflt=C;;
8048                 *L) dflt=L;;
8049                 *L3) dflt=L3;;
8050                 *) dflt=3;;
8051                 esac
8052                 ;;
8053         *)      dflt="$man3ext";;
8054         esac
8055         . ./myread
8056         man3ext="$ans"
8057         ;;
8058 esac
8059
8060 : see if we have to deal with yellow pages, now NIS.
8061 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8062         if $test -f /usr/etc/nibindd; then
8063                 echo " "
8064                 echo "I'm fairly confident you're on a NeXT."
8065                 echo " "
8066                 rp='Do you get the hosts file via NetInfo?'
8067                 dflt=y
8068                 case "$hostcat" in
8069                 nidump*) ;;
8070                 '') ;;
8071                 *) dflt=n;;
8072                 esac
8073                 . ./myread
8074                 case "$ans" in
8075                 y*) hostcat='nidump hosts .';;
8076                 *)      case "$hostcat" in
8077                         nidump*) hostcat='';;
8078                         esac
8079                         ;;
8080                 esac
8081         fi
8082         case "$hostcat" in
8083         nidump*) ;;
8084         *)
8085                 case "$hostcat" in
8086                 *ypcat*) dflt=y;;
8087                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8088                                 dflt=y
8089                         else
8090                                 dflt=n
8091                         fi;;
8092                 *) dflt=n;;
8093                 esac
8094                 echo " "
8095                 rp='Are you getting the hosts file via yellow pages?'
8096                 . ./myread
8097                 case "$ans" in
8098                 y*) hostcat='ypcat hosts';;
8099                 *) hostcat='cat /etc/hosts';;
8100                 esac
8101                 ;;
8102         esac
8103 fi
8104 case "$hostcat" in
8105 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8106 esac
8107 case "$groupcat" in
8108 '') test -f /etc/group && groupcat='cat /etc/group';;
8109 esac
8110 case "$passcat" in
8111 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8112 esac
8113
8114 : now get the host name
8115 echo " "
8116 echo "Figuring out host name..." >&4
8117 case "$myhostname" in
8118 '') cont=true
8119         echo 'Maybe "hostname" will work...'
8120         if tans=`sh -c hostname 2>&1` ; then
8121                 myhostname=$tans
8122                 phostname=hostname
8123                 cont=''
8124         fi
8125         ;;
8126 *) cont='';;
8127 esac
8128 if $test "$cont"; then
8129         if ./xenix; then
8130                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8131                 if tans=`cat /etc/systemid 2>&1` ; then
8132                         myhostname=$tans
8133                         phostname='cat /etc/systemid'
8134                         echo "Whadyaknow.  Xenix always was a bit strange..."
8135                         cont=''
8136                 fi
8137         elif $test -r /etc/systemid; then
8138                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8139         fi
8140 fi
8141 if $test "$cont"; then
8142         echo 'No, maybe "uuname -l" will work...'
8143         if tans=`sh -c 'uuname -l' 2>&1` ; then
8144                 myhostname=$tans
8145                 phostname='uuname -l'
8146         else
8147                 echo 'Strange.  Maybe "uname -n" will work...'
8148                 if tans=`sh -c 'uname -n' 2>&1` ; then
8149                         myhostname=$tans
8150                         phostname='uname -n'
8151                 else
8152                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8153                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8154                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8155                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8156                         else
8157                                 case "$myhostname" in
8158                                 '') echo "Does this machine have an identity crisis or something?"
8159                                         phostname='';;
8160                                 *)
8161                                         echo "Well, you said $myhostname before..."
8162                                         phostname='echo $myhostname';;
8163                                 esac
8164                         fi
8165                 fi
8166         fi
8167 fi
8168 case "$myhostname" in
8169 '') myhostname=noname ;;
8170 esac
8171 : you do not want to know about this
8172 set $myhostname
8173 myhostname=$1
8174
8175 : verify guess
8176 if $test "$myhostname" ; then
8177         dflt=y
8178         rp='Your host name appears to be "'$myhostname'".'" Right?"
8179         . ./myread
8180         case "$ans" in
8181         y*) ;;
8182         *) myhostname='';;
8183         esac
8184 fi
8185
8186 : bad guess or no guess
8187 while $test "X$myhostname" = X ; do
8188         dflt=''
8189         rp="Please type the (one word) name of your host:"
8190         . ./myread
8191         myhostname="$ans"
8192 done
8193
8194 : translate upper to lower if necessary
8195 case "$myhostname" in
8196 *[A-Z]*)
8197         echo "(Normalizing case in your host name)"
8198         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8199         ;;
8200 esac
8201
8202 case "$myhostname" in
8203 *.*)
8204         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8205         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8206         echo "(Trimming domain name from host name--host name is now $myhostname)"
8207         ;;
8208 *) case "$mydomain" in
8209         '')
8210                 {
8211                         test "X$hostcat" = "Xypcat hosts" &&
8212                         ypmatch "$myhostname" hosts 2>/dev/null |\
8213                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8214                         $test -s hosts
8215                 } || {
8216                         test "X$hostcat" != "X" &&
8217                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8218                                         /[       ]$myhostname[  . ]/p" > hosts
8219                 }
8220                 tmp_re="[       . ]"
8221                 if $test -f hosts; then
8222                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8223                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8224                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8225                                 hosts | $sort | $uniq | \
8226                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8227                         case `$echo X$dflt` in
8228                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8229                                 dflt=.
8230                                 ;;
8231                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8232                                 ;;
8233                         esac
8234                 else
8235                         echo "(I cannot locate a hosts database anywhere)"
8236                         dflt=.
8237                 fi
8238                 case "$dflt" in
8239                 .)
8240                         tans=`./loc resolv.conf X /etc /usr/etc`
8241                         if $test -f "$tans"; then
8242                                 echo "(Attempting domain name extraction from $tans)"
8243                                 dflt=.`$sed -n -e 's/   / /g' \
8244                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8245                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8246                                 case "$dflt" in
8247                                 .) dflt=.`$sed -n -e 's/        / /g' \
8248                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8249                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8250                                         ;;
8251                                 esac
8252                         fi
8253                         ;;
8254                 esac
8255                 case "$dflt" in
8256                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8257                         dflt=.`sh -c domainname 2>/dev/null`
8258                         case "$dflt" in
8259                         '') dflt='.';;
8260                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8261                         esac
8262                         ;;
8263                 esac
8264                 case "$dflt$osname" in
8265                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8266                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8267                         ;;
8268                 esac
8269                 case "$dflt" in
8270                 .) echo "(Lost all hope -- silly guess then)"
8271                         dflt='.nonet'
8272                         ;;
8273                 esac
8274                 $rm -f hosts
8275                 ;;
8276         *) dflt="$mydomain";;
8277         esac;;
8278 esac
8279 echo " "
8280 rp="What is your domain name?"
8281 . ./myread
8282 tans="$ans"
8283 case "$ans" in
8284 '') ;;
8285 .*) ;;
8286 *) tans=".$tans";;
8287 esac
8288 mydomain="$tans"
8289
8290 : translate upper to lower if necessary
8291 case "$mydomain" in
8292 *[A-Z]*)
8293         echo "(Normalizing case in your domain name)"
8294         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8295         ;;
8296 esac
8297
8298 : a little sanity check here
8299 case "$phostname" in
8300 '') ;;
8301 *)
8302         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8303         $myhostname$mydomain|$myhostname) ;;
8304         *)
8305                 case "$phostname" in
8306                 sed*)
8307                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8308                         ;;
8309                 *)
8310                         echo "(That doesn't agree with your $phostname command, by the way.)"
8311                         ;;
8312                 esac
8313         ;;
8314         esac
8315         ;;
8316 esac
8317
8318 $cat <<EOM
8319
8320 I need to get your e-mail address in Internet format if possible, i.e.
8321 something like user@host.domain. Please answer accurately since I have
8322 no easy means to double check it. The default value provided below
8323 is most probably close to reality but may not be valid from outside
8324 your organization...
8325
8326 EOM
8327 cont=x
8328 while test "$cont"; do
8329         case "$cf_email" in
8330         '') dflt="$cf_by@$myhostname$mydomain";;
8331         *) dflt="$cf_email";;
8332         esac
8333         rp='What is your e-mail address?'
8334         . ./myread
8335         cf_email="$ans"
8336         case "$cf_email" in
8337         *@*.*) cont='' ;;
8338         *)
8339                 rp='Address does not look like an Internet one.  Use it anyway?'
8340                 case "$fastread" in
8341                 yes) dflt=y ;;
8342                 *) dflt=n ;;
8343                 esac
8344                 . ./myread
8345                 case "$ans" in
8346                 y*) cont='' ;;
8347                 *) echo " " ;;
8348                 esac
8349                 ;;
8350         esac
8351 done
8352
8353 $cat <<EOM
8354
8355 If you or somebody else will be maintaining perl at your site, please
8356 fill in the correct e-mail address here so that they may be contacted
8357 if necessary. Currently, the "perlbug" program included with perl
8358 will send mail to this address in addition to perlbug@perl.org. You may
8359 enter "none" for no administrator.
8360
8361 EOM
8362 case "$perladmin" in
8363 '') dflt="$cf_email";;
8364 *) dflt="$perladmin";;
8365 esac
8366 rp='Perl administrator e-mail address'
8367 . ./myread
8368 perladmin="$ans"
8369
8370 : determine whether to only install version-specific parts.
8371 echo " "
8372 $cat <<EOM
8373 Do you want to install only the version-specific parts of the perl
8374 distribution?  Usually you do *not* want to do this.
8375 EOM
8376 case "$versiononly" in
8377 "$define"|[Yy]*|true) dflt='y' ;;
8378 *) dflt='n';
8379 esac
8380 rp="Do you want to install only the version-specific parts of perl?"
8381 . ./myread
8382 case "$ans" in
8383 [yY]*)  val="$define";;
8384 *)      val="$undef" ;;
8385 esac
8386 set versiononly
8387 eval $setvar
8388
8389 case "$versiononly" in
8390 "$define") inc_version_list=''
8391            inc_version_list_init=0
8392            ;;
8393 esac
8394
8395 : figure out how to guarantee perl startup
8396 case "$startperl" in
8397 '')
8398         case "$sharpbang" in
8399         *!)
8400                 $cat <<EOH
8401
8402 I can use the #! construct to start perl on your system. This will
8403 make startup of perl scripts faster, but may cause problems if you
8404 want to share those scripts and perl is not in a standard place
8405 ($binexp/perl) on all your platforms. The alternative is to force
8406 a shell by starting the script with a single ':' character.
8407
8408 EOH
8409                 case "$versiononly" in
8410                 "$define")      dflt="$binexp/perl$version";;  
8411                 *)              dflt="$binexp/perl";;
8412                 esac
8413                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8414                 . ./myread
8415                 case "$ans" in
8416                 none)   startperl=": # use perl";;
8417                 *)      startperl="#!$ans"
8418                         if $test 30 -lt `echo "$ans" | wc -c`; then
8419                                 $cat >&4 <<EOM
8420
8421 WARNING:  Some systems limit the #! command to 32 characters.
8422 If you experience difficulty running Perl scripts with #!, try
8423 installing Perl in a directory with a shorter pathname.
8424
8425 EOM
8426                         fi ;;
8427                 esac
8428                 ;;
8429         *) startperl=": # use perl"
8430                 ;;
8431         esac
8432         ;;
8433 esac
8434 echo "I'll use $startperl to start perl scripts."
8435
8436 : figure best path for perl in scripts
8437 case "$perlpath" in
8438 '')
8439         case "$versiononly" in
8440         "$define")      perlpath="$binexp/perl$version";;
8441         *)              perlpath="$binexp/perl";;
8442         esac
8443         case "$startperl" in
8444         *!*) ;;
8445         *)
8446                 $cat <<EOH
8447
8448 I will use the "eval 'exec'" idiom to start Perl on your system.
8449 I can use the full path of your Perl binary for this purpose, but
8450 doing so may cause problems if you want to share those scripts and
8451 Perl is not always in a standard place ($binexp/perl).
8452
8453 EOH
8454                 dflt="$binexp/perl"
8455                 rp="What path shall I use in \"eval 'exec'\"?"
8456                 . ./myread
8457                 perlpath="$ans"
8458                 ;;
8459         esac
8460         ;;
8461 esac
8462 case "$startperl" in
8463 *!*)    ;;
8464 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8465 esac
8466
8467 : determine where public executable scripts go
8468 set scriptdir scriptdir
8469 eval $prefixit
8470 case "$scriptdir" in
8471 '')
8472         dflt="$bin"
8473         : guess some guesses
8474         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8475         $test -d /usr/share/bin     && dflt=/usr/share/bin
8476         $test -d /usr/local/script  && dflt=/usr/local/script
8477         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8478         $test -d $prefixexp/script  && dflt=$prefixexp/script
8479         set dflt
8480         eval $prefixup
8481         ;;
8482 *)  dflt="$scriptdir"
8483         ;;
8484 esac
8485 $cat <<EOM
8486  
8487 Some installations have a separate directory just for executable scripts so
8488 that they can mount it across multiple architectures but keep the scripts in
8489 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8490 Or you might just lump your scripts in with all your other executables.
8491  
8492 EOM
8493 fn=d~
8494 rp='Where do you keep publicly executable scripts?'
8495 . ./getfile
8496 if $test "X$ansexp" != "X$scriptdirexp"; then
8497         installscript=''
8498 fi
8499 scriptdir="$ans"
8500 scriptdirexp="$ansexp"
8501 : Change installation prefix, if necessary.
8502 if $test X"$prefix" != X"$installprefix"; then
8503         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8504 else
8505         installscript="$scriptdirexp"
8506 fi
8507
8508 : determine where add-on public executables go
8509 case "$sitebin" in
8510 '')     dflt=$siteprefix/bin ;;
8511 *)      dflt=$sitebin ;;
8512 esac
8513 fn=d~
8514 rp='Pathname where the add-on public executables should be installed?'
8515 . ./getfile
8516 sitebin="$ans"
8517 sitebinexp="$ansexp"
8518 : Change installation prefix, if necessary.
8519 if $test X"$prefix" != X"$installprefix"; then
8520         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8521 else
8522         installsitebin="$sitebinexp"
8523 fi
8524
8525 : determine where add-on html pages go
8526 : There is no standard location, so try to copy the previously-selected 
8527 : directory structure for the core html pages.
8528 case "$sitehtml1" in
8529 '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8530 *)      dflt=$sitehtml1 ;;
8531 esac
8532 case "$dflt" in
8533 ''|' ') dflt=none ;;
8534 esac
8535 fn=dn+~
8536 rp='Pathname where the site-specific html pages should be installed?'
8537 . ./getfile
8538 sitehtml1="$ans"
8539 sitehtml1exp="$ansexp"
8540 : Use ' ' for none so value is preserved next time through Configure
8541 $test X"$sitehtml1" = "X" && sitehtml1=' '
8542 : Change installation prefix, if necessary.
8543 if $test X"$prefix" != X"$installprefix"; then
8544         installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
8545 else
8546         installsitehtml1="$sitehtml1exp"
8547 fi
8548
8549 : determine where add-on library html pages go
8550 : There is no standard location, so try to copy the previously-selected
8551 : directory structure for the core html pages.
8552 case "$sitehtml3" in
8553 '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8554 *)      dflt=$sitehtml3 ;;
8555 esac
8556 case "$dflt" in
8557 ''|' ') dflt=none ;;
8558 esac
8559 fn=dn+~
8560 rp='Pathname where the site-specific library html pages should be installed?'
8561 . ./getfile
8562 sitehtml3="$ans"
8563 sitehtml3exp="$ansexp"
8564 : Use ' ' for none so value is preserved next time through Configure
8565 $test X"$sitehtml3" = "X" && sitehtml3=' '
8566 : Change installation prefix, if necessary.
8567 if $test X"$prefix" != X"$installprefix"; then
8568         installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
8569 else
8570         installsitehtml3="$sitehtml3exp"
8571 fi
8572
8573 : determine where add-on manual pages go
8574 case "$siteman1" in
8575 '')     dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8576 *)      dflt=$siteman1 ;;
8577 esac
8578 case "$dflt" in
8579 ''|' ') dflt=none ;;
8580 esac
8581 fn=dn+~
8582 rp='Pathname where the site-specific manual pages should be installed?'
8583 . ./getfile
8584 siteman1="$ans"
8585 siteman1exp="$ansexp"
8586 : Use ' ' for none so value is preserved next time through Configure
8587 $test X"$siteman1" = "X" && siteman1=' '
8588 : Change installation prefix, if necessary.
8589 if $test X"$prefix" != X"$installprefix"; then
8590         installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
8591 else
8592         installsiteman1="$siteman1exp"
8593 fi
8594
8595 : determine where add-on library man pages go
8596 case "$siteman3" in
8597 '')     dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8598 *)      dflt=$siteman3 ;;
8599 esac
8600 case "$dflt" in
8601 ''|' ') dflt=none ;;
8602 esac
8603 fn=dn+~
8604 rp='Pathname where the site-specific library manual pages should be installed?'
8605 . ./getfile
8606 siteman3="$ans"
8607 siteman3exp="$ansexp"
8608 : Use ' ' for none so value is preserved next time through Configure
8609 $test X"$siteman3" = "X" && siteman3=' '
8610 : Change installation prefix, if necessary.
8611 if $test X"$prefix" != X"$installprefix"; then
8612         installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
8613 else
8614         installsiteman3="$siteman3exp"
8615 fi
8616
8617 : determine where add-on public executable scripts go
8618 case "$sitescript" in
8619 '')     dflt=$siteprefix/script
8620         $test -d $dflt || dflt=$sitebin ;;
8621 *)  dflt="$sitescript" ;;
8622 esac
8623 fn=d~+
8624 rp='Pathname where add-on public executable scripts should be installed?'
8625 . ./getfile
8626 sitescript="$ans"
8627 sitescriptexp="$ansexp"
8628 : Change installation prefix, if necessary.
8629 if $test X"$prefix" != X"$installprefix"; then
8630         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8631 else
8632         installsitescript="$sitescriptexp"
8633 fi
8634
8635 : define an is-a-typedef? function
8636 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8637 case "$inclist" in
8638 "") inclist="sys/types.h";;
8639 esac;
8640 eval "varval=\$$var";
8641 case "$varval" in
8642 "")
8643         $rm -f temp.c;
8644         for inc in $inclist; do
8645                 echo "#include <$inc>" >>temp.c;
8646         done;
8647         echo "#ifdef $type" >> temp.c;
8648         echo "printf(\"We have $type\");" >> temp.c;
8649         echo "#endif" >> temp.c;
8650         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8651         if $contains $type temp.E >/dev/null 2>&1; then
8652                 eval "$var=\$type";
8653         else
8654                 eval "$var=\$def";
8655         fi;
8656         $rm -f temp.?;;
8657 *) eval "$var=\$varval";;
8658 esac'
8659
8660 : define an is-a-typedef? function that prompts if the type is not available.
8661 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8662 case "$inclist" in
8663 "") inclist="sys/types.h";;
8664 esac;
8665 eval "varval=\$$var";
8666 case "$varval" in
8667 "")
8668         $rm -f temp.c;
8669         for inc in $inclist; do
8670                 echo "#include <$inc>" >>temp.c;
8671         done;
8672         echo "#ifdef $type" >> temp.c;
8673         echo "printf(\"We have $type\");" >> temp.c;
8674         echo "#endif" >> temp.c;
8675         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8676         echo " " ;
8677         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8678         if $contains $type temp.E >/dev/null 2>&1; then
8679                 echo "$type found." >&4;
8680                 eval "$var=\$type";
8681         else
8682                 echo "$type NOT found." >&4;
8683                 dflt="$def";
8684                 . ./myread ;
8685                 eval "$var=\$ans";
8686         fi;
8687         $rm -f temp.?;;
8688 *) eval "$var=\$varval";;
8689 esac'
8690
8691 : see what type lseek is declared as in the kernel
8692 rp="What is the type used for lseek's offset on this system?"
8693 set off_t lseektype long stdio.h sys/types.h
8694 eval $typedef_ask
8695
8696 echo " "
8697 echo "Checking to see how big your file offsets are..." >&4
8698 $cat >try.c <<EOCP
8699 #include <sys/types.h>
8700 #include <stdio.h>
8701 int main()
8702 {
8703     printf("%d\n", (int)sizeof($lseektype));
8704     return(0); 
8705 }
8706 EOCP
8707 set try
8708 if eval $compile_ok; then
8709         lseeksize=`$run ./try`
8710         echo "Your file offsets are $lseeksize bytes long."
8711 else
8712         dflt=$longsize
8713         echo " "
8714         echo "(I can't seem to compile the test program.  Guessing...)"
8715         rp="What is the size of your file offsets (in bytes)?"
8716         . ./myread
8717         lseeksize="$ans"
8718 fi
8719 $rm -f try.c try
8720
8721 : see what type file positions are declared as in the library
8722 rp="What is the type for file position used by fsetpos()?"
8723 set fpos_t fpostype long stdio.h sys/types.h
8724 eval $typedef_ask
8725
8726 echo " "
8727 case "$fpostype" in
8728 *_t) zzz="$fpostype"    ;;
8729 *)   zzz="fpos_t"       ;;
8730 esac
8731 echo "Checking the size of $zzz..." >&4 
8732 cat > try.c <<EOCP
8733 #include <sys/types.h>
8734 #include <stdio.h>
8735 #$i_stdlib I_STDLIB
8736 #ifdef I_STDLIB
8737 #include <stdlib.h>
8738 #endif
8739 int main() {
8740     printf("%d\n", (int)sizeof($fpostype));
8741     exit(0);
8742 }
8743 EOCP
8744 set try
8745 if eval $compile_ok; then
8746         yyy=`$run ./try`
8747         case "$yyy" in
8748         '')     fpossize=4
8749                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8750                 ;;
8751         *)      fpossize=$yyy
8752                 echo "Your $zzz is $fpossize bytes long."
8753                 ;;
8754         esac
8755 else
8756         dflt="$longsize"
8757         echo " " >&4
8758         echo "(I can't compile the test program.  Guessing...)" >&4
8759         rp="What is the size of your file positions (in bytes)?"
8760         . ./myread
8761         fpossize="$ans"
8762 fi
8763
8764 # Backward compatibility (uselfs is deprecated).
8765 case "$uselfs" in
8766 "$define"|true|[yY]*)
8767         cat <<EOM >&4
8768
8769 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8770 EOM
8771         uselargefiles="$define"
8772         ;;
8773 esac                          
8774
8775 case "$lseeksize:$fpossize" in
8776 8:8) cat <<EOM
8777
8778 You can have files larger than 2 gigabytes.
8779 EOM
8780    val="$define" ;;
8781 *)    case "$uselargefiles" in
8782    "$undef"|false|[nN]*) dflt='n' ;;
8783    *)   dflt='y' ;;
8784    esac
8785    cat <<EOM
8786
8787 Perl can be built to understand large files (files larger than 2 gigabytes)
8788 on some systems.  To do so, Configure can be run with -Duselargefiles.
8789
8790 If this doesn't make any sense to you, just accept the default '$dflt'.
8791 EOM
8792    rp='Try to understand large files, if available?'
8793    . ./myread
8794    case "$ans" in
8795    y|Y)         val="$define" ;;
8796    *)           val="$undef"  ;;
8797    esac
8798    ;;
8799 esac
8800 set uselargefiles
8801 eval $setvar
8802 case "$uselargefiles" in
8803 "$define")
8804 : Look for a hint-file generated 'call-back-unit'.  If the
8805 : user has specified that a large files perl is to be built,
8806 : we may need to set or change some other defaults.
8807         if $test -f uselargefiles.cbu; then
8808                 echo "Your platform has some specific hints for large file builds, using them..."
8809                 . ./uselargefiles.cbu
8810                 echo " "
8811                 echo "Rechecking to see how big your file offsets are..." >&4
8812                 $cat >try.c <<EOCP
8813 #include <sys/types.h>
8814 #include <stdio.h>
8815 int main()
8816 {
8817     printf("%d\n", (int)sizeof($lseektype));
8818     return(0); 
8819 }
8820 EOCP
8821                 set try
8822                 if eval $compile_ok; then
8823                         lseeksize=`$run ./try`
8824                         $echo "Your file offsets are now $lseeksize bytes long."
8825                 else
8826                         dflt="$lseeksize"
8827                         echo " "
8828                         echo "(I can't seem to compile the test program.  Guessing...)"
8829                         rp="What is the size of your file offsets (in bytes)?"
8830                         . ./myread
8831                         lseeksize="$ans"
8832                 fi
8833                 case "$fpostype" in
8834                 *_t) zzz="$fpostype"    ;;
8835                 *)   zzz="fpos_t"       ;;
8836                 esac
8837                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8838                 $cat > try.c <<EOCP
8839 #include <sys/types.h>
8840 #include <stdio.h>
8841 #$i_stdlib I_STDLIB
8842 #ifdef I_STDLIB
8843 #include <stdlib.h>
8844 #endif
8845 int main() {
8846     printf("%d\n", (int)sizeof($fpostype));
8847     return(0);
8848 }
8849 EOCP
8850                 set try
8851                 if eval $compile_ok; then
8852                         yyy=`$run ./try`
8853                         dflt="$lseeksize"
8854                         case "$yyy" in
8855                         '')     echo " "
8856                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8857                                 ;;
8858                         *)      fpossize=$yyy
8859                                 echo " $fpossize bytes." >&4
8860                                 ;;
8861                         esac
8862                 else
8863                         dflt="$fpossize"
8864                         echo " "
8865                         echo "(I can't compile the test program.  Guessing...)" >&4
8866                         rp="What is the size of your file positions (in bytes)?"
8867                         . ./myread
8868                         fpossize="$ans"
8869                 fi
8870                 $rm -f try.c try
8871         fi
8872         ;;
8873 esac
8874
8875 case "$vendorprefix" in
8876 '')     d_vendorbin="$undef"
8877         vendorbin=''
8878         vendorbinexp=''
8879         ;;
8880 *)      d_vendorbin="$define"
8881         : determine where vendor-supplied executables go.
8882         case "$vendorbin" in
8883         '') dflt=$vendorprefix/bin ;;
8884         *)      dflt="$vendorbin" ;;
8885         esac
8886         fn=d~+
8887         rp='Pathname for the vendor-supplied executables directory?'
8888         . ./getfile
8889         vendorbin="$ans"
8890         vendorbinexp="$ansexp"
8891         ;;
8892 esac
8893 : Change installation prefix, if necessary.
8894 if $test X"$prefix" != X"$installprefix"; then
8895         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8896 else
8897         installvendorbin="$vendorbinexp"
8898 fi
8899
8900 case "$vendorprefix" in
8901 '')     vendorhtml1=''
8902         vendorhtml1exp=''
8903         ;;
8904 *)      : determine where vendor-supplied html pages go.
8905         : There is no standard location, so try to copy the previously-selected
8906         : directory structure for the core html pages.
8907         : XXX Better default suggestions would be welcome.
8908         case "$vendorhtml1" in
8909         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8910         *)      dflt=$vendorhtml1 ;;
8911         esac
8912         case "$dflt" in
8913         ''|' ') dflt=none ;;
8914         esac
8915         fn=dn+~
8916         rp='Pathname for the vendor-supplied html pages?'
8917         . ./getfile
8918         vendorhtml1="$ans"
8919         vendorhtml1exp="$ansexp"
8920         ;;
8921 esac
8922 : Use ' ' for none so value is preserved next time through Configure
8923 $test X"$vendorhtml1" = "X" && vendorhtml1=' '
8924 : Change installation prefix, if necessary.
8925 if $test X"$prefix" != X"$installprefix"; then
8926         installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
8927 else
8928         installvendorhtml1="$vendorhtml1exp"
8929 fi
8930
8931 case "$vendorprefix" in
8932 '')     vendorhtml3=''
8933         vendorhtml3exp=''
8934         ;;
8935 *)      : determine where vendor-supplied module html pages go.
8936         : There is no standard location, so try to copy the previously-selected
8937         : directory structure for the core html pages.
8938         : XXX Better default suggestions would be welcome.
8939         case "$vendorhtml3" in
8940         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8941         *)      dflt=$vendorhtml3 ;;
8942         esac
8943         case "$dflt" in
8944         ''|' ') dflt=none ;;
8945         esac
8946         fn=dn+~
8947         rp='Pathname for the vendor-supplied html pages?'
8948         . ./getfile
8949         vendorhtml3="$ans"
8950         vendorhtml3exp="$ansexp"
8951         ;;
8952 esac
8953 : Use ' ' for none so value is preserved next time through Configure
8954 $test X"$vendorhtml3" = "X" && vendorhtml3=' '
8955 : Change installation prefix, if necessary.
8956 if $test X"$prefix" != X"$installprefix"; then
8957         installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
8958 else
8959         installvendorhtml3="$vendorhtml3exp"
8960 fi
8961
8962 case "$vendorprefix" in
8963 '')     vendorman1=''
8964         vendorman1exp=''
8965         ;;
8966 *)      : determine where vendor-supplied manual pages go.
8967         case "$vendorman1" in
8968         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8969         *)      dflt=$vendorman1 ;;
8970         esac
8971         case "$dflt" in
8972         ''|' ') dflt=none ;;
8973         esac
8974         fn=nd~+
8975         rp='Pathname for the vendor-supplied manual section 1 pages?'
8976         . ./getfile
8977         vendorman1="$ans"
8978         vendorman1exp="$ansexp"
8979         ;;
8980 esac
8981 : Use ' ' for none so value is preserved next time through Configure
8982 $test X"$vendorman1" = "X" && vendorman1=' '
8983 : Change installation prefix, if necessary.
8984 if $test X"$prefix" != X"$installprefix"; then
8985         installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
8986 else
8987         installvendorman1="$vendorman1exp"
8988 fi
8989
8990 case "$vendorprefix" in
8991 '')     vendorman3=''
8992         vendorman3exp=''
8993         ;;
8994 *)      : determine where vendor-supplied module manual pages go.
8995         case "$vendorman3" in
8996         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8997         *)      dflt=$vendorman3 ;;
8998         esac
8999         case "$dflt" in
9000         ''|' ') dflt=none ;;
9001         esac
9002         fn=nd~+
9003         rp='Pathname for the vendor-supplied manual section 3 pages?'
9004         . ./getfile
9005         vendorman3="$ans"
9006         vendorman3exp="$ansexp"
9007         ;;
9008 esac
9009 : Use ' ' for none so value is preserved next time through Configure
9010 $test X"$vendorman3" = "X" && vendorman3=' '
9011 : Change installation prefix, if necessary.
9012 if $test X"$prefix" != X"$installprefix"; then
9013         installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
9014 else
9015         installvendorman3="$vendorman3exp"
9016 fi
9017
9018 case "$vendorprefix" in
9019 '')     d_vendorscript="$undef"
9020         vendorscript=''
9021         vendorscriptexp=''
9022         ;;
9023 *)      d_vendorscript="$define"
9024         : determine where vendor-supplied scripts go.
9025         case "$vendorscript" in
9026         '')     dflt=$vendorprefix/script
9027                 $test -d $dflt || dflt=$vendorbin ;;
9028         *)  dflt="$vendorscript" ;;
9029         esac
9030         $cat <<EOM
9031
9032 The installation process will create a directory for 
9033 vendor-supplied scripts.
9034
9035 EOM
9036         fn=d~+
9037         rp='Pathname for the vendor-supplied scripts directory?'
9038         . ./getfile
9039         vendorscript="$ans"
9040         vendorscriptexp="$ansexp"
9041         ;;
9042 esac
9043 : Change installation prefix, if necessary.
9044 if $test X"$prefix" != X"$installprefix"; then
9045         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9046 else
9047         installvendorscript="$vendorscriptexp"
9048 fi
9049
9050 : see if qgcvt exists
9051 set qgcvt d_qgcvt
9052 eval $inlibc
9053
9054 echo " "
9055
9056 if $test X"$d_longdbl" = X"$define"; then
9057
9058 echo "Checking how to print long doubles..." >&4
9059
9060 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9061         $cat >try.c <<'EOCP'
9062 #include <sys/types.h>
9063 #include <stdio.h>
9064 int main() {
9065   double d = 123.456;
9066   printf("%.3f\n", d);
9067 }
9068 EOCP
9069         set try
9070         if eval $compile; then
9071                 yyy=`$run ./try`
9072                 case "$yyy" in
9073                 123.456)
9074                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9075                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9076                         echo "We will use %f."
9077                         ;;
9078                 esac
9079         fi
9080 fi
9081
9082 if $test X"$sPRIfldbl" = X; then
9083         $cat >try.c <<'EOCP'
9084 #include <sys/types.h>
9085 #include <stdio.h>
9086 int main() {
9087   long double d = 123.456;
9088   printf("%.3Lf\n", d);
9089 }
9090 EOCP
9091         set try
9092         if eval $compile; then
9093                 yyy=`$run ./try`
9094                 case "$yyy" in
9095                 123.456)
9096                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9097                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9098                         echo "We will use %Lf."
9099                         ;;
9100                 esac
9101         fi
9102 fi
9103
9104 if $test X"$sPRIfldbl" = X; then
9105         $cat >try.c <<'EOCP'
9106 #include <sys/types.h>
9107 #include <stdio.h>
9108 int main() {
9109   long double d = 123.456;
9110   printf("%.3llf\n", d);
9111 }
9112 EOCP
9113         set try
9114         if eval $compile; then
9115                 yyy=`$run ./try`
9116                 case "$yyy" in
9117                 123.456)
9118                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9119                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9120                         echo "We will use %llf."
9121                         ;;
9122                 esac
9123         fi
9124 fi
9125
9126 if $test X"$sPRIfldbl" = X; then
9127         $cat >try.c <<'EOCP'
9128 #include <sys/types.h>
9129 #include <stdio.h>
9130 int main() {
9131   long double d = 123.456;
9132   printf("%.3lf\n", d);
9133 }
9134 EOCP
9135         set try
9136         if eval $compile; then
9137                 yyy=`$run ./try`
9138                 case "$yyy" in
9139                 123.456)
9140                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9141                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9142                         echo "We will use %lf."
9143                         ;;
9144                 esac
9145         fi
9146 fi
9147
9148 if $test X"$sPRIfldbl" = X; then
9149         echo "Cannot figure out how to print long doubles." >&4
9150 else
9151         sSCNfldbl=$sPRIfldbl    # expect consistency
9152 fi
9153
9154 $rm -f try try.*
9155
9156 fi # d_longdbl
9157
9158 case "$sPRIfldbl" in
9159 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9160         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9161         d_SCNfldbl="$undef";
9162         ;;
9163 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9164         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9165         d_SCNfldbl="$define";
9166         ;;
9167 esac
9168
9169 : Check how to convert floats to strings.
9170
9171 if test "X$d_Gconvert" = X; then
9172
9173 echo " "
9174 echo "Checking for an efficient way to convert floats to strings."
9175 echo " " > try.c
9176 case "$uselongdouble" in
9177 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9178 esac
9179 case "$d_longdbl" in
9180 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9181 esac
9182 case "$d_PRIgldbl" in
9183 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9184 esac
9185 $cat >>try.c <<EOP
9186 #ifdef TRY_gconvert
9187 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9188 char *myname = "gconvert";
9189 #endif
9190 #ifdef TRY_gcvt
9191 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9192 char *myname = "gcvt";
9193 #endif
9194 #ifdef TRY_qgcvt
9195 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9196 char *myname = "qgcvt";
9197 #define DOUBLETYPE long double
9198 #endif
9199 #ifdef TRY_sprintf
9200 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9201 #ifdef HAS_PRIgldbl
9202 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9203 #else
9204 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9205 #endif
9206 #else
9207 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9208 #endif
9209 char *myname = "sprintf";
9210 #endif
9211
9212 #ifndef DOUBLETYPE
9213 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9214 #define DOUBLETYPE long double
9215 #else
9216 #define DOUBLETYPE double
9217 #endif
9218 #endif
9219
9220 #include <stdio.h>
9221
9222 #define I_STDLIB $i_stdlib
9223 #ifdef I_STDLIB
9224 #include <stdlib.h>
9225 #endif
9226
9227 int
9228 checkit(expect, got)
9229 char *expect;
9230 char *got;
9231 {
9232     if (strcmp(expect, got)) {
9233                 printf("%s oddity:  Expected %s, got %s\n",
9234                         myname, expect, got);
9235                 exit(1);
9236         }
9237 }
9238
9239 int main()
9240
9241         char buf[64]; 
9242         buf[63] = '\0';
9243
9244         /* This must be 1st test on (which?) platform */
9245         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9246         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9247         checkit("0.1", buf);
9248
9249         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9250         checkit("0.01", buf);
9251
9252         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9253         checkit("0.001", buf);
9254
9255         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9256         checkit("0.0001", buf);
9257
9258         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9259         if (strlen(buf) > 5)
9260             checkit("9e-005", buf); /* for Microsoft ?? */
9261         else
9262             checkit("9e-05", buf);
9263
9264         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9265         checkit("1", buf);
9266
9267         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9268         checkit("1.1", buf);
9269
9270         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9271         checkit("1.01", buf);
9272
9273         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9274         checkit("1.001", buf);
9275
9276         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9277         checkit("1.0001", buf);
9278
9279         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9280         checkit("1.00001", buf);
9281
9282         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9283         checkit("1.000001", buf);
9284
9285         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9286         checkit("0", buf);
9287
9288         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9289         checkit("-1", buf);
9290
9291         /* Some Linux gcvt's give 1.e+5 here. */
9292         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9293         checkit("100000", buf);
9294         
9295         /* Some Linux gcvt's give -1.e+5 here. */
9296         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9297         checkit("-100000", buf);
9298
9299         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9300         checkit("123.456", buf);
9301
9302         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9303         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9304         /* 34 should be enough to scare even long double
9305          * places into using the e notation. */
9306         if (strlen(buf) > 5)
9307             checkit("1e+034", buf); /* for Microsoft */
9308         else
9309             checkit("1e+34", buf);
9310
9311         /* For Perl, if you add additional tests here, also add them to
9312          * t/base/num.t for benefit of platforms not using Configure or
9313          * overriding d_Gconvert */
9314
9315         exit(0);
9316 }
9317 EOP
9318 : first add preferred functions to our list
9319 xxx_list=""
9320 for xxx_convert in $gconvert_preference; do
9321     case $xxx_convert in
9322     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9323     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9324     esac 
9325 done
9326 : then add any others
9327 for xxx_convert in gconvert gcvt sprintf; do
9328     case "$xxx_list" in
9329     *$xxx_convert*) ;;
9330     *) xxx_list="$xxx_list $xxx_convert" ;;
9331     esac 
9332 done
9333
9334 case "$d_longdbl$uselongdouble" in
9335 "$define$define")
9336     : again, add prefered functions to our list first
9337     xxx_ld_list=""
9338     for xxx_convert in $gconvert_ld_preference; do
9339         case $xxx_convert in
9340         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9341         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9342         esac
9343     done
9344     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9345     for xxx_convert in qgcvt sprintf $xxx_list; do
9346         case "$xxx_ld_list" in
9347         $xxx_convert*|*" $xxx_convert"*) ;;
9348         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9349         esac
9350     done
9351     : if sprintf cannot do long doubles, move it to the end
9352     if test "$d_PRIgldbl" != "$define"; then
9353         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9354     fi
9355     : if no qgcvt, remove it
9356     if test "$d_qgcvt" != "$define"; then
9357         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9358     fi
9359     : use the ld_list
9360     xxx_list="$xxx_ld_list"
9361     ;;
9362 esac
9363
9364 for xxx_convert in $xxx_list; do
9365         echo "Trying $xxx_convert..."
9366         $rm -f try try$_o
9367         set try -DTRY_$xxx_convert
9368         if eval $compile; then
9369                 echo "$xxx_convert() found." >&4
9370                 if $run ./try; then
9371                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9372                         break;
9373                 else
9374                         echo "...But $xxx_convert didn't work as I expected."
9375                         xxx_convert=''
9376                 fi
9377         else
9378                 echo "$xxx_convert NOT found." >&4
9379         fi
9380 done
9381
9382 if test X$xxx_convert = X; then
9383     echo "*** WHOA THERE!!! ***" >&4
9384     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9385     xxx_convert=sprintf
9386 fi
9387
9388 case "$xxx_convert" in
9389 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9390 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9391 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9392 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9393    "$define$define$define")
9394       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9395    "$define$define$undef")
9396       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9397    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9398    esac
9399    ;;  
9400 esac
9401
9402 fi
9403
9404 : see if _fwalk exists
9405 set fwalk d__fwalk
9406 eval $inlibc
9407
9408 : Initialize h_fcntl
9409 h_fcntl=false
9410
9411 : Initialize h_sysfile
9412 h_sysfile=false
9413
9414 : access call always available on UNIX
9415 set access d_access
9416 eval $inlibc
9417
9418 : locate the flags for 'access()'
9419 case "$d_access" in
9420 "$define")
9421         echo " "
9422         $cat >access.c <<EOCP
9423 #include <sys/types.h>
9424 #ifdef I_FCNTL
9425 #include <fcntl.h>
9426 #endif
9427 #ifdef I_SYS_FILE
9428 #include <sys/file.h>
9429 #endif
9430 #ifdef I_UNISTD
9431 #include <unistd.h>
9432 #endif
9433 #$i_stdlib I_STDLIB
9434 #ifdef I_STDLIB
9435 #include <stdlib.h>
9436 #endif
9437 int main() {
9438         exit(R_OK);
9439 }
9440 EOCP
9441         : check sys/file.h first, no particular reason here
9442         if $test `./findhdr sys/file.h` && \
9443                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9444                 h_sysfile=true;
9445                 echo "<sys/file.h> defines the *_OK access constants." >&4
9446         elif $test `./findhdr fcntl.h` && \
9447                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9448                 h_fcntl=true;
9449                 echo "<fcntl.h> defines the *_OK access constants." >&4
9450         elif $test `./findhdr unistd.h` && \
9451                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9452                 echo "<unistd.h> defines the *_OK access constants." >&4
9453         else
9454                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9455         fi
9456         ;;
9457 esac
9458 $rm -f access*
9459
9460 : see if accessx exists
9461 set accessx d_accessx
9462 eval $inlibc
9463
9464 : see if aintl exists
9465 set aintl d_aintl
9466 eval $inlibc
9467
9468 : see if alarm exists
9469 set alarm d_alarm
9470 eval $inlibc
9471
9472 : see if POSIX threads are available
9473 set pthread.h i_pthread
9474 eval $inhdr
9475
9476 : define a fucntion to check prototypes
9477 $cat > protochk <<EOSH
9478 $startsh
9479 cc="$cc"
9480 optimize="$optimize"
9481 ccflags="$ccflags"
9482 prototype="$prototype"
9483 define="$define"
9484 rm=$rm
9485 usethreads=$usethreads
9486 i_pthread=$i_pthread
9487 pthread_h_first=$pthread_h_first
9488 EOSH
9489
9490 $cat >> protochk <<'EOSH'
9491
9492 $rm -f try.c
9493 foo="$1"
9494 shift
9495 while test $# -ge 2; do
9496         case "$1" in
9497                 $define) echo "#include <$2>" >> try.c ;;
9498                 literal) echo "$2" >> try.c ;;
9499         esac
9500     # Extra magic for the benefit of systems that need pthread.h
9501     # to be included early to correctly detect threadsafe functions.
9502     # Such functions must guarantee themselves, though, that the usethreads
9503     # and i_pthread have been defined, before calling protochk.
9504     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9505         echo "#include <pthread.h>" >> try.c
9506         pthread_h_done=yes
9507     fi
9508     shift 2
9509 done
9510 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9511 cat >> try.c <<'EOCP'
9512 #ifdef CAN_PROTOTYPE
9513 #define _(args) args
9514 #else
9515 #define _(args) ()
9516 #endif
9517 EOCP
9518 echo "$foo" >> try.c
9519 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9520 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9521 status=$?
9522 $rm -f try.[co]
9523 exit $status
9524 EOSH
9525 chmod +x protochk
9526 $eunicefix protochk
9527
9528 hasproto='varname=$1; func=$2; shift; shift;
9529 while $test $# -ge 2; do
9530         case "$1" in
9531         $define) echo "#include <$2>";;
9532         esac ;
9533     shift 2;
9534 done > try.c;
9535 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9536 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9537         echo "$func() prototype found.";
9538         val="$define";
9539 else
9540         echo "$func() prototype NOT found.";
9541         val="$undef";
9542 fi;
9543 set $varname;
9544 eval $setvar;
9545 $rm -f try.c tryout.c'
9546
9547 : see if sys/types.h has to be included
9548 set sys/types.h i_systypes
9549 eval $inhdr
9550
9551 : see if sys/select.h has to be included
9552 set sys/select.h i_sysselct
9553 eval $inhdr
9554
9555 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9556 while $test $# -ge 2; do
9557         case "$1" in
9558         $define) echo "#include <$2>";;
9559         esac ;
9560     shift 2;
9561 done > try.c;
9562 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9563 set try;
9564 if eval $compile; then
9565         val="$define";
9566 else
9567         val="$undef";
9568 fi;
9569 set $varname;
9570 eval $setvar;
9571 $rm -f try.c try.o'
9572
9573 : see if we should include time.h, sys/time.h, or both
9574 echo " "
9575 if test "X$timeincl" = X; then
9576         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9577         $echo $n "I'm now running the test program...$c"
9578         $cat >try.c <<EOCP
9579 #include <sys/types.h>
9580 #ifdef I_TIME
9581 #include <time.h>
9582 #endif
9583 #ifdef I_SYSTIME
9584 #ifdef SYSTIMEKERNEL
9585 #define KERNEL
9586 #endif
9587 #include <sys/time.h>
9588 #endif
9589 #ifdef I_SYSSELECT
9590 #include <sys/select.h>
9591 #endif
9592 #$i_stdlib I_STDLIB
9593 #ifdef I_STDLIB
9594 #include <stdlib.h>
9595 #endif
9596 int main()
9597 {
9598         struct tm foo;
9599 #ifdef S_TIMEVAL
9600         struct timeval bar;
9601 #endif
9602 #ifdef S_TIMEZONE
9603         struct timezone tzp;
9604 #endif
9605         if (foo.tm_sec == foo.tm_sec)
9606                 exit(0);
9607 #ifdef S_TIMEVAL
9608         if (bar.tv_sec == bar.tv_sec)
9609                 exit(0);
9610 #endif
9611         exit(1);
9612 }
9613 EOCP
9614         flags=''
9615         for s_timezone in '-DS_TIMEZONE' ''; do
9616         sysselect=''
9617         for s_timeval in '-DS_TIMEVAL' ''; do
9618         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9619         for i_time in '' '-DI_TIME'; do
9620         for i_systime in '-DI_SYSTIME' ''; do
9621                 case "$flags" in
9622                 '') $echo $n ".$c"
9623                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9624                         if eval $compile; then
9625                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9626                                 shift
9627                                 flags="$*"
9628                                 echo " "
9629                                 $echo $n "Succeeded with $flags$c"
9630                         fi
9631                         ;;
9632                 esac
9633         done
9634         done
9635         done
9636         done
9637         done
9638         timeincl=''
9639         echo " "
9640         case "$flags" in
9641         *SYSTIMEKERNEL*) i_systimek="$define"
9642                 timeincl=`./findhdr sys/time.h`
9643                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9644         *) i_systimek="$undef";;
9645         esac
9646         case "$flags" in
9647         *I_TIME*) i_time="$define"
9648                 timeincl=`./findhdr time.h`" $timeincl"
9649                 echo "We'll include <time.h>." >&4;;
9650         *) i_time="$undef";;
9651         esac
9652         case "$flags" in
9653         *I_SYSTIME*) i_systime="$define"
9654                 timeincl=`./findhdr sys/time.h`" $timeincl"
9655                 echo "We'll include <sys/time.h>." >&4;;
9656         *) i_systime="$undef";;
9657         esac
9658         $rm -f try.c try
9659 fi
9660 : see if struct tm knows about tm_zone
9661 case "$i_systime$i_time" in
9662 *$define*) 
9663         echo " "
9664         echo "Checking to see if your struct tm has tm_zone field..." >&4
9665         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9666         eval $hasfield
9667         ;;
9668 *)      val="$undef"
9669         set d_tm_tm_zone
9670         eval $setvar
9671         ;;
9672 esac
9673 case "$d_tm_tm_zone" in
9674 "$define")      echo "Yes, it does."   ;;
9675 *)              echo "No, it doesn't." ;;
9676 esac
9677 : see if struct tm knows about tm_gmtoff
9678 case "$i_systime$i_time" in
9679 *$define*) 
9680         echo " "
9681         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9682         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9683         eval $hasfield
9684         ;;
9685 *)      val="$undef"
9686         set d_tm_tm_gmtoff
9687         eval $setvar
9688         ;;
9689 esac
9690 case "$d_tm_tm_gmtoff" in
9691 "$define")      echo "Yes, it does."   ;;
9692 *)              echo "No, it doesn't." ;;
9693 esac
9694
9695 : see if asctime_r exists
9696 set asctime_r d_asctime_r
9697 eval $inlibc
9698 case "$d_asctime_r" in
9699 "$define")
9700         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9701         case "$d_asctime_r_proto:$usethreads" in
9702         ":define")      d_asctime_r_proto=define
9703                 set d_asctime_r_proto asctime_r $hdrs
9704                 eval $hasproto ;;
9705         *)      ;;
9706         esac
9707         case "$d_asctime_r_proto" in
9708         define)
9709         case "$asctime_r_proto" in
9710         ''|0) try='char* asctime_r(const struct tm*, char*);'
9711         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9712         esac
9713         case "$asctime_r_proto" in
9714         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9715         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9716         esac
9717         case "$asctime_r_proto" in
9718         ''|0) try='int asctime_r(const struct tm*, char*);'
9719         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9720         esac
9721         case "$asctime_r_proto" in
9722         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9723         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9724         esac
9725         case "$asctime_r_proto" in
9726         ''|0)   d_asctime_r=undef
9727                 asctime_r_proto=0
9728                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9729         * )     case "$asctime_r_proto" in
9730                 REENTRANT_PROTO*) ;;
9731                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9732                 esac
9733                 echo "Prototype: $try" ;;
9734         esac
9735         ;;
9736         *)      case "$usethreads" in
9737                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9738                 esac
9739                 d_asctime_r=undef
9740                 asctime_r_proto=0
9741                 ;;
9742         esac
9743         ;;
9744 *)      asctime_r_proto=0
9745         ;;
9746 esac
9747
9748 : see if atolf exists
9749 set atolf d_atolf
9750 eval $inlibc
9751
9752 : see if atoll exists
9753 set atoll d_atoll
9754 eval $inlibc
9755
9756 : Look for GNU-cc style attribute checking
9757 echo " "
9758 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9759 $cat >attrib.c <<'EOCP'
9760 #include <stdio.h>
9761 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9762 EOCP
9763 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9764         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9765                 echo "Your C compiler doesn't fully support __attribute__."
9766                 val="$undef"
9767         else
9768                 echo "Your C compiler supports __attribute__."
9769                 val="$define"
9770         fi
9771 else
9772         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9773         val="$undef"
9774 fi
9775 set d_attribut
9776 eval $setvar
9777 $rm -f attrib*
9778
9779 : see if bcmp exists
9780 set bcmp d_bcmp
9781 eval $inlibc
9782
9783 : see if bcopy exists
9784 set bcopy d_bcopy
9785 eval $inlibc
9786
9787 : see if this is a unistd.h system
9788 set unistd.h i_unistd
9789 eval $inhdr
9790
9791 : see if getpgrp exists
9792 set getpgrp d_getpgrp
9793 eval $inlibc
9794
9795 case "$d_getpgrp" in
9796 "$define")
9797         echo " "
9798         echo "Checking to see which flavor of getpgrp is in use..."
9799         $cat >try.c <<EOP
9800 #$i_unistd I_UNISTD
9801 #include <sys/types.h>
9802 #ifdef I_UNISTD
9803 #  include <unistd.h>
9804 #endif
9805 #$i_stdlib I_STDLIB
9806 #ifdef I_STDLIB
9807 #include <stdlib.h>
9808 #endif
9809 int main()
9810 {
9811         if (getuid() == 0) {
9812                 printf("(I see you are running Configure as super-user...)\n");
9813                 setuid(1);
9814         }
9815 #ifdef TRY_BSD_PGRP
9816         if (getpgrp(1) == 0)
9817                 exit(0);
9818 #else
9819         if (getpgrp() > 0)
9820                 exit(0);
9821 #endif
9822         exit(1);
9823 }
9824 EOP
9825         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9826                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9827                 val="$define"
9828         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9829                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9830                 val="$undef"
9831         else
9832                 echo "I can't seem to compile and run the test program."
9833                 if ./usg; then
9834                         xxx="a USG one, i.e. you use getpgrp()."
9835                 else
9836                         # SVR4 systems can appear rather BSD-ish.
9837                         case "$i_unistd" in
9838                         $undef)
9839                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9840                                 val="$define"
9841                                 ;;
9842                         $define)
9843                                 xxx="probably a USG one, i.e. you use getpgrp()."
9844                                 val="$undef"
9845                                 ;;
9846                         esac
9847                 fi
9848                 echo "Assuming your getpgrp is $xxx" >&4
9849         fi
9850         ;;
9851 *) val="$undef";;
9852 esac
9853 set d_bsdgetpgrp
9854 eval $setvar
9855 $rm -f try try.*
9856
9857 : see if setpgrp exists
9858 set setpgrp d_setpgrp
9859 eval $inlibc
9860
9861 case "$d_setpgrp" in
9862 "$define")
9863         echo " "
9864         echo "Checking to see which flavor of setpgrp is in use..."
9865         $cat >try.c <<EOP
9866 #$i_unistd I_UNISTD
9867 #include <sys/types.h>
9868 #ifdef I_UNISTD
9869 #  include <unistd.h>
9870 #endif
9871 #$i_stdlib I_STDLIB
9872 #ifdef I_STDLIB
9873 #include <stdlib.h>
9874 #endif
9875 int main()
9876 {
9877         if (getuid() == 0) {
9878                 printf("(I see you are running Configure as super-user...)\n");
9879                 setuid(1);
9880         }
9881 #ifdef TRY_BSD_PGRP
9882         if (-1 == setpgrp(1, 1))
9883                 exit(0);
9884 #else
9885         if (setpgrp() != -1)
9886                 exit(0);
9887 #endif
9888         exit(1);
9889 }
9890 EOP
9891         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9892                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9893                 val="$define"
9894         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9895                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9896                 val="$undef"
9897         else
9898                 echo "(I can't seem to compile and run the test program.)"
9899                 if ./usg; then
9900                         xxx="a USG one, i.e. you use setpgrp()."
9901                 else
9902                         # SVR4 systems can appear rather BSD-ish.
9903                         case "$i_unistd" in
9904                         $undef)
9905                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9906                                 val="$define"
9907                                 ;;
9908                         $define)
9909                                 xxx="probably a USG one, i.e. you use setpgrp()."
9910                                 val="$undef"
9911                                 ;;
9912                         esac
9913                 fi
9914                 echo "Assuming your setpgrp is $xxx" >&4
9915         fi
9916         ;;
9917 *) val="$undef";;
9918 esac
9919 set d_bsdsetpgrp
9920 eval $setvar
9921 $rm -f try try.*
9922 : see if bzero exists
9923 set bzero d_bzero
9924 eval $inlibc
9925
9926 : see if signal is declared as pointer to function returning int or void
9927 echo " "
9928 xxx=`./findhdr signal.h`
9929 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9930 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9931         echo "You have int (*signal())() instead of void." >&4
9932         val="$undef"
9933 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9934         echo "You have void (*signal())()." >&4
9935         val="$define"
9936 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9937         echo "You have int (*signal())() instead of void." >&4
9938         val="$undef"
9939 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9940         echo "You have void (*signal())()." >&4
9941         val="$define"
9942 else
9943         case "$d_voidsig" in
9944         '')
9945         echo "I can't determine whether signal handler returns void or int..." >&4
9946                 dflt=void
9947                 rp="What type does your signal handler return?"
9948                 . ./myread
9949                 case "$ans" in
9950                 v*) val="$define";;
9951                 *) val="$undef";;
9952                 esac;;
9953         "$define")
9954                 echo "As you already told me, signal handler returns void." >&4
9955                 val="$define"
9956                 ;;
9957         *)      echo "As you already told me, signal handler returns int." >&4
9958                 val="$undef"
9959                 ;;
9960         esac
9961 fi
9962 set d_voidsig
9963 eval $setvar
9964 case "$d_voidsig" in
9965 "$define") signal_t="void";;
9966 *) signal_t="int";;
9967 esac
9968 $rm -f $$.tmp
9969
9970 : check for ability to cast large floats to 32-bit ints.
9971 echo " "
9972 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9973 if $test "$intsize" -ge 4; then
9974         xxx=int
9975 else
9976         xxx=long
9977 fi
9978 $cat >try.c <<EOCP
9979 #include <stdio.h>
9980 #$i_stdlib I_STDLIB
9981 #ifdef I_STDLIB
9982 #include <stdlib.h>
9983 #endif
9984 #include <sys/types.h>
9985 #include <signal.h>
9986 $signal_t blech(s) int s; { exit(3); }
9987 int main()
9988 {
9989         $xxx i32;
9990         double f, g;
9991         int result = 0;
9992         char str[16];
9993         signal(SIGFPE, blech);
9994
9995         /* Don't let compiler optimize the test away.  Store the number 
9996            in a writable string for gcc to pass to sscanf under HP/UX.
9997         */
9998         sprintf(str, "2147483647");
9999         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10000         g = 10 * f;
10001         i32  = ($xxx) g;
10002
10003         /* x86 processors will probably give 0x8000 0000, which is a
10004        sign change.  We don't want that.  We want to mimic SPARC
10005            behavior here, which is to preserve the sign and give
10006            back 0x7fff ffff.
10007         */
10008         if (i32 != ($xxx) f)
10009                 result |= 1;
10010         exit(result);
10011 }
10012 EOCP
10013 set try
10014 if eval $compile_ok; then
10015         $run ./try
10016         yyy=$?
10017 else
10018         echo "(I can't seem to compile the test program--assuming it can't)"
10019         yyy=1
10020 fi
10021 case "$yyy" in
10022 0)      val="$define"
10023         echo "Yup, it can."
10024         ;;
10025 *)      val="$undef"
10026         echo "Nope, it can't."
10027         ;;
10028 esac
10029 set d_casti32
10030 eval $setvar
10031 $rm -f try try.*
10032
10033 : check for ability to cast negative floats to unsigned
10034 echo " "
10035 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10036 $cat >try.c <<EOCP
10037 #include <stdio.h>
10038 #$i_stdlib I_STDLIB
10039 #ifdef I_STDLIB
10040 #include <stdlib.h>
10041 #endif
10042 #include <sys/types.h>
10043 #include <signal.h>
10044 $signal_t blech(s) int s; { exit(7); }
10045 $signal_t blech_in_list(s) int s; { exit(4); }
10046 unsigned long dummy_long(p) unsigned long p; { return p; }
10047 unsigned int dummy_int(p) unsigned int p; { return p; }
10048 unsigned short dummy_short(p) unsigned short p; { return p; }
10049 int main()
10050 {
10051         double f;
10052         unsigned long along;
10053         unsigned int aint;
10054         unsigned short ashort;
10055         int result = 0;
10056         char str[16];
10057         
10058         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10059            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10060            optimized the whole file away
10061         */
10062         /* Store the number in a writable string for gcc to pass to 
10063            sscanf under HP/UX.
10064         */
10065         sprintf(str, "-123");
10066         sscanf(str, "%lf", &f);  /* f = -123.; */
10067
10068         signal(SIGFPE, blech);
10069         along = (unsigned long)f;
10070         aint = (unsigned int)f;
10071         ashort = (unsigned short)f;
10072         if (along != (unsigned long)-123)
10073                 result |= 1;
10074         if (aint != (unsigned int)-123)
10075                 result |= 1;
10076         if (ashort != (unsigned short)-123)
10077                 result |= 1;
10078         sprintf(str, "1073741824.");
10079         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10080         f = f + f;
10081         along = 0;
10082         along = (unsigned long)f;
10083         if (along != 0x80000000)
10084                 result |= 2;
10085         f -= 1.;
10086         along = 0;
10087         along = (unsigned long)f;
10088         if (along != 0x7fffffff)
10089                 result |= 1;
10090         f += 2.;
10091         along = 0;
10092         along = (unsigned long)f;
10093         if (along != 0x80000001)
10094                 result |= 2;
10095         if (result)
10096                 exit(result);
10097         signal(SIGFPE, blech_in_list);
10098         sprintf(str, "123.");
10099         sscanf(str, "%lf", &f);  /* f = 123.; */
10100         along = dummy_long((unsigned long)f);
10101         aint = dummy_int((unsigned int)f);
10102         ashort = dummy_short((unsigned short)f);
10103         if (along != (unsigned long)123)
10104                 result |= 4;
10105         if (aint != (unsigned int)123)
10106                 result |= 4;
10107         if (ashort != (unsigned short)123)
10108                 result |= 4;
10109         exit(result);
10110
10111 }
10112 EOCP
10113 set try
10114 if eval $compile_ok; then
10115         $run ./try
10116         castflags=$?
10117 else
10118         echo "(I can't seem to compile the test program--assuming it can't)"
10119         castflags=7
10120 fi
10121 case "$castflags" in
10122 0)      val="$define"
10123         echo "Yup, it can."
10124         ;;
10125 *)      val="$undef"
10126         echo "Nope, it can't."
10127         ;;
10128 esac
10129 set d_castneg
10130 eval $setvar
10131 $rm -f try.*
10132
10133 : see if vprintf exists
10134 echo " "
10135 if set vprintf val -f d_vprintf; eval $csym; $val; then
10136         echo 'vprintf() found.' >&4
10137         val="$define"
10138         $cat >try.c <<EOF
10139 #include <varargs.h>
10140 #$i_stdlib I_STDLIB
10141 #ifdef I_STDLIB
10142 #include <stdlib.h>
10143 #endif
10144
10145 int main() { xxx("foo"); }
10146
10147 xxx(va_alist)
10148 va_dcl
10149 {
10150         va_list args;
10151         char buf[10];
10152
10153         va_start(args);
10154         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10155 }
10156 EOF
10157         set try
10158         if eval $compile && $run ./try; then
10159                 echo "Your vsprintf() returns (int)." >&4
10160                 val2="$undef"
10161         else
10162                 echo "Your vsprintf() returns (char*)." >&4
10163                 val2="$define"
10164         fi
10165 else
10166         echo 'vprintf() NOT found.' >&4
10167                 val="$undef"
10168                 val2="$undef"
10169 fi
10170 $rm -f try try.*
10171 set d_vprintf
10172 eval $setvar
10173 val=$val2
10174 set d_charvspr
10175 eval $setvar
10176
10177 : see if chown exists
10178 set chown d_chown
10179 eval $inlibc
10180
10181 : see if chroot exists
10182 set chroot d_chroot
10183 eval $inlibc
10184
10185 : see if chsize exists
10186 set chsize d_chsize
10187 eval $inlibc
10188
10189 : see if class exists
10190 set class d_class
10191 eval $inlibc
10192
10193 hasstruct='varname=$1; struct=$2; shift; shift;
10194 while $test $# -ge 2; do
10195         case "$1" in
10196         $define) echo "#include <$2>";;
10197         esac ;
10198     shift 2;
10199 done > try.c;
10200 echo "int main () { struct $struct foo; }" >> try.c;
10201 set try;
10202 if eval $compile; then
10203         val="$define";
10204 else
10205         val="$undef";
10206 fi;
10207 set $varname;
10208 eval $setvar;
10209 $rm -f try.c try.o'
10210
10211 socketlib=''
10212 sockethdr=''
10213 : see whether socket exists
10214 echo " "
10215 $echo $n "Hmm... $c" >&4
10216 if set socket val -f d_socket; eval $csym; $val; then
10217         echo "Looks like you have Berkeley networking support." >&4
10218         d_socket="$define"
10219         if set setsockopt val -f; eval $csym; $val; then
10220                 d_oldsock="$undef"
10221         else
10222                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10223                 d_oldsock="$define"
10224         fi
10225 else
10226         if $contains socklib libc.list >/dev/null 2>&1; then
10227                 echo "Looks like you have Berkeley networking support." >&4
10228                 d_socket="$define"
10229                 : we will have to assume that it supports the 4.2 BSD interface
10230                 d_oldsock="$undef"
10231         else
10232                 echo "You don't have Berkeley networking in libc$_a..." >&4
10233                 if test "X$d_socket" = "X$define"; then
10234                    echo "...but you seem to believe that you have sockets." >&4
10235                 else
10236                         for net in net socket
10237                         do
10238                                 if test -f /usr/lib/lib$net$_a; then
10239                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10240                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10241                                         if $contains socket libc.list >/dev/null 2>&1; then
10242                                                 d_socket="$define"
10243                                                 socketlib="-l$net"
10244                                                 case "$net" in
10245                                                 net)
10246                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10247                                                         sockethdr="-I/usr/netinclude"
10248                                                         ;;
10249                                                 esac
10250                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10251                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10252                                                         d_oldsock="$undef"
10253                                                 else
10254                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10255                                                         d_oldsock="$define"
10256                                                 fi
10257                                                 break
10258                                         fi
10259                                 fi
10260                         done
10261                         if test "X$d_socket" != "X$define"; then
10262                            echo "or anywhere else I see." >&4
10263                            d_socket="$undef"
10264                            d_oldsock="$undef"
10265                         fi
10266                 fi
10267         fi
10268 fi
10269
10270 : see if socketpair exists
10271 set socketpair d_sockpair
10272 eval $inlibc
10273
10274
10275 echo " "
10276 echo "Checking the availability of certain socket constants..." >&4
10277 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10278         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10279         $cat >try.c <<EOF
10280 #include <sys/types.h>
10281 #include <sys/socket.h>
10282 int main() {
10283     int i = $ENUM;
10284 }
10285 EOF
10286         val="$undef"
10287         set try; if eval $compile; then
10288                 val="$define"
10289         fi
10290         set d_${enum}; eval $setvar
10291         $rm -f try.c try
10292 done
10293
10294 : see if this is a sys/uio.h system
10295 set sys/uio.h i_sysuio
10296 eval $inhdr
10297
10298
10299 echo " "
10300 echo "Checking to see if your system supports struct cmsghdr..." >&4
10301 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10302 eval $hasstruct
10303 case "$d_cmsghdr_s" in
10304 "$define")      echo "Yes, it does."   ;;
10305 *)              echo "No, it doesn't." ;;
10306 esac
10307
10308
10309 : check for const keyword
10310 echo " "
10311 echo 'Checking to see if your C compiler knows about "const"...' >&4
10312 $cat >const.c <<'EOCP'
10313 typedef struct spug { int drokk; } spug;
10314 int main()
10315 {
10316         const char *foo;
10317         const spug y;
10318 }
10319 EOCP
10320 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10321         val="$define"
10322         echo "Yup, it does."
10323 else
10324         val="$undef"
10325         echo "Nope, it doesn't."
10326 fi
10327 set d_const
10328 eval $setvar
10329
10330 : see if copysignl exists
10331 set copysignl d_copysignl
10332 eval $inlibc
10333
10334 : see if crypt exists
10335 echo " "
10336 set crypt d_crypt
10337 eval $inlibc
10338 case "$d_crypt" in
10339 $define) cryptlib='' ;;
10340 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10341                 echo 'crypt() found.' >&4
10342                 val="$define"
10343                 cryptlib=''
10344         else
10345                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10346                 if $test -z "$cryptlib"; then
10347                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10348                 else
10349                         cryptlib=-lcrypt
10350                 fi
10351                 if $test -z "$cryptlib"; then
10352                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10353                 else
10354                         cryptlib=-lcrypt
10355                 fi
10356                 if $test -z "$cryptlib"; then
10357                         cryptlib=`./loc libcrypt$_a "" $libpth`
10358                 else
10359                         cryptlib=-lcrypt
10360                 fi
10361                 if $test -z "$cryptlib"; then
10362                         echo 'crypt() NOT found.' >&4
10363                         val="$undef"
10364                 else
10365                         val="$define"
10366                 fi
10367         fi
10368         set d_crypt
10369         eval $setvar
10370         ;;
10371 esac
10372
10373 : see if this is a crypt.h system
10374 set crypt.h i_crypt
10375 eval $inhdr
10376
10377 : see if crypt_r exists
10378 set crypt_r d_crypt_r
10379 eval $inlibc
10380 case "$d_crypt_r" in
10381 "$define")
10382         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10383         case "$d_crypt_r_proto:$usethreads" in
10384         ":define")      d_crypt_r_proto=define
10385                 set d_crypt_r_proto crypt_r $hdrs
10386                 eval $hasproto ;;
10387         *)      ;;
10388         esac
10389         case "$d_crypt_r_proto" in
10390         define)
10391         case "$crypt_r_proto" in
10392         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10393         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10394         esac
10395         case "$crypt_r_proto" in
10396         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10397         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10398         esac
10399         case "$crypt_r_proto" in
10400         ''|0)   d_crypt_r=undef
10401                 crypt_r_proto=0
10402                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10403         * )     case "$crypt_r_proto" in
10404                 REENTRANT_PROTO*) ;;
10405                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10406                 esac
10407                 echo "Prototype: $try" ;;
10408         esac
10409         ;;
10410         *)      case "$usethreads" in
10411                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10412                 esac
10413                 d_crypt_r=undef
10414                 crypt_r_proto=0
10415                 ;;
10416         esac
10417         ;;
10418 *)      crypt_r_proto=0
10419         ;;
10420 esac
10421
10422 : get csh whereabouts
10423 case "$csh" in
10424 'csh') val="$undef" ;;
10425 *) val="$define" ;;
10426 esac
10427 set d_csh
10428 eval $setvar
10429 : Respect a hint or command line value for full_csh.
10430 case "$full_csh" in
10431 '') full_csh=$csh ;;
10432 esac
10433
10434 : see if ctermid_r exists
10435 set ctermid_r d_ctermid_r
10436 eval $inlibc
10437 case "$d_ctermid_r" in
10438 "$define")
10439         hdrs="$i_systypes sys/types.h define stdio.h "
10440         case "$d_ctermid_r_proto:$usethreads" in
10441         ":define")      d_ctermid_r_proto=define
10442                 set d_ctermid_r_proto ctermid_r $hdrs
10443                 eval $hasproto ;;
10444         *)      ;;
10445         esac
10446         case "$d_ctermid_r_proto" in
10447         define)
10448         case "$ctermid_r_proto" in
10449         ''|0) try='char* ctermid_r(char*);'
10450         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10451         esac
10452         case "$ctermid_r_proto" in
10453         ''|0)   d_ctermid_r=undef
10454                 ctermid_r_proto=0
10455                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10456         * )     case "$ctermid_r_proto" in
10457                 REENTRANT_PROTO*) ;;
10458                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10459                 esac
10460                 echo "Prototype: $try" ;;
10461         esac
10462         ;;
10463         *)      case "$usethreads" in
10464                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10465                 esac
10466                 d_ctermid_r=undef
10467                 ctermid_r_proto=0
10468                 ;;
10469         esac
10470         ;;
10471 *)      ctermid_r_proto=0
10472         ;;
10473 esac
10474
10475 : see if ctime_r exists
10476 set ctime_r d_ctime_r
10477 eval $inlibc
10478 case "$d_ctime_r" in
10479 "$define")
10480         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10481         case "$d_ctime_r_proto:$usethreads" in
10482         ":define")      d_ctime_r_proto=define
10483                 set d_ctime_r_proto ctime_r $hdrs
10484                 eval $hasproto ;;
10485         *)      ;;
10486         esac
10487         case "$d_ctime_r_proto" in
10488         define)
10489         case "$ctime_r_proto" in
10490         ''|0) try='char* ctime_r(const time_t*, char*);'
10491         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10492         esac
10493         case "$ctime_r_proto" in
10494         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10495         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10496         esac
10497         case "$ctime_r_proto" in
10498         ''|0) try='int ctime_r(const time_t*, char*);'
10499         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10500         esac
10501         case "$ctime_r_proto" in
10502         ''|0) try='int ctime_r(const time_t*, char*, int);'
10503         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10504         esac
10505         case "$ctime_r_proto" in
10506         ''|0)   d_ctime_r=undef
10507                 ctime_r_proto=0
10508                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10509         * )     case "$ctime_r_proto" in
10510                 REENTRANT_PROTO*) ;;
10511                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10512                 esac
10513                 echo "Prototype: $try" ;;
10514         esac
10515         ;;
10516         *)      case "$usethreads" in
10517                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10518                 esac
10519                 d_ctime_r=undef
10520                 ctime_r_proto=0
10521                 ;;
10522         esac
10523         ;;
10524 *)      ctime_r_proto=0
10525         ;;
10526 esac
10527
10528 : see if cuserid exists
10529 set cuserid d_cuserid
10530 eval $inlibc
10531
10532 : see if this is a limits.h system
10533 set limits.h i_limits
10534 eval $inhdr
10535
10536 : see if this is a float.h system
10537 set float.h i_float
10538 eval $inhdr
10539
10540 : See if number of significant digits in a double precision number is known
10541 echo " "
10542 $cat >dbl_dig.c <<EOM
10543 #$i_limits I_LIMITS
10544 #$i_float I_FLOAT
10545 #ifdef I_LIMITS
10546 #include <limits.h>
10547 #endif
10548 #ifdef I_FLOAT
10549 #include <float.h>
10550 #endif
10551 #ifdef DBL_DIG
10552 printf("Contains DBL_DIG");
10553 #endif
10554 EOM
10555 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10556 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10557         echo "DBL_DIG found." >&4
10558         val="$define"
10559 else
10560         echo "DBL_DIG NOT found." >&4
10561         val="$undef"
10562 fi
10563 $rm -f dbl_dig.?
10564 set d_dbl_dig
10565 eval $setvar
10566
10567 : see if dbm.h is available
10568 : see if dbmclose exists
10569 set dbmclose d_dbmclose
10570 eval $inlibc
10571
10572 case "$d_dbmclose" in
10573 $define)
10574         set dbm.h i_dbm
10575         eval $inhdr
10576         case "$i_dbm" in
10577         $define)
10578                 val="$undef"
10579                 set i_rpcsvcdbm
10580                 eval $setvar
10581                 ;;
10582         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10583                 eval $inhdr
10584                 ;;
10585         esac
10586         ;;
10587 *)      echo "We won't be including <dbm.h>"
10588         val="$undef"
10589         set i_dbm
10590         eval $setvar
10591         val="$undef"
10592         set i_rpcsvcdbm
10593         eval $setvar
10594         ;;
10595 esac
10596
10597 : see if prototype for dbminit is available
10598 echo " "
10599 set d_dbminitproto dbminit $i_dbm dbm.h
10600 eval $hasproto
10601
10602 : see if difftime exists
10603 set difftime d_difftime
10604 eval $inlibc
10605
10606 : see if this is a dirent system
10607 echo " "
10608 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10609         val="$define"
10610         echo "<dirent.h> found." >&4
10611 else
10612         val="$undef"
10613         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10614                 echo "<sys/dir.h> found." >&4
10615                 echo " "
10616         else
10617                 xinc=`./findhdr sys/ndir.h`
10618         fi
10619         echo "<dirent.h> NOT found." >&4
10620 fi
10621 set i_dirent
10622 eval $setvar
10623
10624 : Look for type of directory structure.
10625 echo " "
10626 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10627
10628 case "$direntrytype" in
10629 ''|' ')
10630         case "$i_dirent" in
10631         $define) guess1='struct dirent' ;;
10632         *) guess1='struct direct'  ;;
10633         esac
10634         ;;
10635 *)      guess1="$direntrytype"
10636         ;;
10637 esac
10638
10639 case "$guess1" in
10640 'struct dirent') guess2='struct direct' ;;
10641 *) guess2='struct dirent' ;;
10642 esac
10643                 
10644 if $contains "$guess1" try.c >/dev/null 2>&1; then
10645         direntrytype="$guess1"
10646         echo "Your directory entries are $direntrytype." >&4
10647 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10648         direntrytype="$guess2"
10649         echo "Your directory entries seem to be $direntrytype." >&4
10650 else
10651         echo "I don't recognize your system's directory entries." >&4
10652         rp="What type is used for directory entries on this system?"
10653         dflt="$guess1"
10654         . ./myread
10655         direntrytype="$ans"
10656 fi
10657 $rm -f try.c
10658
10659
10660 : see if the directory entry stores field length
10661 echo " "
10662 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10663 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10664         echo "Good, your directory entry keeps length information in d_namlen." >&4
10665         val="$define"
10666 else
10667         echo "Your directory entry does not know about the d_namlen field." >&4
10668         val="$undef"
10669 fi
10670 set d_dirnamlen
10671 eval $setvar
10672 $rm -f try.c
10673
10674 : see if this is an sysdir system
10675 set sys/dir.h i_sysdir
10676 eval $inhdr
10677
10678 : see if this is an sysndir system
10679 set sys/ndir.h i_sysndir
10680 eval $inhdr
10681
10682 : Look for dirfd
10683 echo " "
10684 $cat >dirfd.c <<EOM
10685 #include <stdio.h>
10686 #$i_stdlib I_STDLIB
10687 #ifdef I_STDLIB
10688 #include <stdlib.h>
10689 #endif
10690 #$i_dirent I_DIRENT             /**/
10691 #$i_sysdir I_SYS_DIR            /**/
10692 #$i_sysndir I_SYS_NDIR          /**/
10693 #$i_systypes I_SYS_TYPES        /**/
10694 #if defined(I_SYS_TYPES)
10695 #include <sys/types.h>
10696 #endif
10697 #if defined(I_DIRENT)
10698 #include <dirent.h>
10699 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10700 #include <sys/dir.h>
10701 #endif
10702 #else
10703 #ifdef I_SYS_NDIR
10704 #include <sys/ndir.h>
10705 #else
10706 #ifdef I_SYS_DIR
10707 #ifdef hp9000s500
10708 #include <ndir.h>       /* may be wrong in the future */
10709 #else
10710 #include <sys/dir.h>
10711 #endif
10712 #endif
10713 #endif
10714 #endif 
10715 int main() {
10716         DIR *dirp = opendir(".");
10717         if (dirfd(dirp) >= 0)
10718                 exit(0);
10719         else
10720                 exit(1);
10721 }
10722 EOM
10723 set dirfd
10724 if eval $compile; then
10725         val="$define"
10726 fi
10727 case "$val" in
10728 $define)        echo "dirfd() found." >&4       ;;
10729 *)              echo "dirfd() NOT found." >&4   ;;
10730 esac
10731 set d_dirfd
10732 eval $setvar
10733 $rm -f dirfd*
10734
10735 : see if dlerror exists
10736 xxx_runnm="$runnm"
10737 runnm=false
10738 set dlerror d_dlerror
10739 eval $inlibc
10740 runnm="$xxx_runnm"
10741
10742 : see if dlfcn is available
10743 set dlfcn.h i_dlfcn
10744 eval $inhdr
10745
10746 case "$usedl" in
10747 $define|y|true)
10748         $cat << EOM
10749
10750 On a few systems, the dynamically loaded modules that perl generates and uses
10751 will need a different extension than shared libs. The default will probably
10752 be appropriate.
10753
10754 EOM
10755         case "$dlext" in
10756         '')     dflt="$so" ;;
10757         *)      dflt="$dlext" ;;
10758         esac
10759         rp='What is the extension of dynamically loaded modules'
10760         . ./myread
10761         dlext="$ans"
10762         ;;
10763 *)
10764         dlext="none"
10765         ;;
10766 esac
10767
10768 : Check if dlsym need a leading underscore
10769 echo " "
10770 val="$undef"
10771
10772 case "$dlsrc" in
10773 dl_dlopen.xs)
10774         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10775         $cat >dyna.c <<'EOM'
10776 fred () { }
10777 EOM
10778
10779 $cat >fred.c<<EOM
10780
10781 #include <stdio.h>
10782 #$i_stdlib I_STDLIB
10783 #ifdef I_STDLIB
10784 #include <stdlib.h>
10785 #endif
10786 #$i_dlfcn I_DLFCN
10787 #ifdef I_DLFCN
10788 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10789 #else
10790 #include <sys/types.h>
10791 #include <nlist.h>
10792 #include <link.h>
10793 #endif
10794
10795 extern int fred() ;
10796
10797 int main()
10798 {
10799     void * handle ;
10800     void * symbol ;
10801 #ifndef RTLD_LAZY
10802     int mode = 1 ;
10803 #else
10804     int mode = RTLD_LAZY ;
10805 #endif
10806     handle = dlopen("./dyna.$dlext", mode) ;
10807     if (handle == NULL) {
10808         printf ("1\n") ;
10809         fflush (stdout) ;
10810         exit(0);
10811     }
10812     symbol = dlsym(handle, "fred") ;
10813     if (symbol == NULL) {
10814         /* try putting a leading underscore */
10815         symbol = dlsym(handle, "_fred") ;
10816         if (symbol == NULL) {
10817             printf ("2\n") ;
10818             fflush (stdout) ;
10819             exit(0);
10820         }
10821         printf ("3\n") ;
10822     }
10823     else
10824         printf ("4\n") ;
10825     fflush (stdout) ;
10826     exit(0);
10827 }
10828 EOM
10829         : Call the object file tmp-dyna.o in case dlext=o.
10830         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10831                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10832                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10833                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10834                 xxx=`$run ./fred`
10835                 case $xxx in
10836                 1)      echo "Test program failed using dlopen." >&4
10837                         echo "Perhaps you should not use dynamic loading." >&4;;
10838                 2)      echo "Test program failed using dlsym." >&4
10839                         echo "Perhaps you should not use dynamic loading." >&4;;
10840                 3)      echo "dlsym needs a leading underscore" >&4
10841                         val="$define" ;;
10842                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10843                 esac
10844         else
10845                 echo "I can't compile and run the test program." >&4
10846                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10847         fi
10848         ;;
10849 esac
10850                 
10851 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10852
10853 set d_dlsymun
10854 eval $setvar
10855
10856 : see if drand48_r exists
10857 set drand48_r d_drand48_r
10858 eval $inlibc
10859 case "$d_drand48_r" in
10860 "$define")
10861         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10862         case "$d_drand48_r_proto:$usethreads" in
10863         ":define")      d_drand48_r_proto=define
10864                 set d_drand48_r_proto drand48_r $hdrs
10865                 eval $hasproto ;;
10866         *)      ;;
10867         esac
10868         case "$d_drand48_r_proto" in
10869         define)
10870         case "$drand48_r_proto" in
10871         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10872         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10873         esac
10874         case "$drand48_r_proto" in
10875         ''|0)   d_drand48_r=undef
10876                 drand48_r_proto=0
10877                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10878         * )     case "$drand48_r_proto" in
10879                 REENTRANT_PROTO*) ;;
10880                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10881                 esac
10882                 echo "Prototype: $try" ;;
10883         esac
10884         ;;
10885         *)      case "$usethreads" in
10886                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10887                 esac
10888                 d_drand48_r=undef
10889                 drand48_r_proto=0
10890                 ;;
10891         esac
10892         ;;
10893 *)      drand48_r_proto=0
10894         ;;
10895 esac
10896
10897 : see if prototype for drand48 is available
10898 echo " "
10899 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10900 eval $hasproto
10901
10902 : see if dup2 exists
10903 set dup2 d_dup2
10904 eval $inlibc
10905
10906 : see if eaccess exists
10907 set eaccess d_eaccess
10908 eval $inlibc
10909
10910 : see if endgrent exists
10911 set endgrent d_endgrent
10912 eval $inlibc
10913
10914 : see if this is an grp system
10915 set grp.h i_grp
10916 eval $inhdr
10917
10918 case "$i_grp" in
10919 $define)
10920         xxx=`./findhdr grp.h`
10921         $cppstdin $cppflags $cppminus < $xxx >$$.h
10922
10923         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10924                 val="$define"
10925         else
10926                 val="$undef"
10927         fi
10928         set d_grpasswd
10929         eval $setvar
10930
10931         $rm -f $$.h
10932         ;;
10933 *)
10934         val="$undef";
10935         set d_grpasswd; eval $setvar
10936         ;;
10937 esac
10938
10939 : see if endgrent_r exists
10940 set endgrent_r d_endgrent_r
10941 eval $inlibc
10942 case "$d_endgrent_r" in
10943 "$define")
10944         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10945         case "$d_endgrent_r_proto:$usethreads" in
10946         ":define")      d_endgrent_r_proto=define
10947                 set d_endgrent_r_proto endgrent_r $hdrs
10948                 eval $hasproto ;;
10949         *)      ;;
10950         esac
10951         case "$d_endgrent_r_proto" in
10952         define)
10953         case "$endgrent_r_proto" in
10954         ''|0) try='int endgrent_r(FILE**);'
10955         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10956         esac
10957         case "$endgrent_r_proto" in
10958         ''|0) try='void endgrent_r(FILE**);'
10959         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10960         esac
10961         case "$endgrent_r_proto" in
10962         ''|0)   d_endgrent_r=undef
10963                 endgrent_r_proto=0
10964                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10965         * )     case "$endgrent_r_proto" in
10966                 REENTRANT_PROTO*) ;;
10967                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10968                 esac
10969                 echo "Prototype: $try" ;;
10970         esac
10971         ;;
10972         *)      case "$usethreads" in
10973                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10974                 esac
10975                 d_endgrent_r=undef
10976                 endgrent_r_proto=0
10977                 ;;
10978         esac
10979         ;;
10980 *)      endgrent_r_proto=0
10981         ;;
10982 esac
10983
10984 : see if endhostent exists
10985 set endhostent d_endhent
10986 eval $inlibc
10987
10988 : see if this is a netdb.h system
10989 set netdb.h i_netdb
10990 eval $inhdr
10991
10992 : see if endhostent_r exists
10993 set endhostent_r d_endhostent_r
10994 eval $inlibc
10995 case "$d_endhostent_r" in
10996 "$define")
10997         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10998         case "$d_endhostent_r_proto:$usethreads" in
10999         ":define")      d_endhostent_r_proto=define
11000                 set d_endhostent_r_proto endhostent_r $hdrs
11001                 eval $hasproto ;;
11002         *)      ;;
11003         esac
11004         case "$d_endhostent_r_proto" in
11005         define)
11006         case "$endhostent_r_proto" in
11007         ''|0) try='int endhostent_r(struct hostent_data*);'
11008         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11009         esac
11010         case "$endhostent_r_proto" in
11011         ''|0) try='void endhostent_r(struct hostent_data*);'
11012         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11013         esac
11014         case "$endhostent_r_proto" in
11015         ''|0)   d_endhostent_r=undef
11016                 endhostent_r_proto=0
11017                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11018         * )     case "$endhostent_r_proto" in
11019                 REENTRANT_PROTO*) ;;
11020                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11021                 esac
11022                 echo "Prototype: $try" ;;
11023         esac
11024         ;;
11025         *)      case "$usethreads" in
11026                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11027                 esac
11028                 d_endhostent_r=undef
11029                 endhostent_r_proto=0
11030                 ;;
11031         esac
11032         ;;
11033 *)      endhostent_r_proto=0
11034         ;;
11035 esac
11036
11037 : see if endnetent exists
11038 set endnetent d_endnent
11039 eval $inlibc
11040
11041 : see if endnetent_r exists
11042 set endnetent_r d_endnetent_r
11043 eval $inlibc
11044 case "$d_endnetent_r" in
11045 "$define")
11046         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11047         case "$d_endnetent_r_proto:$usethreads" in
11048         ":define")      d_endnetent_r_proto=define
11049                 set d_endnetent_r_proto endnetent_r $hdrs
11050                 eval $hasproto ;;
11051         *)      ;;
11052         esac
11053         case "$d_endnetent_r_proto" in
11054         define)
11055         case "$endnetent_r_proto" in
11056         ''|0) try='int endnetent_r(struct netent_data*);'
11057         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11058         esac
11059         case "$endnetent_r_proto" in
11060         ''|0) try='void endnetent_r(struct netent_data*);'
11061         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11062         esac
11063         case "$endnetent_r_proto" in
11064         ''|0)   d_endnetent_r=undef
11065                 endnetent_r_proto=0
11066                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11067         * )     case "$endnetent_r_proto" in
11068                 REENTRANT_PROTO*) ;;
11069                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11070                 esac
11071                 echo "Prototype: $try" ;;
11072         esac
11073         ;;
11074         *)      case "$usethreads" in
11075                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11076                 esac
11077                 d_endnetent_r=undef
11078                 endnetent_r_proto=0
11079                 ;;
11080         esac
11081         ;;
11082 *)      endnetent_r_proto=0
11083         ;;
11084 esac
11085
11086 : see if endprotoent exists
11087 set endprotoent d_endpent
11088 eval $inlibc
11089
11090 : see if endprotoent_r exists
11091 set endprotoent_r d_endprotoent_r
11092 eval $inlibc
11093 case "$d_endprotoent_r" in
11094 "$define")
11095         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11096         case "$d_endprotoent_r_proto:$usethreads" in
11097         ":define")      d_endprotoent_r_proto=define
11098                 set d_endprotoent_r_proto endprotoent_r $hdrs
11099                 eval $hasproto ;;
11100         *)      ;;
11101         esac
11102         case "$d_endprotoent_r_proto" in
11103         define)
11104         case "$endprotoent_r_proto" in
11105         ''|0) try='int endprotoent_r(struct protoent_data*);'
11106         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11107         esac
11108         case "$endprotoent_r_proto" in
11109         ''|0) try='void endprotoent_r(struct protoent_data*);'
11110         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11111         esac
11112         case "$endprotoent_r_proto" in
11113         ''|0)   d_endprotoent_r=undef
11114                 endprotoent_r_proto=0
11115                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11116         * )     case "$endprotoent_r_proto" in
11117                 REENTRANT_PROTO*) ;;
11118                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11119                 esac
11120                 echo "Prototype: $try" ;;
11121         esac
11122         ;;
11123         *)      case "$usethreads" in
11124                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11125                 esac
11126                 d_endprotoent_r=undef
11127                 endprotoent_r_proto=0
11128                 ;;
11129         esac
11130         ;;
11131 *)      endprotoent_r_proto=0
11132         ;;
11133 esac
11134
11135 : see if endpwent exists
11136 set endpwent d_endpwent
11137 eval $inlibc
11138
11139 : see if this is a pwd.h system
11140 set pwd.h i_pwd
11141 eval $inhdr
11142
11143 case "$i_pwd" in
11144 $define)
11145         xxx=`./findhdr pwd.h`
11146         $cppstdin $cppflags $cppminus < $xxx >$$.h
11147
11148         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11149                 val="$define"
11150         else
11151                 val="$undef"
11152         fi
11153         set d_pwquota
11154         eval $setvar
11155
11156         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11157                 val="$define"
11158         else
11159                 val="$undef"
11160         fi
11161         set d_pwage
11162         eval $setvar
11163
11164         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11165                 val="$define"
11166         else
11167                 val="$undef"
11168         fi
11169         set d_pwchange
11170         eval $setvar
11171
11172         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11173                 val="$define"
11174         else
11175                 val="$undef"
11176         fi
11177         set d_pwclass
11178         eval $setvar
11179
11180         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11181                 val="$define"
11182         else
11183                 val="$undef"
11184         fi
11185         set d_pwexpire
11186         eval $setvar
11187
11188         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11189                 val="$define"
11190         else
11191                 val="$undef"
11192         fi
11193         set d_pwcomment
11194         eval $setvar
11195
11196         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11197                 val="$define"
11198         else
11199                 val="$undef"
11200         fi
11201         set d_pwgecos
11202         eval $setvar
11203
11204         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11205                 val="$define"
11206         else
11207                 val="$undef"
11208         fi
11209         set d_pwpasswd
11210         eval $setvar
11211
11212         $rm -f $$.h
11213         ;;
11214 *)
11215         val="$undef"; 
11216         set d_pwquota; eval $setvar
11217         set d_pwage; eval $setvar
11218         set d_pwchange; eval $setvar
11219         set d_pwclass; eval $setvar
11220         set d_pwexpire; eval $setvar
11221         set d_pwcomment; eval $setvar
11222         set d_pwgecos; eval $setvar
11223         set d_pwpasswd; eval $setvar
11224         ;;
11225 esac
11226
11227 : see if endpwent_r exists
11228 set endpwent_r d_endpwent_r
11229 eval $inlibc
11230 case "$d_endpwent_r" in
11231 "$define")
11232         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11233         case "$d_endpwent_r_proto:$usethreads" in
11234         ":define")      d_endpwent_r_proto=define
11235                 set d_endpwent_r_proto endpwent_r $hdrs
11236                 eval $hasproto ;;
11237         *)      ;;
11238         esac
11239         case "$d_endpwent_r_proto" in
11240         define)
11241         case "$endpwent_r_proto" in
11242         ''|0) try='int endpwent_r(FILE**);'
11243         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11244         esac
11245         case "$endpwent_r_proto" in
11246         ''|0) try='void endpwent_r(FILE**);'
11247         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11248         esac
11249         case "$endpwent_r_proto" in
11250         ''|0)   d_endpwent_r=undef
11251                 endpwent_r_proto=0
11252                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11253         * )     case "$endpwent_r_proto" in
11254                 REENTRANT_PROTO*) ;;
11255                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11256                 esac
11257                 echo "Prototype: $try" ;;
11258         esac
11259         ;;
11260         *)      case "$usethreads" in
11261                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11262                 esac
11263                 d_endpwent_r=undef
11264                 endpwent_r_proto=0
11265                 ;;
11266         esac
11267         ;;
11268 *)      endpwent_r_proto=0
11269         ;;
11270 esac
11271
11272 : see if endservent exists
11273 set endservent d_endsent
11274 eval $inlibc
11275
11276 : see if endservent_r exists
11277 set endservent_r d_endservent_r
11278 eval $inlibc
11279 case "$d_endservent_r" in
11280 "$define")
11281         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11282         case "$d_endservent_r_proto:$usethreads" in
11283         ":define")      d_endservent_r_proto=define
11284                 set d_endservent_r_proto endservent_r $hdrs
11285                 eval $hasproto ;;
11286         *)      ;;
11287         esac
11288         case "$d_endservent_r_proto" in
11289         define)
11290         case "$endservent_r_proto" in
11291         ''|0) try='int endservent_r(struct servent_data*);'
11292         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11293         esac
11294         case "$endservent_r_proto" in
11295         ''|0) try='void endservent_r(struct servent_data*);'
11296         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11297         esac
11298         case "$endservent_r_proto" in
11299         ''|0)   d_endservent_r=undef
11300                 endservent_r_proto=0
11301                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11302         * )     case "$endservent_r_proto" in
11303                 REENTRANT_PROTO*) ;;
11304                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11305                 esac
11306                 echo "Prototype: $try" ;;
11307         esac
11308         ;;
11309         *)      case "$usethreads" in
11310                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11311                 esac
11312                 d_endservent_r=undef
11313                 endservent_r_proto=0
11314                 ;;
11315         esac
11316         ;;
11317 *)      endservent_r_proto=0
11318         ;;
11319 esac
11320
11321 : Locate the flags for 'open()'
11322 echo " "
11323 $cat >try.c <<EOCP
11324 #include <sys/types.h>
11325 #ifdef I_FCNTL
11326 #include <fcntl.h>
11327 #endif
11328 #ifdef I_SYS_FILE
11329 #include <sys/file.h>
11330 #endif
11331 #$i_stdlib I_STDLIB
11332 #ifdef I_STDLIB
11333 #include <stdlib.h>
11334 #endif
11335 int main() {
11336         if(O_RDONLY);
11337 #ifdef O_TRUNC
11338         exit(0);
11339 #else
11340         exit(1);
11341 #endif
11342 }
11343 EOCP
11344 : check sys/file.h first to get FREAD on Sun
11345 if $test `./findhdr sys/file.h` && \
11346                 set try -DI_SYS_FILE && eval $compile; then
11347         h_sysfile=true;
11348         echo "<sys/file.h> defines the O_* constants..." >&4
11349         if $run ./try; then
11350                 echo "and you have the 3 argument form of open()." >&4
11351                 val="$define"
11352         else
11353                 echo "but not the 3 argument form of open().  Oh, well." >&4
11354                 val="$undef"
11355         fi
11356 elif $test `./findhdr fcntl.h` && \
11357                 set try -DI_FCNTL && eval $compile; then
11358         h_fcntl=true;
11359         echo "<fcntl.h> defines the O_* constants..." >&4
11360         if $run ./try; then
11361                 echo "and you have the 3 argument form of open()." >&4
11362                 val="$define"
11363         else
11364                 echo "but not the 3 argument form of open().  Oh, well." >&4
11365                 val="$undef"
11366         fi
11367 else
11368         val="$undef"
11369         echo "I can't find the O_* constant definitions!  You got problems." >&4
11370 fi
11371 set d_open3
11372 eval $setvar
11373 $rm -f try try.*
11374
11375 : see which of string.h or strings.h is needed
11376 echo " "
11377 strings=`./findhdr string.h`
11378 if $test "$strings" && $test -r "$strings"; then
11379         echo "Using <string.h> instead of <strings.h>." >&4
11380         val="$define"
11381 else
11382         val="$undef"
11383         strings=`./findhdr strings.h`
11384         if $test "$strings" && $test -r "$strings"; then
11385                 echo "Using <strings.h> instead of <string.h>." >&4
11386         else
11387                 echo "No string header found -- You'll surely have problems." >&4
11388         fi
11389 fi
11390 set i_string
11391 eval $setvar
11392 case "$i_string" in
11393 "$undef") strings=`./findhdr strings.h`;;
11394 *)        strings=`./findhdr string.h`;;
11395 esac
11396
11397 : see if this is a sys/file.h system
11398 val=''
11399 set sys/file.h val
11400 eval $inhdr
11401
11402 : do we need to include sys/file.h ?
11403 case "$val" in
11404 "$define")
11405         echo " "
11406         if $h_sysfile; then
11407                 val="$define"
11408                 echo "We'll be including <sys/file.h>." >&4
11409         else
11410                 val="$undef"
11411                 echo "We won't be including <sys/file.h>." >&4
11412         fi
11413         ;;
11414 *)
11415         h_sysfile=false
11416         ;;
11417 esac
11418 set i_sysfile
11419 eval $setvar
11420
11421 : see if fcntl.h is there
11422 val=''
11423 set fcntl.h val
11424 eval $inhdr
11425
11426 : see if we can include fcntl.h
11427 case "$val" in
11428 "$define")
11429         echo " "
11430         if $h_fcntl; then
11431                 val="$define"
11432                 echo "We'll be including <fcntl.h>." >&4
11433         else
11434                 val="$undef"
11435                 if $h_sysfile; then
11436         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11437                 else
11438                         echo "We won't be including <fcntl.h>." >&4
11439                 fi
11440         fi
11441         ;;
11442 *)
11443         h_fcntl=false
11444         val="$undef"
11445         ;;
11446 esac
11447 set i_fcntl
11448 eval $setvar
11449
11450 : check for non-blocking I/O stuff
11451 case "$h_sysfile" in
11452 true) echo "#include <sys/file.h>" > head.c;;
11453 *)
11454        case "$h_fcntl" in
11455        true) echo "#include <fcntl.h>" > head.c;;
11456        *) echo "#include <sys/fcntl.h>" > head.c;;
11457        esac
11458        ;;
11459 esac
11460 echo " "
11461 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11462 case "$o_nonblock" in
11463 '')
11464         $cat head.c > try.c
11465         $cat >>try.c <<EOCP
11466 #include <stdio.h>
11467 #$i_stdlib I_STDLIB
11468 #ifdef I_STDLIB
11469 #include <stdlib.h>
11470 #endif
11471 #$i_fcntl I_FCNTL
11472 #ifdef I_FCNTL
11473 #include <fcntl.h>
11474 #endif
11475 int main() {
11476 #ifdef O_NONBLOCK
11477         printf("O_NONBLOCK\n");
11478         exit(0);
11479 #endif
11480 #ifdef O_NDELAY
11481         printf("O_NDELAY\n");
11482         exit(0);
11483 #endif
11484 #ifdef FNDELAY
11485         printf("FNDELAY\n");
11486         exit(0);
11487 #endif
11488         exit(0);
11489 }
11490 EOCP
11491         set try
11492         if eval $compile_ok; then
11493                 o_nonblock=`$run ./try`
11494                 case "$o_nonblock" in
11495                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11496                 *) echo "Seems like we can use $o_nonblock.";;
11497                 esac
11498         else
11499                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11500         fi
11501         ;;
11502 *) echo "Using $hint value $o_nonblock.";;
11503 esac
11504 $rm -f try try.* .out core
11505
11506 echo " "
11507 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11508 case "$eagain" in
11509 '')
11510         $cat head.c > try.c
11511         $cat >>try.c <<EOCP
11512 #include <errno.h>
11513 #include <sys/types.h>
11514 #include <signal.h>
11515 #include <stdio.h> 
11516 #$i_stdlib I_STDLIB
11517 #ifdef I_STDLIB
11518 #include <stdlib.h>
11519 #endif
11520 #$i_fcntl I_FCNTL
11521 #ifdef I_FCNTL
11522 #include <fcntl.h>
11523 #endif
11524 #define MY_O_NONBLOCK $o_nonblock
11525 #ifndef errno  /* XXX need better Configure test */
11526 extern int errno;
11527 #endif
11528 #$i_unistd I_UNISTD
11529 #ifdef I_UNISTD
11530 #include <unistd.h>
11531 #endif
11532 #$i_string I_STRING
11533 #ifdef I_STRING
11534 #include <string.h>
11535 #else
11536 #include <strings.h>
11537 #endif
11538 $signal_t blech(x) int x; { exit(3); }
11539 EOCP
11540         $cat >> try.c <<'EOCP'
11541 int main()
11542 {
11543         int pd[2];
11544         int pu[2];
11545         char buf[1];
11546         char string[100];
11547
11548         pipe(pd);       /* Down: child -> parent */
11549         pipe(pu);       /* Up: parent -> child */
11550         if (0 != fork()) {
11551                 int ret;
11552                 close(pd[1]);   /* Parent reads from pd[0] */
11553                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11554 #ifdef F_SETFL
11555                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11556                         exit(1);
11557 #else
11558                 exit(4);
11559 #endif
11560                 signal(SIGALRM, blech);
11561                 alarm(5);
11562                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11563                         exit(2);
11564                 sprintf(string, "%d\n", ret);
11565                 write(2, string, strlen(string));
11566                 alarm(0);
11567 #ifdef EAGAIN
11568                 if (errno == EAGAIN) {
11569                         printf("EAGAIN\n");
11570                         goto ok;
11571                 }
11572 #endif
11573 #ifdef EWOULDBLOCK
11574                 if (errno == EWOULDBLOCK)
11575                         printf("EWOULDBLOCK\n");
11576 #endif
11577         ok:
11578                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11579                 sleep(2);                               /* Give it time to close our pipe */
11580                 alarm(5);
11581                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11582                 alarm(0);
11583                 sprintf(string, "%d\n", ret);
11584                 write(4, string, strlen(string));
11585                 exit(0);
11586         }
11587
11588         close(pd[0]);                   /* We write to pd[1] */
11589         close(pu[1]);                   /* We read from pu[0] */
11590         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11591         close(pd[1]);                   /* Pipe pd is now fully closed! */
11592         exit(0);                                /* Bye bye, thank you for playing! */
11593 }
11594 EOCP
11595         set try
11596         if eval $compile_ok; then
11597                 echo "$startsh" >mtry
11598                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11599                 chmod +x mtry
11600                 ./mtry >/dev/null 2>&1
11601                 case $? in
11602                 0) eagain=`$cat try.out`;;
11603                 1) echo "Could not perform non-blocking setting!";;
11604                 2) echo "I did a successful read() for something that was not there!";;
11605                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11606                 4) echo "Could not find F_SETFL!";;
11607                 *) echo "Something terribly wrong happened during testing.";;
11608                 esac
11609                 rd_nodata=`$cat try.ret`
11610                 echo "A read() system call with no data present returns $rd_nodata."
11611                 case "$rd_nodata" in
11612                 0|-1) ;;
11613                 *)
11614                         echo "(That's peculiar, fixing that to be -1.)"
11615                         rd_nodata=-1
11616                         ;;
11617                 esac
11618                 case "$eagain" in
11619                 '')
11620                         echo "Forcing errno EAGAIN on read() with no data available."
11621                         eagain=EAGAIN
11622                         ;;
11623                 *)
11624                         echo "Your read() sets errno to $eagain when no data is available."
11625                         ;;
11626                 esac
11627                 status=`$cat try.err`
11628                 case "$status" in
11629                 0) echo "And it correctly returns 0 to signal EOF.";;
11630                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11631                 *) echo "However, your read() returns '$status' on EOF??";;
11632                 esac
11633                 val="$define"
11634                 if test "$status" = "$rd_nodata"; then
11635                         echo "WARNING: you can't distinguish between EOF and no data!"
11636                         val="$undef"
11637                 fi
11638         else
11639                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11640                 eagain=EAGAIN
11641         fi
11642         set d_eofnblk
11643         eval $setvar
11644         ;;
11645 *)
11646         echo "Using $hint value $eagain."
11647         echo "Your read() returns $rd_nodata when no data is present."
11648         case "$d_eofnblk" in
11649         "$define") echo "And you can see EOF because read() returns 0.";;
11650         "$undef") echo "But you can't see EOF status from read() returned value.";;
11651         *)
11652                 echo "(Assuming you can't see EOF status from read anyway.)"
11653                 d_eofnblk=$undef
11654                 ;;
11655         esac
11656         ;;
11657 esac
11658 $rm -f try try.* .out core head.c mtry
11659
11660 : see if fchdir exists
11661 set fchdir d_fchdir
11662 eval $inlibc
11663
11664 : see if fchmod exists
11665 set fchmod d_fchmod
11666 eval $inlibc
11667
11668 : see if fchown exists
11669 set fchown d_fchown
11670 eval $inlibc
11671
11672 : see if this is an fcntl system
11673 set fcntl d_fcntl
11674 eval $inlibc
11675
11676 echo " "
11677 : See if fcntl-based locking works.
11678 $cat >try.c <<EOCP
11679 #$i_stdlib I_STDLIB
11680 #ifdef I_STDLIB
11681 #include <stdlib.h>
11682 #endif
11683 #include <unistd.h>
11684 #include <fcntl.h>
11685 #include <signal.h>
11686 $signal_t blech(x) int x; { exit(3); }
11687 int main() {
11688 #if defined(F_SETLK) && defined(F_SETLKW)
11689      struct flock flock;
11690      int retval, fd;
11691      fd = open("try.c", O_RDONLY);
11692      flock.l_type = F_RDLCK;
11693      flock.l_whence = SEEK_SET;
11694      flock.l_start = flock.l_len = 0;
11695      signal(SIGALRM, blech);
11696      alarm(10);
11697      retval = fcntl(fd, F_SETLK, &flock);
11698      close(fd);
11699      (retval < 0 ? exit(2) : exit(0));
11700 #else
11701      exit(2);
11702 #endif
11703 }
11704 EOCP
11705 echo "Checking if fcntl-based file locking works... "
11706 case "$d_fcntl" in
11707 "$define")
11708         set try
11709         if eval $compile_ok; then
11710                 if $run ./try; then
11711                         echo "Yes, it seems to work."
11712                         val="$define"
11713                 else
11714                         echo "Nope, it didn't work."
11715                         val="$undef"
11716                         case "$?" in
11717                         3) $cat >&4 <<EOM
11718 ***
11719 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11720 *** This is (almost) impossible.
11721 *** If your NFS lock daemons are not feeling well, something like
11722 *** this may happen, please investigate.  Cannot continue, aborting.
11723 ***
11724 EOM
11725                                 exit 1
11726                                 ;;
11727                         esac
11728                 fi
11729         else
11730                 echo "I'm unable to compile the test program, so I'll assume not."
11731                 val="$undef"
11732         fi
11733         ;;
11734 *) val="$undef";
11735         echo "Nope, since you don't even have fcntl()."
11736         ;;
11737 esac
11738 set d_fcntl_can_lock
11739 eval $setvar
11740 $rm -f try*
11741
11742
11743 : check for fd_set items
11744 $cat <<EOM
11745
11746 Checking to see how well your C compiler handles fd_set and friends ...
11747 EOM
11748 $cat >try.c <<EOCP
11749 #$i_stdlib I_STDLIB
11750 #ifdef I_STDLIB
11751 #include <stdlib.h>
11752 #endif
11753 #$i_systime I_SYS_TIME
11754 #$i_sysselct I_SYS_SELECT
11755 #$d_socket HAS_SOCKET
11756 #include <sys/types.h>
11757 #ifdef HAS_SOCKET
11758 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11759 #endif
11760 #ifdef I_SYS_TIME
11761 #include <sys/time.h>
11762 #endif
11763 #ifdef I_SYS_SELECT
11764 #include <sys/select.h>
11765 #endif
11766 int main() {
11767         fd_set fds;
11768
11769 #ifdef TRYBITS
11770         if(fds.fds_bits);
11771 #endif
11772
11773 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11774         exit(0);
11775 #else
11776         exit(1);
11777 #endif
11778 }
11779 EOCP
11780 set try -DTRYBITS
11781 if eval $compile; then
11782         d_fds_bits="$define"
11783         d_fd_set="$define"
11784         echo "Well, your system knows about the normal fd_set typedef..." >&4
11785         if $run ./try; then
11786                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11787                 d_fd_macros="$define"
11788         else
11789                 $cat >&4 <<'EOM'
11790 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11791 EOM
11792                 d_fd_macros="$undef"
11793         fi
11794 else
11795         $cat <<'EOM'
11796 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11797 EOM
11798         set try
11799         if eval $compile; then
11800                 d_fds_bits="$undef"
11801                 d_fd_set="$define"
11802                 echo "Well, your system has some sort of fd_set available..." >&4
11803                 if $run ./try; then
11804                         echo "and you have the normal fd_set macros." >&4
11805                         d_fd_macros="$define"
11806                 else
11807                         $cat <<'EOM'
11808 but not the normal fd_set macros!  Gross!  More work for me...
11809 EOM
11810                         d_fd_macros="$undef"
11811                 fi
11812         else
11813         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11814                 d_fd_set="$undef"
11815                 d_fds_bits="$undef"
11816                 d_fd_macros="$undef"
11817         fi
11818 fi
11819 $rm -f try try.*
11820
11821 : see if fgetpos exists
11822 set fgetpos d_fgetpos
11823 eval $inlibc
11824
11825 : see if finite exists
11826 set finite d_finite
11827 eval $inlibc
11828
11829 : see if finitel exists
11830 set finitel d_finitel
11831 eval $inlibc
11832
11833 : see if flock exists
11834 set flock d_flock
11835 eval $inlibc
11836
11837 : see if prototype for flock is available
11838 echo " "
11839 set d_flockproto flock $i_sysfile sys/file.h
11840 eval $hasproto
11841
11842 : see if fork exists
11843 set fork d_fork
11844 eval $inlibc
11845
11846 : see if fp_class exists
11847 set fp_class d_fp_class
11848 eval $inlibc
11849
11850 : see if pathconf exists
11851 set pathconf d_pathconf
11852 eval $inlibc
11853
11854 : see if fpathconf exists
11855 set fpathconf d_fpathconf
11856 eval $inlibc
11857
11858 : see if fpclass exists
11859 set fpclass d_fpclass
11860 eval $inlibc
11861
11862 : see if fpclassify exists
11863 set fpclassify d_fpclassify
11864 eval $inlibc
11865
11866 : see if fpclassl exists
11867 set fpclassl d_fpclassl
11868 eval $inlibc
11869
11870
11871 : check for fpos64_t
11872 echo " "
11873 echo "Checking to see if you have fpos64_t..." >&4
11874 $cat >try.c <<EOCP
11875 #include <stdio.h>
11876 int main() { fpos64_t x = 7; }
11877 EOCP
11878 set try
11879 if eval $compile; then
11880         val="$define"
11881         echo "You have fpos64_t."
11882 else
11883         val="$undef"
11884         echo "You do not have fpos64_t."
11885         case "$fpossize" in
11886         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11887         esac
11888 fi
11889 $rm -f try.* try
11890 set d_fpos64_t
11891 eval $setvar
11892
11893 : see if frexpl exists
11894 set frexpl d_frexpl
11895 eval $inlibc
11896
11897 : see if this is a sys/param system
11898 set sys/param.h i_sysparam
11899 eval $inhdr
11900
11901 : see if this is a sys/mount.h system
11902 set sys/mount.h i_sysmount
11903 eval $inhdr
11904
11905
11906 echo " "
11907 echo "Checking to see if your system supports struct fs_data..." >&4
11908 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11909 eval $hasstruct
11910 case "$d_fs_data_s" in
11911 "$define")      echo "Yes, it does."   ;;
11912 *)              echo "No, it doesn't." ;;
11913 esac
11914
11915 : see if fseeko exists
11916 set fseeko d_fseeko
11917 eval $inlibc
11918 case "$longsize" in
11919 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11920 esac
11921
11922 : see if fsetpos exists
11923 set fsetpos d_fsetpos
11924 eval $inlibc
11925
11926
11927 : see if fstatfs exists
11928 set fstatfs d_fstatfs
11929 eval $inlibc
11930
11931
11932 : see if statvfs exists
11933 set statvfs d_statvfs
11934 eval $inlibc
11935
11936 : see if fstatvfs exists
11937 set fstatvfs d_fstatvfs
11938 eval $inlibc
11939
11940
11941 : see if fsync exists
11942 set fsync d_fsync
11943 eval $inlibc
11944
11945 : see if ftello exists
11946 set ftello d_ftello
11947 eval $inlibc
11948 case "$longsize" in
11949 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11950 esac
11951
11952 : see if getcwd exists
11953 set getcwd d_getcwd
11954 eval $inlibc
11955
11956 : see if getespwnam exists
11957 set getespwnam d_getespwnam
11958 eval $inlibc
11959
11960
11961 : see if getfsstat exists
11962 set getfsstat d_getfsstat
11963 eval $inlibc
11964
11965 : see if getgrent exists
11966 set getgrent d_getgrent
11967 eval $inlibc
11968
11969 : see if getgrent_r exists
11970 set getgrent_r d_getgrent_r
11971 eval $inlibc
11972 case "$d_getgrent_r" in
11973 "$define")
11974         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11975         case "$d_getgrent_r_proto:$usethreads" in
11976         ":define")      d_getgrent_r_proto=define
11977                 set d_getgrent_r_proto getgrent_r $hdrs
11978                 eval $hasproto ;;
11979         *)      ;;
11980         esac
11981         case "$d_getgrent_r_proto" in
11982         define)
11983         case "$getgrent_r_proto" in
11984         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11985         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11986         esac
11987         case "$getgrent_r_proto" in
11988         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11989         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11990         esac
11991         case "$getgrent_r_proto" in
11992         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11993         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11994         esac
11995         case "$getgrent_r_proto" in
11996         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
11997         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
11998         esac
11999         case "$getgrent_r_proto" in
12000         ''|0) try='int getgrent_r(struct group*, char*, int);'
12001         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12002         esac
12003         case "$getgrent_r_proto" in
12004         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12005         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12006         esac
12007         case "$getgrent_r_proto" in
12008         ''|0)   d_getgrent_r=undef
12009                 getgrent_r_proto=0
12010                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12011         * )     case "$getgrent_r_proto" in
12012                 REENTRANT_PROTO*) ;;
12013                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12014                 esac
12015                 echo "Prototype: $try" ;;
12016         esac
12017         ;;
12018         *)      case "$usethreads" in
12019                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12020                 esac
12021                 d_getgrent_r=undef
12022                 getgrent_r_proto=0
12023                 ;;
12024         esac
12025         ;;
12026 *)      getgrent_r_proto=0
12027         ;;
12028 esac
12029
12030 : see if getgrgid_r exists
12031 set getgrgid_r d_getgrgid_r
12032 eval $inlibc
12033 case "$d_getgrgid_r" in
12034 "$define")
12035         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12036         case "$d_getgrgid_r_proto:$usethreads" in
12037         ":define")      d_getgrgid_r_proto=define
12038                 set d_getgrgid_r_proto getgrgid_r $hdrs
12039                 eval $hasproto ;;
12040         *)      ;;
12041         esac
12042         case "$d_getgrgid_r_proto" in
12043         define)
12044         case "$getgrgid_r_proto" in
12045         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12046         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12047         esac
12048         case "$getgrgid_r_proto" in
12049         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12050         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12051         esac
12052         case "$getgrgid_r_proto" in
12053         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12054         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12055         esac
12056         case "$getgrgid_r_proto" in
12057         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12058         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12059         esac
12060         case "$getgrgid_r_proto" in
12061         ''|0)   d_getgrgid_r=undef
12062                 getgrgid_r_proto=0
12063                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12064         * )     case "$getgrgid_r_proto" in
12065                 REENTRANT_PROTO*) ;;
12066                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12067                 esac
12068                 echo "Prototype: $try" ;;
12069         esac
12070         ;;
12071         *)      case "$usethreads" in
12072                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12073                 esac
12074                 d_getgrgid_r=undef
12075                 getgrgid_r_proto=0
12076                 ;;
12077         esac
12078         ;;
12079 *)      getgrgid_r_proto=0
12080         ;;
12081 esac
12082
12083 : see if getgrnam_r exists
12084 set getgrnam_r d_getgrnam_r
12085 eval $inlibc
12086 case "$d_getgrnam_r" in
12087 "$define")
12088         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12089         case "$d_getgrnam_r_proto:$usethreads" in
12090         ":define")      d_getgrnam_r_proto=define
12091                 set d_getgrnam_r_proto getgrnam_r $hdrs
12092                 eval $hasproto ;;
12093         *)      ;;
12094         esac
12095         case "$d_getgrnam_r_proto" in
12096         define)
12097         case "$getgrnam_r_proto" in
12098         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12099         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12100         esac
12101         case "$getgrnam_r_proto" in
12102         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12103         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12104         esac
12105         case "$getgrnam_r_proto" in
12106         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12107         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12108         esac
12109         case "$getgrnam_r_proto" in
12110         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12111         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12112         esac
12113         case "$getgrnam_r_proto" in
12114         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12115         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12116         esac
12117         case "$getgrnam_r_proto" in
12118         ''|0)   d_getgrnam_r=undef
12119                 getgrnam_r_proto=0
12120                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12121         * )     case "$getgrnam_r_proto" in
12122                 REENTRANT_PROTO*) ;;
12123                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12124                 esac
12125                 echo "Prototype: $try" ;;
12126         esac
12127         ;;
12128         *)      case "$usethreads" in
12129                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12130                 esac
12131                 d_getgrnam_r=undef
12132                 getgrnam_r_proto=0
12133                 ;;
12134         esac
12135         ;;
12136 *)      getgrnam_r_proto=0
12137         ;;
12138 esac
12139
12140 : see if gethostbyaddr exists
12141 set gethostbyaddr d_gethbyaddr
12142 eval $inlibc
12143
12144 : see if gethostbyname exists
12145 set gethostbyname d_gethbyname
12146 eval $inlibc
12147
12148 : see if gethostent exists
12149 set gethostent d_gethent
12150 eval $inlibc
12151
12152 : see how we will look up host name
12153 echo " "
12154 call=''
12155 if set gethostname val -f d_gethname; eval $csym; $val; then
12156         echo 'gethostname() found.' >&4
12157         d_gethname="$define"
12158         call=gethostname
12159 fi
12160 if set uname val -f d_uname; eval $csym; $val; then
12161         if ./xenix; then
12162                 $cat <<'EOM'
12163 uname() was found, but you're running xenix, and older versions of xenix
12164 have a broken uname(). If you don't really know whether your xenix is old
12165 enough to have a broken system call, use the default answer.
12166
12167 EOM
12168                 dflt=y
12169                 case "$d_uname" in
12170                 "$define") dflt=n;;
12171                 esac
12172                 rp='Is your uname() broken?'
12173                 . ./myread
12174                 case "$ans" in
12175                 n*) d_uname="$define"; call=uname;;
12176                 esac
12177         else
12178                 echo 'uname() found.' >&4
12179                 d_uname="$define"
12180                 case "$call" in
12181                 '') call=uname ;;
12182                 esac
12183         fi
12184 fi
12185 case "$d_gethname" in
12186 '') d_gethname="$undef";;
12187 esac
12188 case "$d_uname" in
12189 '') d_uname="$undef";;
12190 esac
12191 case "$d_uname$d_gethname" in
12192 *define*)
12193         dflt=n
12194         cat <<EOM
12195  
12196 Every now and then someone has a $call() that lies about the hostname
12197 but can't be fixed for political or economic reasons.  If you wish, I can
12198 pretend $call() isn't there and maybe compute hostname at run-time
12199 thanks to the '$phostname' command.
12200
12201 EOM
12202         rp="Shall I ignore $call() from now on?"
12203         . ./myread
12204         case "$ans" in
12205         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12206         esac;;
12207 esac
12208 case "$phostname" in
12209 '') aphostname='';;
12210 *) case "$aphostname" in
12211         /*) ;;
12212         *) set X $phostname
12213                 shift
12214                 file=$1
12215                 shift
12216                 file=`./loc $file $file $pth`
12217                 aphostname=`echo $file $*`
12218                 ;;
12219         esac
12220         ;;
12221 esac
12222 case "$d_uname$d_gethname" in
12223 *define*) ;;
12224 *)
12225         case "$phostname" in
12226         '')
12227                 echo "There will be no way for $package to get your hostname." >&4;;
12228         *)
12229         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12230                 ;;
12231         esac;;
12232 esac
12233 case "$d_phostname" in
12234 '') d_phostname="$undef";;
12235 esac
12236
12237 : see if gethostbyaddr_r exists
12238 set gethostbyaddr_r d_gethostbyaddr_r
12239 eval $inlibc
12240 case "$d_gethostbyaddr_r" in
12241 "$define")
12242         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12243         case "$d_gethostbyaddr_r_proto:$usethreads" in
12244         ":define")      d_gethostbyaddr_r_proto=define
12245                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12246                 eval $hasproto ;;
12247         *)      ;;
12248         esac
12249         case "$d_gethostbyaddr_r_proto" in
12250         define)
12251         case "$gethostbyaddr_r_proto" in
12252         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12253         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12254         esac
12255         case "$gethostbyaddr_r_proto" in
12256         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12257         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12258         esac
12259         case "$gethostbyaddr_r_proto" in
12260         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12261         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12262         esac
12263         case "$gethostbyaddr_r_proto" in
12264         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12265         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12266         esac
12267         case "$gethostbyaddr_r_proto" in
12268         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12269         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12270         esac
12271         case "$gethostbyaddr_r_proto" in
12272         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12273         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12274         esac
12275         case "$gethostbyaddr_r_proto" in
12276         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12277         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12278         esac
12279         case "$gethostbyaddr_r_proto" in
12280         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12281         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12282         esac
12283         case "$gethostbyaddr_r_proto" in
12284         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12285         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12286         esac
12287         case "$gethostbyaddr_r_proto" in
12288         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12289         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12290         esac
12291         case "$gethostbyaddr_r_proto" in
12292         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12293         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12294         esac
12295         case "$gethostbyaddr_r_proto" in
12296         ''|0)   d_gethostbyaddr_r=undef
12297                 gethostbyaddr_r_proto=0
12298                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12299         * )     case "$gethostbyaddr_r_proto" in
12300                 REENTRANT_PROTO*) ;;
12301                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12302                 esac
12303                 echo "Prototype: $try" ;;
12304         esac
12305         ;;
12306         *)      case "$usethreads" in
12307                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12308                 esac
12309                 d_gethostbyaddr_r=undef
12310                 gethostbyaddr_r_proto=0
12311                 ;;
12312         esac
12313         ;;
12314 *)      gethostbyaddr_r_proto=0
12315         ;;
12316 esac
12317
12318 : see if gethostbyname_r exists
12319 set gethostbyname_r d_gethostbyname_r
12320 eval $inlibc
12321 case "$d_gethostbyname_r" in
12322 "$define")
12323         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12324         case "$d_gethostbyname_r_proto:$usethreads" in
12325         ":define")      d_gethostbyname_r_proto=define
12326                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12327                 eval $hasproto ;;
12328         *)      ;;
12329         esac
12330         case "$d_gethostbyname_r_proto" in
12331         define)
12332         case "$gethostbyname_r_proto" in
12333         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12334         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12335         esac
12336         case "$gethostbyname_r_proto" in
12337         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12338         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12339         esac
12340         case "$gethostbyname_r_proto" in
12341         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12342         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12343         esac
12344         case "$gethostbyname_r_proto" in
12345         ''|0)   d_gethostbyname_r=undef
12346                 gethostbyname_r_proto=0
12347                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12348         * )     case "$gethostbyname_r_proto" in
12349                 REENTRANT_PROTO*) ;;
12350                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12351                 esac
12352                 echo "Prototype: $try" ;;
12353         esac
12354         ;;
12355         *)      case "$usethreads" in
12356                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12357                 esac
12358                 d_gethostbyname_r=undef
12359                 gethostbyname_r_proto=0
12360                 ;;
12361         esac
12362         ;;
12363 *)      gethostbyname_r_proto=0
12364         ;;
12365 esac
12366
12367 : see if gethostent_r exists
12368 set gethostent_r d_gethostent_r
12369 eval $inlibc
12370 case "$d_gethostent_r" in
12371 "$define")
12372         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12373         case "$d_gethostent_r_proto:$usethreads" in
12374         ":define")      d_gethostent_r_proto=define
12375                 set d_gethostent_r_proto gethostent_r $hdrs
12376                 eval $hasproto ;;
12377         *)      ;;
12378         esac
12379         case "$d_gethostent_r_proto" in
12380         define)
12381         case "$gethostent_r_proto" in
12382         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12383         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12384         esac
12385         case "$gethostent_r_proto" in
12386         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12387         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12388         esac
12389         case "$gethostent_r_proto" in
12390         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12391         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12392         esac
12393         case "$gethostent_r_proto" in
12394         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12395         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12396         esac
12397         case "$gethostent_r_proto" in
12398         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12399         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12400         esac
12401         case "$gethostent_r_proto" in
12402         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12403         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12404         esac
12405         case "$gethostent_r_proto" in
12406         ''|0)   d_gethostent_r=undef
12407                 gethostent_r_proto=0
12408                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12409         * )     case "$gethostent_r_proto" in
12410                 REENTRANT_PROTO*) ;;
12411                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12412                 esac
12413                 echo "Prototype: $try" ;;
12414         esac
12415         ;;
12416         *)      case "$usethreads" in
12417                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12418                 esac
12419                 d_gethostent_r=undef
12420                 gethostent_r_proto=0
12421                 ;;
12422         esac
12423         ;;
12424 *)      gethostent_r_proto=0
12425         ;;
12426 esac
12427
12428 : see if prototypes for various gethostxxx netdb.h functions are available
12429 echo " "
12430 set d_gethostprotos gethostent $i_netdb netdb.h
12431 eval $hasproto
12432
12433 : see if getitimer exists
12434 set getitimer d_getitimer
12435 eval $inlibc
12436
12437 : see if getlogin exists
12438 set getlogin d_getlogin
12439 eval $inlibc
12440
12441 : see if getlogin_r exists
12442 set getlogin_r d_getlogin_r
12443 eval $inlibc
12444 case "$d_getlogin_r" in
12445 "$define")
12446         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12447         case "$d_getlogin_r_proto:$usethreads" in
12448         ":define")      d_getlogin_r_proto=define
12449                 set d_getlogin_r_proto getlogin_r $hdrs
12450                 eval $hasproto ;;
12451         *)      ;;
12452         esac
12453         case "$d_getlogin_r_proto" in
12454         define)
12455         case "$getlogin_r_proto" in
12456         ''|0) try='int getlogin_r(char*, size_t);'
12457         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12458         esac
12459         case "$getlogin_r_proto" in
12460         ''|0) try='int getlogin_r(char*, int);'
12461         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12462         esac
12463         case "$getlogin_r_proto" in
12464         ''|0) try='char* getlogin_r(char*, size_t);'
12465         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12466         esac
12467         case "$getlogin_r_proto" in
12468         ''|0) try='char* getlogin_r(char*, int);'
12469         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12470         esac
12471         case "$getlogin_r_proto" in
12472         ''|0)   d_getlogin_r=undef
12473                 getlogin_r_proto=0
12474                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12475         * )     case "$getlogin_r_proto" in
12476                 REENTRANT_PROTO*) ;;
12477                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12478                 esac
12479                 echo "Prototype: $try" ;;
12480         esac
12481         ;;
12482         *)      case "$usethreads" in
12483                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12484                 esac
12485                 d_getlogin_r=undef
12486                 getlogin_r_proto=0
12487                 ;;
12488         esac
12489         ;;
12490 *)      getlogin_r_proto=0
12491         ;;
12492 esac
12493
12494 : see if getmnt exists
12495 set getmnt d_getmnt
12496 eval $inlibc
12497
12498 : see if getmntent exists
12499 set getmntent d_getmntent
12500 eval $inlibc
12501
12502 : see if getnetbyaddr exists
12503 set getnetbyaddr d_getnbyaddr
12504 eval $inlibc
12505
12506 : see if getnetbyname exists
12507 set getnetbyname d_getnbyname
12508 eval $inlibc
12509
12510 : see if getnetent exists
12511 set getnetent d_getnent
12512 eval $inlibc
12513
12514 : see if getnetbyaddr_r exists
12515 set getnetbyaddr_r d_getnetbyaddr_r
12516 eval $inlibc
12517 case "$d_getnetbyaddr_r" in
12518 "$define")
12519         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12520         case "$d_getnetbyaddr_r_proto:$usethreads" in
12521         ":define")      d_getnetbyaddr_r_proto=define
12522                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12523                 eval $hasproto ;;
12524         *)      ;;
12525         esac
12526         case "$d_getnetbyaddr_r_proto" in
12527         define)
12528         case "$getnetbyaddr_r_proto" in
12529         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12530         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12531         esac
12532         case "$getnetbyaddr_r_proto" in
12533         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12534         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12535         esac
12536         case "$getnetbyaddr_r_proto" in
12537         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12538         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12539         esac
12540         case "$getnetbyaddr_r_proto" in
12541         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12542         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12543         esac
12544         case "$getnetbyaddr_r_proto" in
12545         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12546         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12547         esac
12548         case "$getnetbyaddr_r_proto" in
12549         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12550         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12551         esac
12552         case "$getnetbyaddr_r_proto" in
12553         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12554         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12555         esac
12556         case "$getnetbyaddr_r_proto" in
12557         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12558         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12559         esac
12560         case "$getnetbyaddr_r_proto" in
12561         ''|0)   d_getnetbyaddr_r=undef
12562                 getnetbyaddr_r_proto=0
12563                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12564         * )     case "$getnetbyaddr_r_proto" in
12565                 REENTRANT_PROTO*) ;;
12566                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12567                 esac
12568                 echo "Prototype: $try" ;;
12569         esac
12570         ;;
12571         *)      case "$usethreads" in
12572                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12573                 esac
12574                 d_getnetbyaddr_r=undef
12575                 getnetbyaddr_r_proto=0
12576                 ;;
12577         esac
12578         ;;
12579 *)      getnetbyaddr_r_proto=0
12580         ;;
12581 esac
12582
12583 : see if getnetbyname_r exists
12584 set getnetbyname_r d_getnetbyname_r
12585 eval $inlibc
12586 case "$d_getnetbyname_r" in
12587 "$define")
12588         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12589         case "$d_getnetbyname_r_proto:$usethreads" in
12590         ":define")      d_getnetbyname_r_proto=define
12591                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12592                 eval $hasproto ;;
12593         *)      ;;
12594         esac
12595         case "$d_getnetbyname_r_proto" in
12596         define)
12597         case "$getnetbyname_r_proto" in
12598         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12599         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12600         esac
12601         case "$getnetbyname_r_proto" in
12602         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12603         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12604         esac
12605         case "$getnetbyname_r_proto" in
12606         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12607         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12608         esac
12609         case "$getnetbyname_r_proto" in
12610         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12611         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12612         esac
12613         case "$getnetbyname_r_proto" in
12614         ''|0)   d_getnetbyname_r=undef
12615                 getnetbyname_r_proto=0
12616                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12617         * )     case "$getnetbyname_r_proto" in
12618                 REENTRANT_PROTO*) ;;
12619                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12620                 esac
12621                 echo "Prototype: $try" ;;
12622         esac
12623         ;;
12624         *)      case "$usethreads" in
12625                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12626                 esac
12627                 d_getnetbyname_r=undef
12628                 getnetbyname_r_proto=0
12629                 ;;
12630         esac
12631         ;;
12632 *)      getnetbyname_r_proto=0
12633         ;;
12634 esac
12635
12636 : see if getnetent_r exists
12637 set getnetent_r d_getnetent_r
12638 eval $inlibc
12639 case "$d_getnetent_r" in
12640 "$define")
12641         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12642         case "$d_getnetent_r_proto:$usethreads" in
12643         ":define")      d_getnetent_r_proto=define
12644                 set d_getnetent_r_proto getnetent_r $hdrs
12645                 eval $hasproto ;;
12646         *)      ;;
12647         esac
12648         case "$d_getnetent_r_proto" in
12649         define)
12650         case "$getnetent_r_proto" in
12651         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12652         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12653         esac
12654         case "$getnetent_r_proto" in
12655         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12656         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12657         esac
12658         case "$getnetent_r_proto" in
12659         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12660         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12661         esac
12662         case "$getnetent_r_proto" in
12663         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12664         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12665         esac
12666         case "$getnetent_r_proto" in
12667         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12668         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12669         esac
12670         case "$getnetent_r_proto" in
12671         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12672         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12673         esac
12674         case "$getnetent_r_proto" in
12675         ''|0)   d_getnetent_r=undef
12676                 getnetent_r_proto=0
12677                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12678         * )     case "$getnetent_r_proto" in
12679                 REENTRANT_PROTO*) ;;
12680                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12681                 esac
12682                 echo "Prototype: $try" ;;
12683         esac
12684         ;;
12685         *)      case "$usethreads" in
12686                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12687                 esac
12688                 d_getnetent_r=undef
12689                 getnetent_r_proto=0
12690                 ;;
12691         esac
12692         ;;
12693 *)      getnetent_r_proto=0
12694         ;;
12695 esac
12696
12697 : see if prototypes for various getnetxxx netdb.h functions are available
12698 echo " "
12699 set d_getnetprotos getnetent $i_netdb netdb.h
12700 eval $hasproto
12701
12702 : see if getpagesize exists
12703 set getpagesize d_getpagsz
12704 eval $inlibc
12705
12706
12707 : see if getprotobyname exists
12708 set getprotobyname d_getpbyname
12709 eval $inlibc
12710
12711 : see if getprotobynumber exists
12712 set getprotobynumber d_getpbynumber
12713 eval $inlibc
12714
12715 : see if getprotoent exists
12716 set getprotoent d_getpent
12717 eval $inlibc
12718
12719 : see if getpgid exists
12720 set getpgid d_getpgid
12721 eval $inlibc
12722
12723 : see if getpgrp2 exists
12724 set getpgrp2 d_getpgrp2
12725 eval $inlibc
12726
12727 : see if getppid exists
12728 set getppid d_getppid
12729 eval $inlibc
12730
12731 : see if getpriority exists
12732 set getpriority d_getprior
12733 eval $inlibc
12734
12735 : see if getprotobyname_r exists
12736 set getprotobyname_r d_getprotobyname_r
12737 eval $inlibc
12738 case "$d_getprotobyname_r" in
12739 "$define")
12740         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12741         case "$d_getprotobyname_r_proto:$usethreads" in
12742         ":define")      d_getprotobyname_r_proto=define
12743                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12744                 eval $hasproto ;;
12745         *)      ;;
12746         esac
12747         case "$d_getprotobyname_r_proto" in
12748         define)
12749         case "$getprotobyname_r_proto" in
12750         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12751         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12752         esac
12753         case "$getprotobyname_r_proto" in
12754         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12755         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12756         esac
12757         case "$getprotobyname_r_proto" in
12758         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12759         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12760         esac
12761         case "$getprotobyname_r_proto" in
12762         ''|0)   d_getprotobyname_r=undef
12763                 getprotobyname_r_proto=0
12764                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12765         * )     case "$getprotobyname_r_proto" in
12766                 REENTRANT_PROTO*) ;;
12767                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12768                 esac
12769                 echo "Prototype: $try" ;;
12770         esac
12771         ;;
12772         *)      case "$usethreads" in
12773                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12774                 esac
12775                 d_getprotobyname_r=undef
12776                 getprotobyname_r_proto=0
12777                 ;;
12778         esac
12779         ;;
12780 *)      getprotobyname_r_proto=0
12781         ;;
12782 esac
12783
12784 : see if getprotobynumber_r exists
12785 set getprotobynumber_r d_getprotobynumber_r
12786 eval $inlibc
12787 case "$d_getprotobynumber_r" in
12788 "$define")
12789         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12790         case "$d_getprotobynumber_r_proto:$usethreads" in
12791         ":define")      d_getprotobynumber_r_proto=define
12792                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12793                 eval $hasproto ;;
12794         *)      ;;
12795         esac
12796         case "$d_getprotobynumber_r_proto" in
12797         define)
12798         case "$getprotobynumber_r_proto" in
12799         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12800         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12801         esac
12802         case "$getprotobynumber_r_proto" in
12803         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12804         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12805         esac
12806         case "$getprotobynumber_r_proto" in
12807         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12808         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12809         esac
12810         case "$getprotobynumber_r_proto" in
12811         ''|0)   d_getprotobynumber_r=undef
12812                 getprotobynumber_r_proto=0
12813                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12814         * )     case "$getprotobynumber_r_proto" in
12815                 REENTRANT_PROTO*) ;;
12816                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12817                 esac
12818                 echo "Prototype: $try" ;;
12819         esac
12820         ;;
12821         *)      case "$usethreads" in
12822                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12823                 esac
12824                 d_getprotobynumber_r=undef
12825                 getprotobynumber_r_proto=0
12826                 ;;
12827         esac
12828         ;;
12829 *)      getprotobynumber_r_proto=0
12830         ;;
12831 esac
12832
12833 : see if getprotoent_r exists
12834 set getprotoent_r d_getprotoent_r
12835 eval $inlibc
12836 case "$d_getprotoent_r" in
12837 "$define")
12838         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12839         case "$d_getprotoent_r_proto:$usethreads" in
12840         ":define")      d_getprotoent_r_proto=define
12841                 set d_getprotoent_r_proto getprotoent_r $hdrs
12842                 eval $hasproto ;;
12843         *)      ;;
12844         esac
12845         case "$d_getprotoent_r_proto" in
12846         define)
12847         case "$getprotoent_r_proto" in
12848         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12849         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12850         esac
12851         case "$getprotoent_r_proto" in
12852         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12853         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12854         esac
12855         case "$getprotoent_r_proto" in
12856         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12857         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12858         esac
12859         case "$getprotoent_r_proto" in
12860         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12861         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12862         esac
12863         case "$getprotoent_r_proto" in
12864         ''|0)   d_getprotoent_r=undef
12865                 getprotoent_r_proto=0
12866                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12867         * )     case "$getprotoent_r_proto" in
12868                 REENTRANT_PROTO*) ;;
12869                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12870                 esac
12871                 echo "Prototype: $try" ;;
12872         esac
12873         ;;
12874         *)      case "$usethreads" in
12875                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12876                 esac
12877                 d_getprotoent_r=undef
12878                 getprotoent_r_proto=0
12879                 ;;
12880         esac
12881         ;;
12882 *)      getprotoent_r_proto=0
12883         ;;
12884 esac
12885
12886 : see if prototypes for various getprotoxxx netdb.h functions are available
12887 echo " "
12888 set d_getprotoprotos getprotoent $i_netdb netdb.h
12889 eval $hasproto
12890
12891 : see if getprpwnam exists
12892 set getprpwnam d_getprpwnam
12893 eval $inlibc
12894
12895 : see if getpwent exists
12896 set getpwent d_getpwent
12897 eval $inlibc
12898
12899 : see if getpwent_r exists
12900 set getpwent_r d_getpwent_r
12901 eval $inlibc
12902 case "$d_getpwent_r" in
12903 "$define")
12904         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12905         case "$d_getpwent_r_proto:$usethreads" in
12906         ":define")      d_getpwent_r_proto=define
12907                 set d_getpwent_r_proto getpwent_r $hdrs
12908                 eval $hasproto ;;
12909         *)      ;;
12910         esac
12911         case "$d_getpwent_r_proto" in
12912         define)
12913         case "$getpwent_r_proto" in
12914         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12915         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12916         esac
12917         case "$getpwent_r_proto" in
12918         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12919         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12920         esac
12921         case "$getpwent_r_proto" in
12922         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12923         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12924         esac
12925         case "$getpwent_r_proto" in
12926         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12927         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12928         esac
12929         case "$getpwent_r_proto" in
12930         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12931         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12932         esac
12933         case "$getpwent_r_proto" in
12934         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12935         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12936         esac
12937         case "$getpwent_r_proto" in
12938         ''|0)   d_getpwent_r=undef
12939                 getpwent_r_proto=0
12940                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
12941         * )     case "$getpwent_r_proto" in
12942                 REENTRANT_PROTO*) ;;
12943                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12944                 esac
12945                 echo "Prototype: $try" ;;
12946         esac
12947         ;;
12948         *)      case "$usethreads" in
12949                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12950                 esac
12951                 d_getpwent_r=undef
12952                 getpwent_r_proto=0
12953                 ;;
12954         esac
12955         ;;
12956 *)      getpwent_r_proto=0
12957         ;;
12958 esac
12959
12960 : see if getpwnam_r exists
12961 set getpwnam_r d_getpwnam_r
12962 eval $inlibc
12963 case "$d_getpwnam_r" in
12964 "$define")
12965         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12966         case "$d_getpwnam_r_proto:$usethreads" in
12967         ":define")      d_getpwnam_r_proto=define
12968                 set d_getpwnam_r_proto getpwnam_r $hdrs
12969                 eval $hasproto ;;
12970         *)      ;;
12971         esac
12972         case "$d_getpwnam_r_proto" in
12973         define)
12974         case "$getpwnam_r_proto" in
12975         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12976         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12977         esac
12978         case "$getpwnam_r_proto" in
12979         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12980         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12981         esac
12982         case "$getpwnam_r_proto" in
12983         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12984         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12985         esac
12986         case "$getpwnam_r_proto" in
12987         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12988         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12989         esac
12990         case "$getpwnam_r_proto" in
12991         ''|0)   d_getpwnam_r=undef
12992                 getpwnam_r_proto=0
12993                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
12994         * )     case "$getpwnam_r_proto" in
12995                 REENTRANT_PROTO*) ;;
12996                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
12997                 esac
12998                 echo "Prototype: $try" ;;
12999         esac
13000         ;;
13001         *)      case "$usethreads" in
13002                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13003                 esac
13004                 d_getpwnam_r=undef
13005                 getpwnam_r_proto=0
13006                 ;;
13007         esac
13008         ;;
13009 *)      getpwnam_r_proto=0
13010         ;;
13011 esac
13012
13013 : see if getpwuid_r exists
13014 set getpwuid_r d_getpwuid_r
13015 eval $inlibc
13016 case "$d_getpwuid_r" in
13017 "$define")
13018         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13019         case "$d_getpwuid_r_proto:$usethreads" in
13020         ":define")      d_getpwuid_r_proto=define
13021                 set d_getpwuid_r_proto getpwuid_r $hdrs
13022                 eval $hasproto ;;
13023         *)      ;;
13024         esac
13025         case "$d_getpwuid_r_proto" in
13026         define)
13027         case "$getpwuid_r_proto" in
13028         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13029         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13030         esac
13031         case "$getpwuid_r_proto" in
13032         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13033         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13034         esac
13035         case "$getpwuid_r_proto" in
13036         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13037         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13038         esac
13039         case "$getpwuid_r_proto" in
13040         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13041         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13042         esac
13043         case "$getpwuid_r_proto" in
13044         ''|0)   d_getpwuid_r=undef
13045                 getpwuid_r_proto=0
13046                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13047         * )     case "$getpwuid_r_proto" in
13048                 REENTRANT_PROTO*) ;;
13049                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13050                 esac
13051                 echo "Prototype: $try" ;;
13052         esac
13053         ;;
13054         *)      case "$usethreads" in
13055                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13056                 esac
13057                 d_getpwuid_r=undef
13058                 getpwuid_r_proto=0
13059                 ;;
13060         esac
13061         ;;
13062 *)      getpwuid_r_proto=0
13063         ;;
13064 esac
13065
13066
13067 : see if getservbyname exists
13068 set getservbyname d_getsbyname
13069 eval $inlibc
13070
13071 : see if getservbyport exists
13072 set getservbyport d_getsbyport
13073 eval $inlibc
13074
13075 : see if getservent exists
13076 set getservent d_getsent
13077 eval $inlibc
13078
13079 : see if getservbyname_r exists
13080 set getservbyname_r d_getservbyname_r
13081 eval $inlibc
13082 case "$d_getservbyname_r" in
13083 "$define")
13084         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13085         case "$d_getservbyname_r_proto:$usethreads" in
13086         ":define")      d_getservbyname_r_proto=define
13087                 set d_getservbyname_r_proto getservbyname_r $hdrs
13088                 eval $hasproto ;;
13089         *)      ;;
13090         esac
13091         case "$d_getservbyname_r_proto" in
13092         define)
13093         case "$getservbyname_r_proto" in
13094         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13095         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13096         esac
13097         case "$getservbyname_r_proto" in
13098         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13099         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13100         esac
13101         case "$getservbyname_r_proto" in
13102         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13103         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13104         esac
13105         case "$getservbyname_r_proto" in
13106         ''|0)   d_getservbyname_r=undef
13107                 getservbyname_r_proto=0
13108                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13109         * )     case "$getservbyname_r_proto" in
13110                 REENTRANT_PROTO*) ;;
13111                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13112                 esac
13113                 echo "Prototype: $try" ;;
13114         esac
13115         ;;
13116         *)      case "$usethreads" in
13117                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13118                 esac
13119                 d_getservbyname_r=undef
13120                 getservbyname_r_proto=0
13121                 ;;
13122         esac
13123         ;;
13124 *)      getservbyname_r_proto=0
13125         ;;
13126 esac
13127
13128 : see if getservbyport_r exists
13129 set getservbyport_r d_getservbyport_r
13130 eval $inlibc
13131 case "$d_getservbyport_r" in
13132 "$define")
13133         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13134         case "$d_getservbyport_r_proto:$usethreads" in
13135         ":define")      d_getservbyport_r_proto=define
13136                 set d_getservbyport_r_proto getservbyport_r $hdrs
13137                 eval $hasproto ;;
13138         *)      ;;
13139         esac
13140         case "$d_getservbyport_r_proto" in
13141         define)
13142         case "$getservbyport_r_proto" in
13143         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13144         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13145         esac
13146         case "$getservbyport_r_proto" in
13147         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13148         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13149         esac
13150         case "$getservbyport_r_proto" in
13151         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13152         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13153         esac
13154         case "$getservbyport_r_proto" in
13155         ''|0)   d_getservbyport_r=undef
13156                 getservbyport_r_proto=0
13157                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13158         * )     case "$getservbyport_r_proto" in
13159                 REENTRANT_PROTO*) ;;
13160                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13161                 esac
13162                 echo "Prototype: $try" ;;
13163         esac
13164         ;;
13165         *)      case "$usethreads" in
13166                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13167                 esac
13168                 d_getservbyport_r=undef
13169                 getservbyport_r_proto=0
13170                 ;;
13171         esac
13172         ;;
13173 *)      getservbyport_r_proto=0
13174         ;;
13175 esac
13176
13177 : see if getservent_r exists
13178 set getservent_r d_getservent_r
13179 eval $inlibc
13180 case "$d_getservent_r" in
13181 "$define")
13182         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13183         case "$d_getservent_r_proto:$usethreads" in
13184         ":define")      d_getservent_r_proto=define
13185                 set d_getservent_r_proto getservent_r $hdrs
13186                 eval $hasproto ;;
13187         *)      ;;
13188         esac
13189         case "$d_getservent_r_proto" in
13190         define)
13191         case "$getservent_r_proto" in
13192         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13193         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13194         esac
13195         case "$getservent_r_proto" in
13196         ''|0) try='int getservent_r(struct servent*, char*, int);'
13197         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13198         esac
13199         case "$getservent_r_proto" in
13200         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13201         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13202         esac
13203         case "$getservent_r_proto" in
13204         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13205         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13206         esac
13207         case "$getservent_r_proto" in
13208         ''|0)   d_getservent_r=undef
13209                 getservent_r_proto=0
13210                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13211         * )     case "$getservent_r_proto" in
13212                 REENTRANT_PROTO*) ;;
13213                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13214                 esac
13215                 echo "Prototype: $try" ;;
13216         esac
13217         ;;
13218         *)      case "$usethreads" in
13219                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13220                 esac
13221                 d_getservent_r=undef
13222                 getservent_r_proto=0
13223                 ;;
13224         esac
13225         ;;
13226 *)      getservent_r_proto=0
13227         ;;
13228 esac
13229
13230 : see if prototypes for various getservxxx netdb.h functions are available
13231 echo " "
13232 set d_getservprotos getservent $i_netdb netdb.h
13233 eval $hasproto
13234
13235 : see if getspnam exists
13236 set getspnam d_getspnam
13237 eval $inlibc
13238
13239 : see if this is a shadow.h system
13240 set shadow.h i_shadow
13241 eval $inhdr
13242
13243 : see if getspnam_r exists
13244 set getspnam_r d_getspnam_r
13245 eval $inlibc
13246 case "$d_getspnam_r" in
13247 "$define")
13248         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13249         case "$d_getspnam_r_proto:$usethreads" in
13250         ":define")      d_getspnam_r_proto=define
13251                 set d_getspnam_r_proto getspnam_r $hdrs
13252                 eval $hasproto ;;
13253         *)      ;;
13254         esac
13255         case "$d_getspnam_r_proto" in
13256         define)
13257         case "$getspnam_r_proto" in
13258         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13259         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13260         esac
13261         case "$getspnam_r_proto" in
13262         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13263         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13264         esac
13265         case "$getspnam_r_proto" in
13266         ''|0)   d_getspnam_r=undef
13267                 getspnam_r_proto=0
13268                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13269         * )     case "$getspnam_r_proto" in
13270                 REENTRANT_PROTO*) ;;
13271                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13272                 esac
13273                 echo "Prototype: $try" ;;
13274         esac
13275         ;;
13276         *)      case "$usethreads" in
13277                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13278                 esac
13279                 d_getspnam_r=undef
13280                 getspnam_r_proto=0
13281                 ;;
13282         esac
13283         ;;
13284 *)      getspnam_r_proto=0
13285         ;;
13286 esac
13287
13288 : see if gettimeofday or ftime exists
13289 set gettimeofday d_gettimeod
13290 eval $inlibc
13291 case "$d_gettimeod" in
13292 "$undef")
13293         set ftime d_ftime 
13294         eval $inlibc
13295         ;;
13296 *)
13297         val="$undef"; set d_ftime; eval $setvar
13298         ;;
13299 esac
13300 case "$d_gettimeod$d_ftime" in
13301 "$undef$undef")
13302         echo " "
13303         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13304         ;;
13305 esac
13306
13307 : see if gmtime_r exists
13308 set gmtime_r d_gmtime_r
13309 eval $inlibc
13310 case "$d_gmtime_r" in
13311 "$define")
13312         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13313         case "$d_gmtime_r_proto:$usethreads" in
13314         ":define")      d_gmtime_r_proto=define
13315                 set d_gmtime_r_proto gmtime_r $hdrs
13316                 eval $hasproto ;;
13317         *)      ;;
13318         esac
13319         case "$d_gmtime_r_proto" in
13320         define)
13321         case "$gmtime_r_proto" in
13322         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13323         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13324         esac
13325         case "$gmtime_r_proto" in
13326         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13327         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13328         esac
13329         case "$gmtime_r_proto" in
13330         ''|0)   d_gmtime_r=undef
13331                 gmtime_r_proto=0
13332                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13333         * )     case "$gmtime_r_proto" in
13334                 REENTRANT_PROTO*) ;;
13335                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13336                 esac
13337                 echo "Prototype: $try" ;;
13338         esac
13339         ;;
13340         *)      case "$usethreads" in
13341                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13342                 esac
13343                 d_gmtime_r=undef
13344                 gmtime_r_proto=0
13345                 ;;
13346         esac
13347         ;;
13348 *)      gmtime_r_proto=0
13349         ;;
13350 esac
13351
13352 : see if hasmntopt exists
13353 set hasmntopt d_hasmntopt
13354 eval $inlibc
13355
13356 : see if this is a netinet/in.h or sys/in.h system
13357 set netinet/in.h i_niin sys/in.h i_sysin
13358 eval $inhdr
13359
13360 : see if arpa/inet.h has to be included
13361 set arpa/inet.h i_arpainet
13362 eval $inhdr
13363
13364 : see if htonl --and friends-- exists
13365 val=''
13366 set htonl val
13367 eval $inlibc
13368
13369 : Maybe they are macros.
13370 case "$val" in
13371 $undef)
13372         $cat >htonl.c <<EOM
13373 #include <stdio.h>
13374 #include <sys/types.h>
13375 #$i_niin I_NETINET_IN
13376 #$i_sysin I_SYS_IN
13377 #$i_arpainet I_ARPA_INET
13378 #ifdef I_NETINET_IN
13379 #include <netinet/in.h>
13380 #endif
13381 #ifdef I_SYS_IN
13382 #include <sys/in.h>
13383 #endif
13384 #ifdef I_ARPA_INET
13385 #include <arpa/inet.h>
13386 #endif
13387 #ifdef htonl
13388 printf("Defined as a macro.");
13389 #endif
13390 EOM
13391         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13392         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13393                 val="$define"
13394                 echo "But it seems to be defined as a macro." >&4
13395         fi
13396         $rm -f htonl.?
13397         ;;
13398 esac
13399 set d_htonl
13400 eval $setvar
13401
13402 : see if ilogbl exists
13403 set ilogbl d_ilogbl
13404 eval $inlibc
13405
13406 : index or strchr
13407 echo " "
13408 if set index val -f; eval $csym; $val; then
13409         if set strchr val -f d_strchr; eval $csym; $val; then
13410                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13411                         val="$define"
13412                         vali="$undef"
13413                         echo "strchr() found." >&4
13414                 else
13415                         val="$undef"
13416                         vali="$define"
13417                         echo "index() found." >&4
13418                 fi
13419         else
13420                 val="$undef"
13421                 vali="$define"
13422                 echo "index() found." >&4
13423         fi
13424 else
13425         if set strchr val -f d_strchr; eval $csym; $val; then
13426                 val="$define"
13427                 vali="$undef"
13428                 echo "strchr() found." >&4
13429         else
13430                 echo "No index() or strchr() found!" >&4
13431                 val="$undef"
13432                 vali="$undef"
13433         fi
13434 fi
13435 set d_strchr; eval $setvar
13436 val="$vali"
13437 set d_index; eval $setvar
13438
13439 : check whether inet_aton exists
13440 set inet_aton d_inetaton
13441 eval $inlibc
13442
13443 : Look for isascii
13444 echo " "
13445 $cat >isascii.c <<EOCP
13446 #include <stdio.h>
13447 #include <ctype.h>
13448 #$i_stdlib I_STDLIB
13449 #ifdef I_STDLIB
13450 #include <stdlib.h>
13451 #endif
13452 int main() {
13453         int c = 'A';
13454         if (isascii(c))
13455                 exit(0);
13456         else
13457                 exit(1);
13458 }
13459 EOCP
13460 set isascii
13461 if eval $compile; then
13462         echo "isascii() found." >&4
13463         val="$define"
13464 else
13465         echo "isascii() NOT found." >&4
13466         val="$undef"
13467 fi
13468 set d_isascii
13469 eval $setvar
13470 $rm -f isascii*
13471
13472 : see if isfinite exists
13473 set isfinite d_isfinite
13474 eval $inlibc
13475
13476 : see if isinf exists
13477 set isinf d_isinf
13478 eval $inlibc
13479
13480 : see if isnan exists
13481 set isnan d_isnan
13482 eval $inlibc
13483
13484 : see if isnanl exists
13485 set isnanl d_isnanl
13486 eval $inlibc
13487
13488 : see if killpg exists
13489 set killpg d_killpg
13490 eval $inlibc
13491
13492 : see if lchown exists
13493 echo " "
13494 $cat > try.c <<'EOCP'
13495 /* System header to define __stub macros and hopefully few prototypes,
13496     which can conflict with char lchown(); below.  */
13497 #include <assert.h>
13498 /* Override any gcc2 internal prototype to avoid an error.  */
13499 /* We use char because int might match the return type of a gcc2
13500    builtin and then its argument prototype would still apply.  */
13501 char lchown();
13502 int main() {
13503     /*  The GNU C library defines this for functions which it implements
13504         to always fail with ENOSYS.  Some functions are actually named
13505         something starting with __ and the normal name is an alias.  */
13506 #if defined (__stub_lchown) || defined (__stub___lchown)
13507 choke me
13508 #else
13509 lchown();
13510 #endif
13511 ; return 0; }
13512 EOCP
13513 set try
13514 if eval $compile; then
13515     $echo "lchown() found." >&4
13516     val="$define"
13517 else
13518     $echo "lchown() NOT found." >&4
13519     val="$undef"
13520 fi
13521 set d_lchown
13522 eval $setvar
13523
13524 : See if number of significant digits in a double precision number is known
13525 echo " "
13526 $cat >ldbl_dig.c <<EOM
13527 #$i_limits I_LIMITS
13528 #$i_float I_FLOAT
13529 #ifdef I_LIMITS
13530 #include <limits.h>
13531 #endif
13532 #ifdef I_FLOAT
13533 #include <float.h>
13534 #endif
13535 #ifdef LDBL_DIG
13536 printf("Contains LDBL_DIG");
13537 #endif
13538 EOM
13539 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13540 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13541         echo "LDBL_DIG found." >&4
13542         val="$define"
13543 else
13544         echo "LDBL_DIG NOT found." >&4
13545         val="$undef"
13546 fi
13547 $rm -f ldbl_dig.?
13548 set d_ldbl_dig
13549 eval $setvar
13550
13551 : see if link exists
13552 set link d_link
13553 eval $inlibc
13554
13555 : see if localtime_r exists
13556 set localtime_r d_localtime_r
13557 eval $inlibc
13558 case "$d_localtime_r" in
13559 "$define")
13560         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13561         case "$d_localtime_r_proto:$usethreads" in
13562         ":define")      d_localtime_r_proto=define
13563                 set d_localtime_r_proto localtime_r $hdrs
13564                 eval $hasproto ;;
13565         *)      ;;
13566         esac
13567         case "$d_localtime_r_proto" in
13568         define)
13569         case "$localtime_r_proto" in
13570         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13571         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13572         esac
13573         case "$localtime_r_proto" in
13574         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13575         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13576         esac
13577         case "$localtime_r_proto" in
13578         ''|0)   d_localtime_r=undef
13579                 localtime_r_proto=0
13580                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13581         * )     case "$localtime_r_proto" in
13582                 REENTRANT_PROTO*) ;;
13583                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13584                 esac
13585                 echo "Prototype: $try" ;;
13586         esac
13587         ;;
13588         *)      case "$usethreads" in
13589                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13590                 esac
13591                 d_localtime_r=undef
13592                 localtime_r_proto=0
13593                 ;;
13594         esac
13595         ;;
13596 *)      localtime_r_proto=0
13597         ;;
13598 esac
13599
13600 : see if localeconv exists
13601 set localeconv d_locconv
13602 eval $inlibc
13603
13604 : see if lockf exists
13605 set lockf d_lockf
13606 eval $inlibc
13607
13608 : see if prototype for lseek is available
13609 echo " "
13610 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13611 eval $hasproto
13612
13613 : see if lstat exists
13614 set lstat d_lstat
13615 eval $inlibc
13616
13617 : see if madvise exists
13618 set madvise d_madvise
13619 eval $inlibc
13620
13621 : see if mblen exists
13622 set mblen d_mblen
13623 eval $inlibc
13624
13625 : see if mbstowcs exists
13626 set mbstowcs d_mbstowcs
13627 eval $inlibc
13628
13629 : see if mbtowc exists
13630 set mbtowc d_mbtowc
13631 eval $inlibc
13632
13633 : see if memchr exists
13634 set memchr d_memchr
13635 eval $inlibc
13636
13637 : see if memcmp exists
13638 set memcmp d_memcmp
13639 eval $inlibc
13640
13641 : see if memcpy exists
13642 set memcpy d_memcpy
13643 eval $inlibc
13644
13645 : see if memmove exists
13646 set memmove d_memmove
13647 eval $inlibc
13648
13649 : see if memset exists
13650 set memset d_memset
13651 eval $inlibc
13652
13653 : see if mkdir exists
13654 set mkdir d_mkdir
13655 eval $inlibc
13656
13657 : see if mkdtemp exists
13658 set mkdtemp d_mkdtemp
13659 eval $inlibc
13660
13661 : see if mkfifo exists
13662 set mkfifo d_mkfifo
13663 eval $inlibc
13664
13665 : see if mkstemp exists
13666 set mkstemp d_mkstemp
13667 eval $inlibc
13668
13669 : see if mkstemps exists
13670 set mkstemps d_mkstemps
13671 eval $inlibc
13672
13673 : see if mktime exists
13674 set mktime d_mktime
13675 eval $inlibc
13676
13677 : see if this is a sys/mman.h system
13678 set sys/mman.h i_sysmman
13679 eval $inhdr
13680
13681 : see if mmap exists
13682 set mmap d_mmap
13683 eval $inlibc
13684 : see what shmat returns
13685 : default to something harmless
13686 mmaptype='void *'
13687 case "$i_sysmman$d_mmap" in
13688 "$define$define")
13689         $cat >mmap.c <<'END'
13690 #include <sys/mman.h>
13691 void *mmap();
13692 END
13693         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13694                 mmaptype='void *'
13695         else
13696                 mmaptype='caddr_t'
13697         fi
13698         echo "and it returns ($mmaptype)." >&4
13699         ;;
13700 esac
13701
13702
13703
13704 : see if sqrtl exists
13705 set sqrtl d_sqrtl
13706 eval $inlibc
13707
13708 : see if modfl exists
13709 set modfl d_modfl
13710 eval $inlibc
13711
13712 : see if prototype for modfl is available
13713 echo " "
13714 set d_modflproto modfl math.h
13715 eval $hasproto
13716
13717 d_modfl_pow32_bug="$undef"
13718
13719 case "$d_longdbl$d_modfl" in
13720 $define$define)
13721         $cat <<EOM
13722 Checking to see whether your modfl() is okay for large values...
13723 EOM
13724 $cat >try.c <<EOCP
13725 #include <math.h> 
13726 #include <stdio.h>
13727 EOCP
13728 if $test "X$d_modflproto" != "X$define"; then
13729         $cat >>try.c <<EOCP
13730 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
13731 long double modfl (long double, long double *);
13732 EOCP
13733 fi
13734 $cat >>try.c <<EOCP
13735 int main() {
13736     long double nv = 4294967303.15;
13737     long double v, w;
13738     v = modfl(nv, &w);         
13739 #ifdef __GLIBC__
13740     printf("glibc");
13741 #endif
13742     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
13743     return 0;
13744 }
13745 EOCP
13746         case "$osname:$gccversion" in
13747         aix:)   saveccflags="$ccflags"
13748                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
13749         esac
13750         set try
13751         if eval $compile; then
13752                 foo=`$run ./try`
13753                 case "$foo" in
13754                 *" 4294967303.150000 1.150000 4294967302.000000")
13755                         echo >&4 "Your modfl() is broken for large values."
13756                         d_modfl_pow32_bug="$define"
13757                         case "$foo" in
13758                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
13759                         ;;
13760                         esac
13761                         ;;
13762                 *" 4294967303.150000 0.150000 4294967303.000000")
13763                         echo >&4 "Your modfl() seems okay for large values."
13764                         ;;
13765                 *)      echo >&4 "I don't understand your modfl() at all."
13766                         d_modfl="$undef"
13767                         ;;
13768                 esac
13769                 $rm -f try.* try core core.try.*
13770         else
13771                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
13772                 d_modfl="$undef"
13773         fi
13774         case "$osname:$gccversion" in
13775         aix:)   ccflags="$saveccflags" ;; # restore
13776         esac
13777         ;;
13778 esac
13779
13780 if $test "$uselongdouble" = "$define"; then
13781     message=none
13782     case "$d_sqrtl:$d_modfl" in
13783     $define:$define)
13784         : You have both
13785         ;;
13786     $define:$undef)
13787         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
13788             echo "You have both aintl and copysignl, so I can emulate modfl."
13789         else
13790             message="I could not find modfl."
13791         fi
13792         ;;
13793     $undef:$define)
13794         message="I could not find sqrtl."
13795         ;;
13796     $undef:$undef)
13797         message="I found neither sqrtl nor modfl."
13798         ;;
13799     esac
13800
13801     if $test "$message" != none; then
13802         $cat <<EOM >&4
13803
13804 *** You requested the use of long doubles but you do not seem to have
13805 *** the mathematic functions for long doubles.
13806 *** ($message)
13807 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
13808 *** Cannot continue, aborting.
13809
13810 EOM
13811
13812         exit 1
13813     fi
13814 fi
13815
13816 : see if mprotect exists
13817 set mprotect d_mprotect
13818 eval $inlibc
13819
13820 : see if msgctl exists
13821 set msgctl d_msgctl
13822 eval $inlibc
13823
13824 : see if msgget exists
13825 set msgget d_msgget
13826 eval $inlibc
13827
13828 : see if msgsnd exists
13829 set msgsnd d_msgsnd
13830 eval $inlibc
13831
13832 : see if msgrcv exists
13833 set msgrcv d_msgrcv
13834 eval $inlibc
13835
13836 : see how much of the 'msg*(2)' library is present.
13837 h_msg=true
13838 echo " "
13839 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13840 *"$undef"*) h_msg=false;;
13841 esac
13842 case "$osname" in
13843 freebsd)
13844     case "`ipcs 2>&1`" in
13845     "SVID messages"*"not configured"*)
13846         echo "Your $osname does not have the msg*(2) configured." >&4
13847         h_msg=false
13848         val="$undef"
13849         set msgctl d_msgctl
13850         eval $setvar
13851         set msgget d_msgget
13852         eval $setvar
13853         set msgsnd d_msgsnd
13854         eval $setvar
13855         set msgrcv d_msgrcv
13856         eval $setvar
13857         ;;
13858     esac
13859     ;;
13860 esac
13861 : we could also check for sys/ipc.h ...
13862 if $h_msg && $test `./findhdr sys/msg.h`; then
13863         echo "You have the full msg*(2) library." >&4
13864         val="$define"
13865 else
13866         echo "You don't have the full msg*(2) library." >&4
13867         val="$undef"
13868 fi
13869 set d_msg
13870 eval $setvar
13871
13872
13873 echo " "
13874 echo "Checking to see if your system supports struct msghdr..." >&4
13875 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13876 eval $hasstruct
13877 case "$d_msghdr_s" in
13878 "$define")      echo "Yes, it does."   ;;
13879 *)              echo "No, it doesn't." ;;
13880 esac
13881
13882
13883 : see if msync exists
13884 set msync d_msync
13885 eval $inlibc
13886
13887 : see if munmap exists
13888 set munmap d_munmap
13889 eval $inlibc
13890
13891 : see if nanosleep exists
13892 set nanosleep d_nanosleep
13893 eval $inlibc
13894
13895 : see if nice exists
13896 set nice d_nice
13897 eval $inlibc
13898
13899 : see if this is a langinfo.h system
13900 set langinfo.h i_langinfo
13901 eval $inhdr
13902
13903 : see if nl_langinfo exists
13904 set nl_langinfo d_nl_langinfo
13905 eval $inlibc
13906
13907 : check for length of character
13908 echo " "
13909 case "$charsize" in
13910 '')
13911         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13912         $cat >try.c <<EOCP
13913 #include <stdio.h>
13914 #$i_stdlib I_STDLIB
13915 #ifdef I_STDLIB
13916 #include <stdlib.h>
13917 #endif
13918 int main()
13919 {
13920     printf("%d\n", (int)sizeof(char));
13921     exit(0);
13922 }
13923 EOCP
13924         set try
13925         if eval $compile_ok; then
13926                 dflt=`$run ./try`
13927         else
13928                 dflt='1'
13929                 echo "(I can't seem to compile the test program.  Guessing...)"
13930         fi
13931         ;;
13932 *)
13933         dflt="$charsize"
13934         ;;
13935 esac
13936 rp="What is the size of a character (in bytes)?"
13937 . ./myread
13938 charsize="$ans"
13939 $rm -f try.c try
13940
13941 : check for volatile keyword
13942 echo " "
13943 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13944 $cat >try.c <<'EOCP'
13945 int main()
13946 {
13947         typedef struct _goo_struct goo_struct;
13948         goo_struct * volatile goo = ((goo_struct *)0);
13949         struct _goo_struct {
13950                 long long_int;
13951                 int reg_int;
13952                 char char_var;
13953         };
13954         typedef unsigned short foo_t;
13955         char *volatile foo;
13956         volatile int bar;
13957         volatile foo_t blech;
13958         foo = foo;
13959 }
13960 EOCP
13961 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13962         val="$define"
13963         echo "Yup, it does."
13964 else
13965         val="$undef"
13966         echo "Nope, it doesn't."
13967 fi
13968 set d_volatile
13969 eval $setvar
13970 $rm -f try.*
13971
13972
13973 echo " "
13974 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13975
13976 case "$use64bitint:$d_quad:$quadtype" in
13977 define:define:?*)
13978         ivtype="$quadtype"
13979         uvtype="$uquadtype"
13980         ivsize=8
13981         uvsize=8
13982         ;;
13983 *)      ivtype="long"
13984         uvtype="unsigned long"
13985         ivsize=$longsize
13986         uvsize=$longsize
13987         ;;
13988 esac
13989
13990 case "$uselongdouble:$d_longdbl" in
13991 define:define)
13992         nvtype="long double"
13993         nvsize=$longdblsize
13994         ;;
13995 *)      nvtype=double
13996         nvsize=$doublesize
13997         ;;
13998 esac
13999
14000 $echo "(IV will be "$ivtype", $ivsize bytes)"
14001 $echo "(UV will be "$uvtype", $uvsize bytes)"
14002 $echo "(NV will be "$nvtype", $nvsize bytes)"
14003
14004 $cat >try.c <<EOCP
14005 #$i_inttypes I_INTTYPES
14006 #ifdef I_INTTYPES
14007 #include <inttypes.h>
14008 #endif
14009 #include <stdio.h>
14010 int main() {
14011 #ifdef INT8
14012    int8_t i =  INT8_MAX;
14013   uint8_t u = UINT8_MAX;
14014   printf("int8_t\n");
14015 #endif
14016 #ifdef INT16
14017    int16_t i =  INT16_MAX;
14018   uint16_t i = UINT16_MAX;
14019   printf("int16_t\n");
14020 #endif
14021 #ifdef INT32
14022    int32_t i =  INT32_MAX;
14023   uint32_t u = UINT32_MAX;
14024   printf("int32_t\n");
14025 #endif
14026 }
14027 EOCP
14028
14029 case "$i8type" in
14030 '')     case "$charsize" in
14031         1)      i8type=char
14032                 u8type="unsigned char"
14033                 i8size=$charsize
14034                 u8size=$charsize
14035                 ;;
14036         esac
14037         ;;
14038 esac
14039 case "$i8type" in
14040 '')     set try -DINT8
14041         if eval $compile; then
14042                 case "`$run ./try`" in
14043                 int8_t) i8type=int8_t
14044                         u8type=uint8_t
14045                         i8size=1
14046                         u8size=1
14047                         ;;
14048                 esac
14049         fi
14050         ;;
14051 esac
14052 case "$i8type" in
14053 '')     if $test $charsize -ge 1; then
14054                 i8type=char
14055                 u8type="unsigned char"
14056                 i8size=$charsize
14057                 u8size=$charsize
14058         fi
14059         ;;
14060 esac
14061
14062 case "$i16type" in
14063 '')     case "$shortsize" in
14064         2)      i16type=short
14065                 u16type="unsigned short"
14066                 i16size=$shortsize
14067                 u16size=$shortsize
14068                 ;;
14069         esac
14070         ;;
14071 esac
14072 case "$i16type" in
14073 '')     set try -DINT16
14074         if eval $compile; then
14075                 case "`$run ./try`" in
14076                 int16_t)
14077                         i16type=int16_t
14078                         u16type=uint16_t
14079                         i16size=2
14080                         u16size=2
14081                         ;;
14082                 esac
14083         fi
14084         ;;
14085 esac
14086 case "$i16type" in
14087 '')     if $test $shortsize -ge 2; then
14088                 i16type=short
14089                 u16type="unsigned short"
14090                 i16size=$shortsize
14091                 u16size=$shortsize
14092         fi
14093         ;;
14094 esac
14095
14096 case "$i32type" in
14097 '')     case "$longsize" in
14098         4)      i32type=long
14099                 u32type="unsigned long"
14100                 i32size=$longsize
14101                 u32size=$longsize
14102                 ;;
14103         *)      case "$intsize" in
14104                 4)      i32type=int
14105                         u32type="unsigned int"
14106                         i32size=$intsize
14107                         u32size=$intsize
14108                         ;;
14109                 esac
14110                 ;;
14111         esac
14112         ;;
14113 esac
14114 case "$i32type" in
14115 '')     set try -DINT32
14116         if eval $compile; then
14117                 case "`$run ./try`" in
14118                 int32_t)
14119                         i32type=int32_t
14120                         u32type=uint32_t
14121                         i32size=4
14122                         u32size=4
14123                         ;;
14124                 esac
14125         fi
14126         ;;
14127 esac
14128 case "$i32type" in
14129 '')     if $test $intsize -ge 4; then
14130                 i32type=int
14131                 u32type="unsigned int"
14132                 i32size=$intsize
14133                 u32size=$intsize
14134         fi
14135         ;;
14136 esac
14137
14138 case "$i64type" in
14139 '')     case "$d_quad:$quadtype" in
14140         define:?*)
14141                 i64type="$quadtype"
14142                 u64type="$uquadtype"
14143                 i64size=8
14144                 u64size=8
14145                 ;;
14146         esac
14147         ;;
14148 esac
14149
14150 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14151 : volatile so that the compiler has to store it out to memory.
14152 if test X"$d_volatile" = X"$define"; then
14153         volatile=volatile
14154 fi
14155 $cat <<EOP >try.c
14156 #include <stdio.h>
14157 #$i_stdlib I_STDLIB
14158 #ifdef I_STDLIB
14159 #include <stdlib.h>
14160 #endif
14161 #include <sys/types.h>
14162 #include <signal.h>
14163 #ifdef SIGFPE
14164 $volatile int bletched = 0;
14165 $signal_t blech(s) int s; { bletched = 1; }
14166 #endif
14167 int main() {
14168     $uvtype u = 0;
14169     $nvtype d;
14170     int     n = 8 * $uvsize;
14171     int     i;
14172 #ifdef SIGFPE
14173     signal(SIGFPE, blech);
14174 #endif
14175
14176     for (i = 0; i < n; i++) {
14177       u = u << 1 | ($uvtype)1;
14178       d = ($nvtype)u;
14179       if (($uvtype)d != u)
14180         break;
14181       if (d <= 0)
14182         break;
14183       d = ($nvtype)(u - 1);
14184       if (($uvtype)d != (u - 1))
14185         break;
14186 #ifdef SIGFPE
14187       if (bletched) {
14188         break;
14189 #endif
14190       } 
14191     }
14192     printf("%d\n", ((i == n) ? -n : i));
14193     exit(0);
14194 }
14195 EOP
14196 set try
14197
14198 d_nv_preserves_uv="$undef"
14199 if eval $compile; then
14200         nv_preserves_uv_bits="`$run ./try`"
14201 fi
14202 case "$nv_preserves_uv_bits" in
14203 \-[1-9]*)       
14204         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14205         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14206         d_nv_preserves_uv="$define"
14207         ;;
14208 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14209         d_nv_preserves_uv="$undef" ;;
14210 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14211         nv_preserves_uv_bits="$undef" ;;
14212 esac
14213
14214 $rm -f try.* try
14215
14216
14217 : check for off64_t
14218 echo " "
14219 echo "Checking to see if you have off64_t..." >&4
14220 $cat >try.c <<EOCP
14221 #include <sys/types.h>
14222 #include <unistd.h>
14223 int main() { off64_t x = 7; }
14224 EOCP
14225 set try
14226 if eval $compile; then
14227         val="$define"
14228         echo "You have off64_t."
14229 else
14230         val="$undef"
14231         echo "You do not have off64_t."
14232         case "$lseeksize" in
14233         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14234         esac
14235 fi
14236 $rm -f try.* try
14237 set d_off64_t
14238 eval $setvar
14239
14240 : how to create joinable pthreads
14241 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14242         echo " "
14243         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14244         $cat >try.c <<'EOCP'
14245 #include <pthread.h>
14246 int main() {
14247     int detachstate = JOINABLE;
14248 }
14249 EOCP
14250         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14251         if eval $compile; then
14252                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14253                 val="$undef" # Yes, undef.
14254                 set d_old_pthread_create_joinable
14255                 eval $setvar
14256                 val=""
14257                 set old_pthread_create_joinable
14258                 eval $setvar
14259         else
14260                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14261                 if eval $compile; then
14262                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14263                         val="$define"
14264                         set d_old_pthread_create_joinable
14265                         eval $setvar
14266                         val=PTHREAD_CREATE_UNDETACHED
14267                         set old_pthread_create_joinable
14268                         eval $setvar
14269                 else            
14270                         set try -DJOINABLE=__UNDETACHED
14271                         if eval $compile; then
14272                                 echo "You seem to use __UNDETACHED." >&4
14273                                 val="$define"
14274                                 set d_old_pthread_create_joinable
14275                                 eval $setvar
14276                                 val=__UNDETACHED
14277                                 set old_pthread_create_joinable
14278                                 eval $setvar
14279                         else
14280                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14281                                 val="$define"
14282                                 set d_old_pthread_create_joinable
14283                                 eval $setvar
14284                                 val=0
14285                                 set old_pthread_create_joinable
14286                                 eval $setvar
14287                         fi
14288                 fi
14289         fi
14290         $rm -f try try.*
14291 else
14292     d_old_pthread_create_joinable="$undef"
14293     old_pthread_create_joinable=""
14294 fi
14295
14296 : see if pause exists
14297 set pause d_pause
14298 eval $inlibc
14299
14300 : see if pipe exists
14301 set pipe d_pipe
14302 eval $inlibc
14303
14304 : see if poll exists
14305 set poll d_poll
14306 eval $inlibc
14307
14308 : see if readlink exists
14309 set readlink d_readlink
14310 eval $inlibc
14311
14312 echo " "
14313 procselfexe=''
14314 val="$undef"
14315 case "$d_readlink" in
14316 "$define")
14317         if $issymlink /proc/self/exe ; then
14318                 $ls -l /proc/self/exe > reflect
14319                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14320                         echo "You have Linux-like /proc/self/exe."
14321                         procselfexe='"/proc/self/exe"'
14322                         val="$define"
14323                 fi
14324         fi
14325         if $issymlink /proc/curproc/file ; then
14326                 $ls -l /proc/curproc/file > reflect
14327                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14328                         echo "You have BSD-like /proc/curproc/file."
14329                         procselfexe='"/proc/curproc/file"'
14330                         val="$define"
14331                 fi
14332         fi
14333         ;;
14334 esac
14335 $rm -f reflect
14336 set d_procselfexe
14337 eval $setvar
14338
14339 : see whether the pthread_atfork exists
14340 $cat >try.c <<EOP
14341 #include <pthread.h>
14342 #include <stdio.h>
14343 int main() {
14344 #ifdef  PTHREAD_ATFORK
14345         pthread_atfork(NULL,NULL,NULL);
14346 #endif
14347 }
14348 EOP
14349
14350 : see if pthread_atfork exists
14351 set try -DPTHREAD_ATFORK
14352 if eval $compile; then
14353     val="$define"
14354 else
14355     val="$undef"
14356 fi
14357 case "$usethreads" in
14358 $define)
14359         case "$val" in
14360         $define) echo 'pthread_atfork found.' >&4        ;;
14361         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14362         esac
14363 esac
14364 set d_pthread_atfork
14365 eval $setvar
14366
14367
14368 : see whether the various POSIXish _yields exist
14369 $cat >try.c <<EOP
14370 #include <pthread.h>
14371 #include <stdio.h>
14372 int main() {
14373 #ifdef SCHED_YIELD
14374         sched_yield();
14375 #else
14376 #ifdef PTHREAD_YIELD
14377         pthread_yield();
14378 #else
14379 #ifdef PTHREAD_YIELD_NULL
14380         pthread_yield(NULL);
14381 #endif
14382 #endif
14383 #endif
14384 }
14385 EOP
14386 : see if sched_yield exists
14387 set try -DSCHED_YIELD
14388 if eval $compile; then
14389     val="$define"
14390     sched_yield='sched_yield()'
14391 else
14392     val="$undef"
14393 fi
14394 case "$usethreads" in
14395 $define)
14396         case "$val" in
14397         $define) echo 'sched_yield() found.' >&4        ;;
14398         *)       echo 'sched_yield() NOT found.' >&4    ;;
14399         esac
14400 esac
14401 set d_sched_yield
14402 eval $setvar
14403
14404 : see if pthread_yield exists
14405 set try -DPTHREAD_YIELD
14406 if eval $compile; then
14407     val="$define"
14408     case "$sched_yield" in
14409     '') sched_yield='pthread_yield()' ;;
14410     esac
14411 else
14412     set try -DPTHREAD_YIELD_NULL
14413     if eval $compile; then
14414         val="$define"
14415         case "$sched_yield" in
14416         '') sched_yield='pthread_yield(NULL)' ;;
14417         esac
14418     else
14419         val="$undef"
14420     fi
14421 fi
14422 case "$usethreads" in
14423 $define)
14424         case "$val" in
14425         $define) echo 'pthread_yield() found.' >&4      ;;
14426         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14427         esac
14428         ;;
14429 esac
14430 set d_pthread_yield
14431 eval $setvar
14432
14433 case "$sched_yield" in
14434 '') sched_yield=undef ;;
14435 esac
14436
14437 $rm -f try try.*
14438
14439 : see if random_r exists
14440 set random_r d_random_r
14441 eval $inlibc
14442 case "$d_random_r" in
14443 "$define")
14444         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14445         case "$d_random_r_proto:$usethreads" in
14446         ":define")      d_random_r_proto=define
14447                 set d_random_r_proto random_r $hdrs
14448                 eval $hasproto ;;
14449         *)      ;;
14450         esac
14451         case "$d_random_r_proto" in
14452         define)
14453         case "$random_r_proto" in
14454         ''|0) try='int random_r(int*, struct random_data*);'
14455         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14456         esac
14457         case "$random_r_proto" in
14458         ''|0) try='int random_r(long*, struct random_data*);'
14459         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14460         esac
14461         case "$random_r_proto" in
14462         ''|0) try='int random_r(struct random_data*, int32_t*);'
14463         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14464         esac
14465         case "$random_r_proto" in
14466         ''|0)   d_random_r=undef
14467                 random_r_proto=0
14468                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14469         * )     case "$random_r_proto" in
14470                 REENTRANT_PROTO*) ;;
14471                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14472                 esac
14473                 echo "Prototype: $try" ;;
14474         esac
14475         ;;
14476         *)      case "$usethreads" in
14477                 define) echo "random_r has no prototype, not using it." >&4 ;;
14478                 esac
14479                 d_random_r=undef
14480                 random_r_proto=0
14481                 ;;
14482         esac
14483         ;;
14484 *)      random_r_proto=0
14485         ;;
14486 esac
14487
14488 : see if readdir and friends exist
14489 set readdir d_readdir
14490 eval $inlibc
14491 set seekdir d_seekdir
14492 eval $inlibc
14493 set telldir d_telldir
14494 eval $inlibc
14495 set rewinddir d_rewinddir
14496 eval $inlibc
14497
14498 : see if readdir64_r exists
14499 set readdir64_r d_readdir64_r
14500 eval $inlibc
14501 case "$d_readdir64_r" in
14502 "$define")
14503         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14504         case "$d_readdir64_r_proto:$usethreads" in
14505         ":define")      d_readdir64_r_proto=define
14506                 set d_readdir64_r_proto readdir64_r $hdrs
14507                 eval $hasproto ;;
14508         *)      ;;
14509         esac
14510         case "$d_readdir64_r_proto" in
14511         define)
14512         case "$readdir64_r_proto" in
14513         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14514         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14515         esac
14516         case "$readdir64_r_proto" in
14517         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14518         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14519         esac
14520         case "$readdir64_r_proto" in
14521         ''|0)   d_readdir64_r=undef
14522                 readdir64_r_proto=0
14523                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14524         * )     case "$readdir64_r_proto" in
14525                 REENTRANT_PROTO*) ;;
14526                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14527                 esac
14528                 echo "Prototype: $try" ;;
14529         esac
14530         ;;
14531         *)      case "$usethreads" in
14532                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14533                 esac
14534                 d_readdir64_r=undef
14535                 readdir64_r_proto=0
14536                 ;;
14537         esac
14538         ;;
14539 *)      readdir64_r_proto=0
14540         ;;
14541 esac
14542
14543 : see if readdir_r exists
14544 set readdir_r d_readdir_r
14545 eval $inlibc
14546 case "$d_readdir_r" in
14547 "$define")
14548         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14549         case "$d_readdir_r_proto:$usethreads" in
14550         ":define")      d_readdir_r_proto=define
14551                 set d_readdir_r_proto readdir_r $hdrs
14552                 eval $hasproto ;;
14553         *)      ;;
14554         esac
14555         case "$d_readdir_r_proto" in
14556         define)
14557         case "$readdir_r_proto" in
14558         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14559         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14560         esac
14561         case "$readdir_r_proto" in
14562         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14563         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14564         esac
14565         case "$readdir_r_proto" in
14566         ''|0)   d_readdir_r=undef
14567                 readdir_r_proto=0
14568                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14569         * )     case "$readdir_r_proto" in
14570                 REENTRANT_PROTO*) ;;
14571                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14572                 esac
14573                 echo "Prototype: $try" ;;
14574         esac
14575         ;;
14576         *)      case "$usethreads" in
14577                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14578                 esac
14579                 d_readdir_r=undef
14580                 readdir_r_proto=0
14581                 ;;
14582         esac
14583         ;;
14584 *)      readdir_r_proto=0
14585         ;;
14586 esac
14587
14588 : see if readv exists
14589 set readv d_readv
14590 eval $inlibc
14591
14592 : see if recvmsg exists
14593 set recvmsg d_recvmsg
14594 eval $inlibc
14595
14596 : see if rename exists
14597 set rename d_rename
14598 eval $inlibc
14599
14600 : see if rmdir exists
14601 set rmdir d_rmdir
14602 eval $inlibc
14603
14604 : see if memory.h is available.
14605 val=''
14606 set memory.h val
14607 eval $inhdr
14608
14609 : See if it conflicts with string.h
14610 case "$val" in
14611 $define)
14612         case "$strings" in
14613         '') ;;
14614         *)
14615                 $cppstdin $cppflags $cppminus < $strings > mem.h
14616                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14617                         echo " "
14618                         echo "We won't be including <memory.h>."
14619                         val="$undef"
14620                 fi
14621                 $rm -f mem.h
14622                 ;;
14623         esac
14624 esac
14625 set i_memory
14626 eval $setvar
14627
14628 : can bcopy handle overlapping blocks?
14629 echo " "
14630 val="$undef"
14631 case "$d_memmove" in
14632 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14633 *)      case "$d_bcopy" in
14634         "$define")
14635                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14636                 $cat >try.c <<EOCP
14637 #$i_memory I_MEMORY
14638 #$i_stdlib I_STDLIB
14639 #$i_string I_STRING
14640 #$i_unistd I_UNISTD
14641 EOCP
14642         $cat >>try.c <<'EOCP'
14643 #include <stdio.h>
14644 #ifdef I_MEMORY
14645 #  include <memory.h>
14646 #endif
14647 #ifdef I_STDLIB
14648 #  include <stdlib.h>
14649 #endif
14650 #ifdef I_STRING
14651 #  include <string.h>
14652 #else
14653 #  include <strings.h>
14654 #endif
14655 #ifdef I_UNISTD
14656 #  include <unistd.h>  /* Needed for NetBSD */
14657 #endif
14658 int main()
14659 {
14660 char buf[128], abc[128];
14661 char *b;
14662 int len;
14663 int off;
14664 int align;
14665
14666 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14667    try to store the string in read-only memory. */
14668 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14669
14670 for (align = 7; align >= 0; align--) {
14671         for (len = 36; len; len--) {
14672                 b = buf+align;
14673                 bcopy(abc, b, len);
14674                 for (off = 1; off <= len; off++) {
14675                         bcopy(b, b+off, len);
14676                         bcopy(b+off, b, len);
14677                         if (bcmp(b, abc, len))
14678                                 exit(1);
14679                 }
14680         }
14681 }
14682 exit(0);
14683 }
14684 EOCP
14685                 set try
14686                 if eval $compile_ok; then
14687                         if ./try 2>/dev/null; then
14688                                 echo "Yes, it can."
14689                                 val="$define"
14690                         else
14691                                 echo "It can't, sorry."
14692                         fi
14693                 else
14694                         echo "(I can't compile the test program, so we'll assume not...)"
14695                 fi
14696                 ;;
14697         esac
14698         $rm -f try.* try core
14699         ;;
14700 esac
14701 set d_safebcpy
14702 eval $setvar
14703
14704 : can memcpy handle overlapping blocks?
14705 echo " "
14706 val="$undef"
14707 case "$d_memmove" in
14708 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14709 *)      case "$d_memcpy" in
14710         "$define")
14711                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14712                 $cat >try.c <<EOCP
14713 #$i_memory I_MEMORY
14714 #$i_stdlib I_STDLIB
14715 #$i_string I_STRING
14716 #$i_unistd I_UNISTD
14717 EOCP
14718         $cat >>try.c <<'EOCP'
14719 #include <stdio.h>
14720 #ifdef I_MEMORY
14721 #  include <memory.h>
14722 #endif
14723 #ifdef I_STDLIB
14724 #  include <stdlib.h>
14725 #endif
14726 #ifdef I_STRING
14727 #  include <string.h>
14728 #else
14729 #  include <strings.h>
14730 #endif
14731 #ifdef I_UNISTD
14732 #  include <unistd.h>  /* Needed for NetBSD */
14733 #endif
14734 int main()
14735 {
14736 char buf[128], abc[128];
14737 char *b;
14738 int len;
14739 int off;
14740 int align;
14741
14742 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14743    try to store the string in read-only memory. */
14744 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14745
14746 for (align = 7; align >= 0; align--) {
14747         for (len = 36; len; len--) {
14748                 b = buf+align;
14749                 memcpy(b, abc, len);
14750                 for (off = 1; off <= len; off++) {
14751                         memcpy(b+off, b, len);
14752                         memcpy(b, b+off, len);
14753                         if (memcmp(b, abc, len))
14754                                 exit(1);
14755                 }
14756         }
14757 }
14758 exit(0);
14759 }
14760 EOCP
14761                 set try
14762                 if eval $compile_ok; then
14763                         if ./try 2>/dev/null; then
14764                                 echo "Yes, it can."
14765                                 val="$define"
14766                         else
14767                                 echo "It can't, sorry."
14768                         fi
14769                 else
14770                         echo "(I can't compile the test program, so we'll assume not...)"
14771                 fi
14772                 ;;
14773         esac
14774         $rm -f try.* try core
14775         ;;
14776 esac
14777 set d_safemcpy
14778 eval $setvar
14779
14780 : can memcmp be trusted to compare relative magnitude?
14781 val="$undef"
14782 case "$d_memcmp" in
14783 "$define")
14784         echo " "
14785         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14786         $cat >try.c <<EOCP
14787 #$i_memory I_MEMORY
14788 #$i_stdlib I_STDLIB
14789 #$i_string I_STRING
14790 #$i_unistd I_UNISTD
14791 EOCP
14792         $cat >>try.c <<'EOCP'
14793 #include <stdio.h>
14794 #ifdef I_MEMORY
14795 #  include <memory.h>
14796 #endif
14797 #ifdef I_STDLIB
14798 #  include <stdlib.h>
14799 #endif
14800 #ifdef I_STRING
14801 #  include <string.h>
14802 #else
14803 #  include <strings.h>
14804 #endif
14805 #ifdef I_UNISTD
14806 #  include <unistd.h>  /* Needed for NetBSD */
14807 #endif
14808 int main()
14809 {
14810 char a = -1;
14811 char b = 0;
14812 if ((a < b) && memcmp(&a, &b, 1) < 0)
14813         exit(1);
14814 exit(0);
14815 }
14816 EOCP
14817         set try
14818         if eval $compile_ok; then
14819                 if $run ./try 2>/dev/null; then
14820                         echo "Yes, it can."
14821                         val="$define"
14822                 else
14823                         echo "No, it can't (it uses signed chars)."
14824                 fi
14825         else
14826                 echo "(I can't compile the test program, so we'll assume not...)"
14827         fi
14828         ;;
14829 esac
14830 $rm -f try.* try core
14831 set d_sanemcmp
14832 eval $setvar
14833
14834 : see if prototype for sbrk is available
14835 echo " "
14836 set d_sbrkproto sbrk $i_unistd unistd.h
14837 eval $hasproto
14838
14839 : see if scalbnl exists
14840 set scalbnl d_scalbnl
14841 eval $inlibc
14842
14843 : see if select exists
14844 set select d_select
14845 eval $inlibc
14846
14847 : see if semctl exists
14848 set semctl d_semctl
14849 eval $inlibc
14850
14851 : see if semget exists
14852 set semget d_semget
14853 eval $inlibc
14854
14855 : see if semop exists
14856 set semop d_semop
14857 eval $inlibc
14858
14859 : see how much of the 'sem*(2)' library is present.
14860 h_sem=true
14861 echo " "
14862 case "$d_semctl$d_semget$d_semop" in
14863 *"$undef"*) h_sem=false;;
14864 esac
14865 case "$osname" in
14866 freebsd)
14867     case "`ipcs 2>&1`" in
14868     "SVID messages"*"not configured"*)
14869         echo "Your $osname does not have the sem*(2) configured." >&4
14870         h_sem=false
14871         val="$undef"
14872         set semctl d_semctl
14873         eval $setvar
14874         set semget d_semget
14875         eval $setvar
14876         set semop d_semop
14877         eval $setvar
14878         ;;
14879     esac
14880     ;;
14881 esac
14882 : we could also check for sys/ipc.h ...
14883 if $h_sem && $test `./findhdr sys/sem.h`; then
14884         echo "You have the full sem*(2) library." >&4
14885         val="$define"
14886 else
14887         echo "You don't have the full sem*(2) library." >&4
14888         val="$undef"
14889 fi
14890 set d_sem
14891 eval $setvar
14892
14893 : see whether sys/sem.h defines union semun
14894 echo " "
14895 $cat > try.c <<'END'
14896 #include <sys/types.h>
14897 #include <sys/ipc.h>
14898 #include <sys/sem.h>
14899 int main () { union semun semun; semun.buf = 0; }
14900 END
14901 set try
14902 if eval $compile; then
14903     echo "You have union semun in <sys/sem.h>." >&4
14904     val="$define"
14905 else
14906     echo "You do not have union semun in <sys/sem.h>." >&4
14907     val="$undef"
14908 fi
14909 $rm -f try try.c try.h
14910 set d_union_semun
14911 eval $setvar
14912
14913 : see how to do semctl IPC_STAT
14914 case "$d_sem" in
14915 $define)
14916     : see whether semctl IPC_STAT can use union semun
14917     echo " "
14918     $cat > try.h <<END
14919 #ifndef S_IRUSR
14920 #   ifdef S_IREAD
14921 #       define S_IRUSR S_IREAD
14922 #       define S_IWUSR S_IWRITE
14923 #       define S_IXUSR S_IEXEC
14924 #   else
14925 #       define S_IRUSR 0400
14926 #       define S_IWUSR 0200
14927 #       define S_IXUSR 0100
14928 #   endif
14929 #   define S_IRGRP (S_IRUSR>>3)
14930 #   define S_IWGRP (S_IWUSR>>3)
14931 #   define S_IXGRP (S_IXUSR>>3)
14932 #   define S_IROTH (S_IRUSR>>6)
14933 #   define S_IWOTH (S_IWUSR>>6)
14934 #   define S_IXOTH (S_IXUSR>>6)
14935 #endif
14936 #ifndef S_IRWXU
14937 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14938 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14939 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14940 #endif
14941 END
14942
14943     $cat > try.c <<END
14944 #include <sys/types.h>
14945 #include <sys/ipc.h>
14946 #include <sys/sem.h>
14947 #include <sys/stat.h>
14948 #include <stdio.h>
14949 #include <errno.h>
14950 #include "try.h"
14951 #ifndef errno
14952 extern int errno;
14953 #endif
14954 #$d_union_semun HAS_UNION_SEMUN
14955 int main() {
14956     union semun
14957 #ifndef HAS_UNION_SEMUN
14958     {
14959         int val;
14960         struct semid_ds *buf;
14961         unsigned short *array;
14962     }
14963 #endif
14964     arg;
14965     int sem, st;
14966
14967 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14968     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14969     if (sem > -1) {
14970         struct semid_ds argbuf;
14971         arg.buf = &argbuf;
14972 #       ifdef IPC_STAT
14973         st = semctl(sem, 0, IPC_STAT, arg);
14974         if (st == 0)
14975             printf("semun\n");
14976         else
14977 #       endif /* IPC_STAT */
14978             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14979 #       ifdef IPC_RMID
14980         if (semctl(sem, 0, IPC_RMID, arg) != 0)
14981 #       endif /* IPC_RMID */
14982             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14983     } else
14984 #endif /* IPC_PRIVATE && ... */
14985         printf("semget failed: errno = %d\n", errno);
14986   return 0;
14987 }
14988 END
14989     val="$undef"
14990     set try
14991     if eval $compile; then
14992         xxx=`$run ./try`
14993         case "$xxx" in
14994         semun) val="$define" ;;
14995         esac
14996     fi
14997     $rm -f try try.c
14998     set d_semctl_semun
14999     eval $setvar
15000     case "$d_semctl_semun" in
15001     $define)
15002         echo "You can use union semun for semctl IPC_STAT." >&4
15003         also='also'
15004         ;;
15005     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15006         also=''
15007         ;;
15008     esac
15009
15010     : see whether semctl IPC_STAT can use struct semid_ds pointer
15011     $cat > try.c <<'END'
15012 #include <sys/types.h>
15013 #include <sys/ipc.h>
15014 #include <sys/sem.h>
15015 #include <sys/stat.h>
15016 #include "try.h"
15017 #include <stdio.h>
15018 #include <errno.h>
15019 #ifndef errno
15020 extern int errno;
15021 #endif
15022 int main() {
15023     struct semid_ds arg;
15024     int sem, st;
15025
15026 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15027     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15028     if (sem > -1) {
15029 #       ifdef IPC_STAT
15030         st = semctl(sem, 0, IPC_STAT, &arg);
15031         if (st == 0)
15032             printf("semid_ds\n");
15033         else
15034 #       endif /* IPC_STAT */
15035             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15036 #       ifdef IPC_RMID
15037         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15038 #       endif /* IPC_RMID */
15039             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15040     } else
15041 #endif /* IPC_PRIVATE && ... */
15042         printf("semget failed: errno = %d\n", errno);
15043
15044     return 0;
15045 }
15046 END
15047     val="$undef"
15048     set try
15049     if eval $compile; then
15050         xxx=`$run ./try`
15051         case "$xxx" in
15052         semid_ds) val="$define" ;;
15053         esac
15054     fi
15055     $rm -f try try.c
15056     set d_semctl_semid_ds
15057     eval $setvar
15058     case "$d_semctl_semid_ds" in
15059     $define)
15060         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15061         ;;
15062     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15063         ;;
15064     esac
15065     $rm -f try.h
15066     ;;
15067 *)  val="$undef"
15068
15069     # We do not have the full sem*(2) library, so assume we can not
15070     # use either.
15071
15072     set d_semctl_semun
15073     eval $setvar
15074
15075     set d_semctl_semid_ds
15076     eval $setvar
15077     ;;
15078 esac
15079
15080 : see if sendmsg exists
15081 set sendmsg d_sendmsg
15082 eval $inlibc
15083
15084 : see if setegid exists
15085 set setegid d_setegid
15086 eval $inlibc
15087
15088 : see if seteuid exists
15089 set seteuid d_seteuid
15090 eval $inlibc
15091
15092 : see if setgrent exists
15093 set setgrent d_setgrent
15094 eval $inlibc
15095
15096 : see if setgrent_r exists
15097 set setgrent_r d_setgrent_r
15098 eval $inlibc
15099 case "$d_setgrent_r" in
15100 "$define")
15101         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15102         case "$d_setgrent_r_proto:$usethreads" in
15103         ":define")      d_setgrent_r_proto=define
15104                 set d_setgrent_r_proto setgrent_r $hdrs
15105                 eval $hasproto ;;
15106         *)      ;;
15107         esac
15108         case "$d_setgrent_r_proto" in
15109         define)
15110         case "$setgrent_r_proto" in
15111         ''|0) try='int setgrent_r(FILE**);'
15112         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15113         esac
15114         case "$setgrent_r_proto" in
15115         ''|0) try='void setgrent_r(FILE**);'
15116         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15117         esac
15118         case "$setgrent_r_proto" in
15119         ''|0)   d_setgrent_r=undef
15120                 setgrent_r_proto=0
15121                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15122         * )     case "$setgrent_r_proto" in
15123                 REENTRANT_PROTO*) ;;
15124                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15125                 esac
15126                 echo "Prototype: $try" ;;
15127         esac
15128         ;;
15129         *)      case "$usethreads" in
15130                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15131                 esac
15132                 d_setgrent_r=undef
15133                 setgrent_r_proto=0
15134                 ;;
15135         esac
15136         ;;
15137 *)      setgrent_r_proto=0
15138         ;;
15139 esac
15140
15141 : see if sethostent exists
15142 set sethostent d_sethent
15143 eval $inlibc
15144
15145 : see if sethostent_r exists
15146 set sethostent_r d_sethostent_r
15147 eval $inlibc
15148 case "$d_sethostent_r" in
15149 "$define")
15150         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15151         case "$d_sethostent_r_proto:$usethreads" in
15152         ":define")      d_sethostent_r_proto=define
15153                 set d_sethostent_r_proto sethostent_r $hdrs
15154                 eval $hasproto ;;
15155         *)      ;;
15156         esac
15157         case "$d_sethostent_r_proto" in
15158         define)
15159         case "$sethostent_r_proto" in
15160         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15161         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15162         esac
15163         case "$sethostent_r_proto" in
15164         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15165         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15166         esac
15167         case "$sethostent_r_proto" in
15168         ''|0)   d_sethostent_r=undef
15169                 sethostent_r_proto=0
15170                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15171         * )     case "$sethostent_r_proto" in
15172                 REENTRANT_PROTO*) ;;
15173                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15174                 esac
15175                 echo "Prototype: $try" ;;
15176         esac
15177         ;;
15178         *)      case "$usethreads" in
15179                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15180                 esac
15181                 d_sethostent_r=undef
15182                 sethostent_r_proto=0
15183                 ;;
15184         esac
15185         ;;
15186 *)      sethostent_r_proto=0
15187         ;;
15188 esac
15189
15190 : see if setitimer exists
15191 set setitimer d_setitimer
15192 eval $inlibc
15193
15194 : see if setlinebuf exists
15195 set setlinebuf d_setlinebuf
15196 eval $inlibc
15197
15198 : see if setlocale exists
15199 set setlocale d_setlocale
15200 eval $inlibc
15201
15202 : see if locale.h is available
15203 set locale.h i_locale
15204 eval $inhdr
15205
15206 : see if setlocale_r exists
15207 set setlocale_r d_setlocale_r
15208 eval $inlibc
15209 case "$d_setlocale_r" in
15210 "$define")
15211         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15212         case "$d_setlocale_r_proto:$usethreads" in
15213         ":define")      d_setlocale_r_proto=define
15214                 set d_setlocale_r_proto setlocale_r $hdrs
15215                 eval $hasproto ;;
15216         *)      ;;
15217         esac
15218         case "$d_setlocale_r_proto" in
15219         define)
15220         case "$setlocale_r_proto" in
15221         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15222         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15223         esac
15224         case "$setlocale_r_proto" in
15225         ''|0)   d_setlocale_r=undef
15226                 setlocale_r_proto=0
15227                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15228         * )     case "$setlocale_r_proto" in
15229                 REENTRANT_PROTO*) ;;
15230                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15231                 esac
15232                 echo "Prototype: $try" ;;
15233         esac
15234         ;;
15235         *)      case "$usethreads" in
15236                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15237                 esac
15238                 d_setlocale_r=undef
15239                 setlocale_r_proto=0
15240                 ;;
15241         esac
15242         ;;
15243 *)      setlocale_r_proto=0
15244         ;;
15245 esac
15246
15247 : see if setnetent exists
15248 set setnetent d_setnent
15249 eval $inlibc
15250
15251 : see if setnetent_r exists
15252 set setnetent_r d_setnetent_r
15253 eval $inlibc
15254 case "$d_setnetent_r" in
15255 "$define")
15256         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15257         case "$d_setnetent_r_proto:$usethreads" in
15258         ":define")      d_setnetent_r_proto=define
15259                 set d_setnetent_r_proto setnetent_r $hdrs
15260                 eval $hasproto ;;
15261         *)      ;;
15262         esac
15263         case "$d_setnetent_r_proto" in
15264         define)
15265         case "$setnetent_r_proto" in
15266         ''|0) try='int setnetent_r(int, struct netent_data*);'
15267         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15268         esac
15269         case "$setnetent_r_proto" in
15270         ''|0) try='void setnetent_r(int, struct netent_data*);'
15271         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15272         esac
15273         case "$setnetent_r_proto" in
15274         ''|0)   d_setnetent_r=undef
15275                 setnetent_r_proto=0
15276                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15277         * )     case "$setnetent_r_proto" in
15278                 REENTRANT_PROTO*) ;;
15279                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15280                 esac
15281                 echo "Prototype: $try" ;;
15282         esac
15283         ;;
15284         *)      case "$usethreads" in
15285                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15286                 esac
15287                 d_setnetent_r=undef
15288                 setnetent_r_proto=0
15289                 ;;
15290         esac
15291         ;;
15292 *)      setnetent_r_proto=0
15293         ;;
15294 esac
15295
15296 : see if setprotoent exists
15297 set setprotoent d_setpent
15298 eval $inlibc
15299
15300 : see if setpgid exists
15301 set setpgid d_setpgid
15302 eval $inlibc
15303
15304 : see if setpgrp2 exists
15305 set setpgrp2 d_setpgrp2
15306 eval $inlibc
15307
15308 : see if setpriority exists
15309 set setpriority d_setprior
15310 eval $inlibc
15311
15312 : see if setproctitle exists
15313 set setproctitle d_setproctitle
15314 eval $inlibc
15315
15316 : see if setprotoent_r exists
15317 set setprotoent_r d_setprotoent_r
15318 eval $inlibc
15319 case "$d_setprotoent_r" in
15320 "$define")
15321         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15322         case "$d_setprotoent_r_proto:$usethreads" in
15323         ":define")      d_setprotoent_r_proto=define
15324                 set d_setprotoent_r_proto setprotoent_r $hdrs
15325                 eval $hasproto ;;
15326         *)      ;;
15327         esac
15328         case "$d_setprotoent_r_proto" in
15329         define)
15330         case "$setprotoent_r_proto" in
15331         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15332         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15333         esac
15334         case "$setprotoent_r_proto" in
15335         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15336         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15337         esac
15338         case "$setprotoent_r_proto" in
15339         ''|0)   d_setprotoent_r=undef
15340                 setprotoent_r_proto=0
15341                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15342         * )     case "$setprotoent_r_proto" in
15343                 REENTRANT_PROTO*) ;;
15344                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15345                 esac
15346                 echo "Prototype: $try" ;;
15347         esac
15348         ;;
15349         *)      case "$usethreads" in
15350                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15351                 esac
15352                 d_setprotoent_r=undef
15353                 setprotoent_r_proto=0
15354                 ;;
15355         esac
15356         ;;
15357 *)      setprotoent_r_proto=0
15358         ;;
15359 esac
15360
15361 : see if setpwent exists
15362 set setpwent d_setpwent
15363 eval $inlibc
15364
15365 : see if setpwent_r exists
15366 set setpwent_r d_setpwent_r
15367 eval $inlibc
15368 case "$d_setpwent_r" in
15369 "$define")
15370         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15371         case "$d_setpwent_r_proto:$usethreads" in
15372         ":define")      d_setpwent_r_proto=define
15373                 set d_setpwent_r_proto setpwent_r $hdrs
15374                 eval $hasproto ;;
15375         *)      ;;
15376         esac
15377         case "$d_setpwent_r_proto" in
15378         define)
15379         case "$setpwent_r_proto" in
15380         ''|0) try='int setpwent_r(FILE**);'
15381         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15382         esac
15383         case "$setpwent_r_proto" in
15384         ''|0) try='void setpwent_r(FILE**);'
15385         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15386         esac
15387         case "$setpwent_r_proto" in
15388         ''|0)   d_setpwent_r=undef
15389                 setpwent_r_proto=0
15390                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15391         * )     case "$setpwent_r_proto" in
15392                 REENTRANT_PROTO*) ;;
15393                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15394                 esac
15395                 echo "Prototype: $try" ;;
15396         esac
15397         ;;
15398         *)      case "$usethreads" in
15399                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15400                 esac
15401                 d_setpwent_r=undef
15402                 setpwent_r_proto=0
15403                 ;;
15404         esac
15405         ;;
15406 *)      setpwent_r_proto=0
15407         ;;
15408 esac
15409
15410 : see if setregid exists
15411 set setregid d_setregid
15412 eval $inlibc
15413 set setresgid d_setresgid
15414 eval $inlibc
15415
15416 : see if setreuid exists
15417 set setreuid d_setreuid
15418 eval $inlibc
15419 set setresuid d_setresuid
15420 eval $inlibc
15421
15422 : see if setrgid exists
15423 set setrgid d_setrgid
15424 eval $inlibc
15425
15426 : see if setruid exists
15427 set setruid d_setruid
15428 eval $inlibc
15429
15430 : see if setservent exists
15431 set setservent d_setsent
15432 eval $inlibc
15433
15434 : see if setservent_r exists
15435 set setservent_r d_setservent_r
15436 eval $inlibc
15437 case "$d_setservent_r" in
15438 "$define")
15439         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15440         case "$d_setservent_r_proto:$usethreads" in
15441         ":define")      d_setservent_r_proto=define
15442                 set d_setservent_r_proto setservent_r $hdrs
15443                 eval $hasproto ;;
15444         *)      ;;
15445         esac
15446         case "$d_setservent_r_proto" in
15447         define)
15448         case "$setservent_r_proto" in
15449         ''|0) try='int setservent_r(int, struct servent_data*);'
15450         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15451         esac
15452         case "$setservent_r_proto" in
15453         ''|0) try='void setservent_r(int, struct servent_data*);'
15454         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15455         esac
15456         case "$setservent_r_proto" in
15457         ''|0)   d_setservent_r=undef
15458                 setservent_r_proto=0
15459                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15460         * )     case "$setservent_r_proto" in
15461                 REENTRANT_PROTO*) ;;
15462                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15463                 esac
15464                 echo "Prototype: $try" ;;
15465         esac
15466         ;;
15467         *)      case "$usethreads" in
15468                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15469                 esac
15470                 d_setservent_r=undef
15471                 setservent_r_proto=0
15472                 ;;
15473         esac
15474         ;;
15475 *)      setservent_r_proto=0
15476         ;;
15477 esac
15478
15479 : see if setsid exists
15480 set setsid d_setsid
15481 eval $inlibc
15482
15483 : see if setvbuf exists
15484 set setvbuf d_setvbuf
15485 eval $inlibc
15486
15487 : see if sfio.h is available
15488 set sfio.h i_sfio
15489 eval $inhdr
15490
15491
15492 : see if sfio library is available
15493 case "$i_sfio" in
15494 $define)
15495         val=''
15496         set sfreserve val
15497         eval $inlibc
15498         ;;
15499 *)
15500         val="$undef"
15501         ;;
15502 esac
15503 : Ok, but do we want to use it.
15504 case "$val" in
15505 $define)
15506         case "$usesfio" in
15507         true|$define|[yY]*) dflt='y';;
15508         *) dflt='n';;
15509         esac
15510         echo "$package can use the sfio library, but it is experimental."
15511         case "$useperlio" in
15512         "$undef")
15513             echo "For sfio also the PerlIO abstraction layer is needed."
15514             echo "Earlier you said you wouldn't want that."
15515             ;;
15516         esac
15517         rp="You seem to have sfio available, do you want to try using it?"
15518         . ./myread
15519         case "$ans" in
15520         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15521                 useperlio="$define"
15522                 val="$define"
15523                 ;;
15524         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15525                 val="$undef"
15526                 ;;
15527         esac
15528         ;;
15529 *)      case "$usesfio" in
15530         true|$define|[yY]*)
15531                 echo "Sorry, cannot find sfio on this machine." >&4
15532                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15533                 val="$undef"
15534                 ;;
15535         esac
15536         ;;
15537 esac
15538 set d_sfio
15539 eval $setvar
15540 case "$d_sfio" in
15541 $define) usesfio='true';;
15542 *) usesfio='false';;
15543 esac
15544 case "$d_sfio" in
15545 $define) ;;
15546 *)      : Remove sfio from list of libraries to use
15547         case "$libs" in
15548         *-lsfio*)
15549                 echo "Removing unneeded -lsfio from library list" >&4
15550                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15551                 shift
15552                 libs="$*"
15553                 echo "libs = $libs" >&4
15554                 ;;
15555         esac
15556 ;;
15557 esac
15558
15559
15560 : see if shmctl exists
15561 set shmctl d_shmctl
15562 eval $inlibc
15563
15564 : see if shmget exists
15565 set shmget d_shmget
15566 eval $inlibc
15567
15568 : see if shmat exists
15569 set shmat d_shmat
15570 eval $inlibc
15571 : see what shmat returns
15572 case "$d_shmat" in
15573 "$define")
15574         $cat >shmat.c <<'END'
15575 #include <sys/shm.h>
15576 void *shmat();
15577 END
15578         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15579                 shmattype='void *'
15580         else
15581                 shmattype='char *'
15582         fi
15583         echo "and it returns ($shmattype)." >&4
15584         : see if a prototype for shmat is available
15585         xxx=`./findhdr sys/shm.h`
15586         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15587         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15588                 val="$define"
15589         else
15590                 val="$undef"
15591         fi
15592         $rm -f shmat.[co]
15593         ;;
15594 *)
15595         val="$undef"
15596         ;;
15597 esac
15598 set d_shmatprototype
15599 eval $setvar
15600
15601 : see if shmdt exists
15602 set shmdt d_shmdt
15603 eval $inlibc
15604
15605 : see how much of the 'shm*(2)' library is present.
15606 h_shm=true
15607 echo " "
15608 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15609 *"$undef"*) h_shm=false;;
15610 esac
15611 case "$osname" in
15612 freebsd)
15613     case "`ipcs 2>&1`" in
15614     "SVID shared memory"*"not configured"*)
15615         echo "Your $osname does not have the shm*(2) configured." >&4
15616         h_shm=false
15617         val="$undef"
15618         set shmctl d_shmctl
15619         evat $setvar
15620         set shmget d_shmget
15621         evat $setvar
15622         set shmat d_shmat
15623         evat $setvar
15624         set shmdt d_shmdt
15625         evat $setvar
15626         ;;
15627     esac
15628     ;;
15629 esac
15630 : we could also check for sys/ipc.h ...
15631 if $h_shm && $test `./findhdr sys/shm.h`; then
15632         echo "You have the full shm*(2) library." >&4
15633         val="$define"
15634 else
15635         echo "You don't have the full shm*(2) library." >&4
15636         val="$undef"
15637 fi
15638 set d_shm
15639 eval $setvar
15640
15641 echo " "
15642 : see if we have sigaction
15643 if set sigaction val -f d_sigaction; eval $csym; $val; then
15644         echo 'sigaction() found.' >&4
15645         $cat > try.c <<EOP
15646 #include <stdio.h>
15647 #include <sys/types.h>
15648 #include <signal.h>
15649 #$i_stdlib I_STDLIB
15650 #ifdef I_STDLIB
15651 #include <stdlib.h>
15652 #endif
15653 int main()
15654 {
15655     struct sigaction act, oact;
15656     act.sa_flags = 0;
15657     oact.sa_handler = 0;
15658     /* so that act and oact are used */
15659     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15660 }
15661 EOP
15662         set try
15663         if eval $compile_ok; then
15664                 val="$define"
15665         else
15666                 echo "But you don't seem to have a useable struct sigaction." >&4
15667                 val="$undef"
15668         fi
15669 else
15670         echo 'sigaction NOT found.' >&4
15671         val="$undef"
15672 fi
15673 set d_sigaction; eval $setvar
15674 $rm -f try try$_o try.c
15675
15676 : see if sigprocmask exists
15677 set sigprocmask d_sigprocmask
15678 eval $inlibc
15679
15680 : see if sigsetjmp exists
15681 echo " "
15682 case "$d_sigsetjmp" in
15683 '')
15684         $cat >try.c <<EOP
15685 #include <setjmp.h>
15686 #$i_stdlib I_STDLIB
15687 #ifdef I_STDLIB
15688 #include <stdlib.h>
15689 #endif
15690 sigjmp_buf env;
15691 int set = 1;
15692 int main()
15693 {
15694         if (sigsetjmp(env,1))
15695                 exit(set);
15696         set = 0;
15697         siglongjmp(env, 1);
15698         exit(1);
15699 }
15700 EOP
15701         set try
15702         if eval $compile; then
15703                 if $run ./try >/dev/null 2>&1; then
15704                         echo "POSIX sigsetjmp found." >&4
15705                         val="$define"
15706                 else
15707                         $cat >&4 <<EOM
15708 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15709 I'll ignore them.
15710 EOM
15711                         val="$undef"
15712                 fi
15713         else
15714                 echo "sigsetjmp not found." >&4
15715                 val="$undef"
15716         fi
15717         ;;
15718 *) val="$d_sigsetjmp"
15719         case "$d_sigsetjmp" in
15720         $define) echo "POSIX sigsetjmp found." >&4;;
15721         $undef) echo "sigsetjmp not found." >&4;;
15722         esac
15723         ;;
15724 esac
15725 set d_sigsetjmp
15726 eval $setvar
15727 $rm -f try.c try
15728
15729 : see if sockatmark exists
15730 set sockatmark d_sockatmark
15731 eval $inlibc
15732
15733 : see if prototype for sockatmark is available
15734 echo " "
15735 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15736 eval $hasproto
15737
15738 : see if socks5_init exists
15739 set socks5_init d_socks5_init
15740 eval $inlibc
15741
15742 : see if srand48_r exists
15743 set srand48_r d_srand48_r
15744 eval $inlibc
15745 case "$d_srand48_r" in
15746 "$define")
15747         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15748         case "$d_srand48_r_proto:$usethreads" in
15749         ":define")      d_srand48_r_proto=define
15750                 set d_srand48_r_proto srand48_r $hdrs
15751                 eval $hasproto ;;
15752         *)      ;;
15753         esac
15754         case "$d_srand48_r_proto" in
15755         define)
15756         case "$srand48_r_proto" in
15757         ''|0) try='int srand48_r(long, struct drand48_data*);'
15758         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15759         esac
15760         case "$srand48_r_proto" in
15761         ''|0)   d_srand48_r=undef
15762                 srand48_r_proto=0
15763                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15764         * )     case "$srand48_r_proto" in
15765                 REENTRANT_PROTO*) ;;
15766                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15767                 esac
15768                 echo "Prototype: $try" ;;
15769         esac
15770         ;;
15771         *)      case "$usethreads" in
15772                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15773                 esac
15774                 d_srand48_r=undef
15775                 srand48_r_proto=0
15776                 ;;
15777         esac
15778         ;;
15779 *)      srand48_r_proto=0
15780         ;;
15781 esac
15782
15783 : see if srandom_r exists
15784 set srandom_r d_srandom_r
15785 eval $inlibc
15786 case "$d_srandom_r" in
15787 "$define")
15788         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15789         case "$d_srandom_r_proto:$usethreads" in
15790         ":define")      d_srandom_r_proto=define
15791                 set d_srandom_r_proto srandom_r $hdrs
15792                 eval $hasproto ;;
15793         *)      ;;
15794         esac
15795         case "$d_srandom_r_proto" in
15796         define)
15797         case "$srandom_r_proto" in
15798         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15799         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15800         esac
15801         case "$srandom_r_proto" in
15802         ''|0)   d_srandom_r=undef
15803                 srandom_r_proto=0
15804                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15805         * )     case "$srandom_r_proto" in
15806                 REENTRANT_PROTO*) ;;
15807                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15808                 esac
15809                 echo "Prototype: $try" ;;
15810         esac
15811         ;;
15812         *)      case "$usethreads" in
15813                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15814                 esac
15815                 d_srandom_r=undef
15816                 srandom_r_proto=0
15817                 ;;
15818         esac
15819         ;;
15820 *)      srandom_r_proto=0
15821         ;;
15822 esac
15823
15824 : see if prototype for setresgid is available
15825 echo " "
15826 set d_sresgproto setresgid $i_unistd unistd.h
15827 eval $hasproto
15828
15829 : see if prototype for setresuid is available
15830 echo " "
15831 set d_sresuproto setresuid $i_unistd unistd.h
15832 eval $hasproto
15833
15834 : see if sys/stat.h is available
15835 set sys/stat.h i_sysstat
15836 eval $inhdr
15837
15838
15839 : see if stat knows about block sizes
15840 echo " "
15841 echo "Checking to see if your struct stat has st_blocks field..." >&4
15842 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15843 eval $hasfield
15844
15845
15846 : see if this is a sys/vfs.h system
15847 set sys/vfs.h i_sysvfs
15848 eval $inhdr
15849
15850
15851 : see if this is a sys/statfs.h system
15852 set sys/statfs.h i_sysstatfs
15853 eval $inhdr
15854
15855
15856 echo " "
15857 echo "Checking to see if your system supports struct statfs..." >&4
15858 set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
15859 eval $hasstruct
15860 case "$d_statfs_s" in
15861 "$define")      echo "Yes, it does."   ;;
15862 *)              echo "No, it doesn't." ;;
15863 esac
15864
15865
15866
15867 : see if struct statfs knows about f_flags
15868 case "$d_statfs_s" in
15869 define) 
15870         echo " "
15871         echo "Checking to see if your struct statfs has f_flags field..." >&4
15872         set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
15873         eval $hasfield
15874         ;;
15875 *)      val="$undef"
15876         set d_statfs_f_flags
15877         eval $setvar
15878         ;;
15879 esac
15880 case "$d_statfs_f_flags" in
15881 "$define")      echo "Yes, it does."   ;;
15882 *)              echo "No, it doesn't." ;;
15883 esac
15884
15885 : see if _ptr and _cnt from stdio act std
15886 echo " "
15887
15888 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15889         echo "(Looks like you have stdio.h from BSD.)"
15890         case "$stdio_ptr" in
15891         '') stdio_ptr='((fp)->_p)'
15892                 ptr_lval=$define
15893                 ;;
15894         *)      ptr_lval=$d_stdio_ptr_lval;;
15895         esac
15896         case "$stdio_cnt" in
15897         '') stdio_cnt='((fp)->_r)'
15898                 cnt_lval=$define
15899                 ;;
15900         *)      cnt_lval=$d_stdio_cnt_lval;;
15901         esac
15902         case "$stdio_base" in
15903         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15904         esac
15905         case "$stdio_bufsiz" in
15906         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15907         esac
15908 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15909         echo "(Looks like you have stdio.h from Linux.)"
15910         case "$stdio_ptr" in
15911         '') stdio_ptr='((fp)->_IO_read_ptr)'
15912                 ptr_lval=$define
15913                 ;;
15914         *)      ptr_lval=$d_stdio_ptr_lval;;
15915         esac
15916         case "$stdio_cnt" in
15917         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15918                 cnt_lval=$undef
15919                 ;;
15920         *)      cnt_lval=$d_stdio_cnt_lval;;
15921         esac
15922         case "$stdio_base" in
15923         '') stdio_base='((fp)->_IO_read_base)';;
15924         esac
15925         case "$stdio_bufsiz" in
15926         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15927         esac
15928 else
15929         case "$stdio_ptr" in
15930         '') stdio_ptr='((fp)->_ptr)'
15931                 ptr_lval=$define
15932                 ;;
15933         *)      ptr_lval=$d_stdio_ptr_lval;;
15934         esac
15935         case "$stdio_cnt" in
15936         '') stdio_cnt='((fp)->_cnt)'
15937                 cnt_lval=$define
15938                 ;;
15939         *)      cnt_lval=$d_stdio_cnt_lval;;
15940         esac
15941         case "$stdio_base" in
15942         '') stdio_base='((fp)->_base)';;
15943         esac
15944         case "$stdio_bufsiz" in
15945         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15946         esac
15947 fi
15948
15949 : test whether _ptr and _cnt really work
15950 echo "Checking how std your stdio is..." >&4
15951 $cat >try.c <<EOP
15952 #include <stdio.h>
15953 #$i_stdlib I_STDLIB
15954 #ifdef I_STDLIB
15955 #include <stdlib.h>
15956 #endif
15957 #define FILE_ptr(fp)    $stdio_ptr
15958 #define FILE_cnt(fp)    $stdio_cnt
15959 int main() {
15960         FILE *fp = fopen("try.c", "r");
15961         char c = getc(fp);
15962         if (
15963                 18 <= FILE_cnt(fp) &&
15964                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15965         )
15966                 exit(0);
15967         exit(1);
15968 }
15969 EOP
15970 val="$undef"
15971 set try
15972 if eval $compile && $to try.c; then
15973         if $run ./try; then
15974                 echo "Your stdio acts pretty std."
15975                 val="$define"
15976         else
15977                 echo "Your stdio isn't very std."
15978         fi
15979 else
15980         echo "Your stdio doesn't appear very std."
15981 fi
15982 $rm -f try.c try
15983
15984 # glibc 2.2.90 and above apparently change stdio streams so Perl's
15985 # direct buffer manipulation no longer works.  The Configure tests
15986 # should be changed to correctly detect this, but until then,
15987 # the following check should at least let perl compile and run.
15988 # (This quick fix should be updated before 5.8.1.)
15989 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
15990 # A. Dougherty, June 3, 2002.
15991 case "$d_gnulibc" in
15992 $define)
15993         case "$gnulibc_version" in
15994         2.[01]*)  ;;
15995         2.2) ;;
15996         2.2.[0-9]) ;;
15997         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
15998                 val="$undef"
15999                 ;;
16000         esac
16001         ;;
16002 esac
16003 set d_stdstdio
16004 eval $setvar
16005
16006 : Can _ptr be used as an lvalue?
16007 case "$d_stdstdio$ptr_lval" in
16008 $define$define) val=$define ;;
16009 *) val=$undef ;;
16010 esac
16011 set d_stdio_ptr_lval
16012 eval $setvar
16013
16014 : Can _cnt be used as an lvalue?
16015 case "$d_stdstdio$cnt_lval" in
16016 $define$define) val=$define ;;
16017 *) val=$undef ;;
16018 esac
16019 set d_stdio_cnt_lval
16020 eval $setvar
16021
16022
16023 : test whether setting _ptr sets _cnt as a side effect
16024 d_stdio_ptr_lval_sets_cnt="$undef"
16025 d_stdio_ptr_lval_nochange_cnt="$undef"
16026 case "$d_stdio_ptr_lval$d_stdstdio" in
16027 $define$define)
16028         echo "Checking to see what happens if we set the stdio ptr..." >&4
16029 $cat >try.c <<EOP
16030 #include <stdio.h>
16031 /* Can we scream? */
16032 /* Eat dust sed :-) */
16033 /* In the buffer space, no one can hear you scream. */
16034 #$i_stdlib I_STDLIB
16035 #ifdef I_STDLIB
16036 #include <stdlib.h>
16037 #endif
16038 #define FILE_ptr(fp)    $stdio_ptr
16039 #define FILE_cnt(fp)    $stdio_cnt
16040 #include <sys/types.h>
16041 int main() {
16042         FILE *fp = fopen("try.c", "r");
16043         int c;
16044         char *ptr;
16045         size_t cnt;
16046         if (!fp) {
16047             puts("Fail even to read");
16048             exit(1);
16049         }
16050         c = getc(fp); /* Read away the first # */
16051         if (c == EOF) {
16052             puts("Fail even to read");
16053             exit(1);
16054         }
16055         if (!(
16056                 18 <= FILE_cnt(fp) &&
16057                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
16058         )) {
16059                 puts("Fail even to read");
16060                 exit (1);
16061         }
16062         ptr = (char*) FILE_ptr(fp);
16063         cnt = (size_t)FILE_cnt(fp);
16064
16065         FILE_ptr(fp) += 42;
16066
16067         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
16068                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
16069                 exit (1);
16070         }
16071         if (FILE_cnt(fp) <= 20) {
16072                 printf ("Fail (<20 chars to test)");
16073                 exit (1);
16074         }
16075         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
16076                 puts("Fail compare");
16077                 exit (1);
16078         }
16079         if (cnt == FILE_cnt(fp)) {
16080                 puts("Pass_unchanged");
16081                 exit (0);
16082         }       
16083         if (FILE_cnt(fp) == (cnt - 42)) {
16084                 puts("Pass_changed");
16085                 exit (0);
16086         }
16087         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
16088         return 1;
16089
16090 }
16091 EOP
16092         set try
16093         if eval $compile && $to try.c; then
16094                 case `$run ./try` in
16095                 Pass_changed)
16096                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
16097                         d_stdio_ptr_lval_sets_cnt="$define" ;;
16098                 Pass_unchanged)
16099                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
16100                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
16101                 Fail*)
16102                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
16103                 *)
16104                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
16105         esac
16106         else
16107                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
16108         fi
16109         $rm -f try.c try
16110         ;;
16111 esac
16112
16113 : see if _base is also standard
16114 val="$undef"
16115 case "$d_stdstdio" in
16116 $define)
16117         $cat >try.c <<EOP
16118 #include <stdio.h>
16119 #$i_stdlib I_STDLIB
16120 #ifdef I_STDLIB
16121 #include <stdlib.h>
16122 #endif
16123 #define FILE_base(fp)   $stdio_base
16124 #define FILE_bufsiz(fp) $stdio_bufsiz
16125 int main() {
16126         FILE *fp = fopen("try.c", "r");
16127         char c = getc(fp);
16128         if (
16129                 19 <= FILE_bufsiz(fp) &&
16130                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
16131         )
16132                 exit(0);
16133         exit(1);
16134 }
16135 EOP
16136         set try
16137         if eval $compile && $to try.c; then
16138                 if $run ./try; then
16139                         echo "And its _base field acts std."
16140                         val="$define"
16141                 else
16142                         echo "But its _base field isn't std."
16143                 fi
16144         else
16145                 echo "However, it seems to be lacking the _base field."
16146         fi
16147         $rm -f try.c try
16148         ;;
16149 esac
16150 set d_stdiobase
16151 eval $setvar
16152
16153 $cat >&4 <<EOM
16154 Checking how to access stdio streams by file descriptor number...
16155 EOM
16156 case "$stdio_stream_array" in
16157 '')     $cat >try.c <<EOCP
16158 #include <stdio.h>
16159 int main() {
16160   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16161     printf("yes\n");
16162 }
16163 EOCP
16164         for s in _iob __iob __sF
16165         do
16166                 set try -DSTDIO_STREAM_ARRAY=$s
16167                 if eval $compile; then
16168                         case "`$run ./try`" in
16169                         yes)    stdio_stream_array=$s; break ;;
16170                         esac
16171                 fi
16172         done
16173         $rm -f try.* try$exe_ext
16174 esac
16175 case "$stdio_stream_array" in
16176 '')     $cat >&4 <<EOM
16177 I can't figure out how to access stdio streams by file descriptor number.
16178 EOM
16179         d_stdio_stream_array="$undef"
16180         ;;
16181 *)      $cat >&4 <<EOM
16182 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16183 EOM
16184         d_stdio_stream_array="$define"
16185         ;;
16186 esac
16187
16188 : see if strcoll exists
16189 set strcoll d_strcoll
16190 eval $inlibc
16191
16192 : check for structure copying
16193 echo " "
16194 echo "Checking to see if your C compiler can copy structs..." >&4
16195 $cat >try.c <<'EOCP'
16196 int main()
16197 {
16198         struct blurfl {
16199                 int dyick;
16200         } foo, bar;
16201
16202         foo = bar;
16203 }
16204 EOCP
16205 if $cc -c try.c >/dev/null 2>&1 ; then
16206         val="$define"
16207         echo "Yup, it can."
16208 else
16209         val="$undef"
16210         echo "Nope, it can't."
16211 fi
16212 set d_strctcpy
16213 eval $setvar
16214 $rm -f try.*
16215
16216 : see if strerror and/or sys_errlist[] exist
16217 echo " "
16218 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16219     if set strerror val -f d_strerror; eval $csym; $val; then
16220                 echo 'strerror() found.' >&4
16221                 d_strerror="$define"
16222                 d_strerrm='strerror(e)'
16223                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16224                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16225                         d_syserrlst="$define"
16226                 else
16227                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16228                         d_syserrlst="$undef"
16229                 fi
16230     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16231                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16232                 echo 'strerror() found in string header.' >&4
16233                 d_strerror="$define"
16234                 d_strerrm='strerror(e)'
16235                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16236                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16237                                 d_syserrlst="$define"
16238                 else
16239                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16240                         d_syserrlst="$undef"
16241                 fi
16242     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16243                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16244                 d_strerror="$undef"
16245                 d_syserrlst="$define"
16246                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16247     else
16248                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16249                 d_strerror="$undef"
16250                 d_syserrlst="$undef"
16251                 d_strerrm='"unknown"'
16252     fi
16253 fi
16254
16255 : see if strerror_r exists
16256 set strerror_r d_strerror_r
16257 eval $inlibc
16258 case "$d_strerror_r" in
16259 "$define")
16260         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16261         case "$d_strerror_r_proto:$usethreads" in
16262         ":define")      d_strerror_r_proto=define
16263                 set d_strerror_r_proto strerror_r $hdrs
16264                 eval $hasproto ;;
16265         *)      ;;
16266         esac
16267         case "$d_strerror_r_proto" in
16268         define)
16269         case "$strerror_r_proto" in
16270         ''|0) try='int strerror_r(int, char*, size_t);'
16271         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16272         esac
16273         case "$strerror_r_proto" in
16274         ''|0) try='int strerror_r(int, char*, int);'
16275         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16276         esac
16277         case "$strerror_r_proto" in
16278         ''|0) try='char* strerror_r(int, char*, size_t);'
16279         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16280         esac
16281         case "$strerror_r_proto" in
16282         ''|0)   d_strerror_r=undef
16283                 strerror_r_proto=0
16284                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16285         * )     case "$strerror_r_proto" in
16286                 REENTRANT_PROTO*) ;;
16287                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16288                 esac
16289                 echo "Prototype: $try" ;;
16290         esac
16291         ;;
16292         *)      case "$usethreads" in
16293                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16294                 esac
16295                 d_strerror_r=undef
16296                 strerror_r_proto=0
16297                 ;;
16298         esac
16299         ;;
16300 *)      strerror_r_proto=0
16301         ;;
16302 esac
16303
16304 : see if strftime exists
16305 set strftime d_strftime
16306 eval $inlibc
16307
16308 : see if strtod exists
16309 set strtod d_strtod
16310 eval $inlibc
16311
16312 : see if strtol exists
16313 set strtol d_strtol
16314 eval $inlibc
16315
16316 : see if strtold exists
16317 set strtold d_strtold
16318 eval $inlibc
16319
16320 : see if strtoll exists
16321 set strtoll d_strtoll
16322 eval $inlibc
16323
16324 case "$d_longlong-$d_strtoll" in
16325 "$define-$define")
16326         $cat <<EOM
16327 Checking whether your strtoll() works okay...
16328 EOM
16329         $cat >try.c <<'EOCP'
16330 #include <errno.h>
16331 #ifdef __hpux
16332 #define strtoll __strtoll
16333 #endif
16334 #ifdef __EMX__
16335 #define strtoll _strtoll
16336 #endif
16337 #include <stdio.h>
16338 extern long long int strtoll(char *s, char **, int); 
16339 static int bad = 0;
16340 int check(char *s, long long ell, int een) {
16341         long long gll;
16342         errno = 0;
16343         gll = strtoll(s, 0, 10);
16344         if (!((gll == ell) && (errno == een)))
16345                 bad++;
16346 }
16347 int main() {
16348         check(" 1",                                      1LL, 0);
16349         check(" 0",                                      0LL, 0);
16350         check("-1",                                     -1LL, 0);
16351         check("-9223372036854775808", -9223372036854775808LL, 0);
16352         check("-9223372036854775808", -9223372036854775808LL, 0);
16353         check(" 9223372036854775807",  9223372036854775807LL, 0);
16354         check("-9223372036854775808", -9223372036854775808LL, 0);
16355         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16356         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16357         if (!bad)
16358                 printf("ok\n");
16359 }
16360 EOCP
16361         set try
16362         if eval $compile; then
16363                 yyy=`$run ./try`
16364                 case "$yyy" in
16365                 ok) echo "Your strtoll() seems to be working okay." ;;
16366                 *) cat <<EOM >&4
16367 Your strtoll() doesn't seem to be working okay.
16368 EOM
16369                    d_strtoll="$undef"
16370                    ;;
16371                 esac
16372         else
16373                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16374                 d_strtoll="$undef"
16375         fi
16376         ;;
16377 esac
16378
16379 : see if strtoq exists
16380 set strtoq d_strtoq
16381 eval $inlibc
16382
16383 : see if strtoul exists
16384 set strtoul d_strtoul
16385 eval $inlibc
16386
16387 case "$d_strtoul" in
16388 "$define")
16389         $cat <<EOM
16390 Checking whether your strtoul() works okay...
16391 EOM
16392         $cat >try.c <<'EOCP'
16393 #include <errno.h>
16394 #include <stdio.h>
16395 extern unsigned long int strtoul(char *s, char **, int); 
16396 static int bad = 0;
16397 void check(char *s, unsigned long eul, int een) {
16398         unsigned long gul;
16399         errno = 0;
16400         gul = strtoul(s, 0, 10);
16401         if (!((gul == eul) && (errno == een)))
16402                 bad++;
16403 }
16404 int main() {
16405         check(" 1", 1L, 0);
16406         check(" 0", 0L, 0);
16407 EOCP
16408         case "$longsize" in
16409         8)
16410             $cat >>try.c <<'EOCP'
16411         check("18446744073709551615", 18446744073709551615UL, 0);
16412         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16413 #if 0 /* strtoul() for /^-/ strings is undefined. */
16414         check("-1", 18446744073709551615UL, 0);
16415         check("-18446744073709551614", 2, 0);
16416         check("-18446744073709551615", 1, 0);
16417         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16418         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16419 #endif
16420 EOCP
16421                 ;;
16422         4)
16423                     $cat >>try.c <<'EOCP'
16424         check("4294967295", 4294967295UL, 0);
16425         check("4294967296", 4294967295UL, ERANGE);
16426 #if 0 /* strtoul() for /^-/ strings is undefined. */
16427         check("-1", 4294967295UL, 0);
16428         check("-4294967294", 2, 0);
16429         check("-4294967295", 1, 0);
16430         check("-4294967296", 4294967295UL, ERANGE);
16431         check("-4294967297", 4294967295UL, ERANGE);
16432 #endif
16433 EOCP
16434                 ;;
16435         *)
16436 : Should we write these tests to be more portable by sprintf-ing
16437 : ~0 and then manipulating that char string as input for strtol?
16438                 ;;
16439         esac
16440         $cat >>try.c <<'EOCP'
16441         if (!bad)
16442                 printf("ok\n");
16443         return 0;
16444 }
16445 EOCP
16446         set try
16447         if eval $compile; then
16448                 case "`$run ./try`" in
16449                 ok) echo "Your strtoul() seems to be working okay." ;;
16450                 *) cat <<EOM >&4
16451 Your strtoul() doesn't seem to be working okay.
16452 EOM
16453                    d_strtoul="$undef"
16454                    ;;
16455                 esac
16456         fi
16457         ;;
16458 esac
16459
16460 : see if strtoull exists
16461 set strtoull d_strtoull
16462 eval $inlibc
16463
16464 case "$d_longlong-$d_strtoull" in
16465 "$define-$define")
16466         $cat <<EOM
16467 Checking whether your strtoull() works okay...
16468 EOM
16469         $cat >try.c <<'EOCP'
16470 #include <errno.h>
16471 #ifdef __hpux
16472 #define strtoull __strtoull
16473 #endif
16474 #include <stdio.h>
16475 extern unsigned long long int strtoull(char *s, char **, int); 
16476 static int bad = 0;
16477 int check(char *s, long long eull, int een) {
16478         long long gull;
16479         errno = 0;
16480         gull = strtoull(s, 0, 10);
16481         if (!((gull == eull) && (errno == een)))
16482                 bad++;
16483 }
16484 int main() {
16485         check(" 1",                                        1LL, 0);
16486         check(" 0",                                        0LL, 0);
16487         check("18446744073709551615",  18446744073709551615ULL, 0);
16488         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16489 #if 0 /* strtoull() for /^-/ strings is undefined. */
16490         check("-1",                    18446744073709551615ULL, 0);
16491         check("-18446744073709551614",                     2LL, 0);
16492         check("-18446744073709551615",                     1LL, 0);
16493         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16494         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16495 #endif
16496         if (!bad)
16497                 printf("ok\n");
16498 }
16499 EOCP
16500         set try
16501         if eval $compile; then
16502                 case "`$run ./try`" in
16503                 ok) echo "Your strtoull() seems to be working okay." ;;
16504                 *) cat <<EOM >&4
16505 Your strtoull() doesn't seem to be working okay.
16506 EOM
16507                    d_strtoull="$undef"
16508                    ;;
16509                 esac
16510         fi
16511         ;;
16512 esac
16513
16514 : see if strtouq exists
16515 set strtouq d_strtouq
16516 eval $inlibc
16517
16518 case "$d_strtouq" in
16519 "$define")
16520         $cat <<EOM
16521 Checking whether your strtouq() works okay...
16522 EOM
16523         $cat >try.c <<'EOCP'
16524 #include <errno.h>
16525 #include <stdio.h>
16526 extern unsigned long long int strtouq(char *s, char **, int); 
16527 static int bad = 0;
16528 void check(char *s, unsigned long long eull, int een) {
16529         unsigned long long gull;
16530         errno = 0;
16531         gull = strtouq(s, 0, 10);
16532         if (!((gull == eull) && (errno == een)))
16533                 bad++;
16534 }
16535 int main() {
16536         check(" 1",                                        1LL, 0);
16537         check(" 0",                                        0LL, 0);
16538         check("18446744073709551615",  18446744073709551615ULL, 0);
16539         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16540 #if 0 /* strtouq() for /^-/ strings is undefined. */
16541         check("-1",                    18446744073709551615ULL, 0);
16542         check("-18446744073709551614",                     2LL, 0);
16543         check("-18446744073709551615",                     1LL, 0);
16544         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16545         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16546 #endif
16547         if (!bad)
16548                 printf("ok\n");
16549         return 0;
16550 }
16551 EOCP
16552         set try
16553         if eval $compile; then
16554                 case "`$run ./try`" in
16555                 ok) echo "Your strtouq() seems to be working okay." ;;
16556                 *) cat <<EOM >&4
16557 Your strtouq() doesn't seem to be working okay.
16558 EOM
16559                    d_strtouq="$undef"
16560                    ;;
16561                 esac
16562         fi
16563         ;;
16564 esac
16565
16566 : see if strxfrm exists
16567 set strxfrm d_strxfrm
16568 eval $inlibc
16569
16570 : see if symlink exists
16571 set symlink d_symlink
16572 eval $inlibc
16573
16574 : see if syscall exists
16575 set syscall d_syscall
16576 eval $inlibc
16577
16578 : see if prototype for syscall is available
16579 echo " "
16580 set d_syscallproto syscall $i_unistd unistd.h
16581 eval $hasproto
16582
16583 : see if sysconf exists
16584 set sysconf d_sysconf
16585 eval $inlibc
16586
16587 : see if system exists
16588 set system d_system
16589 eval $inlibc
16590
16591 : see if tcgetpgrp exists
16592 set tcgetpgrp d_tcgetpgrp
16593 eval $inlibc
16594
16595 : see if tcsetpgrp exists
16596 set tcsetpgrp d_tcsetpgrp
16597 eval $inlibc
16598
16599 : see if prototype for telldir is available
16600 echo " "
16601 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16602 eval $hasproto
16603
16604 : see if time exists
16605 echo " "
16606 if test "X$d_time" = X -o X"$timetype" = X; then
16607     if set time val -f d_time; eval $csym; $val; then
16608                 echo 'time() found.' >&4
16609                 val="$define"
16610                 rp="What is the type returned by time() on this system?"
16611                 set time_t timetype long stdio.h sys/types.h
16612                 eval $typedef_ask
16613     else
16614                 echo 'time() not found, hope that will do.' >&4
16615                 val="$undef"
16616                 timetype='int';
16617     fi
16618     set d_time
16619     eval $setvar
16620 fi
16621
16622 : see if this is a sys/times.h system
16623 set sys/times.h i_systimes
16624 eval $inhdr
16625
16626 : see if times exists
16627 echo " "
16628 if set times val -f d_times; eval $csym; $val; then
16629         echo 'times() found.' >&4
16630         d_times="$define"
16631         inc=''
16632         case "$i_systimes" in
16633         "$define") inc='sys/times.h';;
16634         esac
16635         rp="What is the type returned by times() on this system?"
16636         set clock_t clocktype long stdio.h sys/types.h $inc
16637         eval $typedef_ask
16638 else
16639         echo 'times() NOT found, hope that will do.' >&4
16640         d_times="$undef"
16641         clocktype='int'
16642 fi
16643
16644 : see if tmpnam_r exists
16645 set tmpnam_r d_tmpnam_r
16646 eval $inlibc
16647 case "$d_tmpnam_r" in
16648 "$define")
16649         hdrs="$i_systypes sys/types.h define stdio.h "
16650         case "$d_tmpnam_r_proto:$usethreads" in
16651         ":define")      d_tmpnam_r_proto=define
16652                 set d_tmpnam_r_proto tmpnam_r $hdrs
16653                 eval $hasproto ;;
16654         *)      ;;
16655         esac
16656         case "$d_tmpnam_r_proto" in
16657         define)
16658         case "$tmpnam_r_proto" in
16659         ''|0) try='char* tmpnam_r(char*);'
16660         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16661         esac
16662         case "$tmpnam_r_proto" in
16663         ''|0)   d_tmpnam_r=undef
16664                 tmpnam_r_proto=0
16665                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16666         * )     case "$tmpnam_r_proto" in
16667                 REENTRANT_PROTO*) ;;
16668                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16669                 esac
16670                 echo "Prototype: $try" ;;
16671         esac
16672         ;;
16673         *)      case "$usethreads" in
16674                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16675                 esac
16676                 d_tmpnam_r=undef
16677                 tmpnam_r_proto=0
16678                 ;;
16679         esac
16680         ;;
16681 *)      tmpnam_r_proto=0
16682         ;;
16683 esac
16684
16685 : see if truncate exists
16686 set truncate d_truncate
16687 eval $inlibc
16688
16689 : see if ttyname_r exists
16690 set ttyname_r d_ttyname_r
16691 eval $inlibc
16692 case "$d_ttyname_r" in
16693 "$define")
16694         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16695         case "$d_ttyname_r_proto:$usethreads" in
16696         ":define")      d_ttyname_r_proto=define
16697                 set d_ttyname_r_proto ttyname_r $hdrs
16698                 eval $hasproto ;;
16699         *)      ;;
16700         esac
16701         case "$d_ttyname_r_proto" in
16702         define)
16703         case "$ttyname_r_proto" in
16704         ''|0) try='int ttyname_r(int, char*, size_t);'
16705         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16706         esac
16707         case "$ttyname_r_proto" in
16708         ''|0) try='int ttyname_r(int, char*, int);'
16709         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16710         esac
16711         case "$ttyname_r_proto" in
16712         ''|0) try='char* ttyname_r(int, char*, int);'
16713         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16714         esac
16715         case "$ttyname_r_proto" in
16716         ''|0)   d_ttyname_r=undef
16717                 ttyname_r_proto=0
16718                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16719         * )     case "$ttyname_r_proto" in
16720                 REENTRANT_PROTO*) ;;
16721                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16722                 esac
16723                 echo "Prototype: $try" ;;
16724         esac
16725         ;;
16726         *)      case "$usethreads" in
16727                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16728                 esac
16729                 d_ttyname_r=undef
16730                 ttyname_r_proto=0
16731                 ;;
16732         esac
16733         ;;
16734 *)      ttyname_r_proto=0
16735         ;;
16736 esac
16737
16738 : see if tzname[] exists
16739 echo " "
16740 if set tzname val -a d_tzname; eval $csym; $val; then
16741         val="$define"
16742         echo 'tzname[] found.' >&4
16743 else
16744         val="$undef"
16745         echo 'tzname[] NOT found.' >&4
16746 fi
16747 set d_tzname
16748 eval $setvar
16749
16750 case "$osname" in
16751 next|rhapsody|darwin) multiarch="$define" ;;
16752 esac
16753 case "$multiarch" in
16754 ''|[nN]*) multiarch="$undef" ;;
16755 esac
16756
16757 : check for ordering of bytes in a UV
16758 echo " "
16759 case "$usecrosscompile$multiarch" in
16760 *$define*)
16761         $cat <<EOM
16762 You seem to be either cross-compiling or doing a multiarchitecture build,
16763 skipping the byteorder check.
16764
16765 EOM
16766         byteorder='ffff'
16767         ;;
16768 *)
16769         case "$byteorder" in
16770         '')
16771                 $cat <<'EOM'
16772 In the following, larger digits indicate more significance.  A big-endian
16773 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16774 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16775 machines may have weird orders like 3412.  A Cray will report 87654321,
16776 an Alpha will report 12345678. If the test program works the default is
16777 probably right.
16778 I'm now running the test program...
16779 EOM
16780                 $cat >try.c <<EOCP
16781 #include <stdio.h>
16782 #$i_stdlib I_STDLIB
16783 #ifdef I_STDLIB
16784 #include <stdlib.h>
16785 #endif
16786 #include <sys/types.h>
16787 typedef $uvtype UV;
16788 int main()
16789 {
16790         int i;
16791         union {
16792                 UV l;
16793                 char c[$uvsize];
16794         } u;
16795
16796         if ($uvsize > 4)
16797                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16798         else
16799                 u.l = (UV)0x04030201;
16800         for (i = 0; i < $uvsize; i++)
16801                 printf("%c", u.c[i]+'0');
16802         printf("\n");
16803         exit(0);
16804 }
16805 EOCP
16806                 xxx_prompt=y
16807                 set try
16808                 if eval $compile && ./try > /dev/null; then
16809                         dflt=`$run ./try`
16810                         case "$dflt" in
16811                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16812                                 echo "(The test program ran ok.)"
16813                                 echo "byteorder=$dflt"
16814                                 xxx_prompt=n
16815                         ;;
16816                         ????|????????) echo "(The test program ran ok.)" ;;
16817                         *) echo "(The test program didn't run right for some reason.)" ;;
16818                         esac
16819                 else
16820                         dflt='4321'
16821                         cat <<'EOM'
16822 (I can't seem to compile the test program.  Guessing big-endian...)
16823 EOM
16824                 fi
16825                 case "$xxx_prompt" in
16826                 y)
16827                         rp="What is the order of bytes in $uvtype?"
16828                         . ./myread
16829                         byteorder="$ans"
16830                         ;;
16831                 *)      byteorder=$dflt
16832                         ;;
16833                 esac
16834                 ;;
16835         esac
16836         $rm -f try.c try
16837         ;;
16838 esac
16839
16840
16841 $cat <<EOM
16842
16843 Checking to see whether you can access character data unalignedly...
16844 EOM
16845 case "$d_u32align" in
16846 '')   $cat >try.c <<EOCP
16847 #include <stdio.h>
16848 #$i_stdlib I_STDLIB
16849 #ifdef I_STDLIB
16850 #include <stdlib.h>
16851 #endif
16852 #define U32 $u32type
16853 #define BYTEORDER 0x$byteorder
16854 #define U8 $u8type
16855 #include <signal.h>
16856 #ifdef SIGBUS
16857 $signal_t bletch(s) int s; { exit(4); }
16858 #endif
16859 int main() {
16860 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16861     U8 buf[8];
16862     U32 *up;
16863     int i;
16864
16865     if (sizeof(U32) != 4) {
16866         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16867         exit(1);
16868     }
16869
16870     fflush(stdout);
16871
16872 #ifdef SIGBUS
16873     signal(SIGBUS, bletch);
16874 #endif
16875
16876     buf[0] = 0;
16877     buf[1] = 0;
16878     buf[2] = 0;
16879     buf[3] = 1;
16880     buf[5] = 0;
16881     buf[6] = 0;
16882     buf[7] = 0;
16883     buf[8] = 1;
16884
16885     for (i = 0; i < 4; i++) {
16886         up = (U32*)(buf + i);
16887         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16888                (*up == 1 << (8*(3-i)))  /* little-endian */
16889               )
16890            )
16891         {
16892             printf("read failed (%x)\n", *up);
16893             exit(2);
16894         }
16895     }
16896
16897     /* write test */
16898     for (i = 0; i < 4; i++) {
16899         up = (U32*)(buf + i);
16900         *up = 0xBeef;
16901         if (*up != 0xBeef) {
16902             printf("write failed (%x)\n", *up);
16903             exit(3);
16904         }
16905     }
16906
16907     exit(0);
16908 #else
16909     printf("1\n");
16910     exit(1);
16911 #endif
16912     return 0;
16913 }
16914 EOCP
16915 set try
16916 if eval $compile_ok; then
16917         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16918         $run ./try 2>&1 >/dev/null
16919         case "$?" in
16920         0)      cat >&4 <<EOM
16921 You can access character data pretty unalignedly.
16922 EOM
16923                 d_u32align="$undef"
16924                 ;;
16925         *)      cat >&4 <<EOM
16926 It seems that you must access character data in an aligned manner.
16927 EOM
16928                 d_u32align="$define"
16929                 ;;
16930         esac
16931 else
16932         rp='Can you access character data at unaligned addresses?'
16933         dflt='n'
16934         . ./myread
16935         case "$ans" in
16936         [yY]*)  d_u32align="$undef"  ;;
16937         *)      d_u32align="$define" ;;
16938         esac
16939 fi
16940 $rm -f core core.try.* try.core
16941 ;;
16942 esac
16943
16944 : see if ualarm exists
16945 set ualarm d_ualarm
16946 eval $inlibc
16947
16948 : see if umask exists
16949 set umask d_umask
16950 eval $inlibc
16951
16952 : see if unordered exists
16953 set unordered d_unordered
16954 eval $inlibc
16955
16956 : see if usleep exists
16957 set usleep d_usleep
16958 eval $inlibc
16959
16960 : see if prototype for usleep is available
16961 echo " "
16962 set d_usleepproto usleep $i_unistd unistd.h
16963 eval $hasproto
16964
16965 : see if ustat exists
16966 set ustat d_ustat
16967 eval $inlibc
16968
16969 : backward compatibility for d_hvfork
16970 if test X$d_hvfork != X; then
16971         d_vfork="$d_hvfork"
16972         d_hvfork=''
16973 fi
16974 : see if there is a vfork
16975 val=''
16976 set vfork val
16977 eval $inlibc
16978
16979 : Ok, but do we want to use it. vfork is reportedly unreliable in 
16980 : perl on Solaris 2.x, and probably elsewhere.
16981 case "$val" in
16982 $define)
16983         echo " "
16984         case "$usevfork" in
16985         false) dflt='n';;
16986         *) dflt='y';;
16987         esac
16988         cat <<'EOM'
16989  
16990 Perl can only use a vfork() that doesn't suffer from strict
16991 restrictions on calling functions or modifying global data in
16992 the child.  For example, glibc-2.1 contains such a vfork()
16993 that is unsuitable.  If your system provides a proper fork()
16994 call, chances are that you do NOT want perl to use vfork().
16995
16996 EOM
16997         rp="Do you still want to use vfork()?"
16998         . ./myread
16999         case "$ans" in
17000         y|Y) ;;
17001         *)
17002                 echo "Ok, we won't use vfork()."
17003                 val="$undef"
17004                 ;;
17005         esac
17006         ;;
17007 esac
17008 set d_vfork
17009 eval $setvar
17010 case "$d_vfork" in
17011 $define) usevfork='true';;
17012 *) usevfork='false';;
17013 esac
17014
17015 : see if closedir exists
17016 set closedir d_closedir
17017 eval $inlibc
17018
17019 case "$d_closedir" in
17020 "$define")
17021         echo " "
17022         echo "Checking whether closedir() returns a status..." >&4
17023         cat > try.c <<EOM
17024 #$i_dirent I_DIRENT             /**/
17025 #$i_sysdir I_SYS_DIR            /**/
17026 #$i_sysndir I_SYS_NDIR          /**/
17027 #$i_systypes I_SYS_TYPES        /**/
17028
17029 #if defined(I_SYS_TYPES)
17030 #include <sys/types.h>
17031 #endif
17032 #if defined(I_DIRENT)
17033 #include <dirent.h>
17034 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17035 #include <sys/dir.h>
17036 #endif
17037 #else
17038 #ifdef I_SYS_NDIR
17039 #include <sys/ndir.h>
17040 #else
17041 #ifdef I_SYS_DIR
17042 #ifdef hp9000s500
17043 #include <ndir.h>       /* may be wrong in the future */
17044 #else
17045 #include <sys/dir.h>
17046 #endif
17047 #endif
17048 #endif
17049 #endif 
17050 int main() { return closedir(opendir(".")); }
17051 EOM
17052         set try
17053         if eval $compile_ok; then
17054                 if $run ./try > /dev/null 2>&1 ; then
17055                         echo "Yes, it does."
17056                         val="$undef"
17057                 else
17058                         echo "No, it doesn't."
17059                         val="$define"
17060                 fi
17061         else
17062                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17063                 val="$define"
17064         fi
17065         ;;
17066 *)
17067         val="$undef";
17068         ;;
17069 esac
17070 set d_void_closedir
17071 eval $setvar
17072 $rm -f try try.*
17073 : see if there is a wait4
17074 set wait4 d_wait4
17075 eval $inlibc
17076
17077 : see if waitpid exists
17078 set waitpid d_waitpid
17079 eval $inlibc
17080
17081 : see if wcstombs exists
17082 set wcstombs d_wcstombs
17083 eval $inlibc
17084
17085 : see if wctomb exists
17086 set wctomb d_wctomb
17087 eval $inlibc
17088
17089 : see if writev exists
17090 set writev d_writev
17091 eval $inlibc
17092
17093 : preserve RCS keywords in files with variable substitution, grrr
17094 Date='$Date'
17095 Id='$Id'
17096 Log='$Log'
17097 RCSfile='$RCSfile'
17098 Revision='$Revision'
17099
17100 : check for alignment requirements
17101 echo " "
17102 case "$usecrosscompile$multiarch" in
17103 *$define*)
17104         $cat <<EOM
17105 You seem to be either cross-compiling or doing a multiarchitecture build,
17106 skipping the memory alignment check.
17107
17108 EOM
17109         case "$alignbytes" in
17110         '') alignbytes=8 ;;
17111         esac
17112         ;;
17113 *)
17114         case "$alignbytes" in
17115         '') echo "Checking alignment constraints..." >&4
17116                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17117                         $cat >try.c <<'EOCP'
17118 typedef long double NV;
17119 EOCP
17120                 else
17121                         $cat >try.c <<'EOCP'
17122 typedef double NV;
17123 EOCP
17124                 fi
17125                 $cat >>try.c <<'EOCP'
17126 #include <stdio.h>
17127 struct foobar {
17128         char foo;
17129         NV bar;
17130 } try_algn;
17131 int main()
17132 {
17133     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17134     return(0);
17135 }
17136 EOCP
17137                 set try
17138                 if eval $compile_ok; then
17139                         dflt=`$run ./try`
17140                 else
17141                         dflt='8'
17142                         echo "(I can't seem to compile the test program...)"
17143                 fi
17144                 ;;
17145         *) dflt="$alignbytes"
17146                 ;;
17147         esac
17148         rp="Doubles must be aligned on a how-many-byte boundary?"
17149         . ./myread
17150         alignbytes="$ans"
17151         $rm -f try.c try
17152         ;;
17153 esac
17154
17155
17156 : set the base revision
17157 baserev=5.0
17158
17159 : how do we catenate cpp tokens here?
17160 echo " "
17161 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
17162 $cat >cpp_stuff.c <<'EOCP'
17163 #define RCAT(a,b)a/**/b
17164 #define ACAT(a,b)a ## b
17165 RCAT(Rei,ser)
17166 ACAT(Cir,cus)
17167 EOCP
17168 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17169 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17170         echo "Oh!  Smells like ANSI's been here." >&4
17171         echo "We can catify or stringify, separately or together!"
17172         cpp_stuff=42
17173 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17174         echo "Ah, yes!  The good old days!" >&4
17175         echo "However, in the good old days we don't know how to stringify and"
17176         echo "catify at the same time."
17177         cpp_stuff=1
17178 else
17179         $cat >&4 <<EOM
17180 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
17181 to have to edit the values of CAT[2-5] in config.h...
17182 EOM
17183         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17184 fi
17185 $rm -f cpp_stuff.*
17186
17187 : see if this is a db.h system
17188 set db.h i_db
17189 eval $inhdr
17190
17191 case "$i_db" in
17192 $define)
17193         : Check db version.
17194         echo " "
17195         echo "Checking Berkeley DB version ..." >&4
17196         $cat >try.c <<EOCP
17197 #$d_const HASCONST
17198 #ifndef HASCONST
17199 #define const
17200 #endif
17201 #include <sys/types.h>
17202 #include <stdio.h>
17203 #$i_stdlib I_STDLIB
17204 #ifdef I_STDLIB
17205 #include <stdlib.h>
17206 #endif
17207 #include <db.h>
17208 int main(int argc, char *argv[])
17209 {
17210 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17211     int Major, Minor, Patch ;
17212     unsigned long Version ;
17213     (void)db_version(&Major, &Minor, &Patch) ;
17214     if (argc == 2) {
17215         printf("%d %d %d %d %d %d\n",
17216                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17217                Major, Minor, Patch);
17218         exit(0);
17219     }
17220     printf("You have Berkeley DB Version 2 or greater.\n");
17221
17222     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17223                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17224     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17225                 Major, Minor, Patch) ;
17226
17227     /* check that db.h & libdb are compatible */
17228     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17229         printf("db.h and libdb are incompatible.\n") ;
17230         exit(3);        
17231     }
17232
17233     printf("db.h and libdb are compatible.\n") ;
17234
17235     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17236                 + DB_VERSION_PATCH ;
17237
17238     /* needs to be >= 2.3.4 */
17239     if (Version < 2003004) {
17240     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17241         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17242         exit(2);        
17243     }
17244
17245     exit(0);
17246 #else
17247 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17248     if (argc == 2) {
17249         printf("1 0 0\n");
17250         exit(0);
17251     }
17252     printf("You have Berkeley DB Version 1.\n");
17253     exit(0);    /* DB version < 2: the coast is clear. */
17254 #else
17255     exit(1);    /* <db.h> not Berkeley DB? */
17256 #endif
17257 #endif
17258 }
17259 EOCP
17260         set try
17261         if eval $compile_ok && $run ./try; then
17262                 echo 'Looks OK.' >&4
17263                 set `$run ./try 1`
17264                 db_version_major=$1
17265                 db_version_minor=$2
17266                 db_version_patch=$3
17267         else
17268                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17269                 i_db=$undef
17270                 case " $libs " in
17271                 *"-ldb "*)
17272                         : Remove db from list of libraries to use
17273                         echo "Removing unusable -ldb from library list" >&4
17274                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17275                         shift
17276                         libs="$*"
17277                         echo "libs = $libs" >&4
17278                         ;;
17279                 esac
17280         fi
17281         $rm -f try.*
17282         ;;
17283 esac
17284
17285 case "$i_db" in
17286 define)
17287         : Check the return type needed for hash 
17288         echo " "
17289         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17290         $cat >try.c <<EOCP
17291 #$d_const HASCONST
17292 #ifndef HASCONST
17293 #define const
17294 #endif
17295 #include <sys/types.h>
17296 #include <db.h>
17297
17298 #ifndef DB_VERSION_MAJOR
17299 u_int32_t hash_cb (ptr, size)
17300 const void *ptr;
17301 size_t size;
17302 {
17303 }
17304 HASHINFO info;
17305 int main()
17306 {
17307         info.hash = hash_cb;
17308 }
17309 #endif
17310 EOCP
17311         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17312                 if $contains warning try.out >>/dev/null 2>&1 ; then
17313                         db_hashtype='int'
17314                 else
17315                         db_hashtype='u_int32_t'
17316                 fi
17317         else
17318                 : XXX Maybe we should just give up here.
17319                 db_hashtype=u_int32_t
17320                 $cat try.out >&4
17321                 echo "Help:  I can't seem to compile the db test program." >&4
17322                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17323         fi
17324         $rm -f try.*
17325         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17326         ;;
17327 *)      db_hashtype=u_int32_t
17328         ;;
17329 esac
17330 case "$i_db" in
17331 define)
17332         : Check the return type needed for prefix 
17333         echo " "
17334         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17335         cat >try.c <<EOCP
17336 #$d_const HASCONST
17337 #ifndef HASCONST
17338 #define const
17339 #endif
17340 #include <sys/types.h>
17341 #include <db.h>
17342
17343 #ifndef DB_VERSION_MAJOR
17344 size_t prefix_cb (key1, key2)
17345 const DBT *key1;
17346 const DBT *key2;
17347 {
17348 }
17349 BTREEINFO info;
17350 int main()
17351 {
17352         info.prefix = prefix_cb;
17353 }
17354 #endif
17355 EOCP
17356         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17357                 if $contains warning try.out >>/dev/null 2>&1 ; then
17358                         db_prefixtype='int'
17359                 else
17360                         db_prefixtype='size_t'
17361                 fi
17362         else
17363                 db_prefixtype='size_t'
17364                 : XXX Maybe we should just give up here.
17365                 $cat try.out >&4
17366                 echo "Help:  I can't seem to compile the db test program." >&4
17367                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17368         fi
17369         $rm -f try.*
17370         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17371         ;;
17372 *)      db_prefixtype='size_t'
17373         ;;
17374 esac
17375
17376
17377 : How can we generate normalized random numbers ?
17378 echo " "
17379 echo "Looking for a random number function..." >&4
17380 case "$randfunc" in
17381 '')
17382         if set drand48 val -f; eval $csym; $val; then
17383                 dflt="drand48"
17384                 echo "Good, found drand48()." >&4
17385         elif set random val -f; eval $csym; $val; then
17386                 dflt="random"
17387                 echo "OK, found random()." >&4
17388         else
17389                 dflt="rand"
17390                 echo "Yick, looks like I have to use rand()." >&4
17391         fi
17392         echo " "
17393         ;;
17394 *)
17395         dflt="$randfunc"
17396         ;;
17397 esac
17398 cont=true
17399
17400 case "$ccflags" in
17401 *-Dmy_rand=*|*-Dmy_srand=*)
17402         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17403         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17404         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17405         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17406         ;;
17407 esac
17408
17409 while $test "$cont"; do
17410         rp="Use which function to generate random numbers?"
17411         . ./myread
17412         if $test "$ans" = "$dflt"; then
17413                 : null
17414         else
17415                 randbits=''
17416         fi
17417         randfunc="$ans"
17418         if set $ans val -f; eval $csym; $val; then
17419                 cont=''
17420         else
17421                 dflt=y
17422                 rp="I cannot find function $ans. Use that name anyway?"
17423                 . ./myread
17424                 dflt=rand
17425                 case "$ans" in
17426                         [yY]*) cont='';;
17427                 esac
17428         fi
17429         case "$cont" in
17430         '')
17431                 case "$randfunc" in
17432                 drand48)
17433                         drand01="drand48()"
17434                         seedfunc="srand48"
17435                         randbits=48
17436                         randseedtype=long
17437                         ;;
17438                 rand|random)
17439                         case "$randbits" in
17440                         '')
17441 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17442                                 $cat >try.c <<EOCP
17443 #$i_unistd I_UNISTD
17444 #$i_stdlib I_STDLIB
17445 #include <stdio.h>
17446 #ifdef I_UNISTD
17447 #  include <unistd.h>
17448 #endif
17449 #ifdef I_STDLIB
17450 #  include <stdlib.h>
17451 #endif
17452 int main()
17453 {
17454         register int i;
17455         register unsigned long tmp;
17456         register unsigned long max = 0L;
17457
17458         for (i = 1000; i; i--) {
17459                 tmp = (unsigned long) $randfunc();
17460                 if (tmp > max) max = tmp;
17461         }
17462         for (i = 0; max; i++)
17463                 max /= 2;
17464         printf("%d\n",i);
17465 }
17466 EOCP
17467                                 set try
17468                                 if eval $compile_ok; then
17469                                         dflt=`try`
17470                                 else
17471                                         dflt='?'
17472                                         echo "(I can't seem to compile the test program...)"
17473                                 fi
17474                                 ;;
17475                         *)
17476                                 dflt="$randbits"
17477                                 ;;
17478                         esac
17479                         rp="How many bits does your $randfunc() function produce?"
17480                         . ./myread
17481                         randbits="$ans"
17482                         $rm -f try.c try
17483                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17484                         seedfunc="s$randfunc"
17485                         randseedtype=unsigned
17486                         ;;
17487                 *)
17488                         dflt="31"
17489                         rp="How many bits does your $randfunc() function produce?"
17490                         . ./myread
17491                         randbits="$ans"
17492                         seedfunc="s$randfunc"
17493                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17494                         if set $seedfunc val -f; eval $csym; $val; then
17495                                 echo "(Using $seedfunc() to seed random generator)"
17496                         else
17497                                 echo "(Warning: no $seedfunc() to seed random generator)"
17498                                 seedfunc=rand
17499                         fi
17500                         randseedtype=unsigned
17501                         ;;
17502                 esac
17503                 ;;
17504         esac
17505 done
17506
17507 echo " "
17508 echo "Determining whether or not we are on an EBCDIC system..." >&4
17509 $cat >try.c <<'EOM'
17510 int main()
17511 {
17512   if ('M'==0xd4) return 0;
17513   return 1;
17514 }
17515 EOM
17516
17517 val=$undef
17518 set try
17519 if eval $compile_ok; then
17520         if $run ./try; then
17521                 echo "You seem to speak EBCDIC." >&4
17522                 val="$define"
17523         else
17524                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17525         fi
17526 else
17527         echo "I'm unable to compile the test program." >&4
17528         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17529 fi
17530 $rm -f try try.*
17531 set ebcdic
17532 eval $setvar
17533
17534 echo " "
17535 $cat >&4 <<EOM
17536 Checking how to flush all pending stdio output...
17537 EOM
17538 # I only know how to find the first 32 possibly open files on SunOS.
17539 # See also hints/sunos_4_1.sh and util.c  --AD
17540 case "$osname" in
17541 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17542 esac
17543 $cat >>try.c <<EOCP
17544 #include <stdio.h>
17545 #$i_stdlib I_STDLIB
17546 #ifdef I_STDLIB
17547 #include <stdlib.h>
17548 #endif
17549 #$i_unistd I_UNISTD
17550 #ifdef I_UNISTD
17551 # include <unistd.h>
17552 #endif
17553 #$d_sysconf HAS_SYSCONF
17554 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17555 #ifdef HAS_STDIO_STREAM_ARRAY
17556 # define STDIO_STREAM_ARRAY $stdio_stream_array
17557 #endif
17558 int main() {
17559   FILE* p;
17560   unlink("try.out");
17561   p = fopen("try.out", "w");
17562 #ifdef TRY_FPUTC
17563   fputc('x', p);
17564 #else
17565 # ifdef TRY_FPRINTF
17566   fprintf(p, "x");
17567 # endif
17568 #endif
17569 #ifdef TRY_FFLUSH_NULL
17570   fflush(NULL);
17571 #endif
17572 #ifdef TRY_FFLUSH_ALL
17573   {
17574     long open_max = -1;
17575 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17576     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17577 # else
17578 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17579     open_max = sysconf(_SC_OPEN_MAX);
17580 #  else
17581 #   ifdef FOPEN_MAX
17582     open_max = FOPEN_MAX;
17583 #   else
17584 #    ifdef OPEN_MAX
17585     open_max = OPEN_MAX;
17586 #    else
17587 #     ifdef _NFILE
17588     open_max = _NFILE;
17589 #     endif
17590 #    endif
17591 #   endif
17592 #  endif
17593 # endif 
17594 # ifdef HAS_STDIO_STREAM_ARRAY
17595     if (open_max > 0) {
17596       long i;
17597       for (i = 0; i < open_max; i++)
17598             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17599                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17600                 STDIO_STREAM_ARRAY[i]._flag)
17601                 fflush(&STDIO_STREAM_ARRAY[i]);
17602     }   
17603   }
17604 # endif
17605 #endif
17606   _exit(42);
17607 }
17608 EOCP
17609 : first we have to find out how _not_ to flush
17610 $to try.c
17611 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17612     output=''
17613     set try -DTRY_FPUTC
17614     if eval $compile; then
17615             $run ./try 2>/dev/null
17616             code="$?"
17617             $from try.out
17618             if $test ! -s try.out -a "X$code" = X42; then
17619                 output=-DTRY_FPUTC
17620             fi
17621     fi
17622     case "$output" in
17623     '')
17624             set try -DTRY_FPRINTF
17625             if eval $compile; then
17626                     $run ./try 2>/dev/null
17627                     code="$?"
17628                     $from try.out
17629                     if $test ! -s try.out -a "X$code" = X42; then
17630                         output=-DTRY_FPRINTF
17631                     fi
17632             fi
17633         ;;
17634     esac
17635 fi
17636 : check for fflush NULL behaviour
17637 case "$fflushNULL" in
17638 '')     set try -DTRY_FFLUSH_NULL $output
17639         if eval $compile; then
17640                 $run ./try 2>/dev/null
17641                 code="$?"
17642                 $from try.out
17643                 if $test -s try.out -a "X$code" = X42; then
17644                         fflushNULL="`$cat try.out`"
17645                 else
17646                         if $test "X$code" != X42; then
17647                                 $cat >&4 <<EOM
17648 (If this test failed, don't worry, we'll try another method shortly.)
17649 EOM
17650                         fi
17651                 fi
17652         fi
17653         $rm -f core try.core core.try.*
17654         case "$fflushNULL" in
17655         x)      $cat >&4 <<EOM
17656 Your fflush(NULL) works okay for output streams.
17657 Let's see if it clobbers input pipes...
17658 EOM
17659 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17660 # bug that improperly flushes the input end of pipes.  So we avoid the
17661 # autoflush on fork/system/exec support for now. :-(
17662 $cat >tryp.c <<EOCP
17663 #include <stdio.h>
17664 int
17665 main(int argc, char **argv)
17666 {
17667     char buf[1024];
17668     int i;
17669     char *bp = buf;
17670     while (1) {
17671         while ((i = getc(stdin)) != -1
17672                && (*bp++ = i) != '\n'
17673                && bp < &buf[1024])
17674         /* DO NOTHING */ ;
17675         *bp = '\0';
17676         fprintf(stdout, "%s", buf);
17677         fflush(NULL);
17678         if (i == -1)
17679             return 0;
17680         bp = buf;
17681     }
17682 }
17683 EOCP
17684                 fflushNULL="$define"
17685                 set tryp
17686                 if eval $compile; then
17687                     $rm -f tryp.out
17688                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17689                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17690                        $cat >&4 <<EOM
17691 fflush(NULL) seems to behave okay with input streams.
17692 EOM
17693                         fflushNULL="$define"
17694                     else
17695                         $cat >&4 <<EOM
17696 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17697 EOM
17698                         fflushNULL="$undef"
17699                     fi
17700                 fi
17701                 $rm -f core tryp.c tryp.core core.tryp.*
17702                 ;;
17703         '')     $cat >&4 <<EOM
17704 Your fflush(NULL) isn't working (contrary to ANSI C).
17705 EOM
17706                 fflushNULL="$undef"
17707                 ;;
17708         *)      $cat >&4 <<EOM
17709 Cannot figure out whether your fflush(NULL) works or not.
17710 I'm assuming it doesn't (contrary to ANSI C).
17711 EOM
17712                 fflushNULL="$undef"
17713                 ;;
17714         esac
17715         ;;
17716 $define|true|[yY]*)
17717         fflushNULL="$define"
17718         ;;
17719 *)
17720         fflushNULL="$undef"
17721         ;;
17722 esac
17723 : check explicit looping only if NULL did not work, and if the pipe
17724 : bug does not show up on an explicit flush too
17725 case "$fflushNULL" in
17726 "$undef")
17727         $cat >tryp.c <<EOCP
17728 #include <stdio.h>
17729 int
17730 main(int argc, char **argv)
17731 {
17732     char buf[1024];
17733     int i;
17734     char *bp = buf;
17735     while (1) {
17736         while ((i = getc(stdin)) != -1
17737                && (*bp++ = i) != '\n'
17738                && bp < &buf[1024])
17739         /* DO NOTHING */ ;
17740         *bp = '\0';
17741         fprintf(stdout, "%s", buf);
17742         fflush(stdin);
17743         if (i == -1)
17744             return 0;
17745         bp = buf;
17746     }
17747 }
17748 EOCP
17749         set tryp
17750         if eval $compile; then
17751             $rm -f tryp.out
17752             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17753             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17754                $cat >&4 <<EOM
17755 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17756 EOM
17757                 : now check for fflushall behaviour
17758                 case "$fflushall" in
17759                 '')     set try -DTRY_FFLUSH_ALL $output
17760                         if eval $compile; then
17761                                 $cat >&4 <<EOM
17762 (Now testing the other method--but note that this also may fail.)
17763 EOM
17764                                 $run ./try 2>/dev/null
17765                                 code=$?
17766                                 $from try.out
17767                                 if $test -s try.out -a "X$code" = X42; then
17768                                         fflushall="`$cat try.out`"
17769                                 fi
17770                         fi
17771                         $rm -f core try.core core.try.*
17772                         case "$fflushall" in
17773                         x)      $cat >&4 <<EOM
17774 Whew. Flushing explicitly all the stdio streams works.
17775 EOM
17776                                 fflushall="$define"
17777                                 ;;
17778                         '')     $cat >&4 <<EOM
17779 Sigh. Flushing explicitly all the stdio streams doesn't work.
17780 EOM
17781                                 fflushall="$undef"
17782                                 ;;
17783                         *)      $cat >&4 <<EOM
17784 Cannot figure out whether flushing stdio streams explicitly works or not.
17785 I'm assuming it doesn't.
17786 EOM
17787                                 fflushall="$undef"
17788                                 ;;
17789                         esac
17790                         ;;
17791                 "$define"|true|[yY]*)
17792                         fflushall="$define"
17793                         ;;
17794                 *)
17795                         fflushall="$undef"
17796                         ;;
17797                 esac
17798             else
17799                 $cat >&4 <<EOM
17800 All is futile.  Even fflush(stdin) clobbers input pipes!
17801 EOM
17802                 fflushall="$undef"
17803             fi
17804         else
17805             fflushall="$undef"
17806         fi
17807         $rm -f core tryp.c tryp.core core.tryp.*
17808         ;;
17809 *)      fflushall="$undef"
17810         ;;
17811 esac
17812
17813 case "$fflushNULL$fflushall" in
17814 undefundef)
17815         $cat <<EOM
17816 OK, I give up.  I cannot figure out how to flush pending stdio output.
17817 We won't be flushing handles at all before fork/exec/popen.
17818 EOM
17819         ;;
17820 esac
17821 $rm -f try.* try$exe_ext
17822
17823 : Store the full pathname to the ar program for use in the C program
17824 : Respect a hint or command line value for full_ar.
17825 case "$full_ar" in
17826 '') full_ar=$ar ;;
17827 esac
17828
17829 : Store the full pathname to the sed program for use in the C program
17830 full_sed=$sed
17831
17832 : see what type gids are declared as in the kernel
17833 echo " "
17834 echo "Looking for the type for group ids returned by getgid()."
17835 set gid_t gidtype xxx stdio.h sys/types.h
17836 eval $typedef
17837 case "$gidtype" in
17838 xxx)
17839         xxx=`./findhdr sys/user.h`
17840         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17841         case $1 in
17842         unsigned) dflt="$1 $2" ;;
17843         *) dflt="$1" ;;
17844         esac
17845         ;;
17846 *) dflt="$gidtype";;
17847 esac
17848 case "$gidtype" in
17849 gid_t) echo "gid_t found." ;;
17850 *)      rp="What is the type for group ids returned by getgid()?"
17851         . ./myread
17852         gidtype="$ans"
17853         ;;
17854 esac
17855
17856 echo " "
17857 case "$gidtype" in
17858 *_t) zzz="$gidtype"     ;;
17859 *)   zzz="gid"          ;;
17860 esac
17861 echo "Checking the size of $zzz..." >&4 
17862 cat > try.c <<EOCP
17863 #include <sys/types.h>
17864 #include <stdio.h>
17865 #$i_stdlib I_STDLIB
17866 #ifdef I_STDLIB
17867 #include <stdlib.h>
17868 #endif
17869 int main() {
17870     printf("%d\n", (int)sizeof($gidtype));
17871     exit(0);
17872 }
17873 EOCP
17874 set try
17875 if eval $compile_ok; then
17876         yyy=`$run ./try`
17877         case "$yyy" in
17878         '')     gidsize=4
17879                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17880                 ;;
17881         *)      gidsize=$yyy
17882                 echo "Your $zzz is $gidsize bytes long."
17883                 ;;
17884         esac
17885 else
17886         gidsize=4
17887         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17888 fi
17889
17890
17891 echo " "
17892 case "$gidtype" in
17893 *_t) zzz="$gidtype"     ;;
17894 *)   zzz="gid"          ;;
17895 esac
17896 echo "Checking the sign of $zzz..." >&4 
17897 cat > try.c <<EOCP
17898 #include <sys/types.h>
17899 #include <stdio.h>
17900 int main() {
17901         $gidtype foo = -1;
17902         if (foo < 0)
17903                 printf("-1\n");
17904         else
17905                 printf("1\n");
17906 }
17907 EOCP
17908 set try
17909 if eval $compile; then
17910         yyy=`$run ./try`
17911         case "$yyy" in
17912         '')     gidsign=1
17913                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17914                 ;;
17915         *)      gidsign=$yyy
17916                 case "$gidsign" in
17917                  1) echo "Your $zzz is unsigned." ;;
17918                 -1) echo "Your $zzz is signed."   ;;
17919                 esac
17920                 ;;
17921         esac
17922 else
17923         gidsign=1
17924         echo "(I can't compile the test program--guessing unsigned.)" >&4
17925 fi
17926
17927
17928 echo " "
17929
17930 if $test X"$quadtype" != X; then
17931
17932 echo "Checking how to print 64-bit integers..." >&4
17933
17934 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17935         $cat >try.c <<'EOCP'
17936 #include <sys/types.h>
17937 #include <stdio.h>
17938 int main() {
17939   int q = 12345678901;
17940   printf("%ld\n", q);
17941 }
17942 EOCP
17943         set try
17944         if eval $compile; then
17945                 yyy=`$run ./try`
17946                 case "$yyy" in
17947                 12345678901)
17948                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17949                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17950                         echo "We will use %d."
17951                         ;;
17952                 esac
17953         fi
17954 fi
17955
17956 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17957         $cat >try.c <<'EOCP'
17958 #include <sys/types.h>
17959 #include <stdio.h>
17960 int main() {
17961   long q = 12345678901;
17962   printf("%ld\n", q);
17963 }
17964 EOCP
17965         set try
17966         if eval $compile; then
17967                 yyy=`$run ./try`
17968                 case "$yyy" in
17969                 12345678901)
17970                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17971                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17972                         echo "We will use %ld."
17973                         ;;
17974                 esac
17975         fi
17976 fi
17977
17978 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17979         $cat >try.c <<'EOCP'
17980 #include <sys/types.h>
17981 #include <inttypes.h>
17982 #include <stdio.h>
17983 int main() {
17984   int64_t q = 12345678901;
17985   printf("%" PRId64 "\n", q);
17986 }
17987 EOCP
17988         set try
17989         if eval $compile; then
17990                 yyy=`$run ./try`
17991                 case "$yyy" in
17992                 12345678901)
17993                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17994                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17995                         echo "We will use the C9X style."
17996                         ;;
17997                 esac
17998         fi
17999 fi
18000
18001 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18002         $cat >try.c <<EOCP
18003 #include <sys/types.h>
18004 #include <stdio.h>
18005 int main() {
18006   $quadtype q = 12345678901;
18007   printf("%Ld\n", q);
18008 }
18009 EOCP
18010         set try
18011         if eval $compile; then
18012                 yyy=`$run ./try`
18013                 case "$yyy" in
18014                 12345678901)
18015                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18016                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18017                         echo "We will use %Ld."
18018                         ;;
18019                 esac
18020         fi
18021 fi
18022
18023 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18024         $cat >try.c <<'EOCP'
18025 #include <sys/types.h>
18026 #include <stdio.h>
18027 int main() {
18028   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18029   printf("%lld\n", q);
18030 }
18031 EOCP
18032         set try
18033         if eval $compile; then
18034                 yyy=`$run ./try`
18035                 case "$yyy" in
18036                 12345678901)
18037                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18038                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18039                         echo "We will use the %lld style."
18040                         ;;
18041                 esac
18042         fi
18043 fi
18044
18045 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18046         $cat >try.c <<EOCP
18047 #include <sys/types.h>
18048 #include <stdio.h>
18049 int main() {
18050   $quadtype q = 12345678901;
18051   printf("%qd\n", q);
18052 }
18053 EOCP
18054         set try
18055         if eval $compile; then
18056                 yyy=`$run ./try`
18057                 case "$yyy" in
18058                 12345678901)
18059                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18060                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18061                         echo "We will use %qd."
18062                         ;;
18063                 esac
18064         fi
18065 fi
18066
18067 if $test X"$sPRId64" = X; then
18068         echo "Cannot figure out how to print 64-bit integers." >&4
18069 fi
18070
18071 $rm -f try try.*
18072
18073 fi
18074
18075 case "$sPRId64" in
18076 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18077         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18078         ;;
18079 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18080         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18081         ;;
18082 esac
18083
18084
18085 echo " "
18086 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18087
18088 if $test X"$ivsize" = X8; then
18089         ivdformat="$sPRId64"
18090         uvuformat="$sPRIu64"
18091         uvoformat="$sPRIo64"
18092         uvxformat="$sPRIx64"
18093         uvXUformat="$sPRIXU64"
18094 else
18095         if $test X"$ivsize" = X"$longsize"; then
18096                 ivdformat='"ld"'
18097                 uvuformat='"lu"'
18098                 uvoformat='"lo"'
18099                 uvxformat='"lx"'
18100                 uvXUformat='"lX"'
18101         else
18102                 if $test X"$ivsize" = X"$intsize"; then
18103                         ivdformat='"d"'
18104                         uvuformat='"u"'
18105                         uvoformat='"o"'
18106                         uvxformat='"x"'
18107                         uvXUformat='"X"'
18108                 else
18109                         : far out
18110                         if $test X"$ivsize" = X"$shortsize"; then
18111                                 ivdformat='"hd"'
18112                                 uvuformat='"hu"'
18113                                 uvoformat='"ho"'
18114                                 uvxformat='"hx"'
18115                                 uvXUformat='"hX"'
18116                         fi
18117                 fi
18118         fi
18119 fi
18120
18121 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18122         nveformat="$sPRIeldbl"
18123         nvfformat="$sPRIfldbl"
18124         nvgformat="$sPRIgldbl"
18125         nvEUformat="$sPRIEUldbl"
18126         nvFUformat="$sPRIFUldbl"
18127         nvGUformat="$sPRIGUldbl"
18128 else
18129         nveformat='"e"'
18130         nvfformat='"f"'
18131         nvgformat='"g"'
18132         nvEUformat='"E"'
18133         nvFUformat='"F"'
18134         nvGUformat='"G"'
18135 fi
18136
18137 case "$ivdformat" in
18138 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18139     exit 1
18140     ;;
18141 esac
18142
18143
18144 echo " "
18145 $echo "Checking the format string to be used for gids..." >&4
18146
18147 case "$gidsign" in
18148 -1)     if $test X"$gidsize" = X"$ivsize"; then
18149                 gidformat="$ivdformat"
18150         else
18151                 if $test X"$gidsize" = X"$longsize"; then
18152                         gidformat='"ld"'
18153                 else
18154                         if $test X"$gidsize" = X"$intsize"; then
18155                                 gidformat='"d"'
18156                         else
18157                                 if $test X"$gidsize" = X"$shortsize"; then
18158                                         gidformat='"hd"'
18159                                 fi
18160                         fi
18161                 fi
18162         fi
18163         ;;
18164 *)      if $test X"$gidsize" = X"$uvsize"; then
18165                 gidformat="$uvuformat"
18166         else
18167                 if $test X"$gidsize" = X"$longsize"; then
18168                         gidformat='"lu"'
18169                 else
18170                         if $test X"$gidsize" = X"$intsize"; then
18171                                 gidformat='"u"'
18172                         else
18173                                 if $test X"$gidsize" = X"$shortsize"; then
18174                                         gidformat='"hu"'
18175                                 fi
18176                         fi
18177                 fi
18178         fi
18179         ;;
18180 esac
18181
18182 : see if getgroups exists
18183 set getgroups d_getgrps
18184 eval $inlibc
18185
18186 : see if setgroups exists
18187 set setgroups d_setgrps
18188 eval $inlibc
18189
18190
18191 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18192 echo " "
18193 case "$d_getgrps$d_setgrps" in
18194 *define*)
18195         case "$groupstype" in
18196         '') dflt="$gidtype" ;;
18197         *)  dflt="$groupstype" ;;
18198         esac
18199         $cat <<EOM
18200 What type of pointer is the second argument to getgroups() and setgroups()?
18201 Usually this is the same as group ids, $gidtype, but not always.
18202
18203 EOM
18204         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18205         . ./myread
18206         groupstype="$ans"
18207         ;;
18208 *)  groupstype="$gidtype";;
18209 esac
18210
18211 echo " "
18212 echo "Checking if your $make program sets \$(MAKE)..." >&4
18213 case "$make_set_make" in
18214 '')
18215         $sed 's/^X //' > testmake.mak << 'EOF'
18216 Xall:
18217 X       @echo 'maketemp="$(MAKE)"'
18218 EOF
18219         case "`$make -f testmake.mak 2>/dev/null`" in
18220         *maketemp=*) make_set_make='#' ;;
18221         *)      make_set_make="MAKE=$make" ;;
18222         esac
18223         $rm -f testmake.mak
18224         ;;
18225 esac
18226 case "$make_set_make" in
18227 '#') echo "Yup, it does.";;
18228 *) echo "Nope, it doesn't.";;
18229 esac
18230
18231 : see what type is used for mode_t
18232 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18233 set mode_t modetype int stdio.h sys/types.h
18234 eval $typedef_ask
18235
18236 : see if stdarg is available
18237 echo " "
18238 if $test `./findhdr stdarg.h`; then
18239         echo "<stdarg.h> found." >&4
18240         valstd="$define"
18241 else
18242         echo "<stdarg.h> NOT found." >&4
18243         valstd="$undef"
18244 fi
18245
18246 : see if varags is available
18247 echo " "
18248 if $test `./findhdr varargs.h`; then
18249         echo "<varargs.h> found." >&4
18250 else
18251         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18252 fi
18253
18254 : set up the varargs testing programs
18255 $cat > varargs.c <<EOP
18256 #ifdef I_STDARG
18257 #include <stdarg.h>
18258 #endif
18259 #ifdef I_VARARGS
18260 #include <varargs.h>
18261 #endif
18262
18263 #ifdef I_STDARG
18264 int f(char *p, ...)
18265 #else
18266 int f(va_alist)
18267 va_dcl
18268 #endif
18269 {
18270         va_list ap;
18271 #ifndef I_STDARG
18272         char *p;
18273 #endif
18274 #ifdef I_STDARG
18275         va_start(ap,p);
18276 #else
18277         va_start(ap);
18278         p = va_arg(ap, char *);
18279 #endif
18280         va_end(ap);
18281 }
18282 EOP
18283 $cat > varargs <<EOP
18284 $startsh
18285 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18286         echo "true"
18287 else
18288         echo "false"
18289 fi
18290 $rm -f varargs$_o
18291 EOP
18292 chmod +x varargs
18293
18294 : now check which varargs header should be included
18295 echo " "
18296 i_varhdr=''
18297 case "$valstd" in
18298 "$define")
18299         if `./varargs I_STDARG`; then
18300                 val='stdarg.h'
18301         elif `./varargs I_VARARGS`; then
18302                 val='varargs.h'
18303         fi
18304         ;;
18305 *)
18306         if `./varargs I_VARARGS`; then
18307                 val='varargs.h'
18308         fi
18309         ;;
18310 esac
18311 case "$val" in
18312 '')
18313 echo "I could not find the definition for va_dcl... You have problems..." >&4
18314         val="$undef"; set i_stdarg; eval $setvar
18315         val="$undef"; set i_varargs; eval $setvar
18316         ;;
18317 *) 
18318         set i_varhdr
18319         eval $setvar
18320         case "$i_varhdr" in
18321         stdarg.h)
18322                 val="$define"; set i_stdarg; eval $setvar
18323                 val="$undef"; set i_varargs; eval $setvar
18324                 ;;
18325         varargs.h)
18326                 val="$undef"; set i_stdarg; eval $setvar
18327                 val="$define"; set i_varargs; eval $setvar
18328                 ;;
18329         esac
18330         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18331 esac
18332 $rm -f varargs*
18333
18334 : see if we need va_copy
18335 echo " "
18336 case "$i_stdarg" in
18337 "$define")
18338         $cat >try.c <<EOCP
18339 #include <stdarg.h>
18340 #include <stdio.h>
18341 #$i_stdlib I_STDLIB
18342 #ifdef I_STDLIB
18343 #include <stdlib.h>
18344 #endif
18345 #include <signal.h>
18346
18347 int
18348 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18349 {
18350   return vfprintf(f, fmt, *valp);
18351 }
18352  
18353 int    
18354 myvfprintf(FILE *f, const  char *fmt, va_list val)
18355 {
18356   return ivfprintf(f, fmt, &val);
18357 }
18358       
18359 int
18360 myprintf(char *fmt, ...) 
18361 {
18362   va_list val;
18363   va_start(val, fmt);
18364   return myvfprintf(stdout, fmt, val); 
18365 }         
18366
18367 int
18368 main(int ac, char **av)
18369 {
18370   signal(SIGSEGV, exit);
18371
18372   myprintf("%s%cs all right, then\n", "that", '\'');                            
18373   exit(0);      
18374 }
18375 EOCP
18376         set try
18377         if eval $compile && $run ./try 2>&1 >/dev/null; then
18378                 case "`$run ./try`" in
18379                 "that's all right, then")
18380                         okay=yes
18381                         ;;
18382                 esac
18383         fi
18384         case "$okay" in
18385         yes)    echo "It seems that you don't need va_copy()." >&4
18386                 need_va_copy="$undef"
18387                 ;;
18388         *)      echo "It seems that va_copy() or similar will be needed." >&4
18389                 need_va_copy="$define"
18390                 ;;
18391         esac
18392         $rm -f try.* core core.* *.core *.core.*
18393         ;;
18394 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18395         ;;
18396 esac
18397
18398 : see what type is used for size_t
18399 rp="What is the type used for the length parameter for string functions?"
18400 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18401 eval $typedef_ask
18402
18403 : check for type of arguments to gethostbyaddr. 
18404 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18405         case "$d_gethbyaddr" in
18406         $define)
18407                 $cat <<EOM
18408
18409 Checking to see what type of arguments are accepted by gethostbyaddr().
18410 EOM
18411                 hdrs="$define sys/types.h
18412                         $d_socket sys/socket.h 
18413                         $i_niin netinet/in.h 
18414                         $i_netdb netdb.h
18415                         $i_unistd unistd.h"
18416                 : The first arg can 'char *' or 'void *'
18417                 : The second arg is some of integral type
18418                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18419                         for yyy in size_t long int; do
18420                                 case "$netdb_host_type" in
18421                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18422                                         if ./protochk "$try" $hdrs; then
18423                                                 echo "Your system accepts $xxx for the first arg."
18424                                                 echo "...and $yyy for the second arg."
18425                                                 netdb_host_type="$xxx"
18426                                                 netdb_hlen_type="$yyy"
18427                                         fi
18428                                         ;;
18429                                 esac
18430                         done
18431                 done
18432                 : In case none of those worked, prompt the user.
18433                 case "$netdb_host_type" in
18434                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18435                         dflt='char *'
18436                         . ./myread
18437                         netdb_host_type=$ans
18438                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18439                         dflt="$sizetype"
18440                         . ./myread
18441                         netdb_hlen_type=$ans
18442                         ;;
18443                 esac
18444                 ;;
18445         *)      : no gethostbyaddr, so pick harmless defaults
18446                 netdb_host_type='char *'
18447                 netdb_hlen_type="$sizetype"
18448                 ;;
18449         esac
18450         # Remove the "const" if needed. -- but then we'll have a 
18451         # prototype clash!
18452         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18453 fi
18454
18455 : check for type of argument to gethostbyname. 
18456 if test "X$netdb_name_type" = X ; then
18457         case "$d_gethbyname" in
18458         $define)
18459                 $cat <<EOM
18460
18461 Checking to see what type of argument is accepted by gethostbyname().
18462 EOM
18463                 hdrs="$define sys/types.h
18464                         $d_socket sys/socket.h 
18465                         $i_niin netinet/in.h 
18466                         $i_netdb netdb.h
18467                         $i_unistd unistd.h"
18468                 for xxx in "const char *" "char *"; do
18469                         case "$netdb_name_type" in
18470                         '')     try="extern struct hostent *gethostbyname($xxx);"
18471                                 if ./protochk "$try" $hdrs; then
18472                                         echo "Your system accepts $xxx."
18473                                         netdb_name_type="$xxx"
18474                                 fi
18475                                 ;;
18476                         esac
18477                 done
18478                 : In case none of those worked, prompt the user.
18479                 case "$netdb_name_type" in
18480                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18481                         dflt='char *'
18482                         . ./myread
18483                         netdb_name_type=$ans
18484                         ;;
18485                 esac
18486                 ;;
18487         *)      : no gethostbyname, so pick harmless default
18488                 netdb_name_type='char *'
18489                 ;;
18490         esac
18491 fi
18492
18493 : check for type of 1st argument to getnetbyaddr. 
18494 if test "X$netdb_net_type" = X ; then
18495         case "$d_getnbyaddr" in
18496         $define)
18497                 $cat <<EOM
18498
18499 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18500 EOM
18501                 hdrs="$define sys/types.h
18502                         $d_socket sys/socket.h 
18503                         $i_niin netinet/in.h 
18504                         $i_netdb netdb.h
18505                         $i_unistd unistd.h"
18506                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18507                         case "$netdb_net_type" in
18508                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18509                                 if ./protochk "$try" $hdrs; then
18510                                         echo "Your system accepts $xxx."
18511                                         netdb_net_type="$xxx"
18512                                 fi
18513                                 ;;
18514                         esac
18515                 done
18516                 : In case none of those worked, prompt the user.
18517                 case "$netdb_net_type" in
18518                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18519                         dflt='long'
18520                         . ./myread
18521                         netdb_net_type=$ans
18522                         ;;
18523                 esac
18524                 ;;
18525         *)      : no getnetbyaddr, so pick harmless default
18526                 netdb_net_type='long'
18527                 ;;
18528         esac
18529 fi
18530 : locate the preferred pager for this system
18531 fn=f/
18532 case "$pager" in
18533 '')
18534         dflt=''
18535         case "$pg" in
18536         /*) dflt=$pg;;
18537         [a-zA-Z]:/*) dflt=$pg;;
18538         esac
18539         case "$more" in
18540         /*) dflt=$more;;
18541         [a-zA-Z]:/*) dflt=$more;;
18542         esac
18543         case "$less" in
18544         /*) dflt=$less;;
18545         [a-zA-Z]:/*) dflt=$less;;
18546         esac
18547         case "$dflt" in
18548         '') dflt=/usr/ucb/more;;
18549         esac
18550         ;;
18551 *)      dflt="$pager"
18552         : Instruct ./getfile to trust the hinted or previous pager value,
18553         : even if it does not begin with a slash.  For example, on os2,
18554         : pager might be cmd /c more.  See comments in UU/getfile.
18555         fn="f/($pager)"
18556         ;;
18557 esac
18558 echo " "
18559 rp='What pager is used on your system?'
18560 . ./getfile
18561 pager="$ans"
18562
18563 : see what type pids are declared as in the kernel
18564 rp="What is the type of process ids on this system?"
18565 set pid_t pidtype int stdio.h sys/types.h
18566 eval $typedef_ask
18567
18568 : Find earliest binary compatible site_perl subdirectory perl can use.
18569 xs_apiversion=$version # The current site_perl version.
18570 : Find earliest pure perl site_perl subdirectory perl can use.
18571 : The versioned directories started at 5.005.
18572 pm_apiversion='5.005'
18573
18574 : see if ar generates random libraries by itself
18575 echo " "
18576 echo "Checking how to generate random libraries on your machine..." >&4
18577 echo 'int bar1() { return bar2(); }' > bar1.c
18578 echo 'int bar2() { return 2; }' > bar2.c
18579 $cat > foo.c <<EOP
18580 #$i_stdlib I_STDLIB
18581 #ifdef I_STDLIB
18582 #include <stdlib.h>
18583 #endif
18584 int main() { printf("%d\n", bar1()); exit(0); }
18585 EOP
18586 $cc $ccflags -c bar1.c >/dev/null 2>&1
18587 $cc $ccflags -c bar2.c >/dev/null 2>&1
18588 $cc $ccflags -c foo.c >/dev/null 2>&1
18589 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18590 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18591         $run ./foobar >/dev/null 2>&1; then
18592         echo "$ar appears to generate random libraries itself."
18593         orderlib=false
18594         ranlib=":"
18595 elif $ar ts bar$_a >/dev/null 2>&1 &&
18596         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18597         $run ./foobar >/dev/null 2>&1; then
18598                 echo "a table of contents needs to be added with '$ar ts'."
18599                 orderlib=false
18600                 ranlib="$ar ts"
18601 else
18602         case "$ranlib" in
18603         :) ranlib='';;
18604         '')
18605                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18606                 $test -f $ranlib || ranlib=''
18607                 ;;
18608         esac
18609         if $test -n "$ranlib"; then
18610                 echo "your system has '$ranlib'; we'll use that."
18611                 orderlib=false
18612         else
18613                 echo "your system doesn't seem to support random libraries"
18614                 echo "so we'll use lorder and tsort to order the libraries."
18615                 orderlib=true
18616                 ranlib=":"
18617         fi
18618 fi
18619 $rm -f foo* bar* 
18620
18621 : check for type of arguments to select. 
18622 case "$selecttype" in
18623 '') case "$d_select" in
18624         $define)
18625                 echo " "
18626                 $cat <<EOM
18627 Checking to see what type of arguments are accepted by select().
18628 EOM
18629                 hdrs="$define sys/types.h
18630                         $i_systime sys/time.h 
18631                         $i_sysselct sys/select.h
18632                         $d_socket sys/socket.h"
18633                 : The first arg can be int, unsigned, or size_t
18634                 : The last arg may or may not be 'const'
18635                 val=''
18636                 : void pointer has been seen but using that
18637                 : breaks the selectminbits test
18638                 for xxx in 'fd_set *' 'int *'; do
18639                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18640                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18641                                         case "$val" in
18642                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18643                                                 if ./protochk "$try" $hdrs; then
18644                                                         echo "Your system accepts $xxx."
18645                                                         val="$xxx"
18646                                                 fi
18647                                                 ;;
18648                                         esac
18649                                 done
18650                         done
18651                 done
18652                 case "$val" in
18653                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18654                         case "$d_fd_set" in
18655                                 $define) dflt="fd_set *" ;;
18656                                 *)              dflt="int *" ;;
18657                         esac
18658                         . ./myread
18659                         val=$ans
18660                         ;;
18661                 esac
18662                 selecttype="$val"
18663                 ;;
18664         *)      : no select, so pick a harmless default
18665                 selecttype='int *'
18666                 ;;
18667         esac
18668         ;;
18669 esac
18670
18671 : check for the select 'width'
18672 case "$selectminbits" in
18673 '') safebits=`expr $ptrsize \* 8`
18674     case "$d_select" in
18675         $define)
18676                 $cat <<EOM
18677
18678 Checking to see on how many bits at a time your select() operates...
18679 EOM
18680                 $cat >try.c <<EOCP
18681 #include <sys/types.h>
18682 #$i_time I_TIME
18683 #$i_systime I_SYS_TIME
18684 #$i_systimek I_SYS_TIME_KERNEL
18685 #ifdef I_TIME
18686 #   include <time.h>
18687 #endif
18688 #ifdef I_SYS_TIME
18689 #   ifdef I_SYS_TIME_KERNEL
18690 #       define KERNEL
18691 #   endif
18692 #   include <sys/time.h>
18693 #   ifdef I_SYS_TIME_KERNEL
18694 #       undef KERNEL
18695 #   endif
18696 #endif
18697 #$i_sysselct I_SYS_SELECT
18698 #ifdef I_SYS_SELECT
18699 #include <sys/select.h>
18700 #endif
18701 #$d_socket HAS_SOCKET
18702 #ifdef HAS_SOCKET
18703 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18704 #endif
18705 #include <stdio.h>
18706 #$i_stdlib I_STDLIB
18707 #ifdef I_STDLIB
18708 #include <stdlib.h>
18709 #endif
18710 $selecttype b;
18711 #define S sizeof(*(b))
18712 #define MINBITS 64
18713 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18714 #define NBITS  (NBYTES * 8)
18715 int main() {
18716     char *s = malloc(NBYTES);
18717     struct timeval t;
18718     int i;
18719     FILE* fp;
18720     int fd;
18721
18722     if (!s)
18723         exit(1);
18724     fclose(stdin);
18725     fp = fopen("try.c", "r");
18726     if (fp == 0)
18727       exit(2);
18728     fd = fileno(fp);
18729     if (fd < 0)
18730       exit(3);
18731     b = ($selecttype)s;
18732     for (i = 0; i < NBITS; i++)
18733         FD_SET(i, b);
18734     t.tv_sec  = 0;
18735     t.tv_usec = 0;
18736     select(fd + 1, b, 0, 0, &t);
18737     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18738     free(s);
18739     printf("%d\n", i + 1);
18740     return 0;
18741 }
18742 EOCP
18743                 set try
18744                 if eval $compile_ok; then
18745                         selectminbits=`$run ./try`
18746                         case "$selectminbits" in
18747                         '')     cat >&4 <<EOM
18748 Cannot figure out on how many bits at a time your select() operates.
18749 I'll play safe and guess it is $safebits bits.
18750 EOM
18751                                 selectminbits=$safebits
18752                                 bits="$safebits bits"
18753                                 ;;
18754                         1)      bits="1 bit" ;;
18755                         *)      bits="$selectminbits bits" ;;
18756                         esac
18757                         echo "Your select() operates on $bits at a time." >&4
18758                 else
18759                         rp='What is the minimum number of bits your select() operates on?'
18760                         case "$byteorder" in
18761                         12345678)       dflt=64 ;;
18762                         1234)           dflt=32 ;;
18763                         *)              dflt=1  ;;
18764                         esac
18765                         . ./myread
18766                         val=$ans
18767                         selectminbits="$val"
18768                 fi
18769                 $rm -f try.* try
18770                 ;;
18771         *)      : no select, so pick a harmless default
18772                 selectminbits=$safebits
18773                 ;;
18774         esac
18775         ;;
18776 esac
18777
18778 : Trace out the files included by signal.h, then look for SIGxxx names.
18779 : Remove SIGARRAYSIZE used by HPUX.
18780 : Remove SIGSTKSIZE used by Linux.
18781 : Remove SIGSTKSZ used by Posix.
18782 : Remove SIGTYP void lines used by OS2.
18783 : Some cpps, like os390, dont give the file name anywhere
18784 if [ "X$fieldn" = X ]; then
18785         : Just make some guesses.  We check them later.
18786         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18787 else
18788         xxx=`echo '#include <signal.h>' |
18789         $cppstdin $cppminus $cppflags 2>/dev/null |
18790         $grep '^[       ]*#.*include' | 
18791         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18792 fi
18793 : Check this list of files to be sure we have parsed the cpp output ok.
18794 : This will also avoid potentially non-existent files, such 
18795 : as ../foo/bar.h
18796 xxxfiles=''
18797 for xx in $xxx /dev/null ; do
18798         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18799 done
18800 : If we have found no files, at least try signal.h
18801 case "$xxxfiles" in
18802 '')     xxxfiles=`./findhdr signal.h` ;;
18803 esac
18804 xxx=`awk '
18805 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18806         print substr($2, 4, 20)
18807 }
18808 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18809         print substr($3, 4, 20)
18810 }' $xxxfiles`
18811 : Append some common names just in case the awk scan failed.
18812 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18813 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18814 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18815 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18816 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18817
18818 : generate a few handy files for later
18819 $cat > signal.c <<EOCP
18820 #include <sys/types.h>
18821 #include <signal.h>
18822 #$i_stdlib I_STDLIB
18823 #ifdef I_STDLIB
18824 #include <stdlib.h>
18825 #endif
18826 #include <stdio.h>
18827 int main() {
18828
18829 /* Strange style to avoid deeply-nested #if/#else/#endif */
18830 #ifndef NSIG
18831 #  ifdef _NSIG
18832 #    define NSIG (_NSIG)
18833 #  endif
18834 #endif
18835
18836 #ifndef NSIG
18837 #  ifdef SIGMAX
18838 #    define NSIG (SIGMAX+1)
18839 #  endif
18840 #endif
18841
18842 #ifndef NSIG
18843 #  ifdef SIG_MAX
18844 #    define NSIG (SIG_MAX+1)
18845 #  endif
18846 #endif
18847
18848 #ifndef NSIG
18849 #  ifdef MAXSIG
18850 #    define NSIG (MAXSIG+1)
18851 #  endif
18852 #endif
18853
18854 #ifndef NSIG
18855 #  ifdef MAX_SIG
18856 #    define NSIG (MAX_SIG+1)
18857 #  endif
18858 #endif
18859
18860 #ifndef NSIG
18861 #  ifdef SIGARRAYSIZE
18862 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18863 #  endif
18864 #endif
18865
18866 #ifndef NSIG
18867 #  ifdef _sys_nsig
18868 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18869 #  endif
18870 #endif
18871
18872 /* Default to some arbitrary number that's big enough to get most
18873    of the common signals.
18874 */
18875 #ifndef NSIG
18876 #    define NSIG 50
18877 #endif
18878
18879 printf("NSIG %d\n", NSIG);
18880
18881 #ifndef JUST_NSIG
18882
18883 EOCP
18884
18885 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18886 {
18887         printf "#ifdef SIG"; printf $1; printf "\n"
18888         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18889         printf $1; printf ");\n"
18890         printf "#endif\n"
18891 }
18892 END {
18893         printf "#endif /* JUST_NSIG */\n";
18894         printf "exit(0);\n}\n";
18895 }
18896 ' >>signal.c
18897 $cat >signal.awk <<'EOP'
18898 BEGIN { ndups = 0 }
18899 $1 ~ /^NSIG$/ { nsig = $2 }
18900 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18901     if ($2 > maxsig) { maxsig = $2 }
18902     if (sig_name[$2]) {
18903         dup_name[ndups] = $1
18904         dup_num[ndups] = $2
18905         ndups++ 
18906     }
18907     else {
18908         sig_name[$2] = $1
18909         sig_num[$2] = $2
18910     }
18911 }
18912 END { 
18913     if (nsig == 0) {
18914         nsig = maxsig + 1
18915     }
18916     printf("NSIG %d\n", nsig);
18917     for (n = 1; n < nsig; n++) {
18918         if (sig_name[n]) {
18919             printf("%s %d\n", sig_name[n], sig_num[n])
18920         }
18921         else {
18922             printf("NUM%d %d\n", n, n) 
18923         }
18924     }
18925     for (n = 0; n < ndups; n++) {
18926         printf("%s %d\n", dup_name[n], dup_num[n])
18927     }
18928 }
18929 EOP
18930 $cat >signal_cmd <<EOS
18931 $startsh
18932 if $test -s signal.lst; then
18933     echo "Using your existing signal.lst file"
18934         exit 0
18935 fi
18936 xxx="$xxx"
18937 EOS
18938 $cat >>signal_cmd <<'EOS'
18939
18940 set signal
18941 if eval $compile_ok; then
18942         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18943 else
18944         echo "(I can't seem be able to compile the whole test program)" >&4
18945         echo "(I'll try it in little pieces.)" >&4
18946         set signal -DJUST_NSIG
18947         if eval $compile_ok; then
18948                 $run ./signal$_exe > signal.nsg
18949                 $cat signal.nsg
18950         else
18951                 echo "I can't seem to figure out how many signals you have." >&4
18952                 echo "Guessing 50." >&4
18953                 echo 'NSIG 50' > signal.nsg
18954         fi
18955         : Now look at all the signal names, one at a time.
18956         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18957                 $cat > signal.c <<EOCP
18958 #include <sys/types.h>
18959 #include <signal.h>
18960 #include <stdio.h>
18961 int main() {
18962 printf("$xx %d\n", SIG${xx});
18963 return 0;
18964 }
18965 EOCP
18966                 set signal
18967                 if eval $compile; then
18968                         echo "SIG${xx} found."
18969                         $run ./signal$_exe  >> signal.ls1
18970                 else
18971                         echo "SIG${xx} NOT found."
18972                 fi
18973         done
18974         if $test -s signal.ls1; then
18975                 $cat signal.nsg signal.ls1 |
18976                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18977         fi
18978
18979 fi
18980 if $test -s signal.lst; then
18981         :
18982 else
18983         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18984         echo 'kill -l' >signal
18985         set X `csh -f <signal`
18986         $rm -f signal
18987         shift
18988         case $# in
18989         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18990         esac
18991         echo $@ | $tr ' ' $trnl | \
18992             $awk '{ printf "%s %d\n", $1, ++s; }
18993                   END { printf "NSIG %d\n", ++s }' >signal.lst
18994 fi
18995 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18996 EOS
18997 chmod a+x signal_cmd
18998 $eunicefix signal_cmd
18999
19000 : generate list of signal names
19001 echo " "
19002 case "$sig_name_init" in
19003 '') doinit=yes ;;
19004 *)  case "$sig_num_init" in
19005     ''|*,*) doinit=yes ;;
19006     esac ;;
19007 esac
19008 case "$doinit" in
19009 yes)
19010         echo "Generating a list of signal names and numbers..." >&4
19011         . ./signal_cmd
19012         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19013         sig_name=`$awk 'BEGIN { printf "ZERO " }
19014                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19015         sig_num=`$awk  'BEGIN { printf "0 " }
19016                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19017         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19018                              !/^NSIG/   { printf "\"%s\", ", $1 }
19019                              END        { printf "0\n" }' signal.lst`
19020         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19021                              !/^NSIG/   { printf "%d, ", $2}
19022                              END        { printf "0\n"}' signal.lst`
19023         ;;
19024 esac
19025 echo "The following $sig_count signals are available:"
19026 echo " "
19027 echo $sig_name | $awk \
19028 'BEGIN { linelen = 0 }
19029 {
19030         for (i = 1; i <= NF; i++) {
19031                 name = "SIG" $i " "
19032                 linelen = linelen + length(name)
19033                 if (linelen > 70) {
19034                         printf "\n"
19035                         linelen = length(name)
19036                 }
19037                 printf "%s", name
19038         }
19039         printf "\n"
19040 }'
19041 sig_size=`echo $sig_name | awk '{print NF}'`
19042 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19043
19044 echo " "
19045 case "$sizetype" in
19046 *_t) zzz="$sizetype"    ;;
19047 *)   zzz="filesize"     ;;
19048 esac
19049 echo "Checking the size of $zzz..." >&4 
19050 cat > try.c <<EOCP
19051 #include <sys/types.h>
19052 #include <stdio.h>
19053 #$i_stdlib I_STDLIB
19054 #ifdef I_STDLIB
19055 #include <stdlib.h>
19056 #endif
19057 int main() {
19058     printf("%d\n", (int)sizeof($sizetype));
19059     exit(0);
19060 }
19061 EOCP
19062 set try
19063 if eval $compile_ok; then
19064         yyy=`$run ./try`
19065         case "$yyy" in
19066         '')     sizesize=4
19067                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19068                 ;;
19069         *)      sizesize=$yyy
19070                 echo "Your $zzz size is $sizesize bytes."
19071                 ;;
19072         esac
19073 else
19074         sizesize=4
19075         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19076 fi
19077
19078
19079 : check for socklen_t
19080 echo " "
19081 echo "Checking to see if you have socklen_t..." >&4
19082 $cat >try.c <<EOCP
19083 #include <sys/types.h>
19084 #$d_socket HAS_SOCKET
19085 #ifdef HAS_SOCKET
19086 #include <sys/socket.h>
19087 #endif
19088 int main() { socklen_t x = 16; }
19089 EOCP
19090 set try
19091 if eval $compile; then
19092         val="$define"
19093         echo "You have socklen_t."
19094 else
19095         val="$undef"
19096         echo "You do not have socklen_t."
19097         case "$sizetype" in
19098         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19099         esac
19100 fi
19101 $rm -f try try.*
19102 set d_socklen_t
19103 eval $setvar
19104
19105 : see if this is a socks.h system
19106 set socks.h i_socks
19107 eval $inhdr
19108
19109 : check for type of the size argument to socket calls
19110 case "$d_socket" in
19111 "$define")
19112         $cat <<EOM
19113
19114 Checking to see what type is the last argument of accept().
19115 EOM
19116         yyy=''
19117         case "$d_socklen_t" in
19118         "$define") yyy="$yyy socklen_t"
19119         esac
19120         yyy="$yyy $sizetype int long unsigned"
19121         for xxx in $yyy; do
19122                 case "$socksizetype" in
19123                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19124                         case "$usesocks" in
19125                         "$define")
19126                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19127                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19128                                         socksizetype="$xxx"
19129                                 fi
19130                                 ;;
19131                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19132                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19133                                         socksizetype="$xxx"
19134                                 fi
19135                                 ;;
19136                         esac
19137                         ;;
19138                 esac
19139         done
19140 : In case none of those worked, prompt the user.
19141         case "$socksizetype" in
19142         '')     rp='What is the type for socket address structure sizes?'
19143                 dflt='int'
19144                 . ./myread
19145                 socksizetype=$ans
19146                 ;;
19147         esac
19148         ;;
19149 *)      : no sockets, so pick relatively harmless default
19150         socksizetype='int'
19151         ;;
19152 esac
19153
19154 : see what type is used for signed size_t
19155 set ssize_t ssizetype int stdio.h sys/types.h
19156 eval $typedef
19157 dflt="$ssizetype"
19158 $cat > try.c <<EOM
19159 #include <stdio.h>
19160 #$i_stdlib I_STDLIB
19161 #ifdef I_STDLIB
19162 #include <stdlib.h>
19163 #endif
19164 #include <sys/types.h>
19165 #define Size_t $sizetype
19166 #define SSize_t $dflt
19167 int main()
19168 {
19169         if (sizeof(Size_t) == sizeof(SSize_t))
19170                 printf("$dflt\n");
19171         else if (sizeof(Size_t) == sizeof(int))
19172                 printf("int\n");
19173         else 
19174                 printf("long\n");
19175         exit(0);
19176 }
19177 EOM
19178 echo " "
19179 set try
19180 if eval $compile_ok && $run ./try > /dev/null; then
19181         ssizetype=`$run ./try`
19182         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19183 else
19184         $cat >&4 <<EOM
19185 Help! I can't compile and run the ssize_t test program: please enlighten me!
19186 (This is probably a misconfiguration in your system or libraries, and
19187 you really ought to fix it.  Still, I'll try anyway.)
19188
19189 I need a type that is the same size as $sizetype, but is guaranteed to
19190 be signed.  Common values are ssize_t, int and long.
19191
19192 EOM
19193         rp="What signed type is the same size as $sizetype?"
19194         . ./myread
19195         ssizetype="$ans"
19196 fi
19197 $rm -f try try.*
19198
19199 : see what type of char stdio uses.
19200 echo " "
19201 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19202 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19203         echo "Your stdio uses unsigned chars." >&4
19204         stdchar="unsigned char"
19205 else
19206         echo "Your stdio uses signed chars." >&4
19207         stdchar="char"
19208 fi
19209 $rm -f stdioh
19210
19211
19212
19213 : see what type uids are declared as in the kernel
19214 echo " "
19215 echo "Looking for the type for user ids returned by getuid()."
19216 set uid_t uidtype xxx stdio.h sys/types.h
19217 eval $typedef
19218 case "$uidtype" in
19219 xxx)
19220         xxx=`./findhdr sys/user.h`
19221         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19222         case $1 in
19223         unsigned) dflt="$1 $2" ;;
19224         *) dflt="$1" ;;
19225         esac
19226         ;;
19227 *) dflt="$uidtype";;
19228 esac
19229 case "$uidtype" in
19230 uid_t)  echo "uid_t found." ;;
19231 *)      rp="What is the type for user ids returned by getuid()?"
19232         . ./myread
19233         uidtype="$ans"
19234         ;;
19235 esac
19236
19237 echo " "
19238 case "$uidtype" in
19239 *_t) zzz="$uidtype"     ;;
19240 *)   zzz="uid"          ;;
19241 esac
19242 echo "Checking the size of $zzz..." >&4 
19243 cat > try.c <<EOCP
19244 #include <sys/types.h>
19245 #include <stdio.h>
19246 #$i_stdlib I_STDLIB
19247 #ifdef I_STDLIB
19248 #include <stdlib.h>
19249 #endif
19250 int main() {
19251     printf("%d\n", (int)sizeof($uidtype));
19252     exit(0);
19253 }
19254 EOCP
19255 set try
19256 if eval $compile_ok; then
19257         yyy=`$run ./try`
19258         case "$yyy" in
19259         '')     uidsize=4
19260                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19261                 ;;
19262         *)      uidsize=$yyy
19263                 echo "Your $zzz is $uidsize bytes long."
19264                 ;;
19265         esac
19266 else
19267         uidsize=4
19268         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19269 fi
19270
19271 echo " "
19272 case "$uidtype" in
19273 *_t) zzz="$uidtype"     ;;
19274 *)   zzz="uid"          ;;
19275 esac
19276 echo "Checking the sign of $zzz..." >&4
19277 cat > try.c <<EOCP
19278 #include <sys/types.h>
19279 #include <stdio.h>
19280 int main() {
19281         $uidtype foo = -1;
19282         if (foo < 0)
19283                 printf("-1\n");
19284         else
19285                 printf("1\n");
19286 }
19287 EOCP
19288 set try
19289 if eval $compile; then
19290         yyy=`$run ./try`
19291         case "$yyy" in
19292         '')     uidsign=1
19293                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19294                 ;;
19295         *)      uidsign=$yyy
19296                 case "$uidsign" in
19297                  1) echo "Your $zzz is unsigned." ;;
19298                 -1) echo "Your $zzz is signed."   ;;
19299                 esac
19300                 ;;
19301         esac
19302 else
19303         uidsign=1
19304         echo "(I can't compile the test program--guessing unsigned.)" >&4
19305 fi
19306
19307
19308
19309 echo " "
19310 $echo "Checking the format string to be used for uids..." >&4
19311
19312 case "$uidsign" in
19313 -1)     if $test X"$uidsize" = X"$ivsize"; then
19314                 uidformat="$ivdformat"
19315         else
19316                 if $test X"$uidsize" = X"$longsize"; then
19317                         uidformat='"ld"'
19318                 else
19319                         if $test X"$uidsize" = X"$intsize"; then
19320                                 uidformat='"d"'
19321                         else
19322                                 if $test X"$uidsize" = X"$shortsize"; then
19323                                         uidformat='"hd"'
19324                                 fi
19325                         fi
19326                 fi
19327         fi
19328         ;;
19329 *)      if $test X"$uidsize" = X"$uvsize"; then
19330                 uidformat="$uvuformat"
19331         else
19332                 if $test X"$uidsize" = X"$longsize"; then
19333                         uidformat='"lu"'
19334                 else
19335                         if $test X"$uidsize" = X"$intsize"; then
19336                                 uidformat='"u"'
19337                         else
19338                                 if $test X"$uidsize" = X"$shortsize"; then
19339                                         uidformat='"hu"'
19340                                 fi
19341                         fi
19342                 fi
19343         fi
19344         ;;
19345 esac
19346
19347 : determine compiler compiler
19348 case "$yacc" in
19349 '')
19350         dflt=yacc;;
19351 *)
19352         dflt="$yacc";;
19353 esac
19354 echo " "
19355 comp='yacc'
19356 if $test -f "$byacc$_exe"; then
19357         dflt="$byacc"
19358         comp="byacc or $comp"
19359 fi
19360 if $test -f "$bison$_exe"; then
19361         comp="$comp or bison -y"
19362 fi
19363 rp="Which compiler compiler ($comp) shall I use?"
19364 . ./myread
19365 yacc="$ans"
19366 case "$yacc" in
19367 *bis*)
19368         case "$yacc" in
19369         *-y*) ;;
19370         *)
19371                 yacc="$yacc -y"
19372                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19373                 ;;
19374         esac
19375         ;;
19376 esac
19377
19378 : see if this is a fp.h system
19379 set fp.h i_fp
19380 eval $inhdr
19381
19382 : see if this is a fp_class.h system
19383 set fp_class.h i_fp_class
19384 eval $inhdr
19385
19386 : see if this is a ieeefp.h system
19387 case "$i_ieeefp" in
19388 '' ) set ieeefp.h i_ieeefp
19389      eval $inhdr
19390      ;;
19391 esac
19392
19393 : see if this is a libutil.h system
19394 set libutil.h i_libutil
19395 eval $inhdr
19396
19397 : see if mach cthreads are available
19398 if test "X$usethreads" = "X$define"; then
19399         set mach/cthreads.h i_machcthr
19400         eval $inhdr
19401 else
19402         i_machcthr="$undef"
19403 fi
19404
19405
19406
19407 : see if this is a math.h system
19408 set math.h i_math
19409 eval $inhdr
19410
19411 : see if this is a mntent.h system
19412 set mntent.h i_mntent
19413 eval $inhdr
19414
19415 : see if ndbm.h is available
19416 set ndbm.h t_ndbm
19417 eval $inhdr
19418
19419 case "$t_ndbm" in
19420 $undef)
19421     # Some Linux distributions such as RedHat 7.1 put the
19422     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19423     if $test -f /usr/include/gdbm/ndbm.h; then
19424         echo '<gdbm/ndbm.h> found.'
19425         ccflags="$ccflags -I/usr/include/gdbm"
19426         cppflags="$cppflags -I/usr/include/gdbm"
19427         t_ndbm=$define
19428     fi
19429     ;;
19430 esac
19431
19432 case "$t_ndbm" in
19433 $define)
19434         : see if dbm_open exists
19435         set dbm_open d_dbm_open
19436         eval $inlibc
19437         case "$d_dbm_open" in
19438         $undef)
19439                 t_ndbm="$undef"
19440                 echo "We won't be including <ndbm.h>"
19441                 ;;
19442         esac
19443         ;;
19444 esac
19445 val="$t_ndbm"
19446 set i_ndbm
19447 eval $setvar
19448
19449 : see if net/errno.h is available
19450 val=''
19451 set net/errno.h val
19452 eval $inhdr
19453
19454 : Unfortunately, it causes problems on some systems.  Arrgh.
19455 case "$val" in
19456 $define)
19457         cat > try.c <<'EOM'
19458 #include <stdio.h>
19459 #include <errno.h>
19460 #include <net/errno.h>
19461 int func()
19462 {
19463         return ENOTSOCK;
19464 }
19465 EOM
19466         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19467                 echo "We'll be including <net/errno.h>." >&4
19468         else
19469                 echo "We won't be including <net/errno.h>." >&4
19470                 val="$undef"
19471         fi
19472         $rm -f try.* try
19473         ;;
19474 esac
19475 set i_neterrno
19476 eval $setvar
19477
19478 : see if netinet/tcp.h is available
19479 set netinet/tcp.h i_netinettcp
19480 eval $inhdr
19481
19482 : see if this is a poll.h system
19483 set poll.h i_poll
19484 eval $inhdr
19485
19486 : see if this is a prot.h system
19487 set prot.h i_prot
19488 eval $inhdr
19489
19490 echo " "
19491 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19492 $cat <<'EOSH' > Cppsym.know
19493 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19494 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19495 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19496 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19497 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19498 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19499 bull c cadmus clipper CMU COFF COMPILER_VERSION
19500 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19501 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19502 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19503 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19504 GLIBC GLIBC_MINOR
19505 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19506 H3050R H3050RX hbullx20 hcx host_mips
19507 hp200 hp300 hp700 HP700 hp800 hp9000
19508 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19509 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19510 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19511 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19512 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19513 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19514 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19515 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19516 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19517 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19518 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19519 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19520 MATH_HAS_NO_SIDE_EFFECTS
19521 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19522 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19523 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19524 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19525 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19526 NetBSD news1500 news1700 news1800 news1900 news3700
19527 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19528 ns32016 ns32332 ns32k nsc32000
19529 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19530 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19531 pc532 pdp11 PGC PIC plexus PORTAR posix
19532 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19533 POSIX_C_SOURCE POSIX_SOURCE POWER
19534 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19535 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19536 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19537 sony sony_news sonyrisc sparc sparclite spectrum
19538 stardent stdc STDC_EXT stratos sun sun3 sun386
19539 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19540 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19541 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19542 sysV68 sysV88 Tek4132 Tek4300 titan
19543 TM3200 TM5400 TM5600
19544 tower tower32 tower32_200 tower32_600 tower32_700
19545 tower32_800 tower32_850 tss
19546 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19547 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19548 unix UNIX95 UNIX99 unixpc unos
19549 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19550 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19551 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19552 USGr4 USGr4_2
19553 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19554 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19555 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19556 z8000
19557 EOSH
19558 # Maybe put other stuff here too.
19559 cat <<EOSH >>Cppsym.know
19560 $osname
19561 EOSH
19562 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19563 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19564 $cat Cppsym.know > Cppsym.c
19565 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19566 $rm -f Cppsym.a Cppsym.b Cppsym.c
19567 cat <<EOSH > Cppsym
19568 $startsh
19569 if $test \$# -gt 0; then
19570     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19571     if $test -s Cppsym.got; then
19572         $rm -f Cppsym.got
19573         exit 0
19574     fi
19575     $rm -f Cppsym.got
19576     exit 1
19577 else
19578     $tr " " "$trnl" | ./Cppsym.try
19579     exit 0
19580 fi
19581 EOSH
19582 chmod +x Cppsym
19583 $eunicefix Cppsym
19584 cat <<EOSH > Cppsym.try
19585 $startsh
19586 cat <<'EOCP' > try.c
19587 #include <stdio.h>
19588 int main() {
19589 EOCP
19590 $awk \\
19591 EOSH
19592 cat <<'EOSH' >> Cppsym.try
19593 'length($1) > 0 {
19594     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19595     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19596     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19597     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19598 }'       >> try.c
19599 echo 'return 0;}' >> try.c
19600 EOSH
19601 cat <<EOSH >> Cppsym.try
19602 ccflags="$ccflags"
19603 case "$osname-$gccversion" in
19604 irix-) ccflags="\$ccflags -woff 1178" ;;
19605 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19606 esac
19607 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19608 EOSH
19609 chmod +x Cppsym.try
19610 $eunicefix Cppsym.try
19611 ./Cppsym < Cppsym.know > Cppsym.true
19612 : now check the C compiler for additional symbols
19613 postprocess_cc_v=''
19614 case "$osname" in
19615 aix) postprocess_cc_v="|$tr , ' '" ;;
19616 esac
19617 $cat >ccsym <<EOS
19618 $startsh
19619 $cat >tmp.c <<EOF
19620 extern int foo;
19621 EOF
19622 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19623 do
19624         case "\$i" in
19625         -D*) echo "\$i" | $sed 's/^-D//';;
19626         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19627         esac
19628 done
19629 $rm -f try.c
19630 EOS
19631 postprocess_cc_v=''
19632 chmod +x ccsym
19633 $eunicefix ccsym
19634 ./ccsym > ccsym1.raw
19635 if $test -s ccsym1.raw; then
19636        $sort ccsym1.raw | $uniq >ccsym.raw
19637 else
19638        mv ccsym1.raw ccsym.raw
19639 fi
19640
19641 $awk '/\=/ { print $0; next }
19642         { print $0"=1" }' ccsym.raw >ccsym.list
19643 $awk '/\=/ { print $0; next }
19644         { print $0"=1" }' Cppsym.true >ccsym.true
19645 $comm -13 ccsym.true ccsym.list >ccsym.own
19646 $comm -12 ccsym.true ccsym.list >ccsym.com
19647 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19648 also=''
19649 if $test -z ccsym.raw; then
19650         echo "Your C compiler doesn't seem to define any symbols!" >&4
19651         echo " "
19652         echo "However, your C preprocessor defines the following symbols:"
19653         $cat Cppsym.true
19654         ccsymbols=''
19655         cppsymbols=`$cat Cppsym.true`
19656         cppsymbols=`echo $cppsymbols`
19657         cppccsymbols="$cppsymbols"
19658 else
19659         if $test -s ccsym.com; then
19660                 echo "Your C compiler and pre-processor define these symbols:"
19661                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19662                 also='also '
19663                 symbols='ones'
19664                 cppccsymbols=`$cat ccsym.com`
19665                 cppccsymbols=`echo $cppccsymbols`
19666                 $test "$silent" || sleep 1
19667         fi
19668         if $test -s ccsym.cpp; then
19669                 $test "$also" && echo " "
19670                 echo "Your C pre-processor ${also}defines the following symbols:"
19671                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19672                 also='further '
19673                 cppsymbols=`$cat ccsym.cpp`
19674                 cppsymbols=`echo $cppsymbols`
19675                 $test "$silent" || sleep 1
19676         fi
19677         if $test -s ccsym.own; then
19678                 $test "$also" && echo " "
19679                 echo "Your C compiler ${also}defines the following cpp symbols:"
19680                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19681                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19682                 ccsymbols=`$cat ccsym.own`
19683                 ccsymbols=`echo $ccsymbols`
19684                 $test "$silent" || sleep 1
19685         fi
19686 fi
19687
19688 : see if this is a termio system
19689 val="$undef"
19690 val2="$undef"
19691 val3="$undef"
19692 if $test `./findhdr termios.h`; then
19693         set tcsetattr i_termios
19694         eval $inlibc
19695         val3="$i_termios"
19696 fi
19697 echo " "
19698 case "$val3" in
19699 "$define") echo "You have POSIX termios.h... good!" >&4;;
19700 *) if ./Cppsym pyr; then
19701                 case "`/bin/universe`" in
19702                 ucb) if $test `./findhdr sgtty.h`; then
19703                                 val2="$define"
19704                                 echo "<sgtty.h> found." >&4
19705                         else
19706                                 echo "System is pyramid with BSD universe."
19707                                 echo "<sgtty.h> not found--you could have problems." >&4
19708                         fi;;
19709                 *) if $test `./findhdr termio.h`; then
19710                                 val="$define"
19711                                 echo "<termio.h> found." >&4
19712                         else
19713                                 echo "System is pyramid with USG universe."
19714                                 echo "<termio.h> not found--you could have problems." >&4
19715                         fi;;
19716                 esac
19717         elif ./usg; then
19718                 if $test `./findhdr termio.h`; then
19719                         echo "<termio.h> found." >&4
19720                         val="$define"
19721                 elif $test `./findhdr sgtty.h`; then
19722                         echo "<sgtty.h> found." >&4
19723                         val2="$define"
19724                 else
19725 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19726                 fi
19727         else
19728                 if $test `./findhdr sgtty.h`; then
19729                         echo "<sgtty.h> found." >&4
19730                         val2="$define"
19731                 elif $test `./findhdr termio.h`; then
19732                         echo "<termio.h> found." >&4
19733                         val="$define"
19734                 else
19735 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19736                 fi
19737         fi;;
19738 esac
19739 set i_termio; eval $setvar
19740 val=$val2; set i_sgtty; eval $setvar
19741 val=$val3; set i_termios; eval $setvar
19742
19743 : see if stddef is available
19744 set stddef.h i_stddef
19745 eval $inhdr
19746
19747 : see if this is a sunmath.h system
19748 set sunmath.h i_sunmath
19749 eval $inhdr
19750
19751 : see if sys/access.h is available
19752 set sys/access.h i_sysaccess
19753 eval $inhdr
19754
19755 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19756 set sys/filio.h i_sysfilio
19757 eval $inhdr
19758 echo " "
19759 if $test `./findhdr sys/ioctl.h`; then
19760         val="$define"
19761         echo '<sys/ioctl.h> found.' >&4
19762 else
19763         val="$undef"
19764         if $test $i_sysfilio = "$define"; then
19765             echo '<sys/ioctl.h> NOT found.' >&4
19766         else
19767                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19768                 $test $i_termio = "$define" && xxx="termio.h"
19769                 $test $i_termios = "$define" && xxx="termios.h"
19770 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19771         fi
19772 fi
19773 set i_sysioctl
19774 eval $setvar
19775
19776 : see if socket ioctl defs are in sys/sockio.h
19777 echo " "
19778 xxx=`./findhdr sys/sockio.h`
19779 if $test "$xxx"; then
19780         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19781                 val="$define"
19782                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19783         else
19784                 val="$undef"
19785                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19786         fi
19787 else
19788         val="$undef"
19789         $cat <<EOM
19790 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19791 EOM
19792 fi
19793 set i_syssockio
19794 eval $setvar
19795
19796
19797 : see if this is a syslog.h system
19798 set syslog.h i_syslog
19799 eval $inhdr
19800
19801
19802 : see if this is a sys/mode.h system
19803 set sys/mode.h i_sysmode
19804 eval $inhdr
19805
19806 : see if sys/resource.h has to be included
19807 set sys/resource.h i_sysresrc
19808 eval $inhdr
19809
19810 : see if sys/security.h is available
19811 set sys/security.h i_syssecrt
19812 eval $inhdr
19813
19814 : see if this is a sys/statvfs.h system
19815 set sys/statvfs.h i_sysstatvfs
19816 eval $inhdr
19817
19818 : see if this is a sys/un.h system
19819 set sys/un.h i_sysun
19820 eval $inhdr
19821
19822
19823 : see if this is a sys/utsname.h system
19824 set sys/utsname.h i_sysutsname
19825 eval $inhdr
19826
19827 : see if this is a syswait system
19828 set sys/wait.h i_syswait
19829 eval $inhdr
19830
19831 : see if this is a ustat.h system
19832 set ustat.h i_ustat
19833 eval $inhdr
19834
19835 : see if this is an utime system
19836 set utime.h i_utime
19837 eval $inhdr
19838
19839 : see if this is a values.h system
19840 set values.h i_values
19841 eval $inhdr
19842
19843 : see if this is a vfork system
19844 case "$d_vfork" in
19845 "$define")
19846         set vfork.h i_vfork
19847         eval $inhdr
19848         ;;
19849 *)
19850         i_vfork="$undef"
19851         ;;
19852 esac
19853
19854 : see if gdbm.h is available
19855 set gdbm.h t_gdbm
19856 eval $inhdr
19857 case "$t_gdbm" in
19858 $define)
19859         : see if gdbm_open exists
19860         set gdbm_open d_gdbm_open
19861         eval $inlibc
19862         case "$d_gdbm_open" in
19863         $undef)
19864                 t_gdbm="$undef"
19865                 echo "We won't be including <gdbm.h>"
19866                 ;;
19867         esac
19868         ;;
19869 esac
19870 val="$t_gdbm"
19871 set i_gdbm
19872 eval $setvar
19873
19874 echo " "
19875 echo "Looking for extensions..." >&4
19876 : If we are using the old config.sh, known_extensions may contain
19877 : old or inaccurate or duplicate values.
19878 known_extensions=''
19879 nonxs_extensions=''
19880 : We do not use find because it might not be available.
19881 : We do not just use MANIFEST because the user may have dropped
19882 : some additional extensions into the source tree and expect them
19883 : to be built.
19884
19885 : Function to recursively find available extensions, ignoring DynaLoader
19886 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19887 find_extensions='
19888     for xxx in *; do
19889        case "$xxx" in
19890            DynaLoader|dynaload) ;;
19891            *)
19892            if $test -f $xxx/$xxx.xs; then
19893                known_extensions="$known_extensions $1$xxx";
19894            elif $test -f $xxx/Makefile.PL; then
19895                nonxs_extensions="$nonxs_extensions $1$xxx";
19896            else
19897                if $test -d $xxx -a $# -lt 10; then
19898                    set $1$xxx/ $*;
19899                    cd "$xxx";
19900                    eval $find_extensions;
19901                    cd ..;
19902                    shift;
19903                fi;
19904            fi
19905            ;;
19906        esac;
19907     done'
19908 tdir=`pwd`
19909 cd "$rsrc/ext"
19910 set X
19911 shift
19912 eval $find_extensions
19913 # Special case:  Add in threads/shared since it is not picked up by the
19914 # recursive find above (and adding in general recursive finding breaks
19915 # SDBM_File/sdbm).  A.D.  10/25/2001.
19916 known_extensions="$known_extensions threads/shared"
19917 set X $nonxs_extensions
19918 shift
19919 nonxs_extensions="$*"
19920 set X $known_extensions
19921 shift
19922 known_extensions="$*"
19923 cd "$tdir"
19924
19925 : Now see which are supported on this system.
19926 avail_ext=''
19927 for xxx in $known_extensions ; do
19928         case "$xxx" in
19929         DB_File|db_file)
19930                 case "$i_db" in
19931                 $define) avail_ext="$avail_ext $xxx" ;;
19932                 esac
19933                 ;;
19934         GDBM_File|gdbm_fil)
19935                 case "$i_gdbm" in 
19936                 $define) avail_ext="$avail_ext $xxx" ;;
19937                 esac
19938                 ;;
19939         I18N/Langinfo|i18n_lan)
19940                 case "$i_langinfo$d_nl_langinfo" in 
19941                 $define$define) avail_ext="$avail_ext $xxx" ;;
19942                 esac
19943                 ;;
19944         NDBM_File|ndbm_fil)
19945                 case "$i_ndbm" in
19946                 $define)
19947                     case "$osname-$use64bitint" in
19948                     hpux-define)
19949                         case "$libs" in
19950                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19951                         esac
19952                         ;;
19953                     *) avail_ext="$avail_ext $xxx" ;;
19954                     esac
19955                     ;;
19956                 esac
19957                 ;;
19958         ODBM_File|odbm_fil) 
19959                 case "${i_dbm}${i_rpcsvcdbm}" in
19960                 *"${define}"*)
19961                     case "$osname-$use64bitint" in
19962                     hpux-define)
19963                         case "$libs" in
19964                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19965                         esac
19966                         ;;
19967                     *) avail_ext="$avail_ext $xxx" ;;
19968                     esac
19969                     ;;
19970                 esac
19971                 ;;
19972         POSIX|posix)
19973                 case "$useposix" in
19974                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19975                 esac
19976                 ;;
19977         Opcode|opcode)
19978                 case "$useopcode" in
19979                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19980                 esac
19981                 ;;
19982         Socket|socket)
19983                 case "$d_socket" in 
19984                 true|$define|y)
19985                     case "$osname" in
19986                     beos) ;; # not unless BONE
19987                     *) avail_ext="$avail_ext $xxx" ;;
19988                     esac
19989                     ;;
19990                 esac
19991                 ;;
19992         Sys/Syslog|sys/syslog)
19993                 : XXX syslog requires socket
19994                 case "$d_socket" in 
19995                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19996                 esac
19997                 ;;
19998         Thread|thread)
19999                 case "$usethreads" in
20000                 true|$define|y)
20001                         case "$useithreads" in
20002                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20003                         esac
20004                 esac
20005                 ;;
20006         XS/APItest|xs/apitest)
20007                 # This is just for testing.  Skip it unless we have dynamic loading.
20008
20009                 case "$usedl" in
20010                 $define) avail_ext="$avail_ext $xxx" ;;
20011                 esac
20012                 ;;
20013         XS/Typemap|xs/typemap)
20014                 # This is just for testing.  Skip it unless we have dynamic loading.
20015                 case "$usedl" in
20016                 $define) avail_ext="$avail_ext $xxx" ;;
20017                 esac
20018                 ;;
20019         threads|threads/shared)
20020                 # threads and threads::shared are special cases.
20021                 # To stop people from asking "Perl 5.8.0 was supposed
20022                 # to have this new fancy threads implementation but my
20023                 # perl doesn't have it" and from people trying to
20024                 # (re)install the threads module using CPAN.pm and
20025                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20026                 # the threads.pm and threads/shared.pm will always be
20027                 # there, croaking informatively ("you need to rebuild
20028                 # all of Perl with threads, sorry") when threads haven't
20029                 # been compiled in.
20030                 # --jhi
20031                 avail_ext="$avail_ext $xxx"
20032                 ;;
20033         IPC/SysV|ipc/sysv)
20034                 : XXX Do we need a useipcsysv variable here
20035                 case "${d_msg}${d_sem}${d_shm}" in 
20036                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20037                 esac
20038                 ;;
20039         *)      avail_ext="$avail_ext $xxx"
20040                 ;;
20041         esac
20042 done
20043
20044 set X $avail_ext
20045 shift
20046 avail_ext="$*"
20047
20048 : Now see which nonxs extensions are supported on this system.
20049 : For now assume all are.
20050 nonxs_ext=''
20051 for xxx in $nonxs_extensions ; do
20052         case "$xxx" in
20053         *)      nonxs_ext="$nonxs_ext $xxx"
20054                 ;;
20055         esac
20056 done
20057
20058 set X $nonxs_ext
20059 shift
20060 nonxs_ext="$*"
20061
20062 case $usedl in
20063 $define)
20064         $cat <<EOM
20065 A number of extensions are supplied with $package.  You may choose to
20066 compile these extensions for dynamic loading (the default), compile
20067 them into the $package executable (static loading), or not include
20068 them at all.  Answer "none" to include no extensions.
20069 Note that DynaLoader is always built and need not be mentioned here.
20070
20071 EOM
20072         case "$dynamic_ext" in
20073         '')
20074                 : Exclude those listed in static_ext
20075                 dflt=''
20076                 for xxx in $avail_ext; do
20077                         case " $static_ext " in
20078                         *" $xxx "*) ;;
20079                         *) dflt="$dflt $xxx" ;;
20080                         esac
20081                 done
20082                 set X $dflt
20083                 shift
20084                 dflt="$*"
20085                 ;;
20086         *)      dflt="$dynamic_ext"
20087                 # Perhaps we are reusing an old out-of-date config.sh.
20088                 case "$hint" in
20089                 previous)
20090                         if test X"$dynamic_ext" != X"$avail_ext"; then
20091                                 $cat <<EOM
20092 NOTICE:  Your previous config.sh list may be incorrect. 
20093 The extensions now available to you are 
20094         ${avail_ext}
20095 but the default list from your previous config.sh is
20096         ${dynamic_ext} 
20097
20098 EOM
20099                         fi
20100                         ;;
20101                 esac
20102                 ;;
20103         esac
20104         case "$dflt" in
20105         '')     dflt=none;;
20106         esac
20107         rp="What extensions do you wish to load dynamically?"
20108         . ./myread
20109         case "$ans" in
20110         none) dynamic_ext=' ' ;;
20111         *) dynamic_ext="$ans" ;;
20112         esac
20113
20114         case "$static_ext" in
20115         '')
20116                 : Exclude those already listed in dynamic linking
20117                 dflt=''
20118                 for xxx in $avail_ext; do
20119                         case " $dynamic_ext " in
20120                         *" $xxx "*) ;;
20121                         *) dflt="$dflt $xxx" ;;
20122                         esac
20123                 done
20124                 set X $dflt
20125                 shift
20126                 dflt="$*"
20127                 ;;
20128         *)  dflt="$static_ext" 
20129                 ;;
20130         esac
20131
20132         case "$dflt" in
20133         '')     dflt=none;;
20134         esac
20135         rp="What extensions do you wish to load statically?"
20136         . ./myread
20137         case "$ans" in
20138         none) static_ext=' ' ;;
20139         *) static_ext="$ans" ;;
20140         esac
20141         ;;
20142 *)
20143         $cat <<EOM
20144 A number of extensions are supplied with $package.  Answer "none" 
20145 to include no extensions. 
20146 Note that DynaLoader is always built and need not be mentioned here.
20147
20148 EOM
20149         case "$static_ext" in
20150         '') dflt="$avail_ext" ;;
20151         *)      dflt="$static_ext"
20152                 # Perhaps we are reusing an old out-of-date config.sh.
20153                 case "$hint" in
20154                 previous)
20155                         if test X"$static_ext" != X"$avail_ext"; then
20156                                 $cat <<EOM
20157 NOTICE:  Your previous config.sh list may be incorrect. 
20158 The extensions now available to you are 
20159         ${avail_ext}
20160 but the default list from your previous config.sh is
20161         ${static_ext} 
20162
20163 EOM
20164                         fi
20165                         ;;
20166                 esac
20167                 ;;
20168         esac
20169         : Exclude those that are not xs extensions
20170         case "$dflt" in
20171         '')     dflt=none;;
20172         esac
20173         rp="What extensions do you wish to include?"
20174         . ./myread
20175         case "$ans" in
20176         none) static_ext=' ' ;;
20177         *) static_ext="$ans" ;;
20178         esac
20179         ;;
20180 esac
20181 #        
20182 # Encode is a special case.  If we are building Encode as a static
20183 # extension, we need to explicitly list its subextensions as well.
20184 # For other nested extensions, this is handled automatically by
20185 # the appropriate Makefile.PL.
20186 case " $static_ext " in
20187         *" Encode "*) # Add the subextensions of Encode
20188         cd "$rsrc/ext"
20189         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20190                 static_ext="$static_ext Encode/$xxx"
20191         done
20192         cd "$tdir"
20193         ;;
20194 esac
20195
20196 set X $dynamic_ext $static_ext $nonxs_ext
20197 shift
20198 extensions="$*"
20199
20200 case "$onlyextensions" in
20201 '') ;;
20202 *)  keepextensions=''
20203     echo "You have requested that only certains extensions be included..." >&4
20204     for i in $onlyextensions; do
20205         case " $extensions " in
20206         *" $i "*)
20207             echo "Keeping extension $i."
20208             keepextensions="$keepextensions $i"
20209             ;;
20210         *) echo "Ignoring extension $i." ;;
20211         esac
20212     done
20213     extensions="$keepextensions"
20214     ;;
20215 esac
20216
20217 case "$noextensions" in
20218 '') ;;
20219 *)  keepextensions=''
20220     echo "You have requested that certain extensions be ignored..." >&4
20221     for i in $extensions; do
20222         case " $i " in
20223         " $noextensions ") echo "Ignoring extension $i." ;;
20224         *) echo "Keeping extension $i.";
20225            keepextensions="$keepextensions $i"
20226            ;;
20227         esac
20228     done
20229     extensions="$keepextensions"
20230     ;;
20231 esac
20232
20233 case "$extensions" in
20234 *"_File "*" Fcntl "*" IO "*) ;;
20235 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20236    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20237    ;;
20238 esac
20239
20240 : Remove libraries needed only for extensions
20241 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20242 : The exception is SunOS 4.x, which needs them.
20243 case "${osname}X${osvers}" in
20244 sunos*X4*)
20245     perllibs="$libs"
20246     ;;
20247 *) case "$usedl" in
20248     $define|true|[yY]*)
20249             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20250             shift
20251             perllibs="$*"
20252             ;;
20253     *)  perllibs="$libs"
20254             ;;
20255     esac
20256     ;;
20257 esac
20258
20259 : Remove build directory name from cppstdin so it can be used from
20260 : either the present location or the final installed location.
20261 echo " "
20262 : Get out of the UU directory to get correct path name.
20263 cd ..
20264 case "$cppstdin" in
20265 `pwd`/cppstdin)
20266         echo "Stripping down cppstdin path name"
20267         cppstdin=cppstdin
20268         ;;
20269 esac
20270 cd UU
20271
20272 : end of configuration questions
20273 echo " "
20274 echo "End of configuration questions."
20275 echo " "
20276
20277 : back to where it started
20278 if test -d ../UU; then
20279         cd ..
20280 fi
20281
20282 : configuration may be patched via a 'config.arch' file
20283 if $test -f config.arch; then
20284         echo "I see a config.arch file, loading it."
20285         . ./config.arch
20286 fi
20287
20288 : configuration may be patched via a 'config.over' file
20289 if $test -f config.over; then
20290         echo " "
20291         dflt=y
20292         rp='I see a config.over file.  Do you wish to load it?'
20293         . UU/myread
20294         case "$ans" in
20295         n*) echo "OK, I'll ignore it.";;
20296         *)      . ./config.over
20297                 echo "Configuration override changes have been loaded."
20298                 ;;
20299         esac
20300 fi
20301
20302 : in case they want portability, strip down executable paths
20303 case "$d_portable" in
20304 "$define")
20305         echo " "
20306         echo "Stripping down executable paths..." >&4
20307         for file in $loclist $trylist; do
20308                 eval temp=\$$file
20309                 eval $file=`basename $temp`
20310         done
20311         ;;
20312 esac
20313
20314 : create config.sh file
20315 echo " "
20316 echo "Creating config.sh..." >&4
20317 $spitshell <<EOT >config.sh
20318 $startsh
20319 #
20320 # This file was produced by running the Configure script. It holds all the
20321 # definitions figured out by Configure. Should you modify one of these values,
20322 # do not forget to propagate your changes by running "Configure -der". You may
20323 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20324 #
20325
20326 # Package name      : $package
20327 # Source directory  : $src
20328 # Configuration time: $cf_time
20329 # Configured by     : $cf_by
20330 # Target system     : $myuname
20331
20332 Author='$Author'
20333 Date='$Date'
20334 Header='$Header'
20335 Id='$Id'
20336 Locker='$Locker'
20337 Log='$Log'
20338 Mcc='$Mcc'
20339 RCSfile='$RCSfile'
20340 Revision='$Revision'
20341 Source='$Source'
20342 State='$State'
20343 _a='$_a'
20344 _exe='$_exe'
20345 _o='$_o'
20346 afs='$afs'
20347 afsroot='$afsroot'
20348 alignbytes='$alignbytes'
20349 ansi2knr='$ansi2knr'
20350 aphostname='$aphostname'
20351 api_revision='$api_revision'
20352 api_subversion='$api_subversion'
20353 api_version='$api_version'
20354 api_versionstring='$api_versionstring'
20355 ar='$ar'
20356 archlib='$archlib'
20357 archlibexp='$archlibexp'
20358 archname64='$archname64'
20359 archname='$archname'
20360 archobjs='$archobjs'
20361 asctime_r_proto='$asctime_r_proto'
20362 awk='$awk'
20363 baserev='$baserev'
20364 bash='$bash'
20365 bin='$bin'
20366 binexp='$binexp'
20367 bison='$bison'
20368 byacc='$byacc'
20369 byteorder='$byteorder'
20370 c='$c'
20371 castflags='$castflags'
20372 cat='$cat'
20373 cc='$cc'
20374 cccdlflags='$cccdlflags'
20375 ccdlflags='$ccdlflags'
20376 ccflags='$ccflags'
20377 ccflags_uselargefiles='$ccflags_uselargefiles'
20378 ccname='$ccname'
20379 ccsymbols='$ccsymbols'
20380 ccversion='$ccversion'
20381 cf_by='$cf_by'
20382 cf_email='$cf_email'
20383 cf_time='$cf_time'
20384 charsize='$charsize'
20385 chgrp='$chgrp'
20386 chmod='$chmod'
20387 chown='$chown'
20388 clocktype='$clocktype'
20389 comm='$comm'
20390 compress='$compress'
20391 contains='$contains'
20392 cp='$cp'
20393 cpio='$cpio'
20394 cpp='$cpp'
20395 cpp_stuff='$cpp_stuff'
20396 cppccsymbols='$cppccsymbols'
20397 cppflags='$cppflags'
20398 cpplast='$cpplast'
20399 cppminus='$cppminus'
20400 cpprun='$cpprun'
20401 cppstdin='$cppstdin'
20402 cppsymbols='$cppsymbols'
20403 crypt_r_proto='$crypt_r_proto'
20404 cryptlib='$cryptlib'
20405 csh='$csh'
20406 ctermid_r_proto='$ctermid_r_proto'
20407 ctime_r_proto='$ctime_r_proto'
20408 d_Gconvert='$d_Gconvert'
20409 d_PRIEUldbl='$d_PRIEUldbl'
20410 d_PRIFUldbl='$d_PRIFUldbl'
20411 d_PRIGUldbl='$d_PRIGUldbl'
20412 d_PRIXU64='$d_PRIXU64'
20413 d_PRId64='$d_PRId64'
20414 d_PRIeldbl='$d_PRIeldbl'
20415 d_PRIfldbl='$d_PRIfldbl'
20416 d_PRIgldbl='$d_PRIgldbl'
20417 d_PRIi64='$d_PRIi64'
20418 d_PRIo64='$d_PRIo64'
20419 d_PRIu64='$d_PRIu64'
20420 d_PRIx64='$d_PRIx64'
20421 d_SCNfldbl='$d_SCNfldbl'
20422 d__fwalk='$d__fwalk'
20423 d_access='$d_access'
20424 d_accessx='$d_accessx'
20425 d_aintl='$d_aintl'
20426 d_alarm='$d_alarm'
20427 d_archlib='$d_archlib'
20428 d_asctime_r='$d_asctime_r'
20429 d_atolf='$d_atolf'
20430 d_atoll='$d_atoll'
20431 d_attribut='$d_attribut'
20432 d_bcmp='$d_bcmp'
20433 d_bcopy='$d_bcopy'
20434 d_bsd='$d_bsd'
20435 d_bsdgetpgrp='$d_bsdgetpgrp'
20436 d_bsdsetpgrp='$d_bsdsetpgrp'
20437 d_bzero='$d_bzero'
20438 d_casti32='$d_casti32'
20439 d_castneg='$d_castneg'
20440 d_charvspr='$d_charvspr'
20441 d_chown='$d_chown'
20442 d_chroot='$d_chroot'
20443 d_chsize='$d_chsize'
20444 d_class='$d_class'
20445 d_closedir='$d_closedir'
20446 d_cmsghdr_s='$d_cmsghdr_s'
20447 d_const='$d_const'
20448 d_copysignl='$d_copysignl'
20449 d_crypt='$d_crypt'
20450 d_crypt_r='$d_crypt_r'
20451 d_csh='$d_csh'
20452 d_ctermid_r='$d_ctermid_r'
20453 d_ctime_r='$d_ctime_r'
20454 d_cuserid='$d_cuserid'
20455 d_dbl_dig='$d_dbl_dig'
20456 d_dbminitproto='$d_dbminitproto'
20457 d_difftime='$d_difftime'
20458 d_dirfd='$d_dirfd'
20459 d_dirnamlen='$d_dirnamlen'
20460 d_dlerror='$d_dlerror'
20461 d_dlopen='$d_dlopen'
20462 d_dlsymun='$d_dlsymun'
20463 d_dosuid='$d_dosuid'
20464 d_drand48_r='$d_drand48_r'
20465 d_drand48proto='$d_drand48proto'
20466 d_dup2='$d_dup2'
20467 d_eaccess='$d_eaccess'
20468 d_endgrent='$d_endgrent'
20469 d_endgrent_r='$d_endgrent_r'
20470 d_endhent='$d_endhent'
20471 d_endhostent_r='$d_endhostent_r'
20472 d_endnent='$d_endnent'
20473 d_endnetent_r='$d_endnetent_r'
20474 d_endpent='$d_endpent'
20475 d_endprotoent_r='$d_endprotoent_r'
20476 d_endpwent='$d_endpwent'
20477 d_endpwent_r='$d_endpwent_r'
20478 d_endsent='$d_endsent'
20479 d_endservent_r='$d_endservent_r'
20480 d_eofnblk='$d_eofnblk'
20481 d_eunice='$d_eunice'
20482 d_fchdir='$d_fchdir'
20483 d_fchmod='$d_fchmod'
20484 d_fchown='$d_fchown'
20485 d_fcntl='$d_fcntl'
20486 d_fcntl_can_lock='$d_fcntl_can_lock'
20487 d_fd_macros='$d_fd_macros'
20488 d_fd_set='$d_fd_set'
20489 d_fds_bits='$d_fds_bits'
20490 d_fgetpos='$d_fgetpos'
20491 d_finite='$d_finite'
20492 d_finitel='$d_finitel'
20493 d_flexfnam='$d_flexfnam'
20494 d_flock='$d_flock'
20495 d_flockproto='$d_flockproto'
20496 d_fork='$d_fork'
20497 d_fp_class='$d_fp_class'
20498 d_fpathconf='$d_fpathconf'
20499 d_fpclass='$d_fpclass'
20500 d_fpclassify='$d_fpclassify'
20501 d_fpclassl='$d_fpclassl'
20502 d_fpos64_t='$d_fpos64_t'
20503 d_frexpl='$d_frexpl'
20504 d_fs_data_s='$d_fs_data_s'
20505 d_fseeko='$d_fseeko'
20506 d_fsetpos='$d_fsetpos'
20507 d_fstatfs='$d_fstatfs'
20508 d_fstatvfs='$d_fstatvfs'
20509 d_fsync='$d_fsync'
20510 d_ftello='$d_ftello'
20511 d_ftime='$d_ftime'
20512 d_getcwd='$d_getcwd'
20513 d_getespwnam='$d_getespwnam'
20514 d_getfsstat='$d_getfsstat'
20515 d_getgrent='$d_getgrent'
20516 d_getgrent_r='$d_getgrent_r'
20517 d_getgrgid_r='$d_getgrgid_r'
20518 d_getgrnam_r='$d_getgrnam_r'
20519 d_getgrps='$d_getgrps'
20520 d_gethbyaddr='$d_gethbyaddr'
20521 d_gethbyname='$d_gethbyname'
20522 d_gethent='$d_gethent'
20523 d_gethname='$d_gethname'
20524 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20525 d_gethostbyname_r='$d_gethostbyname_r'
20526 d_gethostent_r='$d_gethostent_r'
20527 d_gethostprotos='$d_gethostprotos'
20528 d_getitimer='$d_getitimer'
20529 d_getlogin='$d_getlogin'
20530 d_getlogin_r='$d_getlogin_r'
20531 d_getmnt='$d_getmnt'
20532 d_getmntent='$d_getmntent'
20533 d_getnbyaddr='$d_getnbyaddr'
20534 d_getnbyname='$d_getnbyname'
20535 d_getnent='$d_getnent'
20536 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20537 d_getnetbyname_r='$d_getnetbyname_r'
20538 d_getnetent_r='$d_getnetent_r'
20539 d_getnetprotos='$d_getnetprotos'
20540 d_getpagsz='$d_getpagsz'
20541 d_getpbyname='$d_getpbyname'
20542 d_getpbynumber='$d_getpbynumber'
20543 d_getpent='$d_getpent'
20544 d_getpgid='$d_getpgid'
20545 d_getpgrp2='$d_getpgrp2'
20546 d_getpgrp='$d_getpgrp'
20547 d_getppid='$d_getppid'
20548 d_getprior='$d_getprior'
20549 d_getprotobyname_r='$d_getprotobyname_r'
20550 d_getprotobynumber_r='$d_getprotobynumber_r'
20551 d_getprotoent_r='$d_getprotoent_r'
20552 d_getprotoprotos='$d_getprotoprotos'
20553 d_getprpwnam='$d_getprpwnam'
20554 d_getpwent='$d_getpwent'
20555 d_getpwent_r='$d_getpwent_r'
20556 d_getpwnam_r='$d_getpwnam_r'
20557 d_getpwuid_r='$d_getpwuid_r'
20558 d_getsbyname='$d_getsbyname'
20559 d_getsbyport='$d_getsbyport'
20560 d_getsent='$d_getsent'
20561 d_getservbyname_r='$d_getservbyname_r'
20562 d_getservbyport_r='$d_getservbyport_r'
20563 d_getservent_r='$d_getservent_r'
20564 d_getservprotos='$d_getservprotos'
20565 d_getspnam='$d_getspnam'
20566 d_getspnam_r='$d_getspnam_r'
20567 d_gettimeod='$d_gettimeod'
20568 d_gmtime_r='$d_gmtime_r'
20569 d_gnulibc='$d_gnulibc'
20570 d_grpasswd='$d_grpasswd'
20571 d_hasmntopt='$d_hasmntopt'
20572 d_htonl='$d_htonl'
20573 d_ilogbl='$d_ilogbl'
20574 d_index='$d_index'
20575 d_inetaton='$d_inetaton'
20576 d_int64_t='$d_int64_t'
20577 d_isascii='$d_isascii'
20578 d_isfinite='$d_isfinite'
20579 d_isinf='$d_isinf'
20580 d_isnan='$d_isnan'
20581 d_isnanl='$d_isnanl'
20582 d_killpg='$d_killpg'
20583 d_lchown='$d_lchown'
20584 d_ldbl_dig='$d_ldbl_dig'
20585 d_link='$d_link'
20586 d_localtime_r='$d_localtime_r'
20587 d_locconv='$d_locconv'
20588 d_lockf='$d_lockf'
20589 d_longdbl='$d_longdbl'
20590 d_longlong='$d_longlong'
20591 d_lseekproto='$d_lseekproto'
20592 d_lstat='$d_lstat'
20593 d_madvise='$d_madvise'
20594 d_mblen='$d_mblen'
20595 d_mbstowcs='$d_mbstowcs'
20596 d_mbtowc='$d_mbtowc'
20597 d_memchr='$d_memchr'
20598 d_memcmp='$d_memcmp'
20599 d_memcpy='$d_memcpy'
20600 d_memmove='$d_memmove'
20601 d_memset='$d_memset'
20602 d_mkdir='$d_mkdir'
20603 d_mkdtemp='$d_mkdtemp'
20604 d_mkfifo='$d_mkfifo'
20605 d_mkstemp='$d_mkstemp'
20606 d_mkstemps='$d_mkstemps'
20607 d_mktime='$d_mktime'
20608 d_mmap='$d_mmap'
20609 d_modfl='$d_modfl'
20610 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20611 d_modflproto='$d_modflproto'
20612 d_mprotect='$d_mprotect'
20613 d_msg='$d_msg'
20614 d_msg_ctrunc='$d_msg_ctrunc'
20615 d_msg_dontroute='$d_msg_dontroute'
20616 d_msg_oob='$d_msg_oob'
20617 d_msg_peek='$d_msg_peek'
20618 d_msg_proxy='$d_msg_proxy'
20619 d_msgctl='$d_msgctl'
20620 d_msgget='$d_msgget'
20621 d_msghdr_s='$d_msghdr_s'
20622 d_msgrcv='$d_msgrcv'
20623 d_msgsnd='$d_msgsnd'
20624 d_msync='$d_msync'
20625 d_munmap='$d_munmap'
20626 d_mymalloc='$d_mymalloc'
20627 d_nanosleep='$d_nanosleep'
20628 d_nice='$d_nice'
20629 d_nl_langinfo='$d_nl_langinfo'
20630 d_nv_preserves_uv='$d_nv_preserves_uv'
20631 d_off64_t='$d_off64_t'
20632 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20633 d_oldpthreads='$d_oldpthreads'
20634 d_oldsock='$d_oldsock'
20635 d_open3='$d_open3'
20636 d_pathconf='$d_pathconf'
20637 d_pause='$d_pause'
20638 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20639 d_phostname='$d_phostname'
20640 d_pipe='$d_pipe'
20641 d_poll='$d_poll'
20642 d_portable='$d_portable'
20643 d_procselfexe='$d_procselfexe'
20644 d_pthread_atfork='$d_pthread_atfork'
20645 d_pthread_yield='$d_pthread_yield'
20646 d_pwage='$d_pwage'
20647 d_pwchange='$d_pwchange'
20648 d_pwclass='$d_pwclass'
20649 d_pwcomment='$d_pwcomment'
20650 d_pwexpire='$d_pwexpire'
20651 d_pwgecos='$d_pwgecos'
20652 d_pwpasswd='$d_pwpasswd'
20653 d_pwquota='$d_pwquota'
20654 d_qgcvt='$d_qgcvt'
20655 d_quad='$d_quad'
20656 d_random_r='$d_random_r'
20657 d_readdir64_r='$d_readdir64_r'
20658 d_readdir='$d_readdir'
20659 d_readdir_r='$d_readdir_r'
20660 d_readlink='$d_readlink'
20661 d_readv='$d_readv'
20662 d_recvmsg='$d_recvmsg'
20663 d_rename='$d_rename'
20664 d_rewinddir='$d_rewinddir'
20665 d_rmdir='$d_rmdir'
20666 d_safebcpy='$d_safebcpy'
20667 d_safemcpy='$d_safemcpy'
20668 d_sanemcmp='$d_sanemcmp'
20669 d_sbrkproto='$d_sbrkproto'
20670 d_scalbnl='$d_scalbnl'
20671 d_sched_yield='$d_sched_yield'
20672 d_scm_rights='$d_scm_rights'
20673 d_seekdir='$d_seekdir'
20674 d_select='$d_select'
20675 d_sem='$d_sem'
20676 d_semctl='$d_semctl'
20677 d_semctl_semid_ds='$d_semctl_semid_ds'
20678 d_semctl_semun='$d_semctl_semun'
20679 d_semget='$d_semget'
20680 d_semop='$d_semop'
20681 d_sendmsg='$d_sendmsg'
20682 d_setegid='$d_setegid'
20683 d_seteuid='$d_seteuid'
20684 d_setgrent='$d_setgrent'
20685 d_setgrent_r='$d_setgrent_r'
20686 d_setgrps='$d_setgrps'
20687 d_sethent='$d_sethent'
20688 d_sethostent_r='$d_sethostent_r'
20689 d_setitimer='$d_setitimer'
20690 d_setlinebuf='$d_setlinebuf'
20691 d_setlocale='$d_setlocale'
20692 d_setlocale_r='$d_setlocale_r'
20693 d_setnent='$d_setnent'
20694 d_setnetent_r='$d_setnetent_r'
20695 d_setpent='$d_setpent'
20696 d_setpgid='$d_setpgid'
20697 d_setpgrp2='$d_setpgrp2'
20698 d_setpgrp='$d_setpgrp'
20699 d_setprior='$d_setprior'
20700 d_setproctitle='$d_setproctitle'
20701 d_setprotoent_r='$d_setprotoent_r'
20702 d_setpwent='$d_setpwent'
20703 d_setpwent_r='$d_setpwent_r'
20704 d_setregid='$d_setregid'
20705 d_setresgid='$d_setresgid'
20706 d_setresuid='$d_setresuid'
20707 d_setreuid='$d_setreuid'
20708 d_setrgid='$d_setrgid'
20709 d_setruid='$d_setruid'
20710 d_setsent='$d_setsent'
20711 d_setservent_r='$d_setservent_r'
20712 d_setsid='$d_setsid'
20713 d_setvbuf='$d_setvbuf'
20714 d_sfio='$d_sfio'
20715 d_shm='$d_shm'
20716 d_shmat='$d_shmat'
20717 d_shmatprototype='$d_shmatprototype'
20718 d_shmctl='$d_shmctl'
20719 d_shmdt='$d_shmdt'
20720 d_shmget='$d_shmget'
20721 d_sigaction='$d_sigaction'
20722 d_sigprocmask='$d_sigprocmask'
20723 d_sigsetjmp='$d_sigsetjmp'
20724 d_sockatmark='$d_sockatmark'
20725 d_sockatmarkproto='$d_sockatmarkproto'
20726 d_socket='$d_socket'
20727 d_socklen_t='$d_socklen_t'
20728 d_sockpair='$d_sockpair'
20729 d_socks5_init='$d_socks5_init'
20730 d_sqrtl='$d_sqrtl'
20731 d_srand48_r='$d_srand48_r'
20732 d_srandom_r='$d_srandom_r'
20733 d_sresgproto='$d_sresgproto'
20734 d_sresuproto='$d_sresuproto'
20735 d_statblks='$d_statblks'
20736 d_statfs_f_flags='$d_statfs_f_flags'
20737 d_statfs_s='$d_statfs_s'
20738 d_statvfs='$d_statvfs'
20739 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20740 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20741 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20742 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20743 d_stdio_stream_array='$d_stdio_stream_array'
20744 d_stdiobase='$d_stdiobase'
20745 d_stdstdio='$d_stdstdio'
20746 d_strchr='$d_strchr'
20747 d_strcoll='$d_strcoll'
20748 d_strctcpy='$d_strctcpy'
20749 d_strerrm='$d_strerrm'
20750 d_strerror='$d_strerror'
20751 d_strerror_r='$d_strerror_r'
20752 d_strftime='$d_strftime'
20753 d_strtod='$d_strtod'
20754 d_strtol='$d_strtol'
20755 d_strtold='$d_strtold'
20756 d_strtoll='$d_strtoll'
20757 d_strtoq='$d_strtoq'
20758 d_strtoul='$d_strtoul'
20759 d_strtoull='$d_strtoull'
20760 d_strtouq='$d_strtouq'
20761 d_strxfrm='$d_strxfrm'
20762 d_suidsafe='$d_suidsafe'
20763 d_symlink='$d_symlink'
20764 d_syscall='$d_syscall'
20765 d_syscallproto='$d_syscallproto'
20766 d_sysconf='$d_sysconf'
20767 d_sysernlst='$d_sysernlst'
20768 d_syserrlst='$d_syserrlst'
20769 d_system='$d_system'
20770 d_tcgetpgrp='$d_tcgetpgrp'
20771 d_tcsetpgrp='$d_tcsetpgrp'
20772 d_telldir='$d_telldir'
20773 d_telldirproto='$d_telldirproto'
20774 d_time='$d_time'
20775 d_times='$d_times'
20776 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20777 d_tm_tm_zone='$d_tm_tm_zone'
20778 d_tmpnam_r='$d_tmpnam_r'
20779 d_truncate='$d_truncate'
20780 d_ttyname_r='$d_ttyname_r'
20781 d_tzname='$d_tzname'
20782 d_u32align='$d_u32align'
20783 d_ualarm='$d_ualarm'
20784 d_umask='$d_umask'
20785 d_uname='$d_uname'
20786 d_union_semun='$d_union_semun'
20787 d_unordered='$d_unordered'
20788 d_usleep='$d_usleep'
20789 d_usleepproto='$d_usleepproto'
20790 d_ustat='$d_ustat'
20791 d_vendorarch='$d_vendorarch'
20792 d_vendorbin='$d_vendorbin'
20793 d_vendorlib='$d_vendorlib'
20794 d_vendorscript='$d_vendorscript'
20795 d_vfork='$d_vfork'
20796 d_void_closedir='$d_void_closedir'
20797 d_voidsig='$d_voidsig'
20798 d_voidtty='$d_voidtty'
20799 d_volatile='$d_volatile'
20800 d_vprintf='$d_vprintf'
20801 d_wait4='$d_wait4'
20802 d_waitpid='$d_waitpid'
20803 d_wcstombs='$d_wcstombs'
20804 d_wctomb='$d_wctomb'
20805 d_writev='$d_writev'
20806 d_xenix='$d_xenix'
20807 date='$date'
20808 db_hashtype='$db_hashtype'
20809 db_prefixtype='$db_prefixtype'
20810 db_version_major='$db_version_major'
20811 db_version_minor='$db_version_minor'
20812 db_version_patch='$db_version_patch'
20813 defvoidused='$defvoidused'
20814 direntrytype='$direntrytype'
20815 dlext='$dlext'
20816 dlsrc='$dlsrc'
20817 doublesize='$doublesize'
20818 drand01='$drand01'
20819 drand48_r_proto='$drand48_r_proto'
20820 dynamic_ext='$dynamic_ext'
20821 eagain='$eagain'
20822 ebcdic='$ebcdic'
20823 echo='$echo'
20824 egrep='$egrep'
20825 emacs='$emacs'
20826 endgrent_r_proto='$endgrent_r_proto'
20827 endhostent_r_proto='$endhostent_r_proto'
20828 endnetent_r_proto='$endnetent_r_proto'
20829 endprotoent_r_proto='$endprotoent_r_proto'
20830 endpwent_r_proto='$endpwent_r_proto'
20831 endservent_r_proto='$endservent_r_proto'
20832 eunicefix='$eunicefix'
20833 exe_ext='$exe_ext'
20834 expr='$expr'
20835 extensions='$extensions'
20836 extras='$extras'
20837 fflushNULL='$fflushNULL'
20838 fflushall='$fflushall'
20839 find='$find'
20840 firstmakefile='$firstmakefile'
20841 flex='$flex'
20842 fpossize='$fpossize'
20843 fpostype='$fpostype'
20844 freetype='$freetype'
20845 from='$from'
20846 full_ar='$full_ar'
20847 full_csh='$full_csh'
20848 full_sed='$full_sed'
20849 gccansipedantic='$gccansipedantic'
20850 gccosandvers='$gccosandvers'
20851 gccversion='$gccversion'
20852 getgrent_r_proto='$getgrent_r_proto'
20853 getgrgid_r_proto='$getgrgid_r_proto'
20854 getgrnam_r_proto='$getgrnam_r_proto'
20855 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20856 gethostbyname_r_proto='$gethostbyname_r_proto'
20857 gethostent_r_proto='$gethostent_r_proto'
20858 getlogin_r_proto='$getlogin_r_proto'
20859 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20860 getnetbyname_r_proto='$getnetbyname_r_proto'
20861 getnetent_r_proto='$getnetent_r_proto'
20862 getprotobyname_r_proto='$getprotobyname_r_proto'
20863 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20864 getprotoent_r_proto='$getprotoent_r_proto'
20865 getpwent_r_proto='$getpwent_r_proto'
20866 getpwnam_r_proto='$getpwnam_r_proto'
20867 getpwuid_r_proto='$getpwuid_r_proto'
20868 getservbyname_r_proto='$getservbyname_r_proto'
20869 getservbyport_r_proto='$getservbyport_r_proto'
20870 getservent_r_proto='$getservent_r_proto'
20871 getspnam_r_proto='$getspnam_r_proto'
20872 gidformat='$gidformat'
20873 gidsign='$gidsign'
20874 gidsize='$gidsize'
20875 gidtype='$gidtype'
20876 glibpth='$glibpth'
20877 gmake='$gmake'
20878 gmtime_r_proto='$gmtime_r_proto'
20879 gnulibc_version='$gnulibc_version'
20880 grep='$grep'
20881 groupcat='$groupcat'
20882 groupstype='$groupstype'
20883 gzip='$gzip'
20884 h_fcntl='$h_fcntl'
20885 h_sysfile='$h_sysfile'
20886 hint='$hint'
20887 hostcat='$hostcat'
20888 html1dir='$html1dir'
20889 html1direxp='$html1direxp'
20890 html3dir='$html3dir'
20891 html3direxp='$html3direxp'
20892 i16size='$i16size'
20893 i16type='$i16type'
20894 i32size='$i32size'
20895 i32type='$i32type'
20896 i64size='$i64size'
20897 i64type='$i64type'
20898 i8size='$i8size'
20899 i8type='$i8type'
20900 i_arpainet='$i_arpainet'
20901 i_bsdioctl='$i_bsdioctl'
20902 i_crypt='$i_crypt'
20903 i_db='$i_db'
20904 i_dbm='$i_dbm'
20905 i_dirent='$i_dirent'
20906 i_dld='$i_dld'
20907 i_dlfcn='$i_dlfcn'
20908 i_fcntl='$i_fcntl'
20909 i_float='$i_float'
20910 i_fp='$i_fp'
20911 i_fp_class='$i_fp_class'
20912 i_gdbm='$i_gdbm'
20913 i_grp='$i_grp'
20914 i_ieeefp='$i_ieeefp'
20915 i_inttypes='$i_inttypes'
20916 i_langinfo='$i_langinfo'
20917 i_libutil='$i_libutil'
20918 i_limits='$i_limits'
20919 i_locale='$i_locale'
20920 i_machcthr='$i_machcthr'
20921 i_malloc='$i_malloc'
20922 i_math='$i_math'
20923 i_memory='$i_memory'
20924 i_mntent='$i_mntent'
20925 i_ndbm='$i_ndbm'
20926 i_netdb='$i_netdb'
20927 i_neterrno='$i_neterrno'
20928 i_netinettcp='$i_netinettcp'
20929 i_niin='$i_niin'
20930 i_poll='$i_poll'
20931 i_prot='$i_prot'
20932 i_pthread='$i_pthread'
20933 i_pwd='$i_pwd'
20934 i_rpcsvcdbm='$i_rpcsvcdbm'
20935 i_sfio='$i_sfio'
20936 i_sgtty='$i_sgtty'
20937 i_shadow='$i_shadow'
20938 i_socks='$i_socks'
20939 i_stdarg='$i_stdarg'
20940 i_stddef='$i_stddef'
20941 i_stdlib='$i_stdlib'
20942 i_string='$i_string'
20943 i_sunmath='$i_sunmath'
20944 i_sysaccess='$i_sysaccess'
20945 i_sysdir='$i_sysdir'
20946 i_sysfile='$i_sysfile'
20947 i_sysfilio='$i_sysfilio'
20948 i_sysin='$i_sysin'
20949 i_sysioctl='$i_sysioctl'
20950 i_syslog='$i_syslog'
20951 i_sysmman='$i_sysmman'
20952 i_sysmode='$i_sysmode'
20953 i_sysmount='$i_sysmount'
20954 i_sysndir='$i_sysndir'
20955 i_sysparam='$i_sysparam'
20956 i_sysresrc='$i_sysresrc'
20957 i_syssecrt='$i_syssecrt'
20958 i_sysselct='$i_sysselct'
20959 i_syssockio='$i_syssockio'
20960 i_sysstat='$i_sysstat'
20961 i_sysstatfs='$i_sysstatfs'
20962 i_sysstatvfs='$i_sysstatvfs'
20963 i_systime='$i_systime'
20964 i_systimek='$i_systimek'
20965 i_systimes='$i_systimes'
20966 i_systypes='$i_systypes'
20967 i_sysuio='$i_sysuio'
20968 i_sysun='$i_sysun'
20969 i_sysutsname='$i_sysutsname'
20970 i_sysvfs='$i_sysvfs'
20971 i_syswait='$i_syswait'
20972 i_termio='$i_termio'
20973 i_termios='$i_termios'
20974 i_time='$i_time'
20975 i_unistd='$i_unistd'
20976 i_ustat='$i_ustat'
20977 i_utime='$i_utime'
20978 i_values='$i_values'
20979 i_varargs='$i_varargs'
20980 i_varhdr='$i_varhdr'
20981 i_vfork='$i_vfork'
20982 ignore_versioned_solibs='$ignore_versioned_solibs'
20983 inc_version_list='$inc_version_list'
20984 inc_version_list_init='$inc_version_list_init'
20985 incpath='$incpath'
20986 inews='$inews'
20987 installarchlib='$installarchlib'
20988 installbin='$installbin'
20989 installhtml1dir='$installhtml1dir'
20990 installhtml3dir='$installhtml3dir'
20991 installman1dir='$installman1dir'
20992 installman3dir='$installman3dir'
20993 installprefix='$installprefix'
20994 installprefixexp='$installprefixexp'
20995 installprivlib='$installprivlib'
20996 installscript='$installscript'
20997 installsitearch='$installsitearch'
20998 installsitebin='$installsitebin'
20999 installsitehtml1='$installsitehtml1'
21000 installsitehtml3='$installsitehtml3'
21001 installsitelib='$installsitelib'
21002 installsiteman1='$installsiteman1'
21003 installsiteman3='$installsiteman3'
21004 installsitescript='$installsitescript'
21005 installstyle='$installstyle'
21006 installusrbinperl='$installusrbinperl'
21007 installvendorarch='$installvendorarch'
21008 installvendorbin='$installvendorbin'
21009 installvendorhtml1='$installvendorhtml1'
21010 installvendorhtml3='$installvendorhtml3'
21011 installvendorlib='$installvendorlib'
21012 installvendorman1='$installvendorman1'
21013 installvendorman3='$installvendorman3'
21014 installvendorscript='$installvendorscript'
21015 intsize='$intsize'
21016 issymlink='$issymlink'
21017 ivdformat='$ivdformat'
21018 ivsize='$ivsize'
21019 ivtype='$ivtype'
21020 known_extensions='$known_extensions'
21021 ksh='$ksh'
21022 ld='$ld'
21023 lddlflags='$lddlflags'
21024 ldflags='$ldflags'
21025 ldflags_uselargefiles='$ldflags_uselargefiles'
21026 ldlibpthname='$ldlibpthname'
21027 less='$less'
21028 lib_ext='$lib_ext'
21029 libc='$libc'
21030 libperl='$libperl'
21031 libpth='$libpth'
21032 libs='$libs'
21033 libsdirs='$libsdirs'
21034 libsfiles='$libsfiles'
21035 libsfound='$libsfound'
21036 libspath='$libspath'
21037 libswanted='$libswanted'
21038 libswanted_uselargefiles='$libswanted_uselargefiles'
21039 line='$line'
21040 lint='$lint'
21041 lkflags='$lkflags'
21042 ln='$ln'
21043 lns='$lns'
21044 localtime_r_proto='$localtime_r_proto'
21045 locincpth='$locincpth'
21046 loclibpth='$loclibpth'
21047 longdblsize='$longdblsize'
21048 longlongsize='$longlongsize'
21049 longsize='$longsize'
21050 lp='$lp'
21051 lpr='$lpr'
21052 ls='$ls'
21053 lseeksize='$lseeksize'
21054 lseektype='$lseektype'
21055 mail='$mail'
21056 mailx='$mailx'
21057 make='$make'
21058 make_set_make='$make_set_make'
21059 mallocobj='$mallocobj'
21060 mallocsrc='$mallocsrc'
21061 malloctype='$malloctype'
21062 man1dir='$man1dir'
21063 man1direxp='$man1direxp'
21064 man1ext='$man1ext'
21065 man3dir='$man3dir'
21066 man3direxp='$man3direxp'
21067 man3ext='$man3ext'
21068 mips_type='$mips_type'
21069 mkdir='$mkdir'
21070 mmaptype='$mmaptype'
21071 modetype='$modetype'
21072 more='$more'
21073 multiarch='$multiarch'
21074 mv='$mv'
21075 myarchname='$myarchname'
21076 mydomain='$mydomain'
21077 myhostname='$myhostname'
21078 myuname='$myuname'
21079 n='$n'
21080 need_va_copy='$need_va_copy'
21081 netdb_hlen_type='$netdb_hlen_type'
21082 netdb_host_type='$netdb_host_type'
21083 netdb_name_type='$netdb_name_type'
21084 netdb_net_type='$netdb_net_type'
21085 nm='$nm'
21086 nm_opt='$nm_opt'
21087 nm_so_opt='$nm_so_opt'
21088 nonxs_ext='$nonxs_ext'
21089 nroff='$nroff'
21090 nvEUformat='$nvEUformat'
21091 nvFUformat='$nvFUformat'
21092 nvGUformat='$nvGUformat'
21093 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21094 nveformat='$nveformat'
21095 nvfformat='$nvfformat'
21096 nvgformat='$nvgformat'
21097 nvsize='$nvsize'
21098 nvtype='$nvtype'
21099 o_nonblock='$o_nonblock'
21100 obj_ext='$obj_ext'
21101 old_pthread_create_joinable='$old_pthread_create_joinable'
21102 optimize='$optimize'
21103 orderlib='$orderlib'
21104 osname='$osname'
21105 osvers='$osvers'
21106 otherlibdirs='$otherlibdirs'
21107 package='$package'
21108 pager='$pager'
21109 passcat='$passcat'
21110 patchlevel='$patchlevel'
21111 path_sep='$path_sep'
21112 perl5='$perl5'
21113 perl='$perl'
21114 perl_patchlevel='$perl_patchlevel'
21115 perladmin='$perladmin'
21116 perllibs='$perllibs'
21117 perlpath='$perlpath'
21118 pg='$pg'
21119 phostname='$phostname'
21120 pidtype='$pidtype'
21121 plibpth='$plibpth'
21122 pm_apiversion='$pm_apiversion'
21123 pmake='$pmake'
21124 pr='$pr'
21125 prefix='$prefix'
21126 prefixexp='$prefixexp'
21127 privlib='$privlib'
21128 privlibexp='$privlibexp'
21129 procselfexe='$procselfexe'
21130 prototype='$prototype'
21131 ptrsize='$ptrsize'
21132 quadkind='$quadkind'
21133 quadtype='$quadtype'
21134 randbits='$randbits'
21135 randfunc='$randfunc'
21136 random_r_proto='$random_r_proto'
21137 randseedtype='$randseedtype'
21138 ranlib='$ranlib'
21139 rd_nodata='$rd_nodata'
21140 readdir64_r_proto='$readdir64_r_proto'
21141 readdir_r_proto='$readdir_r_proto'
21142 revision='$revision'
21143 rm='$rm'
21144 rmail='$rmail'
21145 run='$run'
21146 runnm='$runnm'
21147 sPRIEUldbl='$sPRIEUldbl'
21148 sPRIFUldbl='$sPRIFUldbl'
21149 sPRIGUldbl='$sPRIGUldbl'
21150 sPRIXU64='$sPRIXU64'
21151 sPRId64='$sPRId64'
21152 sPRIeldbl='$sPRIeldbl'
21153 sPRIfldbl='$sPRIfldbl'
21154 sPRIgldbl='$sPRIgldbl'
21155 sPRIi64='$sPRIi64'
21156 sPRIo64='$sPRIo64'
21157 sPRIu64='$sPRIu64'
21158 sPRIx64='$sPRIx64'
21159 sSCNfldbl='$sSCNfldbl'
21160 sched_yield='$sched_yield'
21161 scriptdir='$scriptdir'
21162 scriptdirexp='$scriptdirexp'
21163 sed='$sed'
21164 seedfunc='$seedfunc'
21165 selectminbits='$selectminbits'
21166 selecttype='$selecttype'
21167 sendmail='$sendmail'
21168 setgrent_r_proto='$setgrent_r_proto'
21169 sethostent_r_proto='$sethostent_r_proto'
21170 setlocale_r_proto='$setlocale_r_proto'
21171 setnetent_r_proto='$setnetent_r_proto'
21172 setprotoent_r_proto='$setprotoent_r_proto'
21173 setpwent_r_proto='$setpwent_r_proto'
21174 setservent_r_proto='$setservent_r_proto'
21175 sh='$sh'
21176 shar='$shar'
21177 sharpbang='$sharpbang'
21178 shmattype='$shmattype'
21179 shortsize='$shortsize'
21180 shrpenv='$shrpenv'
21181 shsharp='$shsharp'
21182 sig_count='$sig_count'
21183 sig_name='$sig_name'
21184 sig_name_init='$sig_name_init'
21185 sig_num='$sig_num'
21186 sig_num_init='$sig_num_init'
21187 sig_size='$sig_size'
21188 signal_t='$signal_t'
21189 sitearch='$sitearch'
21190 sitearchexp='$sitearchexp'
21191 sitebin='$sitebin'
21192 sitebinexp='$sitebinexp'
21193 sitehtml1='$sitehtml1'
21194 sitehtml1exp='$sitehtml1exp'
21195 sitehtml3='$sitehtml3'
21196 sitehtml3exp='$sitehtml3exp'
21197 sitelib='$sitelib'
21198 sitelib_stem='$sitelib_stem'
21199 sitelibexp='$sitelibexp'
21200 siteman1='$siteman1'
21201 siteman1exp='$siteman1exp'
21202 siteman3='$siteman3'
21203 siteman3exp='$siteman3exp'
21204 siteprefix='$siteprefix'
21205 siteprefixexp='$siteprefixexp'
21206 sitescript='$sitescript'
21207 sitescriptexp='$sitescriptexp'
21208 sizesize='$sizesize'
21209 sizetype='$sizetype'
21210 sleep='$sleep'
21211 smail='$smail'
21212 so='$so'
21213 sockethdr='$sockethdr'
21214 socketlib='$socketlib'
21215 socksizetype='$socksizetype'
21216 sort='$sort'
21217 spackage='$spackage'
21218 spitshell='$spitshell'
21219 srand48_r_proto='$srand48_r_proto'
21220 srandom_r_proto='$srandom_r_proto'
21221 src='$src'
21222 ssizetype='$ssizetype'
21223 startperl='$startperl'
21224 startsh='$startsh'
21225 static_ext='$static_ext'
21226 stdchar='$stdchar'
21227 stdio_base='$stdio_base'
21228 stdio_bufsiz='$stdio_bufsiz'
21229 stdio_cnt='$stdio_cnt'
21230 stdio_filbuf='$stdio_filbuf'
21231 stdio_ptr='$stdio_ptr'
21232 stdio_stream_array='$stdio_stream_array'
21233 strerror_r_proto='$strerror_r_proto'
21234 strings='$strings'
21235 submit='$submit'
21236 subversion='$subversion'
21237 sysman='$sysman'
21238 tail='$tail'
21239 tar='$tar'
21240 targetarch='$targetarch'
21241 tbl='$tbl'
21242 tee='$tee'
21243 test='$test'
21244 timeincl='$timeincl'
21245 timetype='$timetype'
21246 tmpnam_r_proto='$tmpnam_r_proto'
21247 to='$to'
21248 touch='$touch'
21249 tr='$tr'
21250 trnl='$trnl'
21251 troff='$troff'
21252 ttyname_r_proto='$ttyname_r_proto'
21253 u16size='$u16size'
21254 u16type='$u16type'
21255 u32size='$u32size'
21256 u32type='$u32type'
21257 u64size='$u64size'
21258 u64type='$u64type'
21259 u8size='$u8size'
21260 u8type='$u8type'
21261 uidformat='$uidformat'
21262 uidsign='$uidsign'
21263 uidsize='$uidsize'
21264 uidtype='$uidtype'
21265 uname='$uname'
21266 uniq='$uniq'
21267 uquadtype='$uquadtype'
21268 use5005threads='$use5005threads'
21269 use64bitall='$use64bitall'
21270 use64bitint='$use64bitint'
21271 usecrosscompile='$usecrosscompile'
21272 usedl='$usedl'
21273 useithreads='$useithreads'
21274 uselargefiles='$uselargefiles'
21275 uselongdouble='$uselongdouble'
21276 usemorebits='$usemorebits'
21277 usemultiplicity='$usemultiplicity'
21278 usemymalloc='$usemymalloc'
21279 usenm='$usenm'
21280 useopcode='$useopcode'
21281 useperlio='$useperlio'
21282 useposix='$useposix'
21283 usereentrant='$usereentrant'
21284 usesfio='$usesfio'
21285 useshrplib='$useshrplib'
21286 usesocks='$usesocks'
21287 usethreads='$usethreads'
21288 usevendorprefix='$usevendorprefix'
21289 usevfork='$usevfork'
21290 usrinc='$usrinc'
21291 uuname='$uuname'
21292 uvXUformat='$uvXUformat'
21293 uvoformat='$uvoformat'
21294 uvsize='$uvsize'
21295 uvtype='$uvtype'
21296 uvuformat='$uvuformat'
21297 uvxformat='$uvxformat'
21298 vendorarch='$vendorarch'
21299 vendorarchexp='$vendorarchexp'
21300 vendorbin='$vendorbin'
21301 vendorbinexp='$vendorbinexp'
21302 vendorhtml1='$vendorhtml1'
21303 vendorhtml1exp='$vendorhtml1exp'
21304 vendorhtml3='$vendorhtml3'
21305 vendorhtml3exp='$vendorhtml3exp'
21306 vendorlib='$vendorlib'
21307 vendorlib_stem='$vendorlib_stem'
21308 vendorlibexp='$vendorlibexp'
21309 vendorman1='$vendorman1'
21310 vendorman1exp='$vendorman1exp'
21311 vendorman3='$vendorman3'
21312 vendorman3exp='$vendorman3exp'
21313 vendorprefix='$vendorprefix'
21314 vendorprefixexp='$vendorprefixexp'
21315 vendorscript='$vendorscript'
21316 vendorscriptexp='$vendorscriptexp'
21317 version='$version'
21318 version_patchlevel_string='$version_patchlevel_string'
21319 versiononly='$versiononly'
21320 vi='$vi'
21321 voidflags='$voidflags'
21322 xlibpth='$xlibpth'
21323 xs_apiversion='$xs_apiversion'
21324 yacc='$yacc'
21325 yaccflags='$yaccflags'
21326 zcat='$zcat'
21327 zip='$zip'
21328 EOT
21329
21330 : Add in command line options if available
21331 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21332
21333 : add special variables
21334 $test -f $src/patchlevel.h && \
21335 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21336 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21337 echo "PERL_CONFIG_SH=true" >>config.sh
21338
21339 : propagate old symbols
21340 if $test -f UU/config.sh; then
21341         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21342         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21343         $sort | $uniq -u >UU/oldsyms
21344         set X `cat UU/oldsyms`
21345         shift
21346         case $# in
21347         0) ;;
21348         *)
21349                 cat <<EOM
21350 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21351 EOM
21352                 echo "# Variables propagated from previous config.sh file." >>config.sh
21353                 for sym in `cat UU/oldsyms`; do
21354                         echo "    Propagating $hint variable "'$'"$sym..."
21355                         eval 'tmp="$'"${sym}"'"'
21356                         echo "$tmp" | \
21357                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21358                 done
21359                 ;;
21360         esac
21361 fi
21362
21363 : Finish up by extracting the .SH files
21364 case "$alldone" in
21365 exit)
21366         $rm -rf UU
21367         echo "Extraction done."
21368         exit 0
21369         ;;
21370 cont)
21371         ;;
21372 '')
21373         dflt=''
21374         nostick=true
21375         $cat <<EOM
21376
21377 If you'd like to make any changes to the config.sh file before I begin
21378 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21379
21380 EOM
21381         rp="Press return or use a shell escape to edit config.sh:"
21382         . UU/myread
21383         nostick=''
21384         case "$ans" in
21385         '') ;;
21386         *) : in case they cannot read
21387                 sh 1>&4 -c "$ans";;
21388         esac
21389         ;;
21390 esac
21391
21392 : if this fails, just run all the .SH files by hand
21393 . ./config.sh
21394
21395 echo " "
21396 exec 1>&4
21397 pwd=`pwd`
21398 . ./UU/extract
21399 cd "$pwd"
21400
21401 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21402         dflt=y
21403         case "$silent" in
21404         true) ;;
21405         *)
21406                 $cat <<EOM
21407
21408 Now you need to generate make dependencies by running "$make depend".
21409 You might prefer to run it in background: "$make depend > makedepend.out &"
21410 It can take a while, so you might not want to run it right now.
21411
21412 EOM
21413                 ;;
21414         esac
21415         rp="Run $make depend now?"
21416         . UU/myread
21417         case "$ans" in
21418         y*)
21419                 $make depend && echo "Now you must run '$make'."
21420                 ;;
21421         *)
21422                 echo "You must run '$make depend' then '$make'."
21423                 ;;
21424         esac
21425 elif test -f [Mm]akefile; then
21426         echo " "
21427         echo "Now you must run a $make."
21428 else
21429         echo "Configure done."
21430 fi
21431
21432 if $test -f Policy.sh; then
21433     $cat <<EOM
21434
21435 If you compile $package on a different machine or from a different object
21436 directory, copy the Policy.sh file from this object directory to the
21437 new one before you run Configure -- this will help you with most of
21438 the policy defaults.
21439
21440 EOM
21441 fi
21442 if $test -f config.msg; then
21443     echo "Hmm.  I also noted the following information while running:"
21444     echo " "
21445     $cat config.msg >&4
21446     $rm -f config.msg
21447 fi
21448 $rm -f kit*isdone ark*isdone
21449 $rm -rf UU
21450
21451 : End of Configure
21452