Nit disabling dtrace on VMS (2 single quotes inside double quotes
[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 package (which contains metaconfig) is available via SVN:
17 #     svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
18 #
19 #
20 # Though this script was generated by metaconfig, it is OK to send
21 # patches against it. It's up to the Configure pumpkin to backport
22 # the patch to the metaunits if it is accepted.
23 # See Porting/pumpkin.pod for more information on metaconfig.
24 #
25
26 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
27 #
28 # Generated on Wed Jan  9 22:02:14 CET 2008 [metaconfig 3.0 PL70]
29 # (with additional metaconfig patches by perlbug@perl.org)
30
31 cat >c1$$ <<EOF
32 ARGGGHHHH!!!!!
33
34 SCO csh still thinks true is false.  Write to SCO today and tell them that next
35 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
36
37 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
38 we'd have to do is go in and swap the && and || tokens, wherever they are.)
39
40 [End of diatribe. We now return you to your regularly scheduled programming...]
41 EOF
42 cat >c2$$ <<EOF
43
44 OOPS!  You naughty creature!  You didn't run Configure with sh!
45 I will attempt to remedy the situation by running sh for you...
46 EOF
47
48 true || cat c1$$ c2$$
49 true || exec sh $0 $argv:q
50
51 (exit $?0) || cat c2$$
52 (exit $?0) || exec sh $0 $argv:q
53 rm -f c1$$ c2$$
54
55 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
56         cat >&4 <<EOF
57 ***
58 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
59 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
60 *** Please read the README.plan9 for further instructions.
61 *** Cannot continue, aborting.
62 ***
63 EOF
64         exit 1
65 fi
66
67 if test ! -c /dev/null ; then
68         cat >&4 <<EOF
69 ***
70 *** I'm sorry, but /dev/null appears to be a file rather than a device.
71 *** Please consult your operating sytem's notes for making a device
72 *** in /dev.
73 *** Cannot continue, aborting.
74 ***
75 EOF
76         exit 1
77 fi
78
79 : compute my invocation name
80 me=$0
81 case "$0" in
82 */*)
83         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
84         test "$me" || me=$0
85         ;;
86 esac
87
88 : Proper separator for the PATH environment variable
89 p_=:
90 : On OS/2 this directory should exist if this is not floppy only system ":-]"
91 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
92         if test -n "$OS2_SHELL"; then
93                 p_=\;
94                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
95                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
96                 is_os2=yes
97         elif test -n "$DJGPP"; then
98                 case "X${MACHTYPE:-nonesuchmach}" in
99                 *cygwin) ;;
100                 *) p_=\; ;;
101                 esac
102         fi
103 fi
104
105 : Proper PATH setting
106 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
107 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
108 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
109 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
110 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
111 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
112 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
113 paths="$paths /sbin /usr/sbin /usr/libexec"
114 paths="$paths /system/gnu_library/bin"
115
116 for p in $paths
117 do
118         case "$p_$PATH$p_" in
119         *$p_$p$p_*) ;;
120         *) test -d $p && PATH=$PATH$p_$p ;;
121         esac
122 done
123
124 PATH=.$p_$PATH
125 export PATH
126
127 : shall we be using ksh?
128 inksh=''
129 needksh=''
130 avoidksh=''
131 newsh=/bin/ksh
132 changesh=''
133 if (PATH=.; alias -x) >/dev/null 2>&1; then
134                 inksh=true
135 fi
136 if test -f /hp-ux -a -f /bin/ksh; then
137         needksh='to avoid sh bug in "here document" expansion'
138 fi
139 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
140         if test X`/usr/bin/uname -v` = X4; then
141                 avoidksh="to avoid AIX 4's /bin/sh"
142                 newsh=/usr/bin/bsh
143         fi
144 fi
145 if test -f /osf_boot -a -f /usr/sbin/setld; then
146         if test X`/usr/bin/uname -s` = XOSF1; then
147                 avoidksh="to avoid Digital UNIX' ksh"
148                 newsh=/bin/sh
149                 unset BIN_SH
150         fi
151 fi
152 case "$inksh/$needksh" in
153 /[a-z]*)
154                 ENV=''
155                 changesh=true
156                 reason="$needksh"
157         ;;
158 esac
159 case "$inksh/$avoidksh" in
160 true/[a-z]*)
161         changesh=true
162         reason="$avoidksh"
163         ;;
164 esac
165 case "$inksh/$needksh-$avoidksh-" in
166 true/--)
167                 cat <<EOM
168 (I see you are using the Korn shell.  Some ksh's blow up on $me,
169 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
170 EOM
171         ;;
172 esac
173 case "$changesh" in
174 true)
175         export newsh
176         echo "(Feeding myself to $newsh $reason.)"
177         case "$0" in
178         Configure|*/Configure) exec $newsh $0 "$@";;
179         *) exec $newsh Configure "$@";;
180         esac
181         ;;
182 esac
183 test -x "${newsh}" || unset newsh
184
185 : if needed, set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
187 case "$CDPATH" in
188 '')     ;;
189 *)      case "$SHELL" in
190         *bash*) CDPATH='.' ;;
191         *) CDPATH='' ;;
192         esac
193         ;;
194 esac
195
196 : Configure runs within the UU subdirectory
197 test -d UU || mkdir UU
198 cd UU && rm -f ./*
199
200 ccname=''
201 ccversion=''
202 ccsymbols=''
203 cppccsymbols=''
204 cppsymbols=''
205 from=''
206 run=''
207 targetarch=''
208 to=''
209 usecrosscompile=''
210 mistrustnm=''
211 perllibs=''
212 dynamic_ext=''
213 extensions=''
214 known_extensions=''
215 nonxs_ext=''
216 static_ext=''
217 useopcode=''
218 useposix=''
219 extras=''
220 d_bsd=''
221 d_eunice=''
222 d_xenix=''
223 eunicefix=''
224 Mcc=''
225 ar=''
226 awk=''
227 bash=''
228 bison=''
229 byacc=''
230 cat=''
231 chgrp=''
232 chmod=''
233 chown=''
234 comm=''
235 compress=''
236 cp=''
237 cpio=''
238 cpp=''
239 csh=''
240 date=''
241 dtrace=''
242 echo=''
243 egrep=''
244 emacs=''
245 expr=''
246 find=''
247 flex=''
248 gmake=''
249 grep=''
250 gzip=''
251 inews=''
252 ksh=''
253 less=''
254 line=''
255 lint=''
256 ln=''
257 lp=''
258 lpr=''
259 ls=''
260 mail=''
261 mailx=''
262 make=''
263 mkdir=''
264 more=''
265 mv=''
266 nm=''
267 nroff=''
268 perl=''
269 pg=''
270 pmake=''
271 pr=''
272 rm=''
273 rmail=''
274 sed=''
275 sendmail=''
276 shar=''
277 sleep=''
278 smail=''
279 sort=''
280 submit=''
281 tail=''
282 tar=''
283 tbl=''
284 tee=''
285 test=''
286 touch=''
287 tr=''
288 troff=''
289 uname=''
290 uniq=''
291 uuname=''
292 vi=''
293 zcat=''
294 zip=''
295 full_ar=''
296 full_sed=''
297 libswanted=''
298 hint=''
299 myuname=''
300 osname=''
301 osvers=''
302 Author=''
303 Date=''
304 Header=''
305 Id=''
306 Locker=''
307 Log=''
308 RCSfile=''
309 Revision=''
310 Source=''
311 State=''
312 _a=''
313 _exe=''
314 _o=''
315 archobjs=''
316 exe_ext=''
317 firstmakefile=''
318 lib_ext=''
319 obj_ext=''
320 path_sep=''
321 rm_try=''
322 afs=''
323 afsroot=''
324 alignbytes=''
325 ansi2knr=''
326 archlib=''
327 archlibexp=''
328 d_archlib=''
329 installarchlib=''
330 archname=''
331 myarchname=''
332 d_atolf=''
333 d_atoll=''
334 baserev=''
335 bin=''
336 binexp=''
337 initialinstalllocation=''
338 installbin=''
339 userelocatableinc=''
340 byteorder=''
341 cc=''
342 ccflags=''
343 cppflags=''
344 ldflags=''
345 lkflags=''
346 locincpth=''
347 optimize=''
348 cf_email=''
349 cf_by=''
350 cf_time=''
351 contains=''
352 cpp_stuff=''
353 cpplast=''
354 cppminus=''
355 cpprun=''
356 cppstdin=''
357 d__fwalk=''
358 d_access=''
359 d_accessx=''
360 d_aintl=''
361 d_alarm=''
362 asctime_r_proto=''
363 d_asctime_r=''
364 d_attribute_format=''
365 d_attribute_malloc=''
366 d_attribute_nonnull=''
367 d_attribute_noreturn=''
368 d_attribute_pure=''
369 d_attribute_unused=''
370 d_attribute_warn_unused_result=''
371 d_printf_format_null=''
372 d_bcmp=''
373 d_bcopy=''
374 d_builtin_choose_expr=''
375 d_builtin_expect=''
376 d_bzero=''
377 d_c99_variadic_macros=''
378 d_casti32=''
379 castflags=''
380 d_castneg=''
381 d_chown=''
382 d_chroot=''
383 d_chsize=''
384 d_class=''
385 d_clearenv=''
386 d_closedir=''
387 d_void_closedir=''
388 d_cmsghdr_s=''
389 d_const=''
390 d_copysignl=''
391 d_cplusplus=''
392 cryptlib=''
393 d_crypt=''
394 crypt_r_proto=''
395 d_crypt_r=''
396 d_csh=''
397 full_csh=''
398 d_ctermid=''
399 ctermid_r_proto=''
400 d_ctermid_r=''
401 ctime_r_proto=''
402 d_ctime_r=''
403 d_cuserid=''
404 d_dbl_dig=''
405 d_dbminitproto=''
406 d_difftime=''
407 d_dir_dd_fd=''
408 d_dirfd=''
409 d_dlerror=''
410 d_dlopen=''
411 d_dlsymun=''
412 d_dosuid=''
413 d_suidsafe=''
414 d_drand48_r=''
415 drand48_r_proto=''
416 d_drand48proto=''
417 d_dup2=''
418 d_eaccess=''
419 d_endgrent=''
420 d_endgrent_r=''
421 endgrent_r_proto=''
422 d_endhent=''
423 d_endhostent_r=''
424 endhostent_r_proto=''
425 d_endnent=''
426 d_endnetent_r=''
427 endnetent_r_proto=''
428 d_endpent=''
429 d_endprotoent_r=''
430 endprotoent_r_proto=''
431 d_endpwent=''
432 d_endpwent_r=''
433 endpwent_r_proto=''
434 d_endsent=''
435 d_endservent_r=''
436 endservent_r_proto=''
437 d_faststdio=''
438 d_fchdir=''
439 d_fchmod=''
440 d_fchown=''
441 d_fcntl=''
442 d_fcntl_can_lock=''
443 d_fd_macros=''
444 d_fd_set=''
445 d_fds_bits=''
446 d_fgetpos=''
447 d_finite=''
448 d_finitel=''
449 d_flexfnam=''
450 d_flock=''
451 d_flockproto=''
452 d_fork=''
453 d_fp_class=''
454 d_fpclass=''
455 d_fpclassify=''
456 d_fpclassl=''
457 d_fpos64_t=''
458 d_frexpl=''
459 d_fs_data_s=''
460 d_fseeko=''
461 d_fsetpos=''
462 d_fstatfs=''
463 d_fsync=''
464 d_ftello=''
465 d_ftime=''
466 d_gettimeod=''
467 d_futimes=''
468 d_Gconvert=''
469 d_getcwd=''
470 d_getespwnam=''
471 d_getfsstat=''
472 d_getgrent=''
473 d_getgrent_r=''
474 getgrent_r_proto=''
475 d_getgrgid_r=''
476 getgrgid_r_proto=''
477 d_getgrnam_r=''
478 getgrnam_r_proto=''
479 d_getgrps=''
480 d_gethbyaddr=''
481 d_gethbyname=''
482 d_gethent=''
483 aphostname=''
484 d_gethname=''
485 d_phostname=''
486 d_uname=''
487 d_gethostbyaddr_r=''
488 gethostbyaddr_r_proto=''
489 d_gethostbyname_r=''
490 gethostbyname_r_proto=''
491 d_gethostent_r=''
492 gethostent_r_proto=''
493 d_gethostprotos=''
494 d_getitimer=''
495 d_getlogin=''
496 d_getlogin_r=''
497 getlogin_r_proto=''
498 d_getmnt=''
499 d_getmntent=''
500 d_getnbyaddr=''
501 d_getnbyname=''
502 d_getnent=''
503 d_getnetbyaddr_r=''
504 getnetbyaddr_r_proto=''
505 d_getnetbyname_r=''
506 getnetbyname_r_proto=''
507 d_getnetent_r=''
508 getnetent_r_proto=''
509 d_getnetprotos=''
510 d_getpagsz=''
511 d_getpent=''
512 d_getpgid=''
513 d_getpgrp2=''
514 d_bsdgetpgrp=''
515 d_getpgrp=''
516 d_getppid=''
517 d_getprior=''
518 d_getpbyname=''
519 d_getpbynumber=''
520 d_getprotobyname_r=''
521 getprotobyname_r_proto=''
522 d_getprotobynumber_r=''
523 getprotobynumber_r_proto=''
524 d_getprotoent_r=''
525 getprotoent_r_proto=''
526 d_getprotoprotos=''
527 d_getprpwnam=''
528 d_getpwent=''
529 d_getpwent_r=''
530 getpwent_r_proto=''
531 d_getpwnam_r=''
532 getpwnam_r_proto=''
533 d_getpwuid_r=''
534 getpwuid_r_proto=''
535 d_getsent=''
536 d_getservbyname_r=''
537 getservbyname_r_proto=''
538 d_getservbyport_r=''
539 getservbyport_r_proto=''
540 d_getservent_r=''
541 getservent_r_proto=''
542 d_getservprotos=''
543 d_getspnam=''
544 d_getspnam_r=''
545 getspnam_r_proto=''
546 d_getsbyname=''
547 d_getsbyport=''
548 d_gmtime_r=''
549 gmtime_r_proto=''
550 d_gnulibc=''
551 gnulibc_version=''
552 d_hasmntopt=''
553 d_htonl=''
554 d_ilogbl=''
555 d_inetaton=''
556 d_int64_t=''
557 d_isascii=''
558 d_isfinite=''
559 d_isinf=''
560 d_isnan=''
561 d_isnanl=''
562 d_killpg=''
563 d_lchown=''
564 d_ldbl_dig=''
565 d_libm_lib_version=''
566 d_link=''
567 d_localtime_r=''
568 d_localtime_r_needs_tzset=''
569 localtime_r_proto=''
570 d_locconv=''
571 d_lockf=''
572 d_longdbl=''
573 longdblsize=''
574 d_longlong=''
575 longlongsize=''
576 d_lseekproto=''
577 d_lstat=''
578 d_madvise=''
579 d_malloc_good_size=''
580 d_malloc_size=''
581 d_mblen=''
582 d_mbstowcs=''
583 d_mbtowc=''
584 d_memchr=''
585 d_memcmp=''
586 d_memcpy=''
587 d_memmove=''
588 d_memset=''
589 d_mkdir=''
590 d_mkdtemp=''
591 d_mkfifo=''
592 d_mkstemp=''
593 d_mkstemps=''
594 d_mktime=''
595 d_mmap=''
596 mmaptype=''
597 d_modfl=''
598 d_modfl_pow32_bug=''
599 d_modflproto=''
600 d_mprotect=''
601 d_msg=''
602 d_msgctl=''
603 d_msgget=''
604 d_msghdr_s=''
605 d_msgrcv=''
606 d_msgsnd=''
607 d_msync=''
608 d_munmap=''
609 d_nice=''
610 d_nl_langinfo=''
611 d_off64_t=''
612 d_open3=''
613 d_fpathconf=''
614 d_pathconf=''
615 d_pause=''
616 d_pipe=''
617 d_poll=''
618 d_portable=''
619 d_procselfexe=''
620 procselfexe=''
621 d_old_pthread_create_joinable=''
622 old_pthread_create_joinable=''
623 d_pthread_atfork=''
624 d_pthread_attr_setscope=''
625 d_pthread_yield=''
626 d_sched_yield=''
627 sched_yield=''
628 d_qgcvt=''
629 d_random_r=''
630 random_r_proto=''
631 d_readdir64_r=''
632 readdir64_r_proto=''
633 d_readdir=''
634 d_rewinddir=''
635 d_seekdir=''
636 d_telldir=''
637 d_readdir_r=''
638 readdir_r_proto=''
639 d_readlink=''
640 d_readv=''
641 d_recvmsg=''
642 d_rename=''
643 d_rmdir=''
644 d_safebcpy=''
645 d_safemcpy=''
646 d_sanemcmp=''
647 d_sbrkproto=''
648 d_scalbnl=''
649 d_select=''
650 d_sem=''
651 d_semctl=''
652 d_semget=''
653 d_semop=''
654 d_sendmsg=''
655 d_setegid=''
656 d_seteuid=''
657 d_setgrent=''
658 d_setgrent_r=''
659 setgrent_r_proto=''
660 d_setgrps=''
661 d_sethent=''
662 d_sethostent_r=''
663 sethostent_r_proto=''
664 d_setitimer=''
665 d_setlinebuf=''
666 d_setlocale=''
667 d_setlocale_r=''
668 setlocale_r_proto=''
669 d_setnent=''
670 d_setnetent_r=''
671 setnetent_r_proto=''
672 d_setpent=''
673 d_setpgid=''
674 d_setpgrp2=''
675 d_bsdsetpgrp=''
676 d_setpgrp=''
677 d_setprior=''
678 d_setproctitle=''
679 d_setprotoent_r=''
680 setprotoent_r_proto=''
681 d_setpwent=''
682 d_setpwent_r=''
683 setpwent_r_proto=''
684 d_setregid=''
685 d_setresgid=''
686 d_setresuid=''
687 d_setreuid=''
688 d_setrgid=''
689 d_setruid=''
690 d_setsent=''
691 d_setservent_r=''
692 setservent_r_proto=''
693 d_setsid=''
694 d_setvbuf=''
695 d_sfio=''
696 usesfio=''
697 d_shm=''
698 d_shmat=''
699 d_shmatprototype=''
700 shmattype=''
701 d_shmctl=''
702 d_shmdt=''
703 d_shmget=''
704 d_sigaction=''
705 d_signbit=''
706 d_sigprocmask=''
707 d_sigsetjmp=''
708 usesitecustomize=''
709 d_snprintf=''
710 d_vsnprintf=''
711 d_sockatmark=''
712 d_sockatmarkproto=''
713 d_msg_ctrunc=''
714 d_msg_dontroute=''
715 d_msg_oob=''
716 d_msg_peek=''
717 d_msg_proxy=''
718 d_oldsock=''
719 d_scm_rights=''
720 d_socket=''
721 d_sockpair=''
722 sockethdr=''
723 socketlib=''
724 d_socklen_t=''
725 d_socks5_init=''
726 d_sprintf_returns_strlen=''
727 d_sqrtl=''
728 d_srand48_r=''
729 srand48_r_proto=''
730 d_srandom_r=''
731 srandom_r_proto=''
732 d_sresgproto=''
733 d_sresuproto=''
734 d_statblks=''
735 d_statfs_f_flags=''
736 d_statfs_s=''
737 d_fstatvfs=''
738 d_statvfs=''
739 d_stdio_cnt_lval=''
740 d_stdio_ptr_lval=''
741 d_stdio_ptr_lval_nochange_cnt=''
742 d_stdio_ptr_lval_sets_cnt=''
743 d_stdiobase=''
744 d_stdstdio=''
745 stdio_base=''
746 stdio_bufsiz=''
747 stdio_cnt=''
748 stdio_filbuf=''
749 stdio_ptr=''
750 d_index=''
751 d_strchr=''
752 d_strcoll=''
753 d_strctcpy=''
754 d_strerrm=''
755 d_strerror=''
756 d_sysernlst=''
757 d_syserrlst=''
758 d_strerror_r=''
759 strerror_r_proto=''
760 d_strftime=''
761 d_strlcat=''
762 d_strlcpy=''
763 d_strtod=''
764 d_strtol=''
765 d_strtold=''
766 d_strtoll=''
767 d_strtoq=''
768 d_strtoul=''
769 d_strtoull=''
770 d_strtouq=''
771 d_strxfrm=''
772 d_symlink=''
773 d_syscall=''
774 d_syscallproto=''
775 d_sysconf=''
776 d_system=''
777 d_tcgetpgrp=''
778 d_tcsetpgrp=''
779 d_telldirproto=''
780 d_time=''
781 timetype=''
782 clocktype=''
783 d_times=''
784 d_tmpnam_r=''
785 tmpnam_r_proto=''
786 d_truncate=''
787 d_ttyname_r=''
788 ttyname_r_proto=''
789 d_tzname=''
790 d_u32align=''
791 d_ualarm=''
792 d_umask=''
793 d_semctl_semid_ds=''
794 d_semctl_semun=''
795 d_union_semun=''
796 d_unordered=''
797 d_unsetenv=''
798 d_usleep=''
799 d_usleepproto=''
800 d_ustat=''
801 d_pseudofork=''
802 d_vfork=''
803 usevfork=''
804 d_voidsig=''
805 signal_t=''
806 d_volatile=''
807 d_charvspr=''
808 d_vprintf=''
809 d_wait4=''
810 d_waitpid=''
811 d_wcstombs=''
812 d_wctomb=''
813 d_writev=''
814 dlext=''
815 cccdlflags=''
816 ccdlflags=''
817 dlsrc=''
818 ld=''
819 lddlflags=''
820 usedl=''
821 doublesize=''
822 ebcdic=''
823 fflushNULL=''
824 fflushall=''
825 fpossize=''
826 fpostype=''
827 gccansipedantic=''
828 gccosandvers=''
829 gccversion=''
830 gidformat=''
831 gidsign=''
832 gidsize=''
833 gidtype=''
834 groupstype=''
835 h_fcntl=''
836 h_sysfile=''
837 html1dir=''
838 html1direxp=''
839 installhtml1dir=''
840 html3dir=''
841 html3direxp=''
842 installhtml3dir=''
843 i_arpainet=''
844 i_assert=''
845 i_crypt=''
846 db_hashtype=''
847 db_prefixtype=''
848 db_version_major=''
849 db_version_minor=''
850 db_version_patch=''
851 i_db=''
852 i_dbm=''
853 i_rpcsvcdbm=''
854 d_dirnamlen=''
855 direntrytype=''
856 i_dirent=''
857 i_dld=''
858 i_dlfcn=''
859 i_fcntl=''
860 i_float=''
861 i_fp=''
862 i_fp_class=''
863 i_gdbm=''
864 d_grpasswd=''
865 i_grp=''
866 i_ieeefp=''
867 i_inttypes=''
868 i_langinfo=''
869 i_libutil=''
870 i_limits=''
871 i_locale=''
872 i_machcthr=''
873 i_malloc=''
874 i_math=''
875 i_memory=''
876 i_mntent=''
877 i_ndbm=''
878 i_netdb=''
879 i_neterrno=''
880 i_netinettcp=''
881 i_niin=''
882 i_sysin=''
883 i_poll=''
884 i_prot=''
885 i_pthread=''
886 d_pwage=''
887 d_pwchange=''
888 d_pwclass=''
889 d_pwcomment=''
890 d_pwexpire=''
891 d_pwgecos=''
892 d_pwpasswd=''
893 d_pwquota=''
894 i_pwd=''
895 i_sfio=''
896 i_shadow=''
897 i_socks=''
898 i_stddef=''
899 i_stdlib=''
900 i_string=''
901 strings=''
902 i_sunmath=''
903 i_sysaccess=''
904 i_sysdir=''
905 i_sysfile=''
906 d_voidtty=''
907 i_bsdioctl=''
908 i_sysfilio=''
909 i_sysioctl=''
910 i_syssockio=''
911 i_syslog=''
912 i_sysmman=''
913 i_sysmode=''
914 i_sysmount=''
915 i_sysndir=''
916 i_sysparam=''
917 i_sysresrc=''
918 i_syssecrt=''
919 i_sysselct=''
920 i_sysstat=''
921 i_sysstatfs=''
922 i_sysstatvfs=''
923 i_systimes=''
924 i_systypes=''
925 i_sysuio=''
926 i_sysun=''
927 i_sysutsname=''
928 i_sysvfs=''
929 i_syswait=''
930 i_sgtty=''
931 i_termio=''
932 i_termios=''
933 d_tm_tm_gmtoff=''
934 d_tm_tm_zone=''
935 i_systime=''
936 i_systimek=''
937 i_time=''
938 timeincl=''
939 i_unistd=''
940 i_ustat=''
941 i_utime=''
942 i_values=''
943 i_stdarg=''
944 i_varargs=''
945 i_varhdr=''
946 i_vfork=''
947 d_inc_version_list=''
948 inc_version_list=''
949 inc_version_list_init=''
950 installprefix=''
951 installprefixexp=''
952 installstyle=''
953 installusrbinperl=''
954 intsize=''
955 longsize=''
956 shortsize=''
957 issymlink=''
958 libc=''
959 ldlibpthname=''
960 libperl=''
961 shrpenv=''
962 useshrplib=''
963 glibpth=''
964 libpth=''
965 loclibpth=''
966 plibpth=''
967 xlibpth=''
968 ignore_versioned_solibs=''
969 libs=''
970 libsdirs=''
971 libsfiles=''
972 libsfound=''
973 libspath=''
974 lns=''
975 d_PRIEUldbl=''
976 d_PRIFUldbl=''
977 d_PRIGUldbl=''
978 d_PRIeldbl=''
979 d_PRIfldbl=''
980 d_PRIgldbl=''
981 d_SCNfldbl=''
982 sPRIEUldbl=''
983 sPRIFUldbl=''
984 sPRIGUldbl=''
985 sPRIeldbl=''
986 sPRIfldbl=''
987 sPRIgldbl=''
988 sSCNfldbl=''
989 lseeksize=''
990 lseektype=''
991 mad=''
992 madlyh=''
993 madlyobj=''
994 madlysrc=''
995 make_set_make=''
996 d_mymalloc=''
997 freetype=''
998 mallocobj=''
999 mallocsrc=''
1000 malloctype=''
1001 usemallocwrap=''
1002 usemymalloc=''
1003 installman1dir=''
1004 man1dir=''
1005 man1direxp=''
1006 man1ext=''
1007 installman3dir=''
1008 man3dir=''
1009 man3direxp=''
1010 man3ext=''
1011 modetype=''
1012 multiarch=''
1013 mydomain=''
1014 myhostname=''
1015 phostname=''
1016 c=''
1017 n=''
1018 d_eofnblk=''
1019 eagain=''
1020 o_nonblock=''
1021 rd_nodata=''
1022 need_va_copy=''
1023 netdb_hlen_type=''
1024 netdb_host_type=''
1025 netdb_name_type=''
1026 netdb_net_type=''
1027 groupcat=''
1028 hostcat=''
1029 passcat=''
1030 orderlib=''
1031 ranlib=''
1032 d_perl_otherlibdirs=''
1033 otherlibdirs=''
1034 package=''
1035 spackage=''
1036 pager=''
1037 api_revision=''
1038 api_subversion=''
1039 api_version=''
1040 api_versionstring=''
1041 patchlevel=''
1042 perl_patchlevel=''
1043 revision=''
1044 subversion=''
1045 version=''
1046 version_patchlevel_string=''
1047 perl5=''
1048 perladmin=''
1049 perlpath=''
1050 d_nv_preserves_uv=''
1051 d_nv_zero_is_allbits_zero=''
1052 i16size=''
1053 i16type=''
1054 i32size=''
1055 i32type=''
1056 i64size=''
1057 i64type=''
1058 i8size=''
1059 i8type=''
1060 ivsize=''
1061 ivtype=''
1062 nv_preserves_uv_bits=''
1063 nvsize=''
1064 nvtype=''
1065 u16size=''
1066 u16type=''
1067 u32size=''
1068 u32type=''
1069 u64size=''
1070 u64type=''
1071 u8size=''
1072 u8type=''
1073 uvsize=''
1074 uvtype=''
1075 ivdformat=''
1076 nvEUformat=''
1077 nvFUformat=''
1078 nvGUformat=''
1079 nveformat=''
1080 nvfformat=''
1081 nvgformat=''
1082 uvXUformat=''
1083 uvoformat=''
1084 uvuformat=''
1085 uvxformat=''
1086 pidtype=''
1087 prefix=''
1088 prefixexp=''
1089 installprivlib=''
1090 privlib=''
1091 privlibexp=''
1092 prototype=''
1093 ptrsize=''
1094 d_PRIXU64=''
1095 d_PRId64=''
1096 d_PRIi64=''
1097 d_PRIo64=''
1098 d_PRIu64=''
1099 d_PRIx64=''
1100 sPRIXU64=''
1101 sPRId64=''
1102 sPRIi64=''
1103 sPRIo64=''
1104 sPRIu64=''
1105 sPRIx64=''
1106 d_quad=''
1107 quadkind=''
1108 quadtype=''
1109 uquadtype=''
1110 drand01=''
1111 randbits=''
1112 randfunc=''
1113 randseedtype=''
1114 seedfunc=''
1115 installscript=''
1116 scriptdir=''
1117 scriptdirexp=''
1118 selectminbits=''
1119 selecttype=''
1120 sh=''
1121 sig_count=''
1122 sig_name=''
1123 sig_name_init=''
1124 sig_num=''
1125 sig_num_init=''
1126 sig_size=''
1127 d_sitearch=''
1128 installsitearch=''
1129 sitearch=''
1130 sitearchexp=''
1131 installsitebin=''
1132 sitebin=''
1133 sitebinexp=''
1134 installsitehtml1dir=''
1135 sitehtml1dir=''
1136 sitehtml1direxp=''
1137 installsitehtml3dir=''
1138 sitehtml3dir=''
1139 sitehtml3direxp=''
1140 installsitelib=''
1141 sitelib=''
1142 sitelib_stem=''
1143 sitelibexp=''
1144 installsiteman1dir=''
1145 siteman1dir=''
1146 siteman1direxp=''
1147 installsiteman3dir=''
1148 siteman3dir=''
1149 siteman3direxp=''
1150 siteprefix=''
1151 siteprefixexp=''
1152 installsitescript=''
1153 sitescript=''
1154 sitescriptexp=''
1155 sizesize=''
1156 sizetype=''
1157 so=''
1158 socksizetype=''
1159 sharpbang=''
1160 shsharp=''
1161 spitshell=''
1162 src=''
1163 ssizetype=''
1164 startperl=''
1165 startsh=''
1166 stdchar=''
1167 d_stdio_stream_array=''
1168 stdio_stream_array=''
1169 sysman=''
1170 trnl=''
1171 uidformat=''
1172 uidsign=''
1173 uidsize=''
1174 uidtype=''
1175 archname64=''
1176 use64bitall=''
1177 use64bitint=''
1178 usefaststdio=''
1179 ccflags_uselargefiles=''
1180 ldflags_uselargefiles=''
1181 libswanted_uselargefiles=''
1182 uselargefiles=''
1183 uselongdouble=''
1184 usemorebits=''
1185 usemultiplicity=''
1186 nm_opt=''
1187 nm_so_opt=''
1188 runnm=''
1189 usenm=''
1190 useperlio=''
1191 usesocks=''
1192 d_oldpthreads=''
1193 use5005threads=''
1194 useithreads=''
1195 usereentrant=''
1196 usethreads=''
1197 usedtrace=''
1198 incpath=''
1199 mips_type=''
1200 usrinc=''
1201 d_vendorarch=''
1202 installvendorarch=''
1203 vendorarch=''
1204 vendorarchexp=''
1205 d_vendorbin=''
1206 installvendorbin=''
1207 vendorbin=''
1208 vendorbinexp=''
1209 installvendorhtml1dir=''
1210 vendorhtml1dir=''
1211 vendorhtml1direxp=''
1212 installvendorhtml3dir=''
1213 vendorhtml3dir=''
1214 vendorhtml3direxp=''
1215 d_vendorlib=''
1216 installvendorlib=''
1217 vendorlib=''
1218 vendorlib_stem=''
1219 vendorlibexp=''
1220 installvendorman1dir=''
1221 vendorman1dir=''
1222 vendorman1direxp=''
1223 installvendorman3dir=''
1224 vendorman3dir=''
1225 vendorman3direxp=''
1226 usevendorprefix=''
1227 vendorprefix=''
1228 vendorprefixexp=''
1229 d_vendorscript=''
1230 installvendorscript=''
1231 vendorscript=''
1232 vendorscriptexp=''
1233 versiononly=''
1234 defvoidused=''
1235 voidflags=''
1236 yacc=''
1237 yaccflags=''
1238 CONFIG=''
1239
1240 define='define'
1241 undef='undef'
1242 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1243 rmlist=''
1244
1245 : We must find out about Eunice early
1246 eunicefix=':'
1247 if test -f /etc/unixtovms; then
1248         eunicefix=/etc/unixtovms
1249 fi
1250 if test -f /etc/unixtovms.exe; then
1251         eunicefix=/etc/unixtovms.exe
1252 fi
1253
1254 : Set executable suffix now -- needed before hints available
1255 if test -f "/libs/version.library"; then
1256 : Amiga OS
1257     _exe=""
1258 elif test -f "/system/gnu_library/bin/ar.pm"; then
1259 : Stratus VOS
1260     _exe=".pm"
1261 elif test -n "$DJGPP"; then
1262 : DOS DJGPP
1263     _exe=".exe"
1264 elif test -d c:/. -o -n "$is_os2" ; then
1265 : OS/2 or cygwin
1266     _exe=".exe"
1267 fi
1268
1269 i_whoami=''
1270 : Trailing extension.  Override this in a hint file, if needed.
1271 : Extra object files, if any, needed on this platform.
1272 archobjs=''
1273 archname=''
1274 groupstype=''
1275 libnames=''
1276 : change the next line if compiling for Xenix/286 on Xenix/386
1277 xlibpth='/usr/lib/386 /lib/386'
1278 : Possible local library directories to search.
1279 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1280 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1281
1282 : general looking path for locating libraries
1283 glibpth="/lib /usr/lib $xlibpth"
1284 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1285 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1286 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1287 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1288
1289 : Private path used by Configure to find libraries.  Its value
1290 : is prepended to libpth. This variable takes care of special
1291 : machines, like the mips.  Usually, it should be empty.
1292 plibpth=''
1293
1294 : default library list
1295 libswanted=''
1296 : some systems want to use only the non-versioned libso:s
1297 ignore_versioned_solibs=''
1298 siteman1dir=''
1299 siteman3dir=''
1300 sitescript=''
1301 : set usethreads on the Configure command line to enable threads.
1302 usereentrant='undef'
1303 : full support for void wanted by default
1304 defvoidused=15
1305
1306 : Possible local include directories to search.
1307 : Set locincpth to "" in a hint file to defeat local include searches.
1308 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1309 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1310 :
1311 : no include file wanted by default
1312 inclwanted=''
1313
1314 : Enable -DEBUGGING and -DDEBUGGING from the command line
1315 EBUGGING=''
1316 DEBUGGING=old
1317
1318 ccname=''
1319 ccversion=''
1320 perllibs=''
1321 : set useposix=false in your hint file to disable the POSIX extension.
1322 useposix=true
1323 : set useopcode=false in your hint file to disable the Opcode extension.
1324 useopcode=true
1325 archname64=''
1326 ccflags_uselargefiles=''
1327 ldflags_uselargefiles=''
1328 libswanted_uselargefiles=''
1329 : set usemultiplicity on the Configure command line to enable multiplicity.
1330 : set usesocks on the Configure command line to enable socks.
1331 : List of libraries we want.
1332 : If anyone needs extra -lxxx, put those in a hint file.
1333 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1334 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1335 : We probably want to search /usr/shlib before most other libraries.
1336 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1337 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1338 glibpth="/usr/shlib $glibpth"
1339 : Do not use vfork unless overridden by a hint file.
1340 usevfork=false
1341
1342 : Find the basic shell for Bourne shell scripts
1343 case "$sh" in
1344 '')
1345         case "$SYSTYPE" in
1346         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1347         *) xxx='/bin/sh';;
1348         esac
1349         if test -f "$xxx"; then
1350                 sh="$xxx"
1351         else
1352                 : Build up a list and do a single loop so we can 'break' out.
1353                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1354                 for xxx in sh bash ksh pdksh ash; do
1355                         for p in $pth; do
1356                                 try="$try ${p}/${xxx}"
1357                         done
1358                 done
1359                 for xxx in $try; do
1360                         if test -f "$xxx"; then
1361                                 sh="$xxx";
1362                                 break
1363                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1364                                 sh="$xxx";
1365                                 break
1366                         elif test -f "$xxx.exe"; then
1367                                 sh="$xxx";
1368                                 break
1369                         fi
1370                 done
1371         fi
1372         ;;
1373 esac
1374
1375 case "$sh" in
1376 '')     cat >&2 <<EOM
1377 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1378
1379 Usually it's in /bin/sh.  How did you even get this far?
1380 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1381 we'll try to straighten this all out.
1382 EOM
1383         exit 1
1384         ;;
1385 esac
1386
1387 : see if sh knows # comments
1388 if `$sh -c '#' >/dev/null 2>&1`; then
1389         shsharp=true
1390         spitshell=cat
1391         xcat=/bin/cat
1392         test -f $xcat$_exe || xcat=/usr/bin/cat
1393         if test ! -f $xcat$_exe; then
1394                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1395                         if test -f $p/cat$_exe; then
1396                                 xcat=$p/cat
1397                                 break
1398                         fi
1399                 done
1400                 if test ! -f $xcat$_exe; then
1401                         echo "Can't find cat anywhere!"
1402                         exit 1
1403                 fi
1404         fi
1405         echo "#!$xcat" >sharp
1406         $eunicefix sharp
1407         chmod +x sharp
1408         ./sharp > today
1409         if test -s today; then
1410                 sharpbang='#!'
1411         else
1412                 echo "#! $xcat" > sharp
1413                 $eunicefix sharp
1414                 chmod +x sharp
1415                 ./sharp > today
1416                 if test -s today; then
1417                         sharpbang='#! '
1418                 else
1419                         sharpbang=': use '
1420                 fi
1421         fi
1422 else
1423         echo " "
1424         echo "Your $sh doesn't grok # comments--I will strip them later on."
1425         shsharp=false
1426         cd ..
1427         echo "exec grep -v '^[  ]*#'" >spitshell
1428         chmod +x spitshell
1429         $eunicefix spitshell
1430         spitshell=`pwd`/spitshell
1431         cd UU
1432         echo "I presume that if # doesn't work, #! won't work either!"
1433         sharpbang=': use '
1434 fi
1435 rm -f sharp today
1436
1437 : figure out how to guarantee sh startup
1438 case "$startsh" in
1439 '') startsh=${sharpbang}${sh} ;;
1440 *)
1441 esac
1442 cat >sharp <<EOSS
1443 $startsh
1444 set abc
1445 test "$?abc" != 1
1446 EOSS
1447
1448 chmod +x sharp
1449 $eunicefix sharp
1450 if ./sharp; then
1451         : echo "Yup, it does."
1452 else
1453         echo "Hmm... '$startsh' does not guarantee sh startup..."
1454         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1455 fi
1456 rm -f sharp
1457
1458 : Save command line options in file UU/cmdline.opt for later use in
1459 : generating config.sh.
1460 cat > cmdline.opt <<EOSH
1461 : Configure command line arguments.
1462 config_arg0='$0'
1463 config_args='$*'
1464 config_argc=$#
1465 EOSH
1466 argn=1
1467 args_exp=''
1468 args_sep=''
1469 for arg in "$@"; do
1470         cat >>cmdline.opt <<EOSH
1471 config_arg$argn='$arg'
1472 EOSH
1473         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1474 $arg
1475 EOC
1476         arg_exp=`cat cmdl.opt`
1477         args_exp="$args_exp$args_sep'$arg_exp'"
1478         argn=`expr $argn + 1`
1479         args_sep=' '
1480 done
1481 rm -f cmdl.opt
1482
1483 : produce awk script to parse command line options
1484 cat >options.awk <<'EOF'
1485 BEGIN {
1486         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1487
1488         len = length(optstr);
1489         for (i = 1; i <= len; i++) {
1490                 c = substr(optstr, i, 1);
1491                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1492                 if (a == ":") {
1493                         arg[c] = 1;
1494                         i++;
1495                 }
1496                 opt[c] = 1;
1497         }
1498 }
1499 {
1500         expect = 0;
1501         str = $0;
1502         if (substr(str, 1, 1) != "-") {
1503                 printf("'%s'\n", str);
1504                 next;
1505         }
1506         len = length($0);
1507         for (i = 2; i <= len; i++) {
1508                 c = substr(str, i, 1);
1509                 if (!opt[c]) {
1510                         printf("-%s\n", substr(str, i));
1511                         next;
1512                 }
1513                 printf("-%s\n", c);
1514                 if (arg[c]) {
1515                         if (i < len)
1516                                 printf("'%s'\n", substr(str, i + 1));
1517                         else
1518                                 expect = 1;
1519                         next;
1520                 }
1521         }
1522 }
1523 END {
1524         if (expect)
1525                 print "?";
1526 }
1527 EOF
1528
1529 : process the command line options
1530 set X `for arg in "$@"; do echo "X$arg"; done |
1531         sed -e s/X// | awk -f options.awk`
1532 eval "set $*"
1533 shift
1534 rm -f options.awk
1535
1536 : set up default values
1537 fastread=''
1538 reuseval=false
1539 config_sh=''
1540 alldone=''
1541 error=''
1542 silent=''
1543 extractsh=''
1544 override=''
1545 knowitall=''
1546 rm -f optdef.sh posthint.sh
1547 cat >optdef.sh <<EOS
1548 $startsh
1549 EOS
1550
1551
1552 : option parsing
1553 while test $# -gt 0; do
1554         case "$1" in
1555         -d) shift; fastread=yes;;
1556         -e) shift; alldone=cont;;
1557         -f)
1558                 shift
1559                 cd ..
1560                 if test -r "$1"; then
1561                         config_sh="$1"
1562                 else
1563                         echo "$me: cannot read config file $1." >&2
1564                         error=true
1565                 fi
1566                 cd UU
1567                 shift;;
1568         --help|\
1569         -h) shift; error=true;;
1570         -r) shift; reuseval=true;;
1571         -s) shift; silent=true; realsilent=true;;
1572         -E) shift; alldone=exit;;
1573         -K) shift; knowitall=true;;
1574         -O) shift; override=true;;
1575         -S) shift; silent=true; extractsh=true;;
1576         -D)
1577                 shift
1578                 case "$1" in
1579                 *=)
1580                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1581                         echo "$me: ignoring -D $1" >&2
1582                         ;;
1583                 *=*) echo "$1" | \
1584                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1585                 *) echo "$1='define'" >> optdef.sh;;
1586                 esac
1587                 shift
1588                 ;;
1589         -U)
1590                 shift
1591                 case "$1" in
1592                 *=) echo "$1" >> optdef.sh;;
1593                 *=*)
1594                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1595                         echo "$me: ignoring -U $1" >&2
1596                         ;;
1597                 *) echo "$1='undef'" >> optdef.sh;;
1598                 esac
1599                 shift
1600                 ;;
1601         -A)
1602             shift
1603             xxx=''
1604             yyy="$1"
1605             zzz=''
1606             uuu=undef
1607             case "$yyy" in
1608             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1609                  case "$zzz" in
1610                  *:*) zzz='' ;;
1611                  *)   xxx=append
1612                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1613                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1614                  esac
1615                  ;;
1616             esac
1617             case "$xxx" in
1618             '')  case "$yyy" in
1619                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1620                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1621                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1622                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1623                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1624                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1625                  esac
1626                  ;;
1627             esac
1628             case "$xxx" in
1629             append)
1630                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1631             clear)
1632                 echo "$yyy=''"                  >> posthint.sh ;;
1633             define)
1634                 case "$zzz" in
1635                 '') zzz=define ;;
1636                 esac
1637                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1638             eval)
1639                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1640             prepend)
1641                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1642             undef)
1643                 case "$zzz" in
1644                 '') zzz="$uuu" ;;
1645                 esac
1646                 echo "$yyy=$zzz"                >> posthint.sh ;;
1647             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1648             esac
1649             shift
1650             ;;
1651         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1652             exit 0;;
1653         --) break;;
1654         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1655         *) break;;
1656         esac
1657 done
1658
1659 case "$error" in
1660 true)
1661         cat >&2 <<EOM
1662 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1663                  [-U symbol] [-U symbol=] [-A command:symbol...]
1664   -d : use defaults for all answers.
1665   -e : go on without questioning past the production of config.sh.
1666   -f : specify an alternate default configuration file.
1667   -h : print this help message and exit (with an error status).
1668   -r : reuse C symbols value if possible (skips costly nm extraction).
1669   -s : silent mode, only echoes questions and essential information.
1670   -D : define symbol to have some value:
1671          -D symbol         symbol gets the value 'define'
1672          -D symbol=value   symbol gets the value 'value'
1673        common used examples (see INSTALL for more info):
1674          -Duse64bitint            use 64bit integers
1675          -Duse64bitall            use 64bit integers and pointers
1676          -Dusethreads             use thread support
1677          -Dinc_version_list=none  do not include older perl trees in @INC
1678          -DEBUGGING=none          DEBUGGING options
1679          -Dcc=gcc                 choose your compiler
1680          -Dprefix=/opt/perl5      choose your destination
1681   -E : stop at the end of questions, after having produced config.sh.
1682   -K : do not use unless you know what you are doing.
1683   -O : let -D and -U override definitions from loaded configuration file.
1684   -S : perform variable substitutions on all .SH files (can mix with -f)
1685   -U : undefine symbol:
1686          -U symbol    symbol gets the value 'undef'
1687          -U symbol=   symbol gets completely empty
1688        e.g.:  -Uversiononly
1689   -A : manipulate symbol after the platform specific hints have been applied:
1690          -A append:symbol=value   append value to symbol
1691          -A symbol=value          like append:, but with a separating space
1692          -A define:symbol=value   define symbol to have value
1693          -A clear:symbol          define symbol to be ''
1694          -A define:symbol         define symbol to be 'define'
1695          -A eval:symbol=value     define symbol to be eval of value
1696          -A prepend:symbol=value  prepend value to symbol
1697          -A undef:symbol          define symbol to be 'undef'
1698          -A undef:symbol=         define symbol to be ''
1699        e.g.:  -A prepend:libswanted='cl pthread '
1700               -A ccflags=-DSOME_MACRO
1701   -V : print version number and exit (with a zero status).
1702 EOM
1703         exit 1
1704         ;;
1705 esac
1706
1707 : Sanity checks
1708 case "$fastread$alldone" in
1709 yescont|yesexit) ;;
1710 *)
1711         case "$extractsh" in
1712         true) ;;
1713         *)
1714                 if test ! -t 0; then
1715                         echo "Say 'sh Configure', not 'sh <Configure'"
1716                         exit 1
1717                 fi
1718                 ;;
1719         esac
1720         ;;
1721 esac
1722
1723 exec 4>&1
1724 case "$silent" in
1725 true) exec 1>/dev/null;;
1726 esac
1727
1728 : run the defines and the undefines, if any, but leave the file out there...
1729 touch optdef.sh
1730 . ./optdef.sh
1731 : create the posthint manipulation script and leave the file out there...
1732 touch posthint.sh
1733
1734 : set package name
1735 package=perl5
1736 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1737 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1738 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1739 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1740 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1741 esac
1742
1743 : Some greps do not return status, grrr.
1744 echo "grimblepritz" >grimble
1745 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1746         contains=contains
1747 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1748         contains=grep
1749 else
1750         contains=contains
1751 fi
1752 rm -f grimble
1753 : the following should work in any shell
1754 case "$contains" in
1755 contains*)
1756         echo " "
1757         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1758         cat >contains <<'EOSS'
1759 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1760 EOSS
1761 chmod +x contains
1762 esac
1763
1764 : Find the path to the source tree
1765 case "$src" in
1766 '') case "$0" in
1767     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1768          case "$src" in
1769          /*)    ;;
1770          .)     ;;
1771          *)     src=`cd ../$src && pwd` ;;
1772          esac
1773          ;;
1774     *)   src='.';;
1775     esac;;
1776 esac
1777 case "$src" in
1778 '')     src=/
1779         rsrc=/
1780         ;;
1781 /*) rsrc="$src";;
1782 *) rsrc="../$src";;
1783 esac
1784 if test -f $rsrc/Configure && \
1785         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1786 then
1787    : found it, so we are ok.
1788 else
1789         rsrc=''
1790         for src in . .. ../.. ../../.. ../../../..; do
1791                 if test -f ../$src/Configure && \
1792                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1793                 then
1794                         rsrc=../$src
1795                         break
1796                 fi
1797         done
1798 fi
1799 case "$rsrc" in
1800 '')
1801         cat <<EOM >&4
1802
1803 Sorry, I can't seem to locate the source dir for $package.  Please start
1804 Configure with an explicit path -- i.e. /some/path/Configure.
1805
1806 EOM
1807         exit 1
1808         ;;
1809 ../.)   rsrc='..';;
1810 *)
1811         echo " "
1812         echo "Sources for $package found in \"$src\"." >&4
1813         ;;
1814 esac
1815
1816 : script used to extract .SH files with variable substitutions
1817 cat >extract <<'EOS'
1818 PERL_CONFIG_SH=true
1819 echo "Doing variable substitutions on .SH files..."
1820 if test -f MANIFEST; then
1821         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1822 else
1823         echo "(Looking for .SH files under the source directory.)"
1824         set x `(cd "$src"; find . -name "*.SH" -print)`
1825 fi
1826 shift
1827 case $# in
1828 0) set x `(cd "$src"; echo *.SH)`; shift;;
1829 esac
1830 if test ! -f "$src/$1"; then
1831         shift
1832 fi
1833 mkdir_p='
1834 name=$1;
1835 create="";
1836 while test $name; do
1837         if test ! -d "$name"; then
1838                 create="$name $create";
1839                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1840                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1841         else
1842                 name="";
1843         fi;
1844 done;
1845 for file in $create; do
1846         mkdir $file;
1847 done
1848 '
1849 for file in $*; do
1850         case "$src" in
1851         ".")
1852                 case "$file" in
1853                 */*)
1854                         dir=`expr X$file : 'X\(.*\)/'`
1855                         file=`expr X$file : 'X.*/\(.*\)'`
1856                         (cd "$dir" && . ./$file)
1857                         ;;
1858                 *)
1859                         . ./$file
1860                         ;;
1861                 esac
1862                 ;;
1863         *)
1864                 case "$file" in
1865                 */*)
1866                         dir=`expr X$file : 'X\(.*\)/'`
1867                         file=`expr X$file : 'X.*/\(.*\)'`
1868                         (set x $dir; shift; eval $mkdir_p)
1869                         sh <"$src/$dir/$file"
1870                         ;;
1871                 *)
1872                         sh <"$src/$file"
1873                         ;;
1874                 esac
1875                 ;;
1876         esac
1877 done
1878 if test -f "$src/config_h.SH"; then
1879         if test ! -f config.h; then
1880         : oops, they left it out of MANIFEST, probably, so do it anyway.
1881         . "$src/config_h.SH"
1882         fi
1883 fi
1884 EOS
1885
1886 : extract files and exit if asked to do so
1887 case "$extractsh" in
1888 true)
1889         case "$realsilent" in
1890         true) ;;
1891         *) exec 1>&4;;
1892         esac
1893         case "$config_sh" in
1894         '') config_sh='config.sh';;
1895         esac
1896         echo " "
1897         echo "Fetching answers from $config_sh..."
1898         cd ..
1899         . $config_sh
1900         test "$override" && . ./optdef.sh
1901         echo " "
1902         . UU/extract
1903         rm -rf UU
1904         echo "Extraction done."
1905         exit 0
1906         ;;
1907 esac
1908
1909 : Eunice requires " " instead of "", can you believe it
1910 echo " "
1911 : Here we go...
1912 echo "Beginning of configuration questions for $package."
1913
1914 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1915
1916 : first determine how to suppress newline on echo command
1917 echo " "
1918 echo "Checking echo to see how to suppress newlines..."
1919 (echo "hi there\c" ; echo " ") >.echotmp
1920 if $contains c .echotmp >/dev/null 2>&1 ; then
1921         echo "...using -n."
1922         n='-n'
1923         c=''
1924 else
1925         cat <<'EOM'
1926 ...using \c
1927 EOM
1928         n=''
1929         c='\c'
1930 fi
1931 echo $n "The star should be here-->$c"
1932 echo '*'
1933 rm -f .echotmp
1934
1935 : Now test for existence of everything in MANIFEST
1936 echo " "
1937 if test -f "$rsrc/MANIFEST"; then
1938         echo "First let's make sure your kit is complete.  Checking..." >&4
1939         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1940         rm -f missing
1941         tmppwd=`pwd`
1942         for filelist in x??; do
1943                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1944         done
1945         if test -s missing; then
1946                 cat missing >&4
1947                 cat >&4 <<'EOM'
1948
1949 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1950
1951 You have the option of continuing the configuration process, despite the
1952 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1953 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1954 and contact the author (perlbug@perl.org).
1955
1956 EOM
1957                 echo $n "Continue? [n] $c" >&4
1958                 read ans
1959                 case "$ans" in
1960                 y*)
1961                         echo "Continuing..." >&4
1962                         rm -f missing
1963                         ;;
1964                 *)
1965                         echo "ABORTING..." >&4
1966                         kill $$
1967                         ;;
1968                 esac
1969         else
1970                 echo "Looks good..."
1971         fi
1972 else
1973         echo "There is no MANIFEST file.  I hope your kit is complete !"
1974 fi
1975 rm -f missing x??
1976
1977 : Find the appropriate value for a newline for tr
1978 echo " "
1979 if test -n "$DJGPP"; then
1980        trnl='\012'
1981 fi
1982 if test X"$trnl" = X; then
1983         case "`echo foo|tr '\n' x 2>/dev/null`" in
1984         foox) trnl='\n' ;;
1985         esac
1986 fi
1987 if test X"$trnl" = X; then
1988         case "`echo foo|tr '\012' x 2>/dev/null`" in
1989         foox) trnl='\012' ;;
1990         esac
1991 fi
1992 if test X"$trnl" = X; then
1993        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1994        fooxy) trnl='\n\r' ;;
1995        esac
1996 fi
1997 if test X"$trnl" = X; then
1998         cat <<EOM >&2
1999
2000 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2001
2002 EOM
2003         exit 1
2004 fi
2005
2006 : compute the number of columns on the terminal for proper question formatting
2007 case "$COLUMNS" in
2008 '') COLUMNS='80';;
2009 esac
2010
2011 : set up the echo used in my read
2012 myecho="case \"\$xxxm\" in
2013 '') echo $n \"\$rp $c\" >&4;;
2014 *) case \"\$rp\" in
2015         '') echo $n \"[\$xxxm] $c\";;
2016         *)
2017                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2018                         echo \"\$rp\" >&4
2019                         echo $n \"[\$xxxm] $c\" >&4
2020                 else
2021                         echo $n \"\$rp [\$xxxm] $c\" >&4
2022                 fi
2023                 ;;
2024         esac;;
2025 esac"
2026
2027 : now set up to do reads with possible shell escape and default assignment
2028 cat <<EOSC >myread
2029 $startsh
2030 xxxm=\$dflt
2031 $myecho
2032 ans='!'
2033 case "\$fastread" in
2034 yes) case "\$dflt" in
2035         '') ;;
2036         *) ans='';
2037                 case "\$silent-\$rp" in
2038                 true-) ;;
2039                 *) echo " " >&4;;
2040                 esac;;
2041         esac;;
2042 *) case "\$silent" in
2043         true) case "\$rp" in
2044                 '') ans='';;
2045                 esac;;
2046         esac;;
2047 esac
2048 while expr "X\$ans" : "X!" >/dev/null; do
2049         read answ
2050         set x \$xxxm
2051         shift
2052         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2053         case  "\$answ" in
2054         "!")
2055                 sh 1>&4
2056                 echo " "
2057                 $myecho
2058                 ;;
2059         !*)
2060                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2061                 shift
2062                 sh 1>&4 -c "\$*"
2063                 echo " "
2064                 $myecho
2065                 ;;
2066         "\$ans")
2067                 case "\$ans" in
2068                 \\&*)
2069                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2070                         shift
2071                         case "\$1" in
2072                         -d)
2073                                 fastread=yes
2074                                 echo "(OK, I'll run with -d after this question.)" >&4
2075                                 ;;
2076                         -*)
2077                                 echo "*** Sorry, \$1 not supported yet." >&4
2078                                 ;;
2079                         esac
2080                         $myecho
2081                         ans=!
2082                         ;;
2083                 esac;;
2084         *)
2085                 case "\$aok" in
2086                 y)
2087                         echo "*** Substitution done -- please confirm."
2088                         xxxm="\$ans"
2089                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2090                         xxxm="\$ans"
2091                         ans=!
2092                         ;;
2093                 *)
2094                         echo "*** Error -- try again."
2095                         ans=!
2096                         ;;
2097                 esac
2098                 $myecho
2099                 ;;
2100         esac
2101         case "\$ans\$xxxm\$nostick" in
2102         '')
2103                 ans=!
2104                 $myecho
2105                 ;;
2106         esac
2107 done
2108 case "\$ans" in
2109 '') ans="\$xxxm";;
2110 esac
2111 EOSC
2112
2113 : create .config dir to save info across Configure sessions
2114 test -d ../.config || mkdir ../.config
2115 cat >../.config/README <<EOF
2116 This directory created by Configure to save information that should
2117 persist across sessions for $package.
2118
2119 You may safely delete it if you wish.
2120 EOF
2121
2122 : See if we are using a devel version and want that
2123 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2124 case "$usedevel" in
2125 $define|true|[yY]*) ;;
2126 *) case "$xversion" in
2127    *[13579])
2128         cat >&4 <<EOH
2129 *** WHOA THERE!!! ***
2130
2131     This is an UNSTABLE DEVELOPMENT release.
2132     The version of this $package distribution is $xversion, that is, odd,
2133     (as opposed to even) and that signifies a development release.
2134     If you want a maintenance release, you want an even-numbered version.
2135
2136     Do ***NOT*** install this into production use.
2137     Data corruption and crashes are possible.
2138
2139     It is most seriously suggested that you do not continue any further
2140     unless you want to help in developing and debugging Perl.
2141
2142     If you *still* want to build perl, you can answer 'y' now,
2143     or pass -Dusedevel to Configure.
2144
2145 EOH
2146         rp='Do you really want to continue?'
2147         dflt='n'
2148         . ./myread
2149         case "$ans" in
2150         [yY]) echo >&4 "Okay, continuing."
2151               usedevel="$define" ;;
2152         *) echo >&4 "Okay, bye."
2153            exit 1
2154            ;;
2155         esac
2156         ;;
2157     esac
2158     ;;
2159 esac
2160 case "$usedevel" in
2161 $define|true|[yY]*)
2162         case "$versiononly" in
2163         '') versiononly="$define" ;;
2164         esac
2165         case "$installusrbinperl" in
2166         '') installusrbinperl="$undef" ;;
2167         esac
2168         ;;
2169 esac
2170
2171 : general instructions
2172 needman=true
2173 firsttime=true
2174 user=`(logname) 2>/dev/null`
2175 case "$user" in
2176 '') user=`whoami 2>&1`;;
2177 esac
2178 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2179         firsttime=false
2180         echo " "
2181         rp='Would you like to see the instructions?'
2182         dflt=n
2183         . ./myread
2184         case "$ans" in
2185         [yY]*) ;;
2186         *) needman=false;;
2187         esac
2188 fi
2189 if $needman; then
2190         cat <<EOH
2191
2192 This installation shell script will examine your system and ask you questions
2193 to determine how the perl5 package should be installed. If you get
2194 stuck on a question, you may use a ! shell escape to start a subshell or
2195 execute a command.  Many of the questions will have default answers in square
2196 brackets; typing carriage return will give you the default.
2197
2198 On some of the questions which ask for file or directory names you are allowed
2199 to use the ~name construct to specify the login directory belonging to "name",
2200 even if you don't have a shell which knows about that.  Questions where this is
2201 allowed will be marked "(~name ok)".
2202
2203 EOH
2204         rp=''
2205         dflt='Type carriage return to continue'
2206         . ./myread
2207         cat <<'EOH'
2208
2209 The prompter used in this script allows you to use shell variables and
2210 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2211 in the default answer, as if the default line was a set of arguments given to a
2212 script shell.  This means you may also use $* to repeat the whole default line,
2213 so you do not have to re-type everything to add something to the default.
2214
2215 Everytime there is a substitution, you will have to confirm.  If there is an
2216 error (e.g. an unmatched backtick), the default answer will remain unchanged
2217 and you will be prompted again.
2218
2219 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2220 the questions and use the computed defaults (or the previous answers if there
2221 was already a config.sh file). Type 'Configure -h' for a list of options.
2222 You may also start interactively and then answer '& -d' at any prompt to turn
2223 on the non-interactive behaviour for the remainder of the execution.
2224
2225 EOH
2226         . ./myread
2227         cat <<EOH
2228
2229 Much effort has been expended to ensure that this shell script will run on any
2230 Unix system.  If despite that it blows up on yours, your best bet is to edit
2231 Configure and run it again.  If you can't run Configure for some reason,
2232 you'll have to generate a config.sh file by hand.  Whatever problems you
2233 have, let me (perlbug@perl.org) know how I blew it.
2234
2235 This installation script affects things in two ways:
2236
2237 1) it may do direct variable substitutions on some of the files included
2238    in this kit.
2239 2) it builds a config.h file for inclusion in C programs.  You may edit
2240    any of these files as the need arises after running this script.
2241
2242 If you make a mistake on a question, there is no easy way to back up to it
2243 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2244 files.  Configure will offer to let you do this before it runs the SH files.
2245
2246 EOH
2247         dflt='Type carriage return to continue'
2248         . ./myread
2249         case "$firsttime" in
2250         true) echo $user >>../.config/instruct;;
2251         esac
2252 fi
2253
2254 : find out where common programs are
2255 echo " "
2256 echo "Locating common programs..." >&4
2257 cat <<EOSC >loc
2258 $startsh
2259 case \$# in
2260 0) exit 1;;
2261 esac
2262 thing=\$1
2263 shift
2264 dflt=\$1
2265 shift
2266 for dir in \$*; do
2267         case "\$thing" in
2268         .)
2269         if test -d \$dir/\$thing; then
2270                 echo \$dir
2271                 exit 0
2272         fi
2273         ;;
2274         *)
2275         for thisthing in \$dir/\$thing; do
2276                 : just loop through to pick last item
2277         done
2278         if test -f \$thisthing; then
2279                 echo \$thisthing
2280                 exit 0
2281         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2282                 echo \$thisthing
2283                 exit 0
2284         elif test -f \$dir/\$thing.exe; then
2285                 if test -n "$DJGPP"; then
2286                         echo \$dir/\$thing.exe
2287                 elif test "$eunicefix" != ":"; then
2288                         : on Eunice apparently
2289                         echo \$dir/\$thing
2290                         exit 0
2291                 fi
2292                 exit 0
2293         fi
2294         ;;
2295         esac
2296 done
2297 echo \$dflt
2298 exit 1
2299 EOSC
2300 chmod +x loc
2301 $eunicefix loc
2302 loclist="
2303 awk
2304 cat
2305 chmod
2306 comm
2307 cp
2308 echo
2309 expr
2310 grep
2311 ls
2312 mkdir
2313 rm
2314 sed
2315 sort
2316 touch
2317 tr
2318 uniq
2319 "
2320 trylist="
2321 Mcc
2322 ar
2323 bison
2324 byacc
2325 cpp
2326 csh
2327 date
2328 egrep
2329 gmake
2330 gzip
2331 less
2332 ln
2333 make
2334 more
2335 nm
2336 nroff
2337 pg
2338 test
2339 uname
2340 zip
2341 "
2342 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2343 pth="$pth /lib /usr/lib"
2344 for file in $loclist; do
2345         eval xxx=\$$file
2346         case "$xxx" in
2347         /*|?:[\\/]*)
2348                 if test -f "$xxx"; then
2349                         : ok
2350                 else
2351                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2352                         xxx=`./loc $file $file $pth`
2353                 fi
2354                 ;;
2355         '') xxx=`./loc $file $file $pth`;;
2356         *) xxx=`./loc $xxx $xxx $pth`;;
2357         esac
2358         eval $file=$xxx$_exe
2359         eval _$file=$xxx
2360         case "$xxx" in
2361         /*)
2362                 echo $file is in $xxx.
2363                 ;;
2364         ?:[\\/]*)
2365                 echo $file is in $xxx.
2366                 ;;
2367         *)
2368                 echo "I don't know where '$file' is, and my life depends on it." >&4
2369                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2370                 exit 1
2371                 ;;
2372         esac
2373 done
2374 echo " "
2375 echo "Don't worry if any of the following aren't found..."
2376 say=offhand
2377 for file in $trylist; do
2378         eval xxx=\$$file
2379         case "$xxx" in
2380         /*|?:[\\/]*)
2381                 if test -f "$xxx"; then
2382                         : ok
2383                 else
2384                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2385                         xxx=`./loc $file $file $pth`
2386                 fi
2387                 ;;
2388         '') xxx=`./loc $file $file $pth`;;
2389         *) xxx=`./loc $xxx $xxx $pth`;;
2390         esac
2391         eval $file=$xxx$_exe
2392         eval _$file=$xxx
2393         case "$xxx" in
2394         /*)
2395                 echo $file is in $xxx.
2396                 ;;
2397         ?:[\\/]*)
2398                 echo $file is in $xxx.
2399                 ;;
2400         *)
2401                 echo "I don't see $file out there, $say."
2402                 say=either
2403                 ;;
2404         esac
2405 done
2406 case "$egrep" in
2407 egrep)
2408         echo "Substituting grep for egrep."
2409         egrep=$grep
2410         _egrep=$grep
2411         ;;
2412 esac
2413 case "$ln" in
2414 ln)
2415         echo "Substituting cp for ln."
2416         ln=$cp
2417         _ln=$cp
2418         ;;
2419 esac
2420 case "$make" in
2421 make)
2422         case "$gmake" in
2423         gmake)
2424         echo "I can't find make or gmake, and my life depends on it." >&4
2425         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2426         exit 1
2427         ;;
2428         esac
2429         ;;
2430 esac
2431 case "$gmake" in
2432 gmake)  ;;
2433 *)      # We can't have osname yet.
2434         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2435                 # Assume that gmake, if found, is definitely GNU make
2436                 # and prefer it over the system make.
2437                 echo "Substituting gmake for make."
2438                 make=$gmake
2439                 _make=$gmake
2440         fi
2441         ;;
2442 esac
2443 case "$test" in
2444 test)
2445         echo "Hopefully test is built into your sh."
2446         ;;
2447 *)
2448         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2449                 echo "Using the test built into your sh."
2450                 test=test
2451                 _test=test
2452         fi
2453         ;;
2454 esac
2455 case "$echo" in
2456 echo)
2457         echo "Hopefully echo is built into your sh."
2458         ;;
2459 '') ;;
2460 *)
2461         echo " "
2462 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2463         $echo $n "hi there$c" >foo1
2464         echo $n "hi there$c" >foo2
2465         if cmp foo1 foo2 >/dev/null 2>&1; then
2466                 echo "They are compatible.  In fact, they may be identical."
2467         else
2468                 case "$n" in
2469                 '-n') n='' c='\c';;
2470                 *) n='-n' c='';;
2471                 esac
2472                 cat <<FOO
2473 They are not compatible!  You are probably running ksh on a non-USG system.
2474 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2475 have echo built in and we may have to run some Bourne shell scripts.  That
2476 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2477
2478 FOO
2479                 $echo $n "The star should be here-->$c"
2480                 $echo "*"
2481         fi
2482         $rm -f foo1 foo2
2483         ;;
2484 esac
2485
2486 # This question was auctioned at YAPC::Europe-2007 in Vienna
2487 # I never promised you could answer it. I only auctioned the question.
2488 cat <<FOO
2489 The following message is sponsored by
2490
2491   Dresden.pm<--The stars should be here.
2492
2493 Dear Perl user, system administrator or package
2494 maintainer, the Perl community sends greetings to
2495 you. Do you (emblematical) greet back [Y/n]? n
2496
2497 FOO
2498
2499 : Check what type of C compiler we use
2500 cat <<EOS >trygcc
2501 $startsh
2502 EOS
2503 cat <<'EOSC' >>trygcc
2504 case "$cc" in
2505 '') ;;
2506 *)  $rm -f try try.*
2507     $cat >try.c <<EOM
2508 int main(int argc, char *argv[]) {
2509   return 0;
2510 }
2511 EOM
2512     if $cc -o try $ccflags $ldflags try.c; then
2513        :
2514     else
2515         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2516         despair=yes
2517         trygcc=yes
2518         case "$cc" in
2519         *gcc*) trygcc=no ;;
2520         esac
2521         # Skip this test because it gives a false match on output like:
2522         #    ./trygcc: line 23: cc: command not found
2523         # case "`$cc -v -c try.c 2>&1`" in
2524         # *gcc*) trygcc=no ;;
2525         # esac
2526         if $test X"$trygcc" = Xyes; then
2527             if gcc -o try -c try.c; then
2528                 echo " "
2529                 echo "You seem to have a working gcc, though." >&4
2530                 # Switching compilers may undo the work of hints files.
2531                 # The most common problem is -D_REENTRANT for threads.
2532                 # This heuristic catches that case, but gets false positives
2533                 # if -Dusethreads was not actually specified.  Better to
2534                 # bail out here with a useful message than fail 
2535                 # mysteriously later. Should we perhaps just try to
2536                 # re-invoke Configure -Dcc=gcc config_args ?
2537                 if $test -f usethreads.cbu; then
2538                         $cat >&4 <<EOM 
2539
2540 *** However, any setting of the C compiler flags (e.g. for thread support)
2541 *** will be lost.  It may be necessary for you to restart Configure and
2542 *** add -Dcc=gcc to your Configure command line.
2543
2544 EOM
2545                         rp="Would you like to go ahead and try gcc anyway?"
2546                         dflt=n
2547                 else
2548                         rp="Would you like to use it?"
2549                         dflt=y
2550                 fi
2551                 if $test -f myread; then
2552                     . ./myread
2553                 else
2554                     if $test -f UU/myread; then
2555                         . ./UU/myread
2556                     else
2557                         echo "Cannot find myread, sorry.  Aborting." >&2
2558                         exit 1
2559                     fi
2560                 fi  
2561                 case "$ans" in
2562                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2563                 esac
2564             fi
2565         fi
2566     fi
2567     $rm -f try try.*
2568     ;;
2569 esac
2570 EOSC
2571
2572 cat <<EOS >checkcc
2573 $startsh
2574 EOS
2575 cat <<'EOSC' >>checkcc
2576 case "$cc" in        
2577 '') ;;
2578 *)  $rm -f try try.*              
2579     $cat >try.c <<EOM
2580 int main(int argc, char *argv[]) {
2581   return 0;
2582 }
2583 EOM
2584     if $cc -o try $ccflags $ldflags try.c; then
2585        :
2586     else
2587         if $test X"$despair" = Xyes; then
2588            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2589         fi
2590         $cat >&4 <<EOM         
2591 You need to find a working C compiler.
2592 Either (purchase and) install the C compiler supplied by your OS vendor,
2593 or for a free C compiler try http://gcc.gnu.org/
2594 I cannot continue any further, aborting.
2595 EOM
2596         exit 1
2597     fi
2598     $rm -f try try.*
2599     ;;
2600 esac
2601 EOSC
2602
2603 : determine whether symbolic links are supported
2604 echo " "
2605 $touch blurfl
2606 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2607         echo "Symbolic links are supported." >&4
2608         lns="$ln -s"
2609 else
2610         echo "Symbolic links are NOT supported." >&4
2611         lns="$ln"
2612 fi
2613 $rm -f blurfl sym
2614
2615 : determine whether symbolic links are supported
2616 echo " "
2617 case "$lns" in
2618 *"ln"*" -s")
2619         echo "Checking how to test for symbolic links..." >&4
2620         $lns blurfl sym
2621         if $test "X$issymlink" = X; then
2622                 case "$newsh" in
2623                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2624                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2625                 esac
2626                 if test $? = 0; then
2627                         issymlink="test -h"
2628                 else
2629                         echo "Your builtin 'test -h' may be broken." >&4
2630                         case "$test" in
2631                         /*)     ;;
2632                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2633                                 for p in $pth
2634                                 do
2635                                         if test -f "$p/$test"; then
2636                                                 test="$p/$test"
2637                                                 break
2638                                         fi
2639                                 done
2640                                 ;;
2641                         esac
2642                         case "$test" in
2643                         /*)
2644                                 echo "Trying external '$test -h'." >&4
2645                                 issymlink="$test -h"
2646                                 if $test ! -h sym >/dev/null 2>&1; then
2647                                         echo "External '$test -h' is broken, too." >&4
2648                                         issymlink=''
2649                                 fi
2650                                 ;;
2651                         *)      issymlink='' ;;
2652                         esac
2653                 fi              
2654         fi
2655         if $test "X$issymlink" = X; then
2656                 if $test -L sym 2>/dev/null; then
2657                         issymlink="$test -L"
2658                         echo "The builtin '$test -L' worked." >&4
2659                 fi
2660         fi
2661         if $test "X$issymlink" != X; then
2662                 echo "You can test for symbolic links with '$issymlink'." >&4
2663         else
2664                 echo "I do not know how you can test for symbolic links." >&4
2665         fi
2666         $rm -f blurfl sym
2667         ;;
2668 *)      echo "No symbolic links, so not testing for their testing..." >&4
2669         ;;
2670 esac
2671 echo " "
2672
2673
2674 case "$mksymlinks" in
2675 $define|true|[yY]*)
2676         case "$src" in
2677         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2678                 exit 1
2679                 ;;
2680         *)      case "$lns:$issymlink" in
2681                 *"ln"*" -s:"*"test -"?)
2682                         echo "Creating the symbolic links..." >&4
2683                         echo "(First creating the subdirectories...)" >&4
2684                         cd ..
2685                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2686                                 read directory
2687                                 test -z "$directory" && break
2688                                 mkdir -p $directory
2689                         done
2690                         # Sanity check 1.
2691                         if test ! -d t/base; then
2692                                 echo "Failed to create the subdirectories.  Aborting." >&4
2693                                 exit 1
2694                         fi
2695                         echo "(Then creating the symlinks...)" >&4
2696                         awk '{print $1}' $src/MANIFEST | while true; do
2697                                 read filename
2698                                 test -z "$filename" && break
2699                                 if test -f $filename; then
2700                                         if $issymlink $filename; then
2701                                                 rm -f $filename
2702                                         fi
2703                                 fi
2704                                 if test -f $filename; then
2705                                         echo "$filename already exists, not symlinking."
2706                                 else
2707                                         ln -s $src/$filename $filename
2708                                 fi
2709                         done
2710                         # Sanity check 2.
2711                         if test ! -f t/base/lex.t; then
2712                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2713                                 exit 1
2714                         fi
2715                         cd UU
2716                         ;;
2717                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2718                         ;;
2719                 esac
2720                 ;;
2721         esac
2722         ;;
2723 esac
2724
2725 : Check for Cross-Compilation
2726 case "$usecrosscompile" in
2727 $define|true|[yY]*)
2728         $echo "Cross-compiling..."
2729         croak=''
2730         case "$cc" in
2731         *-*-gcc) # A cross-compiling gcc, probably.
2732             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2733             ar=$targetarch-ar
2734             # leave out ld, choosing it is more complex
2735             nm=$targetarch-nm
2736             ranlib=$targetarch-ranlib
2737             $echo 'extern int foo;' > try.c
2738             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2739             shift
2740             if $test $# -gt 0; then
2741                 incpth="$incpth $*"
2742                 incpth="`$echo $incpth|$sed 's/^ //'`"
2743                 echo "Guessing incpth '$incpth'." >&4
2744                 for i in $*; do
2745                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2746                     if $test -d $j; then
2747                         libpth="$libpth $j"
2748                     fi
2749                 done   
2750                 libpth="`$echo $libpth|$sed 's/^ //'`"
2751                 echo "Guessing libpth '$libpth'." >&4
2752             fi
2753             $rm -f try.c
2754             ;;
2755         esac
2756         case "$targetarch" in
2757         '') echo "Targetarch not defined." >&4; croak=y ;;
2758         *)  echo "Using targetarch $targetarch." >&4 ;;
2759         esac
2760         case "$incpth" in
2761         '') echo "Incpth not defined." >&4; croak=y ;;
2762         *)  echo "Using incpth '$incpth'." >&4 ;;
2763         esac
2764         case "$libpth" in
2765         '') echo "Libpth not defined." >&4; croak=y ;;
2766         *)  echo "Using libpth '$libpth'." >&4 ;;
2767         esac
2768         case "$usrinc" in
2769         '') for i in $incpth; do
2770                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2771                     usrinc=$i
2772                     echo "Guessing usrinc $usrinc." >&4
2773                     break
2774                 fi
2775             done
2776             case "$usrinc" in
2777             '') echo "Usrinc not defined." >&4; croak=y ;;
2778             esac
2779             ;;
2780         *)  echo "Using usrinc $usrinc." >&4 ;;
2781         esac
2782         case "$targethost" in
2783         '') echo "Targethost not defined." >&4; croak=y ;;
2784         *)  echo "Using targethost $targethost." >&4
2785         esac
2786         locincpth=' '
2787         loclibpth=' '
2788         case "$croak" in
2789         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2790         esac
2791         case "$src" in
2792         /*) run=$src/Cross/run
2793             targetmkdir=$src/Cross/mkdir
2794             to=$src/Cross/to
2795             from=$src/Cross/from
2796             ;;
2797         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2798             run=$pwd/Cross/run
2799             targetmkdir=$pwd/Cross/mkdir
2800             to=$pwd/Cross/to
2801             from=$pwd/Cross/from
2802             ;;
2803         esac
2804         case "$targetrun" in
2805         '') targetrun=ssh ;;
2806         esac
2807         case "$targetto" in
2808         '') targetto=scp ;;
2809         esac
2810         case "$targetfrom" in
2811         '') targetfrom=scp ;;
2812         esac
2813         run=$run-$targetrun
2814         to=$to-$targetto
2815         from=$from-$targetfrom
2816         case "$targetdir" in
2817         '')  targetdir=/tmp
2818              echo "Guessing targetdir $targetdir." >&4
2819              ;;
2820         esac
2821         case "$targetuser" in
2822         '')  targetuser=root
2823              echo "Guessing targetuser $targetuser." >&4
2824              ;;
2825         esac
2826         case "$targetfrom" in
2827         scp)    q=-q ;;
2828         *)      q='' ;;
2829         esac
2830         case "$targetrun" in
2831         ssh|rsh)
2832             cat >$run <<EOF
2833 #!/bin/sh
2834 case "\$1" in
2835 -cwd)
2836   shift
2837   cwd=\$1
2838   shift
2839   ;;
2840 esac
2841 case "\$cwd" in
2842 '') cwd=$targetdir ;;
2843 esac
2844 exe=\$1
2845 shift
2846 if $test ! -f \$exe.xok; then
2847   $to \$exe
2848   $touch \$exe.xok
2849 fi
2850 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2851 EOF
2852             ;;
2853         *)  echo "Unknown targetrun '$targetrun'" >&4
2854             exit 1
2855             ;;
2856         esac
2857         case "$targetmkdir" in
2858         */Cross/mkdir)
2859             cat >$targetmkdir <<EOF
2860 #!/bin/sh
2861 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2862 EOF
2863             $chmod a+rx $targetmkdir
2864             ;;
2865         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2866             exit 1
2867             ;;
2868         esac
2869         case "$targetto" in
2870         scp|rcp)
2871             cat >$to <<EOF
2872 #!/bin/sh
2873 for f in \$@
2874 do
2875   case "\$f" in
2876   /*)
2877     $targetmkdir \`dirname \$f\`
2878     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2879     ;;
2880   *)
2881     $targetmkdir $targetdir/\`dirname \$f\`
2882     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2883     ;;
2884   esac
2885 done
2886 exit 0
2887 EOF
2888             ;;
2889         cp) cat >$to <<EOF
2890 #!/bin/sh
2891 for f in \$@
2892 do
2893   case "\$f" in
2894   /*)
2895     $mkdir -p $targetdir/\`dirname \$f\`
2896     $cp \$f $targetdir/\$f || exit 1
2897     ;;
2898   *)
2899     $targetmkdir $targetdir/\`dirname \$f\`
2900     $cp \$f $targetdir/\$f || exit 1
2901     ;;
2902   esac
2903 done
2904 exit 0
2905 EOF
2906             ;;
2907         *)  echo "Unknown targetto '$targetto'" >&4
2908             exit 1
2909             ;;
2910         esac
2911         case "$targetfrom" in
2912         scp|rcp)
2913           cat >$from <<EOF
2914 #!/bin/sh
2915 for f in \$@
2916 do
2917   $rm -f \$f
2918   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2919 done
2920 exit 0
2921 EOF
2922             ;;
2923         cp) cat >$from <<EOF
2924 #!/bin/sh
2925 for f in \$@
2926 do
2927   $rm -f \$f
2928   cp $targetdir/\$f . || exit 1
2929 done
2930 exit 0
2931 EOF
2932             ;;
2933         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2934             exit 1
2935             ;;
2936         esac
2937         if $test ! -f $run; then
2938             echo "Target 'run' script '$run' not found." >&4
2939         else
2940             $chmod a+rx $run
2941         fi
2942         if $test ! -f $to; then
2943             echo "Target 'to' script '$to' not found." >&4
2944         else
2945             $chmod a+rx $to
2946         fi
2947         if $test ! -f $from; then
2948             echo "Target 'from' script '$from' not found." >&4
2949         else
2950             $chmod a+rx $from
2951         fi
2952         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2953             exit 1
2954         fi
2955         cat >&4 <<EOF
2956 Using '$run' for remote execution,
2957 and '$from' and '$to'
2958 for remote file transfer.
2959 EOF
2960         ;;
2961 *)      run=''
2962         to=:
2963         from=:
2964         usecrosscompile='undef'
2965         targetarch=''
2966         ;;
2967 esac
2968
2969 : see whether [:lower:] and [:upper:] are supported character classes
2970 echo " "
2971 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2972 ABYZ)
2973         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2974         up='[:upper:]'
2975         low='[:lower:]'
2976         ;;
2977 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2978         # (0xd9 and 0xe2), therefore that is a nice testing point.
2979         if test "X$up" = X -o "X$low" = X; then
2980             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2981             rs) up='[A-Z]'
2982                 low='[a-z]'
2983                 ;;
2984             esac
2985         fi
2986         if test "X$up" = X -o "X$low" = X; then
2987             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2988             rs) up='A-Z'
2989                 low='a-z'
2990                 ;;
2991             esac
2992         fi
2993         if test "X$up" = X -o "X$low" = X; then
2994             case "`echo RS | od -x 2>/dev/null`" in
2995             *D9E2*|*d9e2*)
2996                 echo "Hey, this might be EBCDIC." >&4
2997                 if test "X$up" = X -o "X$low" = X; then
2998                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2999                     rs) up='[A-IJ-RS-Z]'
3000                         low='[a-ij-rs-z]'
3001                         ;;
3002                     esac
3003                 fi
3004                 if test "X$up" = X -o "X$low" = X; then
3005                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3006                     rs) up='A-IJ-RS-Z'
3007                         low='a-ij-rs-z'
3008                         ;;
3009                     esac
3010                 fi
3011                 ;;
3012             esac
3013         fi
3014 esac
3015 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3016 rs)
3017     echo "Using $up and $low to convert case." >&4
3018     ;;
3019 *)
3020     echo "I don't know how to translate letters from upper to lower case." >&4
3021     echo "Your tr is not acting any way I know of." >&4
3022     exit 1
3023     ;;
3024 esac
3025 : set up the translation script tr, must be called with ./tr of course
3026 cat >tr <<EOSC
3027 $startsh
3028 case "\$1\$2" in
3029 '[A-Z][a-z]') exec $tr '$up' '$low';;
3030 '[a-z][A-Z]') exec $tr '$low' '$up';;
3031 esac
3032 exec $tr "\$@"
3033 EOSC
3034 chmod +x tr
3035 $eunicefix tr
3036
3037 : Try to determine whether config.sh was made on this system
3038 case "$config_sh" in
3039 '')
3040 myuname=`$uname -a 2>/dev/null`
3041 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3042 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3043 # because the A-Z/a-z are not consecutive.
3044 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3045         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3046 newmyuname="$myuname"
3047 dflt=n
3048 case "$knowitall" in
3049 '')
3050         if test -f ../config.sh; then
3051                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3052                         eval "`grep myuname= ../config.sh`"
3053                 fi
3054                 if test "X$myuname" = "X$newmyuname"; then
3055                         dflt=y
3056                 fi
3057         fi
3058         ;;
3059 *) dflt=y;;
3060 esac
3061
3062 : Get old answers from old config file if Configure was run on the
3063 : same system, otherwise use the hints.
3064 hint=default
3065 cd ..
3066 if test -f config.sh; then
3067         echo " "
3068         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3069         . UU/myread
3070         case "$ans" in
3071         n*|N*) echo "OK, I'll ignore it."
3072                 mv config.sh config.sh.old
3073                 myuname="$newmyuname"
3074                 ;;
3075         *)  echo "Fetching default answers from your old config.sh file..." >&4
3076                 tmp_n="$n"
3077                 tmp_c="$c"
3078                 tmp_sh="$sh"
3079                 . ./config.sh
3080                 cp config.sh UU
3081                 n="$tmp_n"
3082                 c="$tmp_c"
3083                 : Older versions did not always set $sh.  Catch re-use of such
3084                 : an old config.sh.
3085                 case "$sh" in
3086                 '') sh="$tmp_sh" ;;
3087                 esac
3088                 hint=previous
3089                 ;;
3090         esac
3091 fi
3092 . ./UU/checkcc
3093 if test ! -f config.sh; then
3094         $cat <<EOM
3095
3096 First time through, eh?  I have some defaults handy for some systems
3097 that need some extra help getting the Configure answers right:
3098
3099 EOM
3100         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3101         dflt=''
3102         : Half the following guesses are probably wrong... If you have better
3103         : tests or hints, please send them to perlbug@perl.org
3104         : The metaconfig authors would also appreciate a copy...
3105         $test -f /irix && osname=irix
3106         $test -f /xenix && osname=sco_xenix
3107         $test -f /dynix && osname=dynix
3108         $test -f /dnix && osname=dnix
3109         $test -f /lynx.os && osname=lynxos
3110         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3111         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3112         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3113         $test -f /bin/mips && /bin/mips && osname=mips
3114         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3115                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3116         $test -d /usr/apollo/bin && osname=apollo
3117         $test -f /etc/saf/_sactab && osname=svr4
3118         $test -d /usr/include/minix && osname=minix
3119         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3120         if $test -d /MachTen -o -d /MachTen_Folder; then
3121                 osname=machten
3122                 if $test -x /sbin/version; then
3123                         osvers=`/sbin/version | $awk '{print $2}' |
3124                         $sed -e 's/[A-Za-z]$//'`
3125                 elif $test -x /usr/etc/version; then
3126                         osvers=`/usr/etc/version | $awk '{print $2}' |
3127                         $sed -e 's/[A-Za-z]$//'`
3128                 else
3129                         osvers="$2.$3"
3130                 fi
3131         fi
3132
3133         $test -f /sys/posix.dll &&
3134                 $test -f /usr/bin/what &&
3135                 set X `/usr/bin/what /sys/posix.dll` &&
3136                 $test "$3" = UWIN &&
3137                 osname=uwin &&
3138                 osvers="$5"
3139
3140         if $test -f $uname; then
3141                 set X $myuname
3142                 shift
3143
3144                 case "$5" in
3145                 fps*) osname=fps ;;
3146                 mips*)
3147                         case "$4" in
3148                         umips) osname=umips ;;
3149                         *) osname=mips ;;
3150                         esac;;
3151                 [23]100) osname=mips ;;
3152                 next*) osname=next ;;
3153                 i386*)
3154                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3155                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3156                                 osname='sco'
3157                                 osvers=$tmp
3158                         elif $test -f /etc/kconfig; then
3159                                 osname=isc
3160                                 if test "$lns" = "$ln -s"; then
3161                                         osvers=4
3162                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3163                                         osvers=3
3164                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3165                                         osvers=2
3166                                 fi
3167                         fi
3168                         tmp=''
3169                         ;;
3170                 pc*)
3171                         if test -n "$DJGPP"; then
3172                                 osname=dos
3173                                 osvers=djgpp
3174                         fi
3175                         ;;
3176                 esac
3177
3178                 case "$1" in
3179                 aix) osname=aix
3180                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3181                         case "$tmp" in
3182                         # oslevel can fail with:
3183                         # oslevel: Unable to acquire lock.
3184                         *not\ found) osvers="$4"."$3" ;;
3185                         '<3240'|'<>3240') osvers=3.2.0 ;;
3186                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3187                         '=3250'|'>3250') osvers=3.2.5 ;;
3188                         *) osvers=$tmp;;
3189                         esac
3190                         ;;
3191                 bsd386) osname=bsd386
3192                         osvers=`$uname -r`
3193                         ;;
3194                 cygwin*) osname=cygwin
3195                         osvers="$3"
3196                         ;;
3197                 *dc.osx) osname=dcosx
3198                         osvers="$3"
3199                         ;;
3200                 dnix) osname=dnix
3201                         osvers="$3"
3202                         ;;
3203                 domainos) osname=apollo
3204                         osvers="$3"
3205                         ;;
3206                 dgux)   osname=dgux
3207                         osvers="$3"
3208                         ;;
3209                 dragonfly) osname=dragonfly
3210                         osvers="$3"
3211                         ;;
3212                 dynixptx*) osname=dynixptx
3213                         osvers=`echo "$4"|sed 's/^v//'`
3214                         ;;
3215                 freebsd) osname=freebsd
3216                         osvers="$3" ;;
3217                 genix)  osname=genix ;;
3218                 gnu)    osname=gnu
3219                         osvers="$3" ;;
3220                 hp*)    osname=hpux
3221                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3222                         ;;
3223                 irix*)  osname=irix
3224                         case "$3" in
3225                         4*) osvers=4 ;;
3226                         5*) osvers=5 ;;
3227                         *)      osvers="$3" ;;
3228                         esac
3229                         ;;
3230                 linux)  osname=linux
3231                         case "$3" in
3232                         *)      osvers="$3" ;;
3233                         esac
3234                         ;;
3235                 MiNT)   osname=mint
3236                         ;;
3237                 netbsd*) osname=netbsd
3238                         osvers="$3"
3239                         ;;
3240                 news-os) osvers="$3"
3241                         case "$3" in
3242                         4*) osname=newsos4 ;;
3243                         *) osname=newsos ;;
3244                         esac
3245                         ;;
3246                 next*) osname=next ;;
3247                 nonstop-ux) osname=nonstopux ;;
3248                 openbsd) osname=openbsd
3249                         osvers="$3"
3250                         ;;
3251                 os2)    osname=os2
3252                         osvers="$4"
3253                         ;;
3254                 POSIX-BC | posix-bc ) osname=posix-bc
3255                         osvers="$3"
3256                         ;;
3257                 powerux | power_ux | powermax_os | powermaxos | \
3258                 powerunix | power_unix) osname=powerux
3259                         osvers="$3"
3260                         ;;
3261                 qnx) osname=qnx
3262                         osvers="$4"
3263                         ;;
3264                 solaris) osname=solaris
3265                         case "$3" in
3266                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3267                         *)      osvers="$3" ;;
3268                         esac
3269                         ;;
3270                 sunos) osname=sunos
3271                         case "$3" in
3272                         5*) osname=solaris
3273                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3274                         *)      osvers="$3" ;;
3275                         esac
3276                         ;;
3277                 titanos) osname=titanos
3278                         case "$3" in
3279                         1*) osvers=1 ;;
3280                         2*) osvers=2 ;;
3281                         3*) osvers=3 ;;
3282                         4*) osvers=4 ;;
3283                         *)      osvers="$3" ;;
3284                         esac
3285                         ;;
3286                 ultrix) osname=ultrix
3287                         osvers="$3"
3288                         ;;
3289                 osf1|mls+)      case "$5" in
3290                                 alpha)
3291                                         osname=dec_osf
3292                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3293                                         case "$osvers" in
3294                                         [1-9].[0-9]*) ;;
3295                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3296                                         esac
3297                                         ;;
3298                         hp*)    osname=hp_osf1  ;;
3299                         mips)   osname=mips_osf1 ;;
3300                         esac
3301                         ;;
3302                 # UnixWare 7.1.2 is known as Open UNIX 8
3303                 openunix|unixware) osname=svr5
3304                         osvers="$4"
3305                         ;;
3306                 uts)    osname=uts
3307                         osvers="$3"
3308                         ;;
3309                 vos) osvers="$3"
3310                         ;;
3311                 $2) case "$osname" in
3312                         *isc*) ;;
3313                         *freebsd*) ;;
3314                         svr*)
3315                                 : svr4.x or possibly later
3316                                 case "svr$3" in
3317                                 ${osname}*)
3318                                         osname=svr$3
3319                                         osvers=$4
3320                                         ;;
3321                                 esac
3322                                 case "$osname" in
3323                                 svr4.0)
3324                                         : Check for ESIX
3325                                         if test -f /stand/boot ; then
3326                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3327                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3328                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3329                                                         if test -n "$isesix"; then
3330                                                                 osname=esix4
3331                                                         fi
3332                                                 fi
3333                                         fi
3334                                         ;;
3335                                 esac
3336                                 ;;
3337                         *)      if test -f /etc/systemid; then
3338                                         osname=sco
3339                                         set `echo $3 | $sed 's/\./ /g'` $4
3340                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3341                                                 osvers=$1.$2.$3
3342                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3343                                                 osvers=$1.$2
3344                                         elif $test -f $src/hints/sco_$1.sh; then
3345                                                 osvers=$1
3346                                         fi
3347                                 else
3348                                         case "$osname" in
3349                                         '') : Still unknown.  Probably a generic Sys V.
3350                                                 osname="sysv"
3351                                                 osvers="$3"
3352                                                 ;;
3353                                         esac
3354                                 fi
3355                                 ;;
3356                         esac
3357                         ;;
3358                 *)      case "$osname" in
3359                         '') : Still unknown.  Probably a generic BSD.
3360                                 osname="$1"
3361                                 osvers="$3"
3362                                 ;;
3363                         esac
3364                         ;;
3365                 esac
3366         else
3367                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3368                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3369                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3370                                 osname=news_os
3371                         fi
3372                         $rm -f UU/kernel.what
3373                 elif test -d c:/. -o -n "$is_os2" ; then
3374                         set X $myuname
3375                         osname=os2
3376                         osvers="$5"
3377                 fi
3378         fi
3379
3380         case "$targetarch" in
3381         '') ;;
3382         *)  hostarch=$osname
3383             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3384             osvers=''
3385             ;;
3386         esac
3387
3388         : Now look for a hint file osname_osvers, unless one has been
3389         : specified already.
3390         case "$hintfile" in
3391         ''|' ')
3392                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3393                 : Also try without trailing minor version numbers.
3394                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3395                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3396                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3397                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3398                 case "$file" in
3399                 '') dflt=none ;;
3400                 *)  case "$osvers" in
3401                         '') dflt=$file
3402                                 ;;
3403                         *)  if $test -f $src/hints/$file.sh ; then
3404                                         dflt=$file
3405                                 elif $test -f $src/hints/$xfile.sh ; then
3406                                         dflt=$xfile
3407                                 elif $test -f $src/hints/$xxfile.sh ; then
3408                                         dflt=$xxfile
3409                                 elif $test -f $src/hints/$xxxfile.sh ; then
3410                                         dflt=$xxxfile
3411                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3412                                         dflt=$xxxxfile
3413                                 elif $test -f "$src/hints/${osname}.sh" ; then
3414                                         dflt="${osname}"
3415                                 else
3416                                         dflt=none
3417                                 fi
3418                                 ;;
3419                         esac
3420                         ;;
3421                 esac
3422                 if $test -f Policy.sh ; then
3423                         case "$dflt" in
3424                         *Policy*) ;;
3425                         none) dflt="Policy" ;;
3426                         *) dflt="Policy $dflt" ;;
3427                         esac
3428                 fi
3429                 ;;
3430         *)
3431                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3432                 ;;
3433         esac
3434
3435         if $test -f Policy.sh ; then
3436                 $cat <<EOM
3437
3438 There's also a Policy hint file available, which should make the
3439 site-specific (policy) questions easier to answer.
3440 EOM
3441
3442         fi
3443
3444         $cat <<EOM
3445
3446 You may give one or more space-separated answers, or "none" if appropriate.
3447 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3448 previous run of Configure, you may specify it as well as or instead of
3449 OS-specific hints.  If hints are provided for your OS, you should use them:
3450 although Perl can probably be built without hints on many platforms, using
3451 hints often improve performance and may enable features that Configure can't
3452 set up on its own. If there are no hints that match your OS, specify "none";
3453 DO NOT give a wrong version or a wrong OS.
3454
3455 EOM
3456
3457         rp="Which of these apply, if any?"
3458         . UU/myread
3459         tans=$ans
3460         for file in $tans; do
3461                 if $test X$file = XPolicy -a -f Policy.sh; then
3462                         . Policy.sh
3463                         $cat Policy.sh >> UU/config.sh
3464                 elif $test -f $src/hints/$file.sh; then
3465                         . $src/hints/$file.sh
3466                         $cat $src/hints/$file.sh >> UU/config.sh
3467                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3468                         : nothing
3469                 else
3470                         : Give one chance to correct a possible typo.
3471                         echo "$file.sh does not exist"
3472                         dflt=$file
3473                         rp="hint to use instead?"
3474                         . UU/myread
3475                         for file in $ans; do
3476                                 if $test -f "$src/hints/$file.sh"; then
3477                                         . $src/hints/$file.sh
3478                                         $cat $src/hints/$file.sh >> UU/config.sh
3479                                 elif $test X$ans = X -o X$ans = Xnone ; then
3480                                         : nothing
3481                                 else
3482                                         echo "$file.sh does not exist -- ignored."
3483                                 fi
3484                         done
3485                 fi
3486         done
3487
3488         hint=recommended
3489         : Remember our hint file for later.
3490         if $test -f "$src/hints/$file.sh" ; then
3491                 hintfile="$file"
3492         else
3493                 hintfile=''
3494         fi
3495 fi
3496 cd UU
3497 ;;
3498 *)
3499         echo " "
3500         echo "Fetching default answers from $config_sh..." >&4
3501         tmp_n="$n"
3502         tmp_c="$c"
3503         cd ..
3504         cp $config_sh config.sh 2>/dev/null
3505         chmod +w config.sh
3506         . ./config.sh
3507         cd UU
3508         cp ../config.sh .
3509         n="$tmp_n"
3510         c="$tmp_c"
3511         hint=previous
3512         ;;
3513 esac
3514 test "$override" && . ./optdef.sh
3515
3516 : Restore computed paths
3517 for file in $loclist $trylist; do
3518         eval $file="\$_$file"
3519 done
3520
3521 cat << EOM
3522
3523 Configure uses the operating system name and version to set some defaults.
3524 The default value is probably right if the name rings a bell. Otherwise,
3525 since spelling matters for me, either accept the default or answer "none"
3526 to leave it blank.
3527
3528 EOM
3529 case "$osname" in
3530         ''|' ')
3531                 case "$hintfile" in
3532                 ''|' '|none) dflt=none ;;
3533                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3534                 esac
3535                 ;;
3536         *) dflt="$osname" ;;
3537 esac
3538 rp="Operating system name?"
3539 . ./myread
3540 case "$ans" in
3541 none)  osname='' ;;
3542 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3543 esac
3544 echo " "
3545 case "$osvers" in
3546         ''|' ')
3547                 case "$hintfile" in
3548                 ''|' '|none) dflt=none ;;
3549                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3550                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3551                         case "$dflt" in
3552                         ''|' ') dflt=none ;;
3553                         esac
3554                         ;;
3555                 esac
3556                 ;;
3557         *) dflt="$osvers" ;;
3558 esac
3559 rp="Operating system version?"
3560 . ./myread
3561 case "$ans" in
3562 none)  osvers='' ;;
3563 *) osvers="$ans" ;;
3564 esac
3565
3566
3567 . ./posthint.sh
3568
3569 : who configured the system
3570 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3571 case "$cf_by" in
3572 "")
3573         cf_by=`(logname) 2>/dev/null`
3574         case "$cf_by" in
3575         "")
3576                 cf_by=`(whoami) 2>/dev/null`
3577                 case "$cf_by" in
3578                 "") cf_by=unknown ;;
3579                 esac ;;
3580         esac ;;
3581 esac
3582
3583 : decide how portable to be.  Allow command line overrides.
3584 case "$d_portable" in
3585 "$undef") ;;
3586 *)      d_portable="$define" ;;
3587 esac
3588
3589 : set up shell script to do ~ expansion
3590 cat >filexp <<EOSS
3591 $startsh
3592 : expand filename
3593 case "\$1" in
3594  ~/*|~)
3595         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3596         ;;
3597  ~*)
3598         if $test -f /bin/csh; then
3599                 /bin/csh -f -c "glob \$1"
3600                 failed=\$?
3601                 echo ""
3602                 exit \$failed
3603         else
3604                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3605                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3606                 if $test ! -d "\$dir"; then
3607                         me=\`basename \$0\`
3608                         echo "\$me: can't locate home directory for: \$name" >&2
3609                         exit 1
3610                 fi
3611                 case "\$1" in
3612                 */*)
3613                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3614                         ;;
3615                 *)
3616                         echo \$dir
3617                         ;;
3618                 esac
3619         fi
3620         ;;
3621 *)
3622         echo \$1
3623         ;;
3624 esac
3625 EOSS
3626 chmod +x filexp
3627 $eunicefix filexp
3628
3629 : now set up to get a file name
3630 cat <<EOS >getfile
3631 $startsh
3632 EOS
3633 cat <<'EOSC' >>getfile
3634 tilde=''
3635 fullpath=''
3636 already=''
3637 skip=''
3638 none_ok=''
3639 exp_file=''
3640 nopath_ok=''
3641 orig_rp="$rp"
3642 orig_dflt="$dflt"
3643 case "$gfpth" in
3644 '') gfpth='.' ;;
3645 esac
3646
3647 case "$fn" in
3648 *\(*)
3649         : getfile will accept an answer from the comma-separated list
3650         : enclosed in parentheses even if it does not meet other criteria.
3651         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3652         fn=`echo $fn | sed 's/(.*)//'`
3653         ;;
3654 esac
3655
3656 case "$fn" in
3657 *:*)
3658         loc_file=`expr $fn : '.*:\(.*\)'`
3659         fn=`expr $fn : '\(.*\):.*'`
3660         ;;
3661 esac
3662
3663 case "$fn" in
3664 *~*) tilde=true;;
3665 esac
3666 case "$fn" in
3667 */*) fullpath=true;;
3668 esac
3669 case "$fn" in
3670 *+*) skip=true;;
3671 esac
3672 case "$fn" in
3673 *n*) none_ok=true;;
3674 esac
3675 case "$fn" in
3676 *e*) exp_file=true;;
3677 esac
3678 case "$fn" in
3679 *p*) nopath_ok=true;;
3680 esac
3681
3682 case "$fn" in
3683 *f*) type='File';;
3684 *d*) type='Directory';;
3685 *l*) type='Locate';;
3686 esac
3687
3688 what="$type"
3689 case "$what" in
3690 Locate) what='File';;
3691 esac
3692
3693 case "$exp_file" in
3694 '')
3695         case "$d_portable" in
3696         "$define") ;;
3697         *) exp_file=true;;
3698         esac
3699         ;;
3700 esac
3701
3702 cd ..
3703 while test "$type"; do
3704         redo=''
3705         rp="$orig_rp"
3706         dflt="$orig_dflt"
3707         case "$tilde" in
3708         true) rp="$rp (~name ok)";;
3709         esac
3710         . UU/myread
3711         if test -f UU/getfile.ok && \
3712                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3713         then
3714                 value="$ans"
3715                 ansexp="$ans"
3716                 break
3717         fi
3718         case "$ans" in
3719         none)
3720                 value=''
3721                 ansexp=''
3722                 case "$none_ok" in
3723                 true) type='';;
3724                 esac
3725                 ;;
3726         *)
3727                 case "$tilde" in
3728                 '') value="$ans"
3729                         ansexp="$ans";;
3730                 *)
3731                         value=`UU/filexp $ans`
3732                         case $? in
3733                         0)
3734                                 if test "$ans" != "$value"; then
3735                                         echo "(That expands to $value on this system.)"
3736                                 fi
3737                                 ;;
3738                         *) value="$ans";;
3739                         esac
3740                         ansexp="$value"
3741                         case "$exp_file" in
3742                         '') value="$ans";;
3743                         esac
3744                         ;;
3745                 esac
3746                 case "$fullpath" in
3747                 true)
3748                         case "$ansexp" in
3749                         /*) value="$ansexp" ;;
3750                         [a-zA-Z]:/*) value="$ansexp" ;;
3751                         *)
3752                                 redo=true
3753                                 case "$already" in
3754                                 true)
3755                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3756                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3757                                         ;;
3758                                 *)
3759                                 echo "Please give a full path name, starting with slash." >&4
3760                                         case "$tilde" in
3761                                         true)
3762                                 echo "Note that using ~name is ok provided it expands well." >&4
3763                                                 already=true
3764                                                 ;;
3765                                         esac
3766                                 esac
3767                                 ;;
3768                         esac
3769                         ;;
3770                 esac
3771                 case "$redo" in
3772                 '')
3773                         case "$type" in
3774                         File)
3775                                 for fp in $gfpth; do
3776                                         if test "X$fp" = X.; then
3777                                             pf="$ansexp"
3778                                         else    
3779                                             pf="$fp/$ansexp"
3780                                         fi
3781                                         if test -f "$pf"; then
3782                                                 type=''
3783                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3784                                         then
3785                                                 echo "($value is not a plain file, but that's ok.)"
3786                                                 type=''
3787                                         fi
3788                                         if test X"$type" = X; then
3789                                             value="$pf"
3790                                             break
3791                                         fi
3792                                 done
3793                                 ;;
3794                         Directory)
3795                                 for fp in $gfpth; do
3796                                         if test "X$fp" = X.; then
3797                                             dir="$ans"
3798                                             direxp="$ansexp"
3799                                         else    
3800                                             dir="$fp/$ansexp"
3801                                             direxp="$fp/$ansexp"
3802                                         fi
3803                                         if test -d "$direxp"; then
3804                                                 type=''
3805                                                 value="$dir"
3806                                                 break
3807                                         fi
3808                                 done
3809                                 ;;
3810                         Locate)
3811                                 if test -d "$ansexp"; then
3812                                         echo "(Looking for $loc_file in directory $value.)"
3813                                         value="$value/$loc_file"
3814                                         ansexp="$ansexp/$loc_file"
3815                                 fi
3816                                 if test -f "$ansexp"; then
3817                                         type=''
3818                                 fi
3819                                 case "$nopath_ok" in
3820                                 true)   case "$value" in
3821                                         */*) ;;
3822                                         *)      echo "Assuming $value will be in people's path."
3823                                                 type=''
3824                                                 ;;
3825                                         esac
3826                                         ;;
3827                                 esac
3828                                 ;;
3829                         esac
3830
3831                         case "$skip" in
3832                         true) type='';
3833                         esac
3834
3835                         case "$type" in
3836                         '') ;;
3837                         *)
3838                                 if test "$fastread" = yes; then
3839                                         dflt=y
3840                                 else
3841                                         dflt=n
3842                                 fi
3843                                 rp="$what $value doesn't exist.  Use that name anyway?"
3844                                 . UU/myread
3845                                 dflt=''
3846                                 case "$ans" in
3847                                 y*) type='';;
3848                                 *) echo " ";;
3849                                 esac
3850                                 ;;
3851                         esac
3852                         ;;
3853                 esac
3854                 ;;
3855         esac
3856 done
3857 cd UU
3858 ans="$value"
3859 rp="$orig_rp"
3860 dflt="$orig_dflt"
3861 rm -f getfile.ok
3862 test "X$gfpthkeep" != Xy && gfpth=""
3863 EOSC
3864
3865 : determine root of directory hierarchy where package will be installed.
3866 case "$prefix" in
3867 '')
3868         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3869         ;;
3870 *?/)
3871         dflt=`echo "$prefix" | sed 's/.$//'`
3872         ;;
3873 *)
3874         dflt="$prefix"
3875         ;;
3876 esac
3877 $cat <<EOM
3878
3879 By default, $package will be installed in $dflt/bin, manual pages
3880 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3881 installation directories. Typically this is something like /usr/local.
3882 If you wish to have binaries under /usr/bin but other parts of the
3883 installation under /usr/local, that's ok: you will be prompted
3884 separately for each of the installation directories, the prefix being
3885 only used to set the defaults.
3886
3887 EOM
3888 fn=d~
3889 rp='Installation prefix to use?'
3890 . ./getfile
3891 oldprefix=''
3892 case "$prefix" in
3893 '') ;;
3894 *)
3895         case "$ans" in
3896         "$prefix") ;;
3897         *) oldprefix="$prefix";;
3898         esac
3899         ;;
3900 esac
3901 prefix="$ans"
3902 prefixexp="$ansexp"
3903
3904 case "$afsroot" in
3905 '')     afsroot=/afs ;;
3906 *)      afsroot=$afsroot ;;
3907 esac
3908
3909 : is AFS running?
3910 echo " "
3911 case "$afs" in
3912 $define|true)   afs=true ;;
3913 $undef|false)   afs=false ;;
3914 *)      if test -d $afsroot; then
3915                 afs=true
3916         else
3917                 afs=false
3918         fi
3919         ;;
3920 esac
3921 if $afs; then
3922         echo "AFS may be running... I'll be extra cautious then..." >&4
3923 else
3924         echo "AFS does not seem to be running..." >&4
3925 fi
3926
3927 : determine installation prefix for where package is to be installed.
3928 if $afs; then 
3929 $cat <<EOM
3930
3931 Since you are running AFS, I need to distinguish the directory in which
3932 files will reside from the directory in which they are installed (and from
3933 which they are presumably copied to the former directory by occult means).
3934
3935 EOM
3936         case "$installprefix" in
3937         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3938         *) dflt="$installprefix";;
3939         esac
3940 else
3941 $cat <<EOM
3942
3943 In some special cases, particularly when building $package for distribution,
3944 it is convenient to distinguish the directory in which files should be
3945 installed from the directory ($prefix) in which they will
3946 eventually reside.  For most users, these two directories are the same.
3947
3948 EOM
3949         case "$installprefix" in
3950         '') dflt=$prefix ;;
3951         *) dflt=$installprefix;;
3952         esac
3953 fi
3954 fn=d~
3955 rp='What installation prefix should I use for installing files?'
3956 . ./getfile
3957 installprefix="$ans"
3958 installprefixexp="$ansexp"
3959
3960 : Perform the prefixexp/installprefixexp correction if necessary
3961 cat <<EOS >installprefix
3962 $startsh
3963 EOS
3964 cat <<'EOSC' >>installprefix
3965 : Change installation prefix, if necessary.
3966 if $test X"$prefix" != X"$installprefix"; then
3967     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3968 else
3969     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3970 fi
3971 EOSC
3972 chmod +x installprefix
3973 $eunicefix installprefix
3974
3975 : Set variables such as privlib and privlibexp from the output of ./getfile
3976 : performing the prefixexp/installprefixexp correction if necessary.
3977 cat <<EOS >setprefixvar
3978 $startsh
3979 EOS
3980 cat <<'EOSC' >>setprefixvar
3981 eval "${prefixvar}=\"\$ans\""
3982 eval "${prefixvar}exp=\"\$ansexp\""
3983 . ./installprefix
3984 EOSC
3985 chmod +x setprefixvar
3986 $eunicefix setprefixvar
3987
3988 : set up the script used to warn in case of inconsistency
3989 cat <<EOS >whoa
3990 $startsh
3991 EOS
3992 cat <<'EOSC' >>whoa
3993 dflt=y
3994 case "$hint" in
3995     recommended)
3996         case "$hintfile" in
3997         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3998                 ;;
3999         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
4000                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4001                 ;;
4002         esac
4003         ;;
4004     *)  echo " "
4005         echo "*** WHOA THERE!!! ***" >&4
4006         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4007         ;;
4008 esac
4009 rp="    Keep the $hint value?"
4010 . ./myread
4011 case "$ans" in
4012 y) td=$was; tu=$was;;
4013 esac
4014 EOSC
4015
4016 : function used to set $1 to $val
4017 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4018 case "$val$was" in
4019 $define$undef) . ./whoa; eval "$var=\$td";;
4020 $undef$define) . ./whoa; eval "$var=\$tu";;
4021 *) eval "$var=$val";;
4022 esac'
4023
4024 case "$usesocks" in
4025 $define|true|[yY]*)     dflt='y';;
4026 *) dflt='n';;
4027 esac
4028 cat <<EOM
4029
4030 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4031 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4032 to use the PerlIO abstraction layer, this will be implicitly selected.
4033
4034 If this doesn't make any sense to you, just accept the default '$dflt'.
4035 EOM
4036 rp='Build Perl for SOCKS?'
4037 . ./myread
4038 case "$ans" in
4039 y|Y)    val="$define" ;;
4040 *)      val="$undef" ;;
4041 esac
4042 set usesocks
4043 eval $setvar
4044
4045 case "$usesocks" in
4046 $define|true|[yY]*) useperlio="$define";;
4047 esac
4048
4049 case "$useperlio" in
4050 $define|true|[yY]*|'')  dflt='y';;
4051 *) dflt='n';;
4052 esac
4053 cat <<EOM
4054
4055 Previous version of $package used the standard IO mechanisms as
4056 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4057 alternate IO mechanisms via the PerlIO abstraction layer, but the
4058 stdio mechanism is still available if needed.  The abstraction layer
4059 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4060 Using PerlIO with sfio may cause problems with some extension modules.
4061
4062 If this doesn't make any sense to you, just accept the default '$dflt'.
4063 EOM
4064 rp='Use the PerlIO abstraction layer?'
4065 . ./myread
4066 case "$ans" in
4067 y|Y) 
4068         val="$define"
4069         ;;
4070 *)      
4071         echo "Ok, doing things the stdio way."
4072         val="$undef"
4073         ;;
4074 esac
4075 set useperlio
4076 eval $setvar 
4077
4078 case "$usesocks" in
4079 $define|true|[yY]*)
4080         case "$useperlio" in
4081         $define|true|[yY]*) ;;
4082         *)      cat >&4 <<EOM
4083
4084 You are using the SOCKS proxy protocol library which means that you
4085 should also use the PerlIO layer.  You may be headed for trouble.
4086
4087 EOM
4088                 ;;
4089         esac
4090         ;;
4091 esac
4092
4093         
4094 : get the patchlevel
4095 echo " "
4096 echo "Getting the current patchlevel..." >&4
4097 if $test -r $rsrc/patchlevel.h;then
4098         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4099         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4100         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4101         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4102         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4103         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4104         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4105 else
4106         revision=0
4107         patchlevel=0
4108         subversion=0
4109         api_revision=0
4110         api_version=0
4111         api_subversion=0
4112         perl_patchlevel=0
4113         $echo "(You do not have patchlevel.h.  Eek.)"
4114 fi
4115 if $test -r $rsrc/.patch ; then
4116         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4117                 perl_patchlevel=`cat $rsrc/.patch`
4118         fi
4119 fi
4120 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4121 version_patchlevel_string="version $patchlevel subversion $subversion"
4122 case "$perl_patchlevel" in
4123 0|'') ;;
4124 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4125 esac
4126
4127 $echo "(You have $package $version_patchlevel_string.)"
4128
4129 case "$osname" in
4130 dos|vms)
4131         : XXX Should be a Configure test for double-dots in filenames.
4132         version=`echo $revision $patchlevel $subversion | \
4133                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4134         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4135                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4136         ;;
4137 *)
4138         version=`echo $revision $patchlevel $subversion | \
4139                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4140         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4141                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4142         ;;
4143 esac
4144 : Special case the 5.005_xx maintenance series, which used 5.005
4145 : without any subversion label as a subdirectory in $sitelib
4146 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4147         api_versionstring='5.005'
4148 fi
4149
4150 : Do we want threads support and if so, what type
4151 case "$usethreads" in
4152 $define|true|[yY]*)     dflt='y';;
4153 *)     # Catch case where user specified ithreads or 5005threads but
4154        # forgot -Dusethreads (A.D. 4/2002)
4155        case "$useithreads$use5005threads" in
4156        *$define*)
4157                 case "$useperlio" in
4158                 "$define")      dflt='y' ;;
4159                 *)              dflt='n' ;;
4160                 esac
4161                 ;;
4162        *)       dflt='n';;
4163        esac
4164        ;;
4165 esac
4166 cat <<EOM
4167
4168 Perl can be built to take advantage of threads on some systems.
4169 To do so, Configure can be run with -Dusethreads.
4170
4171 Note that Perl built with threading support runs slightly slower
4172 and uses more memory than plain Perl. The current implementation
4173 is believed to be stable, but it is fairly new, and so should be
4174 treated with caution.
4175
4176 If this doesn't make any sense to you, just accept the default '$dflt'.
4177 EOM
4178 rp='Build a threading Perl?'
4179 . ./myread
4180 case "$ans" in
4181 y|Y)    val="$define" ;;
4182 *)      val="$undef" ;;
4183 esac
4184 set usethreads
4185 eval $setvar
4186
4187 if $test $patchlevel -lt 9; then
4188     case "$usethreads" in
4189     $define)
4190         $cat <<EOM
4191
4192 Since release 5.6, Perl has had two different threading implementations,
4193 the newer interpreter-based version (ithreads) with one interpreter per
4194 thread, and the older 5.005 version (5005threads).
4195 The 5005threads version is effectively unmaintained and will probably be
4196 removed in Perl 5.10, so there should be no need to build a Perl using it
4197 unless needed for backwards compatibility with some existing 5.005threads
4198 code.
4199
4200 EOM
4201         : Default to ithreads unless overridden on command line or with
4202         : old config.sh
4203         dflt='y'
4204         case "$use5005threads" in
4205                 $define|true|[yY]*) dflt='n';;
4206         esac
4207         case "$useithreads" in
4208                 $undef|false|[nN]*) dflt='n';;
4209         esac
4210         rp='Use the newer interpreter-based ithreads?'
4211         . ./myread
4212         case "$ans" in
4213         y|Y)    val="$define" ;;
4214         *)      val="$undef" ;;
4215         esac
4216         set useithreads
4217         eval $setvar
4218         : Now set use5005threads to the opposite value.
4219         case "$useithreads" in
4220         $define) val="$undef" ;;
4221         *) val="$define" ;;
4222         esac
4223         set use5005threads
4224         eval $setvar
4225         ;;
4226     *)
4227         useithreads="$undef"
4228         use5005threads="$undef"
4229         ;;
4230     esac
4231
4232     case "$useithreads$use5005threads" in
4233     "$define$define")
4234         $cat >&4 <<EOM
4235
4236 You cannot have both the ithreads and the 5.005 threads enabled
4237 at the same time.  Disabling the 5.005 threads since they are
4238 much less stable than the ithreads.
4239
4240 EOM
4241         use5005threads="$undef"
4242         ;;
4243     esac
4244
4245 else
4246 : perl-5.9.x and later
4247
4248     if test X"$usethreads" = "X$define"; then
4249         case "$use5005threads" in
4250             $define|true|[yY]*)
4251                 $cat >&4 <<EOM
4252
4253 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4254
4255 EOM
4256             ;;
4257         esac
4258     fi
4259
4260     use5005threads="$undef"
4261     useithreads="$usethreads"
4262 fi
4263
4264 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4265         cat >&4 <<EOF
4266 ***
4267 *** To build with ithreads you must also use the PerlIO layer.
4268 *** Cannot continue, aborting.
4269 ***
4270 EOF
4271         exit 1
4272 fi
4273
4274 case "$d_oldpthreads" in
4275 '')     : Configure tests would be welcome here.  For now, assume undef.
4276         val="$undef" ;;
4277 *)      val="$d_oldpthreads" ;;
4278 esac
4279 set d_oldpthreads
4280 eval $setvar
4281
4282
4283 : Look for a hint-file generated 'call-back-unit'.  If the
4284 : user has specified that a threading perl is to be built,
4285 : we may need to set or change some other defaults.
4286 if $test -f usethreads.cbu; then
4287     echo "Your platform has some specific hints regarding threaded builds, using them..."
4288     . ./usethreads.cbu
4289 else
4290     case "$usethreads" in
4291         "$define"|true|[yY]*)
4292                 $cat <<EOM
4293 (Your platform does not have any specific hints for threaded builds.
4294  Assuming POSIX threads, then.)
4295 EOM
4296         ;;
4297     esac
4298 fi
4299
4300 cat <<EOM
4301
4302 Perl can be built so that multiple Perl interpreters can coexist
4303 within the same Perl executable.
4304 EOM
4305
4306 case "$useithreads" in
4307 $define)
4308         cat <<EOM
4309 This multiple interpreter support is required for interpreter-based threads.
4310 EOM
4311         val="$define"
4312         ;;
4313 *)      case "$usemultiplicity" in
4314         $define|true|[yY]*)     dflt='y';;
4315         *) dflt='n';;
4316         esac
4317         echo " "
4318         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4319         rp='Build Perl for multiplicity?'
4320         . ./myread
4321         case "$ans" in
4322         y|Y)    val="$define" ;;
4323         *)      val="$undef" ;;
4324         esac
4325         ;;
4326 esac
4327 set usemultiplicity
4328 eval $setvar
4329
4330
4331 case "$usemorebits" in
4332 "$define"|true|[yY]*)
4333         use64bitint="$define"
4334         uselongdouble="$define"
4335         usemorebits="$define"
4336         ;;
4337 *)      usemorebits="$undef"
4338         ;;
4339 esac
4340
4341 : make some quick guesses about what we are up against
4342 echo " "
4343 $echo $n "Hmm...  $c"
4344 echo exit 1 >bsd
4345 echo exit 1 >usg
4346 echo exit 1 >v7
4347 echo exit 1 >osf1
4348 echo exit 1 >eunice
4349 echo exit 1 >xenix
4350 echo exit 1 >venix
4351 echo exit 1 >os2
4352 d_bsd="$undef"
4353 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4354 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4355 then
4356         echo "Looks kind of like an OSF/1 system, but we'll see..."
4357         echo exit 0 >osf1
4358 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4359         xxx=`./loc addbib blurfl $pth`
4360         if $test -f $xxx; then
4361         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4362                 echo exit 0 >bsd
4363                 echo exit 0 >usg
4364         else
4365                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4366                         echo "Looks kind of like an extended USG system, but we'll see..."
4367                 else
4368                         echo "Looks kind of like a USG system, but we'll see..."
4369                 fi
4370                 echo exit 0 >usg
4371         fi
4372 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4373         echo "Looks kind of like a BSD system, but we'll see..."
4374         d_bsd="$define"
4375         echo exit 0 >bsd
4376 else
4377         echo "Looks kind of like a Version 7 system, but we'll see..."
4378         echo exit 0 >v7
4379 fi
4380 case "$eunicefix" in
4381 *unixtovms*)
4382         $cat <<'EOI'
4383 There is, however, a strange, musty smell in the air that reminds me of
4384 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4385 EOI
4386         echo exit 0 >eunice
4387         d_eunice="$define"
4388 : it so happens the Eunice I know will not run shell scripts in Unix format
4389         ;;
4390 *)
4391         echo " "
4392         echo "Congratulations.  You aren't running Eunice."
4393         d_eunice="$undef"
4394         ;;
4395 esac
4396 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4397 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4398 : semicolon as a patch separator
4399 case "$p_" in
4400 :) ;;
4401 *)
4402         $cat <<'EOI'
4403 I have the feeling something is not exactly right, however...don't tell me...
4404 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4405 (Or you may be running DOS with DJGPP.)
4406 EOI
4407         echo exit 0 >os2
4408         ;;
4409 esac
4410 if test -f /xenix; then
4411         echo "Actually, this looks more like a XENIX system..."
4412         echo exit 0 >xenix
4413         d_xenix="$define"
4414 else
4415         echo " "
4416         echo "It's not Xenix..."
4417         d_xenix="$undef"
4418 fi
4419 chmod +x xenix
4420 $eunicefix xenix
4421 if test -f /venix; then
4422         echo "Actually, this looks more like a VENIX system..."
4423         echo exit 0 >venix
4424 else
4425         echo " "
4426         if ./xenix; then
4427                 : null
4428         else
4429                 echo "Nor is it Venix..."
4430         fi
4431 fi
4432 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4433 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4434 $rm -f foo
4435
4436 case "$cc" in
4437 '') dflt=cc;;
4438 *) dflt="$cc";;
4439 esac
4440 rp="Use which C compiler?"
4441 . ./myread
4442 cc="$ans"
4443
4444 : See if they have not cc but they do have gcc
4445 . ./trygcc
4446 : Look for a hint-file generated 'call-back-unit'.  Now that the
4447 : user has specified the compiler, we may need to set or change some
4448 : other defaults.
4449 if $test -f cc.cbu; then
4450     . ./cc.cbu
4451 fi
4452 . ./checkcc
4453
4454 : Check if we are using GNU gcc and what its version is
4455 echo " "
4456 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4457 $cat >try.c <<EOM
4458 #include <stdio.h>
4459 int main() {
4460 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4461 #ifdef __VERSION__
4462         printf("%s\n", __VERSION__);
4463 #else
4464         printf("%s\n", "1");
4465 #endif
4466 #endif
4467         return(0);
4468 }
4469 EOM
4470 if $cc -o try $ccflags $ldflags try.c; then
4471         gccversion=`$run ./try`
4472         case "$gccversion" in
4473         '') echo "You are not using GNU cc." ;;
4474         *)  echo "You are using GNU cc $gccversion."
4475             ccname=gcc
4476             ;;
4477         esac
4478 else
4479         echo " "
4480         echo "*** WHOA THERE!!! ***" >&4
4481         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4482         case "$knowitall" in
4483         '')
4484         echo "    You'd better start hunting for one and let me know about it." >&4
4485                 exit 1
4486                 ;;
4487         esac
4488 fi
4489 $rm -f try try.*
4490 case "$gccversion" in
4491 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4492 esac
4493 case "$gccversion" in
4494 '') gccosandvers='' ;;
4495 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4496    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4497    gccshortvers=''
4498    case "$gccosandvers" in
4499    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4500    $osname$osvers) ;; # looking good
4501    $osname*) cat <<EOM >&4
4502
4503 *** WHOA THERE!!! ***
4504
4505     Your gcc has not been compiled for the exact release of
4506     your operating system ($gccosandvers versus $osname$osvers).
4507
4508     In general it is a good idea to keep gcc synchronized with
4509     the operating system because otherwise serious problems
4510     may ensue when trying to compile software, like Perl.
4511
4512     I'm trying to be optimistic here, though, and will continue.
4513     If later during the configuration and build icky compilation
4514     problems appear (headerfile conflicts being the most common
4515     manifestation), I suggest reinstalling the gcc to match
4516     your operating system release.
4517
4518 EOM
4519       ;;
4520    *) gccosandvers='' ;; # failed to parse, better be silent
4521    esac
4522    ;;
4523 esac
4524 case "$ccname" in
4525 '') ccname="$cc" ;;
4526 esac
4527
4528 # gcc 3.* complain about adding -Idirectories that they already know about,
4529 # so we will take those off from locincpth.
4530 case "$gccversion" in
4531 3*)
4532     echo "main(){}">try.c
4533     for incdir in $locincpth; do
4534        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4535              grep '^c[cp]p*[01]: warning: changing search order '`
4536        if test "X$warn" != X; then
4537            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4538        fi
4539     done
4540     $rm -f try try.*
4541 esac
4542
4543 : What should the include directory be ?
4544 echo " "
4545 $echo $n "Hmm...  $c"
4546 dflt='/usr/include'
4547 incpath=''
4548 mips_type=''
4549 if $test -f /bin/mips && /bin/mips; then
4550         echo "Looks like a MIPS system..."
4551         $cat >usr.c <<'EOCP'
4552 #ifdef SYSTYPE_BSD43
4553 /bsd43
4554 #endif
4555 EOCP
4556         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4557                 dflt='/bsd43/usr/include'
4558                 incpath='/bsd43'
4559                 mips_type='BSD 4.3'
4560         else
4561                 mips_type='System V'
4562         fi
4563         $rm -f usr.c usr.out
4564         echo "and you're compiling with the $mips_type compiler and libraries."
4565         xxx_prompt=y
4566         echo "exit 0" >mips
4567 else
4568         echo "Doesn't look like a MIPS system."
4569         xxx_prompt=n
4570         echo "exit 1" >mips
4571 fi
4572 chmod +x mips
4573 $eunicefix mips
4574 case "$usrinc" in
4575 '') ;;
4576 *) dflt="$usrinc";;
4577 esac
4578 case "$xxx_prompt" in
4579 y)      fn=d/
4580         echo " "
4581         rp='Where are the include files you want to use?'
4582         . ./getfile
4583         usrinc="$ans"
4584         ;;
4585 *)      usrinc="$dflt"
4586         ;;
4587 esac
4588
4589 : see how we invoke the C preprocessor
4590 echo " "
4591 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4592 cat <<'EOT' >testcpp.c
4593 #define ABC abc
4594 #define XYZ xyz
4595 ABC.XYZ
4596 EOT
4597 cd ..
4598 if test ! -f cppstdin; then
4599         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4600                 # AIX cc -E doesn't show the absolute headerfile
4601                 # locations but we'll cheat by using the -M flag.
4602                 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
4603         else
4604                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4605         fi
4606 else
4607         echo "Keeping your $hint cppstdin wrapper."
4608 fi
4609 chmod 755 cppstdin
4610 wrapper=`pwd`/cppstdin
4611 ok='false'
4612 cd UU
4613
4614 if $test "X$cppstdin" != "X" && \
4615         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4616         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4617 then
4618         echo "You used to use $cppstdin $cppminus so we'll use that again."
4619         case "$cpprun" in
4620         '') echo "But let's see if we can live without a wrapper..." ;;
4621         *)
4622                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4623                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4624                 then
4625                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4626                         ok='true'
4627                 else
4628                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4629                 fi
4630                 ;;
4631         esac
4632 else
4633         case "$cppstdin" in
4634         '') ;;
4635         *)
4636                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4637                 ;;
4638         esac
4639 fi
4640
4641 if $ok; then
4642         : nothing
4643 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4644         $cc -E <testcpp.c >testcpp.out 2>&1; \
4645         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4646         echo "Yup, it does."
4647         x_cpp="$cc -E"
4648         x_minus='';
4649 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4650         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4651         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4652         echo "Yup, it does."
4653         x_cpp="$cc -E"
4654         x_minus='-';
4655 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4656         $cc -P <testcpp.c >testcpp.out 2>&1; \
4657         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4658         echo "Yipee, that works!"
4659         x_cpp="$cc -P"
4660         x_minus='';
4661 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4662         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4663         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4664         echo "At long last!"
4665         x_cpp="$cc -P"
4666         x_minus='-';
4667 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4668         $cpp <testcpp.c >testcpp.out 2>&1; \
4669         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4670         echo "It works!"
4671         x_cpp="$cpp"
4672         x_minus='';
4673 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4674         $cpp - <testcpp.c >testcpp.out 2>&1; \
4675         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4676         echo "Hooray, it works!  I was beginning to wonder."
4677         x_cpp="$cpp"
4678         x_minus='-';
4679 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4680         $wrapper <testcpp.c >testcpp.out 2>&1; \
4681         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4682         x_cpp="$wrapper"
4683         x_minus=''
4684         echo "Eureka!"
4685 else
4686         dflt=''
4687         rp="No dice.  I can't find a C preprocessor.  Name one:"
4688         . ./myread
4689         x_cpp="$ans"
4690         x_minus=''
4691         $x_cpp <testcpp.c >testcpp.out 2>&1
4692         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4693                 echo "OK, that will do." >&4
4694         else
4695 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4696                 exit 1
4697         fi
4698 fi
4699
4700 case "$ok" in
4701 false)
4702         cppstdin="$x_cpp"
4703         cppminus="$x_minus"
4704         cpprun="$x_cpp"
4705         cpplast="$x_minus"
4706         set X $x_cpp
4707         shift
4708         case "$1" in
4709         "$cpp")
4710                 echo "Perhaps can we force $cc -E using a wrapper..."
4711                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4712                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4713                 then
4714                         echo "Yup, we can."
4715                         cppstdin="$wrapper"
4716                         cppminus='';
4717                 else
4718                         echo "Nope, we'll have to live without it..."
4719                 fi
4720                 ;;
4721         esac
4722         case "$cpprun" in
4723         "$wrapper")
4724                 cpprun=''
4725                 cpplast=''
4726                 ;;
4727         esac
4728         ;;
4729 esac
4730
4731 case "$cppstdin" in
4732 "$wrapper"|'cppstdin') ;;
4733 *) $rm -f $wrapper;;
4734 esac
4735 $rm -f testcpp.c testcpp.out
4736
4737 : Set private lib path
4738 case "$plibpth" in
4739 '') if ./mips; then
4740                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4741         fi;;
4742 esac
4743 case "$libpth" in
4744 ' ') dlist='';;
4745 '') dlist="$loclibpth $plibpth $glibpth";;
4746 *) dlist="$libpth";;
4747 esac
4748
4749 : Now check and see which directories actually exist, avoiding duplicates
4750 libpth=''
4751 for xxx in $dlist
4752 do
4753     if $test -d $xxx; then
4754                 case " $libpth " in
4755                 *" $xxx "*) ;;
4756                 *) libpth="$libpth $xxx";;
4757                 esac
4758     fi
4759 done
4760 $cat <<'EOM'
4761
4762 Some systems have incompatible or broken versions of libraries.  Among
4763 the directories listed in the question below, please remove any you
4764 know not to be holding relevant libraries, and add any that are needed.
4765 Say "none" for none.
4766
4767 EOM
4768 case "$libpth" in
4769 '') dflt='none';;
4770 *)
4771         set X $libpth
4772         shift
4773         dflt=${1+"$@"}
4774         ;;
4775 esac
4776 rp="Directories to use for library searches?"
4777 . ./myread
4778 case "$ans" in
4779 none) libpth=' ';;
4780 *) libpth="$ans";;
4781 esac
4782
4783 : compute shared library extension
4784 case "$so" in
4785 '')
4786         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4787                 dflt='sl'
4788         else
4789                 dflt='so'
4790         fi
4791         ;;
4792 *) dflt="$so";;
4793 esac
4794 $cat <<EOM
4795
4796 On some systems, shared libraries may be available.  Answer 'none' if
4797 you want to suppress searching of shared libraries for the remainder
4798 of this configuration.
4799
4800 EOM
4801 rp='What is the file extension used for shared libraries?'
4802 . ./myread
4803 so="$ans"
4804
4805 : Define several unixisms.
4806 : Hints files or command line option can be used to override them.
4807 : The convoluted testing is in case hints files set either the old
4808 : or the new name.
4809 case "$_exe" in
4810 '')     case "$exe_ext" in
4811         '')     ;;
4812         *)      _exe="$exe_ext" ;;
4813         esac
4814         ;;
4815 esac
4816 case "$_a" in
4817 '')     case "$lib_ext" in
4818     '') _a='.a';;
4819         *)      _a="$lib_ext" ;;
4820         esac
4821         ;;
4822 esac
4823 case "$_o" in
4824 '') case "$obj_ext" in
4825         '')     _o='.o';;
4826         *)      _o="$obj_ext";;
4827         esac
4828         ;;
4829 esac
4830 case "$p_" in
4831 '') case "$path_sep" in
4832         '')     p_=':';;
4833         *)      p_="$path_sep";;
4834         esac
4835         ;;
4836 esac
4837 exe_ext=$_exe
4838 lib_ext=$_a
4839 obj_ext=$_o
4840 path_sep=$p_
4841
4842 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4843
4844 : Which makefile gets called first.  This is used by make depend.
4845 case "$firstmakefile" in
4846 '') firstmakefile='makefile';;
4847 esac
4848
4849 case "$ccflags" in
4850 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4851 esac
4852
4853 case "$uselongdouble" in
4854 $define|true|[yY]*)     dflt='y';;
4855 *) dflt='n';;
4856 esac
4857 cat <<EOM
4858
4859 Perl can be built to take advantage of long doubles which
4860 (if available) may give more accuracy and range for floating point numbers.
4861
4862 If this doesn't make any sense to you, just accept the default '$dflt'.
4863 EOM
4864 rp='Try to use long doubles if available?'
4865 . ./myread
4866 case "$ans" in
4867 y|Y)    val="$define"   ;;
4868 *)      val="$undef"    ;;
4869 esac
4870 set uselongdouble
4871 eval $setvar
4872
4873 case "$uselongdouble" in
4874 true|[yY]*) uselongdouble="$define" ;;
4875 esac
4876
4877 : Look for a hint-file generated 'call-back-unit'.  If the
4878 : user has specified that long doubles should be used,
4879 : we may need to set or change some other defaults.
4880 if $test -f uselongdouble.cbu; then
4881     echo "Your platform has some specific hints regarding long doubles, using them..."
4882     . ./uselongdouble.cbu
4883 else
4884     case "$uselongdouble" in
4885         $define)
4886                 $cat <<EOM
4887 (Your platform does not have any specific hints for long doubles.)
4888 EOM
4889         ;;
4890     esac
4891 fi
4892
4893 : Looking for optional libraries
4894 echo " "
4895 echo "Checking for optional libraries..." >&4
4896 case "$libs" in
4897 ' '|'') dflt='';;
4898 *) dflt="$libs";;
4899 esac
4900 case "$libswanted" in
4901 '') libswanted='c_s';;
4902 esac
4903 case "$usesocks" in
4904 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4905 esac
4906 libsfound=''
4907 libsfiles=''
4908 libsdirs=''
4909 libspath=''
4910 for thisdir in $libpth $xlibpth; do
4911   test -d $thisdir && libspath="$libspath $thisdir"
4912 done
4913 for thislib in $libswanted; do
4914         for thisdir in $libspath; do
4915             xxx=''
4916             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4917                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4918                 $test -f "$xxx" && eval $libscheck
4919                 $test -f "$xxx" && libstyle=shared
4920             fi
4921             if test ! -f "$xxx"; then
4922                 xxx=$thisdir/lib$thislib.$so
4923                 $test -f "$xxx" && eval $libscheck
4924                 $test -f "$xxx" && libstyle=shared
4925             fi
4926             if test ! -f "$xxx"; then
4927                 xxx=$thisdir/lib$thislib$_a
4928                 $test -f "$xxx" && eval $libscheck
4929                 $test -f "$xxx" && libstyle=static
4930             fi
4931             if test ! -f "$xxx"; then
4932                 xxx=$thisdir/$thislib$_a
4933                 $test -f "$xxx" && eval $libscheck
4934                 $test -f "$xxx" && libstyle=static
4935             fi
4936             if test ! -f "$xxx"; then
4937                 xxx=$thisdir/lib${thislib}_s$_a
4938                 $test -f "$xxx" && eval $libscheck
4939                 $test -f "$xxx" && libstyle=static
4940                 $test -f "$xxx" && thislib=${thislib}_s
4941             fi
4942             if test ! -f "$xxx"; then
4943                 xxx=$thisdir/Slib$thislib$_a
4944                 $test -f "$xxx" && eval $libscheck
4945                 $test -f "$xxx" && libstyle=static
4946             fi
4947             if $test -f "$xxx"; then
4948                 case "$libstyle" in
4949                 shared) echo "Found -l$thislib (shared)." ;;
4950                 static) echo "Found -l$thislib." ;;
4951                 *)      echo "Found -l$thislib ($libstyle)." ;;
4952                 esac
4953                 case " $dflt " in
4954                 *"-l$thislib "*);;
4955                 *) dflt="$dflt -l$thislib"
4956                    libsfound="$libsfound $xxx"
4957                    yyy=`basename $xxx`
4958                    libsfiles="$libsfiles $yyy"
4959                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4960                    case " $libsdirs " in
4961                    *" $yyy "*) ;;
4962                    *) libsdirs="$libsdirs $yyy" ;;
4963                    esac
4964                    ;;
4965                 esac
4966                 break
4967             fi
4968         done
4969         if $test ! -f "$xxx"; then
4970             echo "No -l$thislib."
4971         fi
4972 done
4973 set X $dflt
4974 shift
4975 dflt="$*"
4976 case "$libs" in
4977 '') dflt="$dflt";;
4978 *) dflt="$libs";;
4979 esac
4980 case "$dflt" in
4981 ' '|'') dflt='none';;
4982 esac
4983
4984 $cat <<EOM
4985
4986 In order to compile $package on your machine, a number of libraries
4987 are usually needed.  Include any other special libraries here as well.
4988 Say "none" for none.  The default list is almost always right.
4989 EOM
4990
4991 echo " "
4992 rp="What libraries to use?"
4993 . ./myread
4994 case "$ans" in
4995 none) libs=' ';;
4996 *) libs="$ans";;
4997 esac
4998
4999 : determine optimization, if desired, or use for debug flag also
5000 case "$optimize" in
5001 ' '|$undef) dflt='none';;
5002 '') dflt='-O';;
5003 *) dflt="$optimize";;
5004 esac
5005 $cat <<EOH
5006
5007 By default, $package compiles with the -O flag to use the optimizer.
5008 Alternately, you might want to use the symbolic debugger, which uses
5009 the -g flag (on traditional Unix systems).  Either flag can be
5010 specified here.  To use neither flag, specify the word "none".
5011
5012 EOH
5013 rp="What optimizer/debugger flag should be used?"
5014 . ./myread
5015 optimize="$ans"
5016 case "$optimize" in
5017 'none') optimize=" ";;
5018 esac
5019
5020 : Check what DEBUGGING is required from the command line
5021 : -DEBUGGING      or -DDEBUGGING or
5022 : -DEBUGGING=both                       = -g + -DDEBUGGING
5023 : -DEBUGGING=-g   or -Doptimize=-g      = -g
5024 : -DEBUGGING=none or -UDEBUGGING        =
5025 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
5026 case "$EBUGGING" in
5027 '')     ;;
5028 *)      DEBUGGING=$EBUGGING ;;
5029 esac
5030
5031 case "$DEBUGGING" in
5032 -g|both|$define)
5033     case "$optimize" in
5034         *-g*) ;;
5035         *)    optimize="$optimize -g" ;;
5036     esac ;;
5037 none|$undef)
5038     case "$optimize" in
5039         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5040                 shift
5041                 optimize="$*"
5042                 ;;
5043     esac ;;
5044 esac
5045
5046 dflt=''
5047 case "$DEBUGGING" in
5048 both|$define) dflt='-DDEBUGGING'
5049 esac
5050
5051 : argument order is deliberate, as the flag will start with - which set could
5052 : think is an option
5053 checkccflag='check=$1; flag=$2; callback=$3;
5054 echo " ";
5055 echo "Checking if your compiler accepts $flag" 2>&1;
5056 echo "int main(void) { return 0; }" > gcctest.c;
5057 if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
5058     echo "Yes, it does." 2>&1;
5059     if $test -s gcctest.out ; then
5060         echo "But your platform does not like it:";
5061         cat gcctest.out;
5062     else
5063         case "$ccflags" in
5064         *$check*)
5065             echo "Leaving current flags $ccflags alone." 2>&1
5066             ;;
5067         *) dflt="$dflt $flag";
5068             eval $callback
5069             ;;
5070         esac
5071     fi
5072 else
5073     echo "Nope, it does not, but that is ok." 2>&1;
5074 fi
5075 '
5076
5077 : We will not override a previous value, but we might want to
5078 : augment a hint file
5079 case "$hint" in
5080 default|recommended)
5081         case "$gccversion" in
5082         1*) dflt="$dflt -fpcc-struct-return" ;;
5083         esac
5084         case "$optimize:$DEBUGGING" in
5085         *-g*:old) dflt="$dflt -DDEBUGGING";;
5086         esac
5087         case "$gccversion" in
5088         2*) if $test -d /etc/conf/kconfig.d &&
5089                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5090                 then
5091                         # Interactive Systems (ISC) POSIX mode.
5092                         dflt="$dflt -posix"
5093                 fi
5094                 ;;
5095         esac
5096         case "$gccversion" in
5097         1*) ;;
5098         2.[0-8]*) ;;
5099         ?*)     set strict-aliasing -fno-strict-aliasing
5100                 eval $checkccflag
5101                 ;;
5102         esac
5103         # For gcc, adding -pipe speeds up compilations for some, but apparently
5104         # some assemblers can't read from stdin.  (It also slows down compilations
5105         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5106         case "$gccversion" in
5107         ?*)     set pipe -pipe
5108                 eval $checkccflag
5109                 ;;
5110         esac
5111
5112         # on x86_64 (at least) we require an extra library (libssp) in the
5113         # link command line. This library is not named, so I infer that it is
5114         # an implementation detail that may change. Hence the safest approach
5115         # is to add the flag to the flags passed to the compiler at link time,
5116         # as that way the compiler can do the right implementation dependant
5117         # thing. (NWC)
5118         case "$gccversion" in
5119         ?*)     set stack-protector -fstack-protector 'ldflags="$ldflags -fstack-protector"'
5120                 eval $checkccflag
5121                 ;;
5122         esac
5123         ;;
5124 esac
5125
5126 case "$mips_type" in
5127 *BSD*|'') inclwanted="$locincpth $usrinc";;
5128 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5129 esac
5130 for thisincl in $inclwanted; do
5131         if $test -d $thisincl; then
5132                 if $test x$thisincl != x$usrinc; then
5133                         case "$dflt" in
5134                         *" -I$thisincl "*);;
5135                         *) dflt="$dflt -I$thisincl ";;
5136                         esac
5137                 fi
5138         fi
5139 done
5140
5141 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5142         xxx=true;
5143 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5144         xxx=true;
5145 else
5146         xxx=false;
5147 fi;
5148 if $xxx; then
5149         case "$dflt" in
5150         *$2*);;
5151         *) dflt="$dflt -D$2";;
5152         esac;
5153 fi'
5154
5155 set signal.h LANGUAGE_C; eval $inctest
5156
5157 case "$usesocks" in
5158 $define)
5159         ccflags="$ccflags -DSOCKS"
5160         ;;
5161 esac
5162
5163 case "$hint" in
5164 default|recommended) dflt="$ccflags $dflt" ;;
5165 *) dflt="$ccflags";;
5166 esac
5167
5168 case "$dflt" in
5169 ''|' ') dflt=none;;
5170 esac
5171
5172 $cat <<EOH
5173
5174 Your C compiler may want other flags.  For this question you should include
5175 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5176 but you should NOT include libraries or ld flags like -lwhatever.  If you
5177 want $package to honor its debug switch, you should include -DDEBUGGING here.
5178 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5179
5180 To use no flags, specify the word "none".
5181
5182 EOH
5183 set X $dflt
5184 shift
5185 dflt=${1+"$@"}
5186 rp="Any additional cc flags?"
5187 . ./myread
5188 case "$ans" in
5189 none) ccflags='';;
5190 *) ccflags="$ans";;
5191 esac
5192
5193 : the following weeds options from ccflags that are of no interest to cpp
5194 case "$cppflags" in
5195 '') cppflags="$ccflags" ;;
5196 *)  cppflags="$cppflags $ccflags" ;;
5197 esac
5198 case "$gccversion" in
5199 1*) cppflags="$cppflags -D__GNUC__"
5200 esac
5201 case "$mips_type" in
5202 '');;
5203 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5204 esac
5205 case "$cppflags" in
5206 '');;
5207 *)
5208         echo " "
5209         echo "Let me guess what the preprocessor flags are..." >&4
5210         set X $cppflags
5211         shift
5212         cppflags=''
5213         $cat >cpp.c <<'EOM'
5214 #define BLURFL foo
5215
5216 BLURFL xx LFRULB
5217 EOM
5218         previous=''
5219         for flag in $*
5220         do
5221                 case "$flag" in
5222                 -*) ftry="$flag";;
5223                 *) ftry="$previous $flag";;
5224                 esac
5225                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5226                         >cpp1.out 2>/dev/null && \
5227                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5228                         >cpp2.out 2>/dev/null && \
5229                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5230                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5231                 then
5232                         cppflags="$cppflags $ftry"
5233                         previous=''
5234                 else
5235                         previous="$flag"
5236                 fi
5237         done
5238         set X $cppflags
5239         shift
5240         cppflags=${1+"$@"}
5241         case "$cppflags" in
5242         *-*)  echo "They appear to be: $cppflags";;
5243         esac
5244         $rm -f cpp.c cpp?.out
5245         ;;
5246 esac
5247
5248 : flags used in final linking phase
5249 case "$ldflags" in
5250 '') if ./venix; then
5251                 dflt='-i -z'
5252         else
5253                 dflt=''
5254         fi
5255         case "$ccflags" in
5256         *-posix*) dflt="$dflt -posix" ;;
5257         esac
5258         ;;
5259 *) dflt="$ldflags";;
5260 esac
5261
5262 : Try to guess additional flags to pick up local libraries.
5263 for thislibdir in $libpth; do
5264         case " $loclibpth " in
5265         *" $thislibdir "*)
5266                 case "$dflt " in
5267                 *"-L$thislibdir "*) ;;
5268                 *)  dflt="$dflt -L$thislibdir" ;;
5269                 esac
5270                 ;;
5271         esac
5272 done
5273
5274 case "$dflt" in
5275 '') dflt='none' ;;
5276 esac
5277
5278 $cat <<EOH
5279
5280 Your C linker may need flags.  For this question you should
5281 include -L/whatever and any other flags used by the C linker, but you
5282 should NOT include libraries like -lwhatever.
5283
5284 Make sure you include the appropriate -L/path flags if your C linker
5285 does not normally search all of the directories you specified above,
5286 namely
5287         $libpth
5288 To use no flags, specify the word "none".
5289
5290 EOH
5291
5292 rp="Any additional ld flags (NOT including libraries)?"
5293 . ./myread
5294 case "$ans" in
5295 none) ldflags='';;
5296 *) ldflags="$ans";;
5297 esac
5298 rmlist="$rmlist pdp11"
5299
5300 : coherency check
5301 echo " "
5302 echo "Checking your choice of C compiler and flags for coherency..." >&4
5303 $cat > try.c <<'EOF'
5304 #include <stdio.h>
5305 int main() { printf("Ok\n"); return(0); }
5306 EOF
5307 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5308 shift
5309 $cat >try.msg <<'EOM'
5310 I've tried to compile and run the following simple program:
5311
5312 EOM
5313 $cat try.c >> try.msg
5314
5315 $cat >> try.msg <<EOM
5316
5317 I used the command:
5318
5319         $*
5320         $run ./try
5321
5322 and I got the following output:
5323
5324 EOM
5325 dflt=y
5326 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5327         if $sh -c "$run ./try " >>try.msg 2>&1; then
5328                 xxx=`$run ./try`
5329                 case "$xxx" in
5330                 "Ok") dflt=n ;;
5331                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5332                         case " $libs " in
5333                         *" -lsfio "*)
5334                                 cat >> try.msg <<'EOQS'
5335 If $libs contains -lsfio, and sfio is mis-configured, then it
5336 sometimes (apparently) runs and exits with a 0 status, but with no
5337 output!  It may have to do with sfio's use of _exit vs. exit.
5338
5339 EOQS
5340                                 rp="You have a big problem.  Shall I abort Configure"
5341                                 dflt=y
5342                                 ;;
5343                         esac
5344                         ;;
5345                 esac
5346         else
5347                 echo "The program compiled OK, but exited with status $?." >>try.msg
5348                 rp="You have a problem.  Shall I abort Configure"
5349                 dflt=y
5350         fi
5351 else
5352         echo "I can't compile the test program." >>try.msg
5353         rp="You have a BIG problem.  Shall I abort Configure"
5354         dflt=y
5355 fi
5356 case "$dflt" in
5357 y)
5358         $cat try.msg >&4
5359         case "$knowitall" in
5360         '')
5361                 echo "(The supplied flags or libraries might be incorrect.)"
5362                 ;;
5363         *) dflt=n;;
5364         esac
5365         echo " "
5366         . ./myread
5367         case "$ans" in
5368         n*|N*) ;;
5369         *)      echo "Ok.  Stopping Configure." >&4
5370                 exit 1
5371                 ;;
5372         esac
5373         ;;
5374 n) echo "OK, that should do.";;
5375 esac
5376 $rm_try gcctest gcctest.out
5377
5378 : define a shorthand compile call
5379 compile='
5380 mc_file=$1;
5381 shift;
5382 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5383 : define a shorthand compile call for compilations that should be ok.
5384 compile_ok='
5385 mc_file=$1;
5386 shift;
5387 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5388
5389 : determine filename position in cpp output
5390 echo " "
5391 echo "Computing filename position in cpp output for #include directives..." >&4
5392 case "$osname" in
5393 vos) testaccess=-e ;;
5394 *)   testaccess=-r ;;
5395 esac
5396 echo '#include <stdio.h>' > foo.c
5397 $cat >fieldn <<EOF
5398 $startsh
5399 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5400 $grep '^[       ]*#.*stdio\.h' | \
5401 while read cline; do
5402         pos=1
5403         set \$cline
5404         while $test \$# -gt 0; do
5405                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5406                         echo "\$pos"
5407                         exit 0
5408                 fi
5409                 shift
5410                 pos=\`expr \$pos + 1\`
5411         done
5412 done
5413 EOF
5414 chmod +x fieldn
5415 fieldn=`./fieldn`
5416 $rm -f foo.c fieldn
5417 case $fieldn in
5418 '') pos='???';;
5419 1) pos=first;;
5420 2) pos=second;;
5421 3) pos=third;;
5422 *) pos="${fieldn}th";;
5423 esac
5424 echo "Your cpp writes the filename in the $pos field of the line."
5425
5426 case "$osname" in
5427 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5428 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5429 *)   cppfilter='' ;;
5430 esac
5431 : locate header file
5432 $cat >findhdr <<EOF
5433 $startsh
5434 wanted=\$1
5435 name=''
5436 for usrincdir in $usrinc
5437 do
5438         if test -f \$usrincdir/\$wanted; then
5439                 echo "\$usrincdir/\$wanted"
5440                 exit 0
5441         fi
5442 done
5443 awkprg='{ print \$$fieldn }'
5444 echo "#include <\$wanted>" > foo\$\$.c
5445 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5446 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5447 while read cline; do
5448         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5449         case "\$name" in
5450         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5451         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5452         *) exit 2;;
5453         esac;
5454 done;
5455 #
5456 # status = 0: grep returned 0 lines, case statement not executed
5457 # status = 1: headerfile found
5458 # status = 2: while loop executed, no headerfile found
5459 #
5460 status=\$?
5461 $rm -f foo\$\$.c;
5462 if test \$status -eq 1; then
5463         exit 0;
5464 fi
5465 exit 1
5466 EOF
5467 chmod +x findhdr
5468
5469 : define an alternate in-header-list? function
5470 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5471 cont=true; xxf="echo \"<\$1> found.\" >&4";
5472 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5473 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5474 esac;
5475 case $# in 4) instead=instead;; *) instead="at last";; esac;
5476 while $test "$cont"; do
5477         xxx=`./findhdr $1`
5478         var=$2; eval "was=\$$2";
5479         if $test "$xxx" && $test -r "$xxx";
5480         then eval $xxf;
5481         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5482                 cont="";
5483         else eval $xxnf;
5484         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5485         set $yyy; shift; shift; yyy=$@;
5486         case $# in 0) cont="";;
5487         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5488                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5489         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5490                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5491         esac;
5492 done;
5493 while $test "$yyy";
5494 do set $yyy; var=$2; eval "was=\$$2";
5495         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5496         set $yyy; shift; shift; yyy=$@;
5497 done'
5498
5499 : see if stdlib is available
5500 set stdlib.h i_stdlib
5501 eval $inhdr
5502
5503 : check for lengths of integral types
5504 echo " "
5505 case "$intsize" in
5506 '')
5507         echo "Checking to see how big your integers are..." >&4
5508         $cat >try.c <<EOCP
5509 #include <stdio.h>
5510 #$i_stdlib I_STDLIB
5511 #ifdef I_STDLIB
5512 #include <stdlib.h>
5513 #endif
5514 int main()
5515 {
5516         printf("intsize=%d;\n", (int)sizeof(int));
5517         printf("longsize=%d;\n", (int)sizeof(long));
5518         printf("shortsize=%d;\n", (int)sizeof(short));
5519         exit(0);
5520 }
5521 EOCP
5522         set try
5523         if eval $compile_ok && $run ./try > /dev/null; then
5524                 eval `$run ./try`
5525                 echo "Your integers are $intsize bytes long."
5526                 echo "Your long integers are $longsize bytes long."
5527                 echo "Your short integers are $shortsize bytes long."
5528         else
5529                 $cat >&4 <<EOM
5530 !
5531 Help! I can't compile and run the intsize test program: please enlighten me!
5532 (This is probably a misconfiguration in your system or libraries, and
5533 you really ought to fix it.  Still, I'll try anyway.)
5534 !
5535 EOM
5536                 dflt=4
5537                 rp="What is the size of an integer (in bytes)?"
5538                 . ./myread
5539                 intsize="$ans"
5540                 dflt=$intsize
5541                 rp="What is the size of a long integer (in bytes)?"
5542                 . ./myread
5543                 longsize="$ans"
5544                 dflt=2
5545                 rp="What is the size of a short integer (in bytes)?"
5546                 . ./myread
5547                 shortsize="$ans"
5548         fi
5549         ;;
5550 esac
5551 $rm_try
5552
5553 : check for long long
5554 echo " "
5555 echo "Checking to see if you have long long..." >&4
5556 echo 'int main() { long long x = 7; return 0; }' > try.c
5557 set try
5558 if eval $compile; then
5559         val="$define"
5560         echo "You have long long."
5561 else
5562         val="$undef"
5563         echo "You do not have long long."
5564 fi
5565 $rm_try
5566 set d_longlong
5567 eval $setvar
5568
5569 : check for length of long long
5570 case "${d_longlong}${longlongsize}" in
5571 $define)
5572         echo " "
5573         echo "Checking to see how big your long longs are..." >&4
5574         $cat >try.c <<'EOCP'
5575 #include <stdio.h>
5576 int main()
5577 {
5578     printf("%d\n", (int)sizeof(long long));
5579     return(0);
5580 }
5581 EOCP
5582         set try
5583         if eval $compile_ok; then
5584                 longlongsize=`$run ./try`
5585                 echo "Your long longs are $longlongsize bytes long."
5586         else
5587                 dflt='8'
5588                 echo " "
5589                 echo "(I can't seem to compile the test program.  Guessing...)"
5590                 rp="What is the size of a long long (in bytes)?"
5591                 . ./myread
5592                 longlongsize="$ans"
5593         fi
5594         if $test "X$longsize" = "X$longlongsize"; then
5595                 echo "(That isn't any different from an ordinary long.)"
5596         fi
5597         ;;
5598 esac
5599 $rm_try
5600
5601 : see if inttypes.h is available
5602 : we want a real compile instead of Inhdr because some systems
5603 : have an inttypes.h which includes non-existent headers
5604 echo " "
5605 $cat >try.c <<EOCP
5606 #include <inttypes.h>
5607 int main() {
5608         static int32_t foo32 = 0x12345678;
5609 }
5610 EOCP
5611 set try
5612 if eval $compile; then
5613         echo "<inttypes.h> found." >&4
5614         val="$define"
5615 else
5616         echo "<inttypes.h> NOT found." >&4
5617         val="$undef"
5618 fi
5619 $rm_try
5620 set i_inttypes
5621 eval $setvar
5622
5623 : check for int64_t
5624 echo " "
5625 echo "Checking to see if you have int64_t..." >&4
5626 $cat >try.c <<EOCP
5627 #include <sys/types.h>
5628 #$i_inttypes I_INTTYPES
5629 #ifdef I_INTTYPES
5630 #include <inttypes.h>
5631 #endif
5632 int main() { int64_t x = 7; }
5633 EOCP
5634 set try
5635 if eval $compile; then
5636         val="$define"
5637         echo "You have int64_t."
5638 else
5639         val="$undef"
5640         echo "You do not have int64_t."
5641 fi
5642 $rm_try
5643 set d_int64_t
5644 eval $setvar
5645
5646 : Check if 64bit ints have a quad type
5647 echo " "
5648 echo "Checking which 64-bit integer type we could use..." >&4
5649
5650 case "$intsize" in
5651 8) val=int
5652    set quadtype
5653    eval $setvar
5654    val='"unsigned int"'
5655    set uquadtype
5656    eval $setvar
5657    quadkind=1
5658    ;;
5659 *) case "$longsize" in
5660    8) val=long
5661       set quadtype
5662       eval $setvar
5663       val='"unsigned long"'
5664       set uquadtype
5665       eval $setvar
5666       quadkind=2
5667       ;;
5668    *) case "$d_longlong:$longlongsize" in
5669       define:8)
5670         val='"long long"'
5671         set quadtype
5672         eval $setvar
5673         val='"unsigned long long"'
5674         set uquadtype
5675         eval $setvar
5676         quadkind=3
5677         ;;
5678       *) case "$d_int64_t" in
5679          define)
5680            val=int64_t
5681            set quadtype
5682            eval $setvar
5683            val=uint64_t
5684            set uquadtype
5685            eval $setvar
5686            quadkind=4
5687            ;;
5688          esac
5689          ;;
5690       esac
5691       ;;
5692    esac
5693    ;;
5694 esac
5695
5696 case "$quadtype" in
5697 '')     echo "Alas, no 64-bit integer types in sight." >&4
5698         d_quad="$undef"
5699         ;;
5700 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5701         d_quad="$define"
5702         ;;
5703 esac
5704
5705
5706 case "$uselonglong" in
5707 "$define"|true|[yY]*)
5708         cat <<EOM >&4
5709
5710 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5711 EOM
5712         use64bitint="$define"
5713         ;;
5714 esac
5715 case "$use64bits" in
5716 "$define"|true|[yY]*)
5717         cat <<EOM >&4
5718
5719 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5720 EOM
5721         use64bitint="$define"
5722         ;;
5723 esac
5724 case "$use64bitints" in
5725 "$define"|true|[yY]*)
5726         cat <<EOM >&4
5727
5728 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5729 EOM
5730         use64bitint="$define"
5731         ;;
5732 esac
5733 case "$use64bitsint" in
5734 "$define"|true|[yY]*)
5735         cat <<EOM >&4
5736
5737 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5738 EOM
5739         use64bitint="$define"
5740         ;;
5741 esac
5742 case "$uselonglongs" in
5743 "$define"|true|[yY]*)
5744         cat <<EOM >&4
5745
5746 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5747 EOM
5748         use64bitint="$define"
5749         ;;
5750 esac
5751 case "$use64bitsall" in
5752 "$define"|true|[yY]*)
5753         cat <<EOM >&4
5754
5755 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5756 EOM
5757         use64bitall="$define"
5758         ;;
5759 esac
5760
5761 case "$ccflags" in
5762 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5763 esac
5764 case "$use64bitall" in
5765 "$define"|true|[yY]*) use64bitint="$define" ;;
5766 esac
5767
5768 case "$longsize" in
5769 8) cat <<EOM
5770
5771 You have natively 64-bit long integers.
5772 EOM
5773    val="$define"
5774    ;;
5775 *) case "$use64bitint" in
5776    "$define"|true|[yY]*) dflt='y';;
5777    *) dflt='n';;
5778    esac
5779    case "$d_quad" in
5780    "$define") ;;
5781    *) dflt='n' ;;
5782    esac
5783    cat <<EOM
5784
5785 Perl can be built to take advantage of 64-bit integer types
5786 on some systems.  To do so, Configure can be run with -Duse64bitint.
5787 Choosing this option will most probably introduce binary incompatibilities.
5788
5789 If this doesn't make any sense to you, just accept the default '$dflt'.
5790 (The default has been chosen based on your configuration.)
5791 EOM
5792    rp='Try to use 64-bit integers, if available?'
5793    . ./myread
5794    case "$ans" in
5795    [yY]*) val="$define" ;;
5796    *)     val="$undef"  ;;
5797    esac
5798    ;;
5799 esac
5800 set use64bitint
5801 eval $setvar
5802
5803 case "$use64bitall" in
5804 "$define"|true|[yY]*) dflt='y' ;;
5805 *) case "$longsize" in
5806    8) dflt='y' ;;
5807    *) dflt='n' ;;
5808    esac
5809    ;;
5810 esac
5811 cat <<EOM
5812
5813 You may also choose to try maximal 64-bitness.  It means using as much
5814 64-bitness as possible on the platform.  This in turn means even more
5815 binary incompatibilities.  On the other hand, your platform may not
5816 have any more 64-bitness available than what you already have chosen.
5817
5818 If this doesn't make any sense to you, just accept the default '$dflt'.
5819 (The default has been chosen based on your configuration.)
5820 EOM
5821 rp='Try to use maximal 64-bit support, if available?'
5822 . ./myread
5823 case "$ans" in
5824 [yY]*) val="$define" ;;
5825 *)     val="$undef"  ;;
5826 esac
5827 set use64bitall
5828 eval $setvar
5829 case "$use64bitall" in
5830 "$define")
5831         case "$use64bitint" in
5832         "$undef")
5833                 cat <<EOM
5834
5835 Since you have chosen a maximally 64-bit build, I'm also turning on
5836 the use of 64-bit integers.
5837 EOM
5838                 use64bitint="$define" ;;
5839         esac
5840         ;;
5841 esac
5842
5843 : Look for a hint-file generated 'call-back-unit'.  If the
5844 : user has specified that a 64-bit perl is to be built,
5845 : we may need to set or change some other defaults.
5846 if $test -f use64bitint.cbu; then
5847         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5848         . ./use64bitint.cbu
5849 fi
5850 case "$use64bitint" in
5851 "$define"|true|[yY]*)
5852         case "$longsize" in
5853         4) case "$archname64" in
5854            '') archname64=64int ;;
5855            esac
5856            ;;
5857         esac
5858         ;;
5859 esac
5860
5861 : Look for a hint-file generated 'call-back-unit'.  If the
5862 : user has specified that a maximally 64-bit perl is to be built,
5863 : we may need to set or change some other defaults.
5864 if $test -f use64bitall.cbu; then
5865         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5866         . ./use64bitall.cbu
5867 fi
5868 case "$use64bitall" in
5869 "$define"|true|[yY]*)
5870         case "$longsize" in
5871         4) case "$archname64" in
5872            ''|64int) archname64=64all ;;
5873            esac
5874            ;;
5875         esac
5876         ;;
5877 esac
5878
5879 case "$d_quad:$use64bitint" in
5880 $undef:$define)
5881         cat >&4 <<EOF
5882
5883 *** You have chosen to use 64-bit integers,
5884 *** but none can be found.
5885 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5886 *** Cannot continue, aborting.
5887
5888 EOF
5889         exit 1
5890         ;;
5891 esac
5892
5893 : check for length of double
5894 echo " "
5895 case "$doublesize" in
5896 '')
5897         echo "Checking to see how big your double precision numbers are..." >&4
5898         $cat >try.c <<EOCP
5899 #include <stdio.h>
5900 #$i_stdlib I_STDLIB
5901 #ifdef I_STDLIB
5902 #include <stdlib.h>
5903 #endif
5904 int main()
5905 {
5906     printf("%d\n", (int)sizeof(double));
5907     exit(0);
5908 }
5909 EOCP
5910         set try
5911         if eval $compile_ok; then
5912                 doublesize=`$run ./try`
5913                 echo "Your double is $doublesize bytes long."
5914         else
5915                 dflt='8'
5916                 echo "(I can't seem to compile the test program.  Guessing...)"
5917                 rp="What is the size of a double precision number (in bytes)?"
5918                 . ./myread
5919                 doublesize="$ans"
5920         fi
5921         ;;
5922 esac
5923 $rm_try
5924
5925 : check for long doubles
5926 echo " "
5927 echo "Checking to see if you have long double..." >&4
5928 echo 'int main() { long double x = 7.0; }' > try.c
5929 set try
5930 if eval $compile; then
5931         val="$define"
5932         echo "You have long double."
5933 else
5934         val="$undef"
5935         echo "You do not have long double."
5936 fi
5937 $rm_try
5938 set d_longdbl
5939 eval $setvar
5940
5941 : check for length of long double
5942 case "${d_longdbl}${longdblsize}" in
5943 $define)
5944         echo " "
5945         echo "Checking to see how big your long doubles are..." >&4
5946         $cat >try.c <<'EOCP'
5947 #include <stdio.h>
5948 int main()
5949 {
5950         printf("%d\n", sizeof(long double));
5951 }
5952 EOCP
5953         set try
5954         set try
5955         if eval $compile; then
5956                 longdblsize=`$run ./try`
5957                 echo "Your long doubles are $longdblsize bytes long."
5958         else
5959                 dflt='8'
5960                 echo " "
5961                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5962                 rp="What is the size of a long double (in bytes)?"
5963                 . ./myread
5964                 longdblsize="$ans"
5965         fi
5966         if $test "X$doublesize" = "X$longdblsize"; then
5967                 echo "That isn't any different from an ordinary double."
5968                 echo "I'll keep your setting anyway, but you may see some"
5969                 echo "harmless compilation warnings."
5970         fi
5971         ;;
5972 esac
5973 $rm_try
5974
5975 : determine the architecture name
5976 echo " "
5977 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5978         tarch=`arch`"-$osname"
5979 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5980         if uname -m > tmparch 2>&1 ; then
5981                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5982                         -e 's/$/'"-$osname/" tmparch`
5983         else
5984                 tarch="$osname"
5985         fi
5986         $rm -f tmparch
5987 else
5988         tarch="$osname"
5989 fi
5990 case "$myarchname" in
5991 ''|"$tarch") ;;
5992 *)
5993         echo "(Your architecture name used to be $myarchname.)"
5994         archname=''
5995         ;;
5996 esac
5997 case "$targetarch" in
5998 '') ;;
5999 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6000 esac
6001 myarchname="$tarch"
6002 case "$archname" in
6003 '') dflt="$tarch";;
6004 *) dflt="$archname";;
6005 esac
6006 rp='What is your architecture name'
6007 . ./myread
6008 archname="$ans"
6009 case "$usethreads" in
6010 $define)
6011         echo "Threads selected." >&4
6012         case "$archname" in
6013         *-thread*) echo "...and architecture name already has -thread." >&4
6014                 ;;
6015         *)      archname="$archname-thread"
6016                 echo "...setting architecture name to $archname." >&4
6017                 ;;
6018         esac
6019         ;;
6020 esac
6021 case "$usemultiplicity" in
6022 $define)
6023         echo "Multiplicity selected." >&4
6024         case "$archname" in
6025         *-multi*) echo "...and architecture name already has -multi." >&4
6026                 ;;
6027         *)      archname="$archname-multi"
6028                 echo "...setting architecture name to $archname." >&4
6029                 ;;
6030         esac
6031         ;;
6032 esac
6033 case "$use64bitint$use64bitall" in
6034 *"$define"*)
6035         case "$archname64" in
6036         '')
6037                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6038                 ;;
6039         *)
6040                 case "$use64bitint" in
6041                 "$define") echo "64 bit integers selected." >&4 ;;
6042                 esac
6043                 case "$use64bitall" in
6044                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6045                 esac
6046                 case "$archname" in
6047                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6048                         ;;
6049                 *)      archname="$archname-$archname64"
6050                         echo "...setting architecture name to $archname." >&4
6051                         ;;
6052                 esac
6053                 ;;
6054         esac
6055 esac
6056 case "$uselongdouble" in
6057 $define)
6058         echo "Long doubles selected." >&4
6059         case "$longdblsize" in
6060         $doublesize)
6061                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6062                 ;;
6063         *)
6064                 case "$archname" in
6065                 *-ld*) echo "...and architecture name already has -ld." >&4
6066                         ;;
6067                 *)      archname="$archname-ld"
6068                         echo "...setting architecture name to $archname." >&4
6069                         ;;
6070                 esac
6071                 ;;
6072         esac
6073         ;;
6074 esac
6075 case "$useperlio" in
6076 $define)
6077         echo "Perlio selected." >&4
6078         ;;
6079 *)
6080         echo "Perlio not selected, using stdio." >&4
6081         case "$archname" in
6082         *-stdio*) echo "...and architecture name already has -stdio." >&4
6083                 ;;
6084         *)      archname="$archname-stdio"
6085                 echo "...setting architecture name to $archname." >&4
6086                 ;;
6087         esac
6088         ;;
6089 esac
6090 if $test -f archname.cbu; then
6091         echo "Your platform has some specific hints for architecture name, using them..."
6092         . ./archname.cbu
6093 fi
6094
6095 : set the prefixit variable, to compute a suitable default value
6096 prefixit='case "$3" in
6097 ""|none)
6098         case "$oldprefix" in
6099         "") eval "$1=\"\$$2\"";;
6100         *)
6101                 case "$3" in
6102                 "") eval "$1=";;
6103                 none)
6104                         eval "tp=\"\$$2\"";
6105                         case "$tp" in
6106                         ""|" ") eval "$1=\"\$$2\"";;
6107                         *) eval "$1=";;
6108                         esac;;
6109                 esac;;
6110         esac;;
6111 *)
6112         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6113         case "$tp" in
6114         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6115         /*-$oldprefix/*|\~*-$oldprefix/*)
6116                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6117         *) eval "$1=\"\$$2\"";;
6118         esac;;
6119 esac'
6120
6121 : determine installation style
6122 : For now, try to deduce it from prefix unless it is already set.
6123 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6124 case "$installstyle" in
6125 '')     case "$prefix" in
6126                 *perl*) dflt='lib';;
6127                 *) dflt='lib/perl5' ;;
6128         esac
6129         ;;
6130 *)      dflt="$installstyle" ;;
6131 esac
6132 : Probably not worth prompting for this since we prompt for all
6133 : the directories individually, and the prompt would be too long and
6134 : confusing anyway.
6135 installstyle=$dflt
6136
6137 : determine where public executables go
6138 echo " "
6139 set dflt bin bin
6140 eval $prefixit
6141 fn=d~
6142 rp='Pathname where the public executables will reside?'
6143 . ./getfile
6144 if $test "X$ansexp" != "X$binexp"; then
6145         installbin=''
6146 fi
6147 prefixvar=bin
6148 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6149 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6150 :     this via initialinstalllocation
6151 . ./setprefixvar
6152
6153 case "$userelocatableinc" in
6154 $define|true|[yY]*)     dflt='y' ;;
6155 *)                      dflt='n' ;;
6156 esac
6157 cat <<EOM
6158
6159 Would you like to build Perl so that the installation is relocatable, so that
6160 library paths in @INC are determined relative to the path of the perl binary?
6161 This is not advised for system Perl installs, or if you need to run setid
6162 scripts or scripts under taint mode.
6163
6164 If this doesn't make any sense to you, just accept the default '$dflt'.
6165 EOM
6166 rp='Use relocatable @INC?'
6167 . ./myread
6168 case "$ans" in
6169 y|Y)    val="$define" ;;
6170 *)      val="$undef"  ;;
6171 esac
6172 set userelocatableinc
6173 eval $setvar
6174
6175 initialinstalllocation="$binexp"
6176 : Default prefix is now "up one level from where the binaries are"
6177 case "$userelocatableinc" in
6178 $define|true|[yY]*)
6179     bin=".../"
6180     binexp=".../"
6181     prefix=".../.."
6182     prefixexp=".../.."
6183     installprefixexp=".../.."
6184     ;;
6185 esac
6186
6187 : determine where private library files go
6188 : Usual default is /usr/local/lib/perl5/$version.
6189 : Also allow things like /opt/perl/lib/$version, since
6190 : /opt/perl/lib/perl5... would be redundant.
6191 : The default "style" setting is made in installstyle.U
6192 case "$installstyle" in
6193 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6194 *)       set dflt privlib lib/$version ;;
6195 esac
6196 eval $prefixit
6197 $cat <<EOM
6198
6199 There are some auxiliary files for $package that need to be put into a
6200 private library directory that is accessible by everyone.
6201
6202 EOM
6203 fn=$binexp
6204 fn=d~+
6205 rp='Pathname where the private library files will reside?'
6206 . ./getfile
6207 prefixvar=privlib
6208 . ./setprefixvar
6209
6210 : set the prefixup variable, to restore leading tilda escape
6211 prefixup='case "$prefixexp" in
6212 "$prefix") ;;
6213 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6214 esac'
6215
6216 : determine where public architecture dependent libraries go
6217 set archlib archlib
6218 eval $prefixit
6219 : privlib default is /usr/local/lib/$package/$version
6220 : archlib default is /usr/local/lib/$package/$version/$archname
6221 : privlib may have an optional trailing /share.
6222 tdflt=`echo $privlib | $sed 's,/share$,,'`
6223 tdflt=$tdflt/$archname
6224 case "$archlib" in
6225 '')     dflt=$tdflt
6226         ;;
6227 *)      dflt="$archlib"
6228     ;;
6229 esac
6230 $cat <<EOM
6231
6232 $spackage contains architecture-dependent library files.  If you are
6233 sharing libraries in a heterogeneous environment, you might store
6234 these files in a separate location.  Otherwise, you can just include
6235 them with the rest of the public library files.
6236
6237 EOM
6238 fn=$binexp
6239 fn=d+~
6240 rp='Where do you want to put the public architecture-dependent libraries?'
6241 . ./getfile
6242 prefixvar=archlib
6243 . ./setprefixvar
6244 if $test X"$archlib" = X"$privlib"; then
6245         d_archlib="$undef"
6246 else
6247         d_archlib="$define"
6248 fi
6249
6250 : see if setuid scripts can be secure
6251 $cat <<EOM
6252
6253 Some kernels have a bug that prevents setuid #! scripts from being
6254 secure.  Some sites have disabled setuid #! scripts because of this.
6255
6256 First let's decide if your kernel supports secure setuid #! scripts.
6257 (If setuid #! scripts would be secure but have been disabled anyway,
6258 don't say that they are secure if asked.)
6259
6260 EOM
6261
6262 val="$undef"
6263 if $test -d /dev/fd; then
6264         echo "#!$ls" >reflect
6265         chmod +x,u+s reflect
6266         ./reflect >flect 2>&1
6267         if $contains "/dev/fd" flect >/dev/null; then
6268                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6269                 val="$define"
6270         else
6271                 $cat <<EOM
6272 If you are not sure if they are secure, I can check but I'll need a
6273 username and password different from the one you are using right now.
6274 If you don't have such a username or don't want me to test, simply
6275 enter 'none'.
6276
6277 EOM
6278                 rp='Other username to test security of setuid scripts with?'
6279                 dflt='none'
6280                 . ./myread
6281                 case "$ans" in
6282                 n|none)
6283                         case "$d_suidsafe" in
6284                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6285                                 dflt=n;;
6286                         "$undef")
6287                                 echo "Well, the $hint value is *not* secure." >&4
6288                                 dflt=n;;
6289                         *)      echo "Well, the $hint value *is* secure." >&4
6290                                 dflt=y;;
6291                         esac
6292                         ;;
6293                 *)
6294                         $rm -f reflect flect
6295                         echo "#!$ls" >reflect
6296                         chmod +x,u+s reflect
6297                         echo >flect
6298                         chmod a+w flect
6299                         echo '"su" will (probably) prompt you for '"$ans's password."
6300                         su $ans -c './reflect >flect'
6301                         if $contains "/dev/fd" flect >/dev/null; then
6302                                 echo "Okay, it looks like setuid scripts are secure." >&4
6303                                 dflt=y
6304                         else
6305                                 echo "I don't think setuid scripts are secure." >&4
6306                                 dflt=n
6307                         fi
6308                         ;;
6309                 esac
6310                 rp='Does your kernel have *secure* setuid scripts?'
6311                 . ./myread
6312                 case "$ans" in
6313                 [yY]*)  val="$define";;
6314                 *)      val="$undef";;
6315                 esac
6316         fi
6317 else
6318         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6319         echo "(That's for file descriptors, not floppy disks.)"
6320         val="$undef"
6321 fi
6322 set d_suidsafe
6323 eval $setvar
6324
6325 $rm -f reflect flect
6326
6327 : now see if they want to do setuid emulation
6328 echo " "
6329 val="$undef"
6330 case "$d_suidsafe" in
6331 "$define")
6332         val="$undef"
6333         echo "No need to emulate SUID scripts since they are secure here." >&4
6334         ;;
6335 *)
6336         $cat <<EOM
6337 Some systems have disabled setuid scripts, especially systems where
6338 setuid scripts cannot be secure.  On systems where setuid scripts have
6339 been disabled, the setuid/setgid bits on scripts are currently
6340 useless.  It is possible for $package to detect those bits and emulate
6341 setuid/setgid in a secure fashion.  This emulation will only work if
6342 setuid scripts have been disabled in your kernel.
6343
6344 EOM
6345         case "$d_dosuid" in
6346         "$define") dflt=y ;;
6347         *) dflt=n ;;
6348         esac
6349         rp="Do you want to do setuid/setgid emulation?"
6350         . ./myread
6351         case "$ans" in
6352         [yY]*)  val="$define";;
6353         *)      val="$undef";;
6354         esac
6355         ;;
6356 esac
6357 set d_dosuid
6358 eval $setvar
6359
6360 : Find perl5.005 or later.
6361 echo "Looking for a previously installed perl5.005 or later... "
6362 case "$perl5" in
6363 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6364                 : Check if this perl is recent and can load a simple module
6365                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6366                         perl5=$tdir/perl
6367                         break;
6368                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6369                         perl5=$tdir/perl5
6370                         break;
6371                 fi
6372         done
6373         ;;
6374 *)      perl5="$perl5"
6375         ;;
6376 esac
6377 case "$perl5" in
6378 '')     echo "None found.  That's ok.";;
6379 *)      echo "Using $perl5." ;;
6380 esac
6381
6382 : Set the siteprefix variables
6383 $cat <<EOM
6384
6385 After $package is installed, you may wish to install various
6386 add-on modules and utilities.  Typically, these add-ons will
6387 be installed under $prefix with the rest
6388 of this package.  However, you may wish to install such add-ons
6389 elsewhere under a different prefix.
6390
6391 If you do not wish to put everything under a single prefix, that's
6392 ok.  You will be prompted for the individual locations; this siteprefix
6393 is only used to suggest the defaults.
6394
6395 The default should be fine for most people.
6396
6397 EOM
6398 fn=d~+
6399 rp='Installation prefix to use for add-on modules and utilities?'
6400 : XXX Here might be another good place for an installstyle setting.
6401 case "$siteprefix" in
6402 '') dflt=$prefix ;;
6403 *)  dflt=$siteprefix ;;
6404 esac
6405 . ./getfile
6406 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6407 oldsiteprefix=''
6408 case "$siteprefix" in
6409 '') ;;
6410 *)      case "$ans" in
6411         "$prefix") ;;
6412         *) oldsiteprefix="$prefix";;
6413         esac
6414         ;;
6415 esac
6416 siteprefix="$ans"
6417 siteprefixexp="$ansexp"
6418
6419 : determine where site specific libraries go.
6420 : Usual default is /usr/local/lib/perl5/site_perl/$version
6421 : The default "style" setting is made in installstyle.U
6422 : XXX No longer works with Prefixit stuff.
6423 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6424 case "$sitelib" in
6425 '') case "$installstyle" in
6426         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6427         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6428         esac
6429         ;;
6430 *)      dflt="$sitelib"
6431         ;;
6432 esac
6433 $cat <<EOM
6434
6435 The installation process will create a directory for
6436 site-specific extensions and modules.  Most users find it convenient
6437 to place all site-specific files in this directory rather than in the
6438 main distribution directory.
6439
6440 EOM
6441 fn=d~+
6442 rp='Pathname for the site-specific library files?'
6443 . ./getfile
6444 prefixvar=sitelib
6445 . ./setprefixvar
6446 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6447
6448 : Determine list of previous versions to include in @INC
6449 $cat > getverlist <<EOPL
6450 #!$perl5 -w
6451 use File::Basename;
6452 \$api_versionstring = "$api_versionstring";
6453 \$version = "$version";
6454 \$stem = "$sitelib_stem";
6455 \$archname = "$archname";
6456 EOPL
6457         $cat >> getverlist <<'EOPL'
6458 # The list found is store twice for each entry: the original name, and
6459 # the binary broken down version as pack "sss", so sorting is easy and
6460 # unambiguous. This will work for all versions that have a maximum of
6461 # three digit groups, separate by '.'s or '_'s. Names are extended with
6462 # ".0.0" to ensure at least three elements for the pack.
6463 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6464
6465 # Can't have leading @ because metaconfig interprets it as a command!
6466 ;@inc_version_list=();
6467 # XXX Redo to do opendir/readdir?
6468 if (-d $stem) {
6469     chdir($stem);
6470     ;@candidates = map {
6471         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6472 }
6473 else {
6474     ;@candidates = ();
6475 }
6476
6477 ($pversion, $aversion, $vsn5005) = map {
6478     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6479 foreach $d (@candidates) {
6480     if ($d->[1] lt $pversion) {
6481         if ($d->[1] ge $aversion) {
6482             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6483         }
6484         elsif ($d->[1] ge $vsn5005) {
6485             unshift(@inc_version_list, grep { -d } $d->[0]);
6486         }
6487     }
6488     else {
6489         # Skip newer version.  I.e. don't look in
6490         # 5.7.0 if we're installing 5.6.1.
6491     }
6492 }
6493
6494 if (@inc_version_list) {
6495     print join(' ', @inc_version_list);
6496 }
6497 else {
6498     # Blank space to preserve value for next Configure run.
6499     print " ";
6500 }
6501 EOPL
6502 chmod +x getverlist
6503 case "$inc_version_list" in
6504 '')     if test -x "$perl5$exe_ext"; then
6505                 dflt=`$perl5 getverlist`
6506         else
6507                 dflt='none'
6508         fi
6509         ;;
6510 $undef) dflt='none' ;;
6511 *)  eval dflt=\"$inc_version_list\" ;;
6512 esac
6513 case "$dflt" in
6514 ''|' ') dflt=none ;;
6515 esac
6516 case "$dflt" in
6517 5.005) dflt=none ;;
6518 esac
6519 $cat <<EOM
6520
6521 In order to ease the process of upgrading, this version of perl
6522 can be configured to use modules built and installed with earlier
6523 versions of perl that were installed under $prefix.  Specify here
6524 the list of earlier versions that this version of perl should check.
6525 If Configure detected no earlier versions of perl installed under
6526 $prefix, then the list will be empty.  Answer 'none' to tell perl
6527 to not search earlier versions.
6528
6529 The default should almost always be sensible, so if you're not sure,
6530 just accept the default.
6531 EOM
6532
6533 rp='List of earlier versions to include in @INC?'
6534 . ./myread
6535 case "$ans" in
6536 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6537 *) inc_version_list="$ans" ;;
6538 esac
6539 case "$inc_version_list" in
6540 ''|' ')
6541         inc_version_list_init='0'
6542         d_inc_version_list="$undef"
6543         ;;
6544 *)      inc_version_list_init=`echo $inc_version_list |
6545                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6546         d_inc_version_list="$define"
6547         ;;
6548 esac
6549 $rm -f getverlist
6550
6551 : see if this is a malloc.h system
6552 : we want a real compile instead of Inhdr because some systems have a
6553 : malloc.h that just gives a compile error saying to use stdlib.h instead
6554 echo " "
6555 $cat >try.c <<EOCP
6556 #include <stdlib.h>
6557 #include <malloc.h>
6558 int main () { return 0; }
6559 EOCP
6560 set try
6561 if eval $compile; then
6562     echo "<malloc.h> found." >&4
6563     val="$define"
6564 else
6565     echo "<malloc.h> NOT found." >&4
6566     val="$undef"
6567 fi
6568 $rm_try
6569 set i_malloc
6570 eval $setvar
6571
6572 : check for void type
6573 echo " "
6574 echo "Checking to see how well your C compiler groks the void type..." >&4
6575 case "$voidflags" in
6576 '')
6577         $cat >try.c <<EOCP
6578 #$i_stdlib I_STDLIB
6579 #ifdef I_STDLIB
6580 #include <stdlib.h>
6581 #endif
6582 #if TRY & 1
6583 void sub() {
6584 #else
6585 sub() {
6586 #endif
6587         extern void moo();      /* function returning void */
6588         void (*goo)();          /* ptr to func returning void */
6589 #if TRY & 8
6590         void *hue;              /* generic ptr */
6591 #endif
6592 #if TRY & 2
6593         void (*foo[10])();
6594 #endif
6595
6596 #if TRY & 4
6597         if(goo == moo) {
6598                 exit(0);
6599         }
6600 #endif
6601         exit(0);
6602 }
6603 int main() { sub(); }
6604 EOCP
6605         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6606                 voidflags=$defvoidused
6607         echo "Good.  It appears to support void to the level $package wants.">&4
6608                 if $contains warning .out >/dev/null 2>&1; then
6609                         echo "However, you might get some warnings that look like this:"
6610                         $cat .out
6611                 fi
6612         else
6613 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6614                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6615                         echo "It supports 1..."
6616                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6617                                 echo "It also supports 2..."
6618                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6619                                         voidflags=7
6620                                         echo "And it supports 4 but not 8 definitely."
6621                                 else
6622                                         echo "It doesn't support 4..."
6623                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6624                                                 voidflags=11
6625                                                 echo "But it supports 8."
6626                                         else
6627                                                 voidflags=3
6628                                                 echo "Neither does it support 8."
6629                                         fi
6630                                 fi
6631                         else
6632                                 echo "It does not support 2..."
6633                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6634                                         voidflags=13
6635                                         echo "But it supports 4 and 8."
6636                                 else
6637                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6638                                                 voidflags=5
6639                                                 echo "And it supports 4 but has not heard about 8."
6640                                         else
6641                                                 echo "However it supports 8 but not 4."
6642                                         fi
6643                                 fi
6644                         fi
6645                 else
6646                         echo "There is no support at all for void."
6647                         voidflags=0
6648                 fi
6649         fi
6650 esac
6651 case "$voidflags" in
6652 "$defvoidused") ;;
6653 *)      $cat >&4 <<'EOM'
6654   Support flag bits are:
6655     1: basic void declarations.
6656     2: arrays of pointers to functions returning void.
6657     4: operations between pointers to and addresses of void functions.
6658     8: generic void pointers.
6659 EOM
6660         dflt="$voidflags";
6661         rp="Your void support flags add up to what?"
6662         . ./myread
6663         voidflags="$ans"
6664         ;;
6665 esac
6666 $rm_try
6667
6668 : check for length of pointer
6669 echo " "
6670 case "$ptrsize" in
6671 '')
6672         echo "Checking to see how big your pointers are..." >&4
6673         if test "$voidflags" -gt 7; then
6674                 echo '#define VOID_PTR char *' > try.c
6675         else
6676                 echo '#define VOID_PTR void *' > try.c
6677         fi
6678         $cat >>try.c <<EOCP
6679 #include <stdio.h>
6680 #$i_stdlib I_STDLIB
6681 #ifdef I_STDLIB
6682 #include <stdlib.h>
6683 #endif
6684 int main()
6685 {
6686     printf("%d\n", (int)sizeof(VOID_PTR));
6687     exit(0);
6688 }
6689 EOCP
6690         set try
6691         if eval $compile_ok; then
6692                 ptrsize=`$run ./try`
6693                 echo "Your pointers are $ptrsize bytes long."
6694         else
6695                 dflt='4'
6696                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6697                 rp="What is the size of a pointer (in bytes)?"
6698                 . ./myread
6699                 ptrsize="$ans"
6700         fi
6701         ;;
6702 esac
6703 $rm_try
6704 case "$use64bitall" in
6705 "$define"|true|[yY]*)
6706         case "$ptrsize" in
6707         4)      cat <<EOM >&4
6708
6709 *** You have chosen a maximally 64-bit build,
6710 *** but your pointers are only 4 bytes wide.
6711 *** Please rerun Configure without -Duse64bitall.
6712 EOM
6713                 case "$d_quad" in
6714                 define)
6715                         cat <<EOM >&4
6716 *** Since you have quads, you could possibly try with -Duse64bitint.
6717 EOM
6718                         ;;
6719                 esac
6720                 cat <<EOM >&4
6721 *** Cannot continue, aborting.
6722
6723 EOM
6724
6725                 exit 1
6726                 ;;
6727         esac
6728         ;;
6729 esac
6730
6731
6732 : determine whether to use malloc wrapping
6733 echo " "
6734 case "$usemallocwrap" in
6735 [yY]*|true|$define)     dflt='y' ;;
6736 [nN]*|false|$undef)     dflt='n' ;;
6737 *)      case "$usedevel" in
6738         [yY]*|true|$define)     dflt='y' ;;
6739         *) dflt='n' ;;
6740         esac
6741         ;;
6742 esac
6743 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6744 . ./myread
6745 usemallocwrap="$ans"
6746 case "$ans" in
6747 y*|true)
6748         usemallocwrap="$define" ;;
6749 *)
6750         usemallocwrap="$undef" ;;
6751 esac
6752
6753 : determine which malloc to compile in
6754 echo " "
6755 case "$usemymalloc" in
6756 [yY]*|true|$define)     dflt='y' ;;
6757 [nN]*|false|$undef)     dflt='n' ;;
6758 *)      case "$ptrsize" in
6759         4) dflt='y' ;;
6760         *) dflt='n' ;;
6761         esac
6762         ;;
6763 esac
6764 rp="Do you wish to attempt to use the malloc that comes with $package?"
6765 . ./myread
6766 usemymalloc="$ans"
6767 case "$ans" in
6768 y*|true)
6769         usemymalloc='y'
6770         mallocsrc='malloc.c'
6771         mallocobj="malloc$_o"
6772         d_mymalloc="$define"
6773         case "$libs" in
6774         *-lmalloc*)
6775                 : Remove malloc from list of libraries to use
6776                 echo "Removing unneeded -lmalloc from library list" >&4
6777                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6778                 shift
6779                 libs="$*"
6780                 echo "libs = $libs" >&4
6781                 ;;
6782         esac
6783         ;;
6784 *)
6785         usemymalloc='n'
6786         mallocsrc=''
6787         mallocobj=''
6788         d_mymalloc="$undef"
6789         ;;
6790 esac
6791
6792 : compute the return types of malloc and free
6793 echo " "
6794 $cat >malloc.c <<END
6795 #$i_malloc I_MALLOC
6796 #$i_stdlib I_STDLIB
6797 #include <stdio.h>
6798 #include <sys/types.h>
6799 #ifdef I_MALLOC
6800 #include <malloc.h>
6801 #endif
6802 #ifdef I_STDLIB
6803 #include <stdlib.h>
6804 #endif
6805 #ifdef TRY_MALLOC
6806 void *malloc();
6807 #endif
6808 #ifdef TRY_FREE
6809 void free();
6810 #endif
6811 END
6812 case "$malloctype" in
6813 '')
6814         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6815                 malloctype='void *'
6816         else
6817                 malloctype='char *'
6818         fi
6819         ;;
6820 esac
6821 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6822
6823 case "$freetype" in
6824 '')
6825         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6826                 freetype='void'
6827         else
6828                 freetype='int'
6829         fi
6830         ;;
6831 esac
6832 echo "Your system uses $freetype free(), it would seem." >&4
6833 $rm -f malloc.[co]
6834 : determine where site specific architecture-dependent libraries go.
6835 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6836 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6837 : sitelib may have an optional trailing /share.
6838 case "$sitearch" in
6839 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6840         dflt="$dflt/$archname"
6841         ;;
6842 *)      dflt="$sitearch"
6843         ;;
6844 esac
6845 set sitearch sitearch none
6846 eval $prefixit
6847 $cat <<EOM
6848
6849 The installation process will also create a directory for
6850 architecture-dependent site-specific extensions and modules.
6851
6852 EOM
6853 fn=d~+
6854 rp='Pathname for the site-specific architecture-dependent library files?'
6855 . ./getfile
6856 prefixvar=sitearch
6857 . ./setprefixvar
6858 if $test X"$sitearch" = X"$sitelib"; then
6859         d_sitearch="$undef"
6860 else
6861         d_sitearch="$define"
6862 fi
6863
6864 : Set the vendorprefix variables
6865 $cat <<EOM
6866
6867 The installation process will also create a directory for
6868 vendor-supplied add-ons.  Vendors who supply perl with their system
6869 may find it convenient to place all vendor-supplied files in this
6870 directory rather than in the main distribution directory.  This will
6871 ease upgrades between binary-compatible maintenance versions of perl.
6872
6873 Of course you may also use these directories in whatever way you see
6874 fit.  For example, you might use them to access modules shared over a
6875 company-wide network.
6876
6877 The default answer should be fine for most people.
6878 This causes further questions about vendor add-ons to be skipped
6879 and no vendor-specific directories will be configured for perl.
6880
6881 EOM
6882 rp='Do you want to configure vendor-specific add-on directories?'
6883 case "$usevendorprefix" in
6884 define|true|[yY]*) dflt=y ;;
6885 *)      : User may have set vendorprefix directly on Configure command line.
6886         case "$vendorprefix" in
6887         ''|' ') dflt=n ;;
6888         *)      dflt=y ;;
6889         esac
6890         ;;
6891 esac
6892 . ./myread
6893 case "$ans" in
6894 [yY]*)  fn=d~+
6895         rp='Installation prefix to use for vendor-supplied add-ons?'
6896         case "$vendorprefix" in
6897         '') dflt='' ;;
6898         *)  dflt=$vendorprefix ;;
6899         esac
6900         . ./getfile
6901         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6902         oldvendorprefix=''
6903         case "$vendorprefix" in
6904         '') ;;
6905         *)      case "$ans" in
6906                 "$prefix") ;;
6907                 *) oldvendorprefix="$prefix";;
6908                 esac
6909                 ;;
6910         esac
6911         usevendorprefix="$define"
6912         vendorprefix="$ans"
6913         vendorprefixexp="$ansexp"
6914         ;;
6915 *)      usevendorprefix="$undef"
6916         vendorprefix=''
6917         vendorprefixexp=''
6918         ;;
6919 esac
6920
6921 : Set the vendorlib variables
6922 case "$vendorprefix" in
6923 '')     d_vendorlib="$undef"
6924         vendorlib=''
6925         vendorlibexp=''
6926         ;;
6927 *)      d_vendorlib="$define"
6928         : determine where vendor-supplied modules go.
6929         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6930         case "$vendorlib" in
6931         '')
6932                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6933                 case "$installstyle" in
6934                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6935                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6936                 esac
6937                 ;;
6938         *)      dflt="$vendorlib"
6939                 ;;
6940         esac
6941         fn=d~+
6942         rp='Pathname for the vendor-supplied library files?'
6943         . ./getfile
6944         vendorlib="$ans"
6945         vendorlibexp="$ansexp"
6946         ;;
6947 esac
6948 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6949 prefixvar=vendorlib
6950 . ./installprefix
6951
6952 : Set the vendorarch variables
6953 case "$vendorprefix" in
6954 '')     d_vendorarch="$undef"
6955         vendorarch=''
6956         vendorarchexp=''
6957         ;;
6958 *)      d_vendorarch="$define"
6959         : determine where vendor-supplied architecture-dependent libraries go.
6960         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6961         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6962         : vendorlib may have an optional trailing /share.
6963         case "$vendorarch" in
6964         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6965                 dflt="$dflt/$archname"
6966                 ;;
6967         *)      dflt="$vendorarch" ;;
6968         esac
6969         fn=d~+
6970         rp='Pathname for vendor-supplied architecture-dependent files?'
6971         . ./getfile
6972         vendorarch="$ans"
6973         vendorarchexp="$ansexp"
6974         ;;
6975 esac
6976 prefixvar=vendorarch
6977 . ./installprefix
6978
6979 : Final catch-all directories to search
6980 $cat <<EOM
6981
6982 Lastly, you can have perl look in other directories for extensions and
6983 modules in addition to those already specified.
6984 These directories will be searched after 
6985         $sitearch 
6986         $sitelib 
6987 EOM
6988 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6989 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6990 echo ' '
6991 case "$otherlibdirs" in
6992 ''|' ') dflt='none' ;;
6993 *)      dflt="$otherlibdirs" ;;
6994 esac
6995 $cat <<EOM
6996 Enter a colon-separated set of extra paths to include in perl's @INC
6997 search path, or enter 'none' for no extra paths.
6998
6999 EOM
7000
7001 rp='Colon-separated list of additional directories for perl to search?'
7002 . ./myread
7003 case "$ans" in
7004 ' '|''|none)    otherlibdirs=' ' ;;     
7005 *)      otherlibdirs="$ans" ;;
7006 esac
7007 case "$otherlibdirs" in
7008 ' ') val=$undef ;;
7009 *)      val=$define ;;
7010 esac
7011 set d_perl_otherlibdirs
7012 eval $setvar
7013
7014 : Cruising for prototypes
7015 echo " "
7016 echo "Checking out function prototypes..." >&4
7017 $cat >prototype.c <<EOCP
7018 #$i_stdlib I_STDLIB
7019 #ifdef I_STDLIB
7020 #include <stdlib.h>
7021 #endif
7022 int main(int argc, char *argv[]) {
7023         exit(0);}
7024 EOCP
7025 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7026         echo "Your C compiler appears to support function prototypes."
7027         val="$define"
7028 else
7029         echo "Your C compiler doesn't seem to understand function prototypes."
7030         val="$undef"
7031 fi
7032 set prototype
7033 eval $setvar
7034 $rm -f prototype*
7035
7036 : Check if ansi2knr is required
7037 case "$prototype" in
7038 "$define") ;;
7039 *)      ansi2knr='ansi2knr'
7040         echo " "
7041         cat <<EOM >&4
7042
7043 $me:  FATAL ERROR:
7044 This version of $package can only be compiled by a compiler that 
7045 understands function prototypes.  Unfortunately, your C compiler 
7046         $cc $ccflags
7047 doesn't seem to understand them.  Sorry about that.
7048
7049 If GNU cc is available for your system, perhaps you could try that instead.  
7050
7051 Eventually, we hope to support building Perl with pre-ANSI compilers.
7052 If you would like to help in that effort, please contact <perlbug@perl.org>.
7053
7054 Aborting Configure now.
7055 EOM
7056         exit 2
7057         ;;
7058 esac
7059
7060 : See if we want extra modules installed
7061 echo " "
7062 case "$extras" in
7063 '') dflt='n';;
7064 *) dflt='y';;
7065 esac
7066 cat <<EOM
7067 Perl can be built with extra modules or bundles of modules which
7068 will be fetched from the CPAN and installed alongside Perl.
7069
7070 Notice that you will need access to the CPAN; either via the Internet,
7071 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7072 be asked later to configure the CPAN.pm module which will in turn do
7073 the installation of the rest of the extra modules or bundles.)
7074
7075 Notice also that if the modules require any external software such as
7076 libraries and headers (the libz library and the zlib.h header for the
7077 Compress::Zlib module, for example) you MUST have any such software
7078 already installed, this configuration process will NOT install such
7079 things for you.
7080
7081 If this doesn't make any sense to you, just accept the default '$dflt'.
7082 EOM
7083 rp='Install any extra modules (y or n)?'
7084 . ./myread
7085 case "$ans" in
7086 y|Y)
7087         cat <<EOM
7088
7089 Please list any extra modules or bundles to be installed from CPAN,
7090 with spaces between the names.  The names can be in any format the
7091 'install' command of CPAN.pm will understand.  (Answer 'none',
7092 without the quotes, to install no extra modules or bundles.)
7093 EOM
7094         rp='Extras?'
7095         dflt="$extras"
7096         . ./myread
7097         extras="$ans"
7098 esac
7099 case "$extras" in
7100 ''|'none')
7101         val=''
7102         $rm -f ../extras.lst
7103         ;;
7104 *)      echo "(Saving the list of extras for later...)"
7105         echo "$extras" > ../extras.lst
7106         val="'$extras'"
7107         ;;
7108 esac
7109 set extras
7110 eval $setvar
7111 echo " "
7112
7113 : determine where html pages for programs go
7114 set html1dir html1dir none
7115 eval $prefixit
7116 $cat <<EOM
7117
7118 If you wish to install html files for programs in $spackage, indicate
7119 the appropriate directory here.  To skip installing html files,
7120 answer "none".
7121 EOM
7122 case "$html1dir" in
7123 ''|none|$undef|' ') dflt=none ;;
7124 *) dflt=$html1dir ;;
7125 esac
7126 fn=dn+~
7127 rp="Directory for the main $spackage html pages?"
7128 . ./getfile
7129 prefixvar=html1dir
7130 . ./setprefixvar
7131 : Use ' ' for none so value is preserved next time through Configure
7132 $test X"$html1dir" = "X" && html1dir=' '
7133
7134 : determine where html pages for libraries and modules go
7135 set html3dir html3dir none
7136 eval $prefixit
7137 $cat <<EOM
7138
7139 If you wish to install html files for modules associated with $spackage,
7140 indicate the appropriate directory here.  To skip installing html files,
7141 answer "none".
7142 EOM
7143 : There is no obvious default.  If they have specified html1dir, then
7144 : try to key off that, possibly changing .../html1 into .../html3.
7145 case "$html3dir" in
7146 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7147 *) dflt=$html3dir ;;
7148 esac
7149 fn=dn+~
7150 rp="Directory for the $spackage module html pages?"
7151 . ./getfile
7152 prefixvar=html3dir
7153 . ./setprefixvar
7154 : Use ' ' for none so value is preserved next time through Configure
7155 $test X"$html3dir" = "X" && html3dir=' '
7156
7157 : determine whether to install perl also as /usr/bin/perl
7158
7159 echo " "
7160 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7161         $cat <<EOM
7162 Many scripts expect perl to be installed as /usr/bin/perl.
7163
7164 If you want to, I can install the perl you are about to compile
7165 as /usr/bin/perl (in addition to $bin/perl).
7166 EOM
7167         if test -f /usr/bin/perl; then
7168             $cat <<EOM
7169
7170 However, please note that because you already have a /usr/bin/perl,
7171 overwriting that with a new Perl would very probably cause problems.
7172 Therefore I'm assuming you don't want to do that (unless you insist).
7173
7174 EOM
7175             case "$installusrbinperl" in
7176             "$define"|[yY]*)    dflt='y';;
7177             *)                  dflt='n';;
7178             esac
7179         else
7180             $cat <<EOM
7181
7182 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7183
7184 EOM
7185             case "$installusrbinperl" in
7186             "$undef"|[nN]*)     dflt='n';;
7187             *)                  dflt='y';;
7188             esac
7189         fi
7190         rp="Do you want to install perl as /usr/bin/perl?"
7191         . ./myread
7192         case "$ans" in
7193         [yY]*)  val="$define";;
7194         *)      val="$undef" ;;
7195         esac
7196 else
7197         val="$undef"
7198 fi
7199 set installusrbinperl
7200 eval $setvar
7201
7202 : Check if we are using the GNU C library
7203 echo " "
7204 echo "Checking for GNU C Library..." >&4
7205 cat >try.c <<'EOCP'
7206 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7207    alone are insufficient to distinguish different versions, such as
7208    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7209    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7210 */
7211 #include <stdio.h>
7212 int main(void)
7213 {
7214 #ifdef __GLIBC__
7215 #   ifdef __GLIBC_MINOR__
7216 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7217 #           include <gnu/libc-version.h>
7218             printf("%s\n",  gnu_get_libc_version());
7219 #       else
7220             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7221 #       endif
7222 #   else
7223         printf("%d\n",  __GLIBC__);
7224 #   endif
7225     return 0;
7226 #else
7227     return 1;
7228 #endif
7229 }
7230 EOCP
7231 set try
7232 if eval $compile_ok && $run ./try > glibc.ver; then
7233         val="$define"
7234         gnulibc_version=`$cat glibc.ver`
7235         echo "You are using the GNU C Library version $gnulibc_version"
7236 else
7237         val="$undef"
7238         gnulibc_version=''
7239         echo "You are not using the GNU C Library"
7240 fi
7241 $rm_try glibc.ver
7242 set d_gnulibc
7243 eval $setvar
7244
7245 : see if nm is to be used to determine whether a symbol is defined or not
7246 case "$usenm" in
7247 '')
7248         dflt=''
7249         case "$d_gnulibc" in
7250         "$define")
7251                 echo " "
7252                 echo "nm probably won't work on the GNU C Library." >&4
7253                 dflt=n
7254                 ;;
7255         esac
7256         case "$dflt" in
7257         '') 
7258                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7259                         echo " "
7260                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7261                         echo "'nm' won't be sufficient on this sytem." >&4
7262                         dflt=n
7263                 fi
7264                 ;;
7265         esac
7266         case "$dflt" in
7267         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7268                 if $test $dflt -gt 20; then
7269                         dflt=y
7270                 else
7271                         dflt=n
7272                 fi
7273                 ;;
7274         esac
7275         ;;
7276 *)
7277         case "$usenm" in
7278         true|$define) dflt=y;;
7279         *) dflt=n;;
7280         esac
7281         ;;
7282 esac
7283 $cat <<EOM
7284
7285 I can use $nm to extract the symbols from your C libraries. This
7286 is a time consuming task which may generate huge output on the disk (up
7287 to 3 megabytes) but that should make the symbols extraction faster. The
7288 alternative is to skip the 'nm' extraction part and to compile a small
7289 test program instead to determine whether each symbol is present. If
7290 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7291 this may be the best solution.
7292
7293 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7294
7295 EOM
7296 rp="Shall I use $nm to extract C symbols from the libraries?"
7297 . ./myread
7298 case "$ans" in
7299 [Nn]*) usenm=false;;
7300 *) usenm=true;;
7301 esac
7302
7303 runnm=$usenm
7304 case "$reuseval" in
7305 true) runnm=false;;
7306 esac
7307
7308 : nm options which may be necessary
7309 case "$nm_opt" in
7310 '') if $test -f /mach_boot; then
7311                 nm_opt=''       # Mach
7312         elif $test -d /usr/ccs/lib; then
7313                 nm_opt='-p'     # Solaris (and SunOS?)
7314         elif $test -f /dgux; then
7315                 nm_opt='-p'     # DG-UX
7316         elif $test -f /lib64/rld; then
7317                 nm_opt='-p'     # 64-bit Irix
7318         else
7319                 nm_opt=''
7320         fi;;
7321 esac
7322
7323 : nm options which may be necessary for shared libraries but illegal
7324 : for archive libraries.  Thank you, Linux.
7325 case "$nm_so_opt" in
7326 '')     case "$myuname" in
7327         *linux*|gnu*)
7328                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7329                         nm_so_opt='--dynamic'
7330                 fi
7331                 ;;
7332         esac
7333         ;;
7334 esac
7335
7336 case "$runnm" in
7337 true)
7338 : get list of predefined functions in a handy place
7339 echo " "
7340 case "$libc" in
7341 '') libc=unknown
7342         case "$libs" in
7343         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7344         esac
7345         ;;
7346 esac
7347 case "$libs" in
7348 '') ;;
7349 *)  for thislib in $libs; do
7350         case "$thislib" in
7351         -lc|-lc_s)
7352                 : Handle C library specially below.
7353                 ;;
7354         -l*)
7355                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7356                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7357                         :
7358                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7359                         :
7360                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7361                         :
7362                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7363                         :
7364                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7365                         :
7366                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7367                         :
7368                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7369                         :
7370                 else
7371                         try=''
7372                 fi
7373                 libnames="$libnames $try"
7374                 ;;
7375         *) libnames="$libnames $thislib" ;;
7376         esac
7377         done
7378         ;;
7379 esac
7380 xxx=normal
7381 case "$libc" in
7382 unknown)
7383         set /lib/libc.$so
7384         for xxx in $libpth; do
7385                 $test -r $1 || set $xxx/libc.$so
7386                 : The messy sed command sorts on library version numbers.
7387                 $test -r $1 || \
7388                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7389                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7390                                 h
7391                                 s/[0-9][0-9]*/0000&/g
7392                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7393                                 G
7394                                 s/\n/ /' | \
7395                          $sort | $sed -e 's/^.* //'`
7396                 eval set \$$#
7397         done
7398         $test -r $1 || set /usr/ccs/lib/libc.$so
7399         $test -r $1 || set /lib/libsys_s$_a
7400         ;;
7401 *)
7402         set blurfl
7403         ;;
7404 esac
7405 if $test -r "$1"; then
7406         echo "Your (shared) C library seems to be in $1."
7407         libc="$1"
7408 elif $test -r /lib/libc && $test -r /lib/clib; then
7409         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7410         xxx=apollo
7411         libc='/lib/clib /lib/libc'
7412         if $test -r /lib/syslib; then
7413                 echo "(Your math library is in /lib/syslib.)"
7414                 libc="$libc /lib/syslib"
7415         fi
7416 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7417         echo "Your C library seems to be in $libc, as you said before."
7418 elif $test -r $incpath/usr/lib/libc$_a; then
7419         libc=$incpath/usr/lib/libc$_a;
7420         echo "Your C library seems to be in $libc.  That's fine."
7421 elif $test -r /lib/libc$_a; then
7422         libc=/lib/libc$_a;
7423         echo "Your C library seems to be in $libc.  You're normal."
7424 else
7425         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7426                 :
7427         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7428                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7429         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7430                 :
7431         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7432                 :
7433         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7434                 :
7435         else
7436                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7437         fi
7438         if $test -r "$tans"; then
7439                 echo "Your C library seems to be in $tans, of all places."
7440                 libc=$tans
7441         else
7442                 libc='blurfl'
7443         fi
7444 fi
7445 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7446         dflt="$libc"
7447         cat <<EOM
7448
7449 If the guess above is wrong (which it might be if you're using a strange
7450 compiler, or your machine supports multiple models), you can override it here.
7451
7452 EOM
7453 else
7454         dflt=''
7455         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7456         cat >&4 <<EOM
7457 I can't seem to find your C library.  I've looked in the following places:
7458
7459 EOM
7460         $sed 's/^/      /' libpath
7461         cat <<EOM
7462
7463 None of these seems to contain your C library. I need to get its name...
7464
7465 EOM
7466 fi
7467 fn=f
7468 rp='Where is your C library?'
7469 . ./getfile
7470 libc="$ans"
7471
7472 echo " "
7473 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7474 set X `cat libnames`
7475 shift
7476 xxx=files
7477 case $# in 1) xxx=file; esac
7478 echo "Extracting names from the following $xxx for later perusal:" >&4
7479 echo " "
7480 $sed 's/^/      /' libnames >&4
7481 echo " "
7482 $echo $n "This may take a while...$c" >&4
7483
7484 for file in $*; do
7485         case $file in
7486         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7487         *) $nm $nm_opt $file 2>/dev/null;;
7488         esac
7489 done >libc.tmp
7490
7491 $echo $n ".$c"
7492 $grep fprintf libc.tmp > libc.ptf
7493 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7494 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7495 xxx='[ADTSIW]'
7496 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7497         eval $xscan;\
7498         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7499                 eval $xrun
7500 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7501         eval $xscan;\
7502         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7503                 eval $xrun
7504 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7505         eval $xscan;\
7506         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7507                 eval $xrun
7508 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7509         eval $xscan;\
7510         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7511                 eval $xrun
7512 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7513         eval $xscan;\
7514         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7515                 eval $xrun
7516 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7517         eval $xscan;\
7518         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7519                 eval $xrun
7520 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7521                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7522         eval $xscan;\
7523         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7524                 eval $xrun
7525 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7526         eval $xscan;\
7527         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7528                 eval $xrun
7529 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7530         eval $xscan;\
7531         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7532                 eval $xrun
7533 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7534         eval $xscan;\
7535         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7536                 eval $xrun
7537 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7538         eval $xscan;\
7539         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7540                 eval $xrun
7541 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7542         eval $xscan;\
7543         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7544                 eval $xrun
7545 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7546         eval $xscan;\
7547         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7548                 eval $xrun
7549 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7550         eval $xscan;\
7551         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7552                 eval $xrun
7553 else
7554         $nm -p $* 2>/dev/null >libc.tmp
7555         $grep fprintf libc.tmp > libc.ptf
7556         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7557                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7558         then
7559                 nm_opt='-p'
7560                 eval $xrun
7561         else
7562                 echo " "
7563                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7564                 com=''
7565                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7566                         for thisname in $libnames $libc; do
7567                                 $ar t $thisname >>libc.tmp
7568                         done
7569                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7570                         echo "Ok." >&4
7571                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7572                         # Repeat libc to extract forwarders to DLL entries too
7573                         for thisname in $libnames $libc; do
7574                                 $ar tv $thisname >>libc.tmp
7575                                 # Revision 50 of EMX has bug in $ar.
7576                                 # it will not extract forwarders to DLL entries
7577                                 # Use emximp which will extract exactly them.
7578                                 emximp -o tmp.imp $thisname \
7579                                     2>/dev/null && \
7580                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7581                                     < tmp.imp >>libc.tmp
7582                                 $rm tmp.imp
7583                         done
7584                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7585                         echo "Ok." >&4
7586                 else
7587                         echo "$ar didn't seem to work right." >&4
7588                         echo "Maybe this is a Cray...trying bld instead..." >&4
7589                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7590                         then
7591                                 for thisname in $libnames; do
7592                                         bld t $libnames | \
7593                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7594                                         $ar t $thisname >>libc.tmp
7595                                 done
7596                                 echo "Ok." >&4
7597                         else
7598                                 echo "That didn't work either.  Giving up." >&4
7599                                 exit 1
7600                         fi
7601                 fi
7602         fi
7603 fi
7604 nm_extract="$com"
7605 case "$PASE" in
7606 define)
7607     echo " "
7608     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7609     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7610     ;;
7611 *)  if $test -f /lib/syscalls.exp; then
7612         echo " "
7613         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7614         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7615     fi
7616     ;;
7617 esac
7618 ;;
7619 esac
7620 $rm -f libnames libpath
7621
7622 : see if dld is available
7623 set dld.h i_dld
7624 eval $inhdr
7625
7626 : Check if we are using C++
7627 echo " "
7628 echo "Checking for C++..." >&4
7629 $cat >try.c <<'EOCP'
7630 #include <stdio.h>
7631 int main(void)
7632 {
7633 #ifdef __cplusplus
7634     return 0;
7635 #else
7636     return 1;
7637 #endif
7638 }
7639 EOCP
7640 set try
7641 if eval $compile_ok && $run ./try; then
7642         val="$define"
7643         echo "You are using a C++ compiler."
7644 else
7645         val="$undef"
7646         echo "You are not using a C++ compiler."
7647 fi
7648 $rm_try cplusplus$$
7649 set d_cplusplus
7650 eval $setvar
7651
7652 : is a C symbol defined?
7653 csym='tlook=$1;
7654 case "$3" in
7655 -v) tf=libc.tmp; tdc="";;
7656 -a) tf=libc.tmp; tdc="[]";;
7657 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7658 esac;
7659 tx=yes;
7660 case "$reuseval-$4" in
7661 true-) ;;
7662 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7663 esac;
7664 case "$tx" in
7665 yes)
7666         tval=false;
7667         case "$d_cplusplus" in
7668                 $define) extern_C=\"C\";;
7669         esac;
7670         if $test "$runnm" = true; then
7671                 if $contains $tlook $tf >/dev/null 2>&1; then
7672                         tval=true;
7673                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7674                         echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7675                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7676                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7677                         $rm_try;
7678                 fi;
7679         else
7680                 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7681                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7682                 $rm_try;
7683         fi;
7684         ;;
7685 *)
7686         case "$tval" in
7687         $define) tval=true;;
7688         *) tval=false;;
7689         esac;
7690         ;;
7691 esac;
7692 eval "$2=$tval"'
7693
7694 : define an is-in-libc? function
7695 inlibc='echo " "; td=$define; tu=$undef;
7696 sym=$1; var=$2; eval "was=\$$2";
7697 tx=yes;
7698 case "$reuseval$was" in
7699 true) ;;
7700 true*) tx=no;;
7701 esac;
7702 case "$tx" in
7703 yes)
7704         set $sym tres -f;
7705         eval $csym;
7706         case "$tres" in
7707         true)
7708                 echo "$sym() found." >&4;
7709                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7710         *)
7711                 echo "$sym() NOT found." >&4;
7712                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7713         esac;;
7714 *)
7715         case "$was" in
7716         $define) echo "$sym() found." >&4;;
7717         *) echo "$sym() NOT found." >&4;;
7718         esac;;
7719 esac'
7720
7721 : see if dlopen exists
7722 xxx_runnm="$runnm"
7723 xxx_ccflags="$ccflags"
7724 runnm=false
7725 : with g++ one needs -shared to get is-in-libc to work for dlopen
7726 case "$gccversion" in
7727 '')     ;;
7728 *)      case "$d_cplusplus" in
7729         "$define") ccflags="$ccflags -shared" ;;
7730         esac
7731         ;;
7732 esac
7733 set dlopen d_dlopen
7734 eval $inlibc
7735 runnm="$xxx_runnm"
7736 ccflags="$xxx_ccflags"
7737
7738 : see if this is a unistd.h system
7739 set unistd.h i_unistd
7740 eval $inhdr
7741
7742 : determine which dynamic loading, if any, to compile in
7743 echo " "
7744 dldir="ext/DynaLoader"
7745 case "$usedl" in
7746 $define|y|true)
7747         dflt='y'
7748         usedl="$define"
7749         ;;
7750 $undef|n|false)
7751         dflt='n'
7752         usedl="$undef"
7753         ;;
7754 *)
7755         dflt='n'
7756         case "$d_dlopen" in
7757             $define) dflt='y' ;;
7758         esac
7759         case "$i_dld" in
7760             $define) dflt='y' ;;
7761         esac
7762         : Does a dl_xxx.xs file exist for this operating system
7763         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7764         ;;
7765 esac
7766 rp="Do you wish to use dynamic loading?"
7767 . ./myread
7768 usedl="$ans"
7769 case "$ans" in
7770 y*) usedl="$define"
7771         case "$dlsrc" in
7772         '')
7773                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7774                         dflt="$dldir/dl_${osname}.xs"
7775                 elif $test "$d_dlopen" = "$define" ; then
7776                         dflt="$dldir/dl_dlopen.xs"
7777                 elif $test "$i_dld" = "$define" ; then
7778                         dflt="$dldir/dl_dld.xs"
7779                 else
7780                         dflt=''
7781                 fi
7782                 ;;
7783         *)      dflt="$dldir/$dlsrc"
7784                 ;;
7785         esac
7786     echo "The following dynamic loading files are available:"
7787         : Can not go over to $dldir because getfile has path hard-coded in.
7788         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7789         rp="Source file to use for dynamic loading"
7790         fn="fne"
7791         gfpth="$src"
7792         . ./getfile
7793         usedl="$define"
7794         : emulate basename
7795         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7796
7797         $cat << EOM
7798
7799 Some systems may require passing special flags to $cc -c to
7800 compile modules that will be used to create a shared library.
7801 To use no flags, say "none".
7802
7803 EOM
7804     case "$cccdlflags" in
7805     '') case "$gccversion" in
7806                 '') case "$osname" in
7807                         hpux)   dflt='+z' ;;
7808                         next)   dflt='none' ;;
7809                         irix*)  dflt='-KPIC' ;;
7810                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7811                         sunos)  dflt='-pic' ;;
7812                         *)      dflt='none' ;;
7813                     esac
7814                         ;;
7815                 *)  case "$osname" in
7816                         darwin) dflt='none' ;;
7817                         linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7818                         *)      dflt='-fpic' ;;
7819                     esac ;;
7820             esac ;;
7821         ' ') dflt='none' ;;
7822     *)  dflt="$cccdlflags" ;;
7823     esac
7824     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7825     . ./myread
7826     case "$ans" in
7827     none) cccdlflags=' ' ;;
7828     *) cccdlflags="$ans" ;;
7829     esac
7830
7831     cat << EOM
7832
7833 Some systems use ld to create libraries that can be dynamically loaded,
7834 while other systems (such as those using ELF) use $cc.
7835
7836 EOM
7837         case "$ld" in
7838         '')     $cat >try.c <<EOM
7839 /* Test for whether ELF binaries are produced */
7840 #include <fcntl.h>
7841 #$i_stdlib I_STDLIB
7842 #ifdef I_STDLIB
7843 #include <stdlib.h>
7844 #endif
7845 #$i_unistd I_UNISTD
7846 #ifdef I_UNISTD
7847 #include <unistd.h>
7848 #endif
7849 int main() {
7850         char b[4];
7851         int i = open("a.out",O_RDONLY);
7852         if(i == -1)
7853                 exit(1); /* fail */
7854         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7855                 exit(0); /* succeed (yes, it's ELF) */
7856         else
7857                 exit(1); /* fail */
7858 }
7859 EOM
7860                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7861                         cat <<EOM
7862 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7863 EOM
7864                         dflt="$cc"
7865                 else
7866                         echo "I'll use ld to build dynamic libraries."
7867                         dflt='ld'
7868                 fi
7869                 $rm_try
7870                 ;;
7871         *)      dflt="$ld"
7872                 ;;
7873         esac
7874
7875     rp="What command should be used to create dynamic libraries?"
7876     . ./myread
7877         ld="$ans"
7878
7879     cat << EOM
7880
7881 Some systems may require passing special flags to $ld to create a
7882 library that can be dynamically loaded.  If your ld flags include
7883 -L/other/path options to locate libraries outside your loader's normal
7884 search path, you may need to specify those -L options here as well.  To
7885 use no flags, say "none".
7886
7887 EOM
7888     case "$lddlflags" in
7889     '') case "$osname" in
7890                         beos) dflt='-nostart' ;;
7891                         hpux) dflt='-b';
7892                               case "$gccversion" in
7893                               '') dflt="$dflt +vnocompatwarnings" ;;
7894                               esac
7895                               ;;
7896                         linux|irix*|gnu*)  dflt="-shared $optimize" ;;
7897                         next)  dflt='none' ;;
7898                         solaris) dflt='-G' ;;
7899                         sunos) dflt='-assert nodefinitions' ;;
7900                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7901                 *)     dflt='none' ;;
7902                         esac
7903                         ;;
7904     *) dflt="$lddlflags" ;;
7905     esac
7906
7907         : Try to guess additional flags to pick up local libraries.
7908         : Be careful not to append to a plain 'none'
7909         case "$dflt" in
7910         none) dflt='' ;;
7911         esac
7912         for thisflag in $ldflags; do
7913                 case "$thisflag" in
7914                 -L*|-R*|-Wl,-R*)
7915                         case " $dflt " in
7916                         *" $thisflag "*) ;;
7917                         *) dflt="$dflt $thisflag" ;;
7918                         esac
7919                         ;;
7920                 esac
7921         done
7922
7923         case "$dflt" in
7924         ''|' ') dflt='none' ;;
7925         esac
7926
7927     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7928     . ./myread
7929     case "$ans" in
7930     none) lddlflags=' ' ;;
7931     *) lddlflags="$ans" ;;
7932     esac
7933
7934         cat <<EOM
7935
7936 Some systems may require passing special flags to $cc to indicate that
7937 the resulting executable will use dynamic linking.  To use no flags,
7938 say "none".
7939
7940 EOM
7941     case "$ccdlflags" in
7942     '') case "$osname" in
7943             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7944             next|sunos) dflt='none' ;;
7945             *)          dflt='none' ;;
7946             esac ;;
7947     ' ')  dflt='none' ;;
7948     *)  dflt="$ccdlflags" ;;
7949     esac
7950     rp="Any special flags to pass to $cc to use dynamic linking?"
7951     . ./myread
7952     case "$ans" in
7953     none) ccdlflags=' ' ;;
7954     *) ccdlflags="$ans" ;;
7955     esac
7956     ;;
7957 *)  usedl="$undef"
7958         ld='ld'
7959     dlsrc='dl_none.xs'
7960     lddlflags=''
7961     ccdlflags=''
7962     ;;
7963 esac
7964
7965 also=''
7966 case "$usedl" in
7967 $undef)
7968         # No dynamic loading being used, so don't bother even to prompt.
7969         useshrplib='false'
7970         ;;
7971 *)      case "$useshrplib" in
7972         '')     case "$osname" in
7973                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7974                         dflt=y
7975                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7976                         ;;
7977                 next*)
7978                         case "$osvers" in
7979                         4*)     dflt=y
7980                                 also='Building a shared libperl is needed for MAB support.'
7981                                 ;;
7982                         *)      dflt=n
7983                                 ;;
7984                         esac
7985                         ;;
7986                 *)      dflt=n
7987                         ;;
7988                 esac
7989                 ;;
7990         $define|true|[Yy]*)
7991                 dflt=y
7992                 ;;
7993         *)      dflt=n
7994                 ;;
7995         esac
7996         $cat << EOM
7997
7998 The perl executable is normally obtained by linking perlmain.c with
7999 libperl${_a}, any static extensions (usually just DynaLoader), and
8000 any other libraries needed on this system (such as -lm, etc.).  Since
8001 your system supports dynamic loading, it is probably possible to build
8002 a shared libperl.$so.  If you will have more than one executable linked
8003 to libperl.$so, this will significantly reduce the size of each
8004 executable, but it may have a noticeable effect on performance.  The
8005 default is probably sensible for your system.
8006 $also
8007
8008 EOM
8009         rp="Build a shared libperl.$so (y/n)"
8010         . ./myread
8011         case "$ans" in
8012         true|$define|[Yy]*)
8013                 useshrplib='true'  ;;
8014         *)      useshrplib='false' ;;
8015         esac
8016         ;;
8017 esac
8018
8019 case "$useshrplib" in
8020 true)
8021         case "$libperl" in
8022         '')
8023                 # Figure out a good name for libperl.so.  Since it gets stored in
8024                 # a version-specific architecture-dependent library, the version
8025                 # number isn't really that important, except for making cc/ld happy.
8026                 #
8027                 # A name such as libperl.so.3.1
8028                 majmin="libperl.$so.$patchlevel.$subversion"
8029                 # A name such as libperl.so.301
8030                 majonly=`echo $patchlevel $subversion |
8031                         $awk '{printf "%d%02d", $1, $2}'`
8032                 majonly=libperl.$so.$majonly
8033                 # I'd prefer to keep the os-specific stuff here to a minimum, and
8034                 # rely on figuring it out from the naming of libc.
8035                 case "${osname}${osvers}" in
8036                 next4*)
8037                         dflt=libperl.5.$so
8038                         # XXX How handle the --version stuff for MAB?
8039                         ;;
8040                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
8041                         dflt=libperl.$so
8042                         ;;
8043                 cygwin*) # ld links against an importlib
8044                         dflt=libperl$lib_ext
8045                         ;;
8046                 *)      # Try to guess based on whether libc has major.minor.
8047                         case "$libc" in
8048                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
8049                         *libc.$so.[0-9]*) dflt=$majonly ;;
8050                         *)      dflt=libperl.$so ;;
8051                         esac
8052                         ;;
8053                 esac
8054                 ;;
8055         *)      dflt=$libperl
8056                 ;;
8057         esac
8058         cat << EOM
8059
8060 I need to select a good name for the shared libperl.  If your system uses
8061 library names with major and minor numbers, then you might want something
8062 like $majmin.  Alternatively, if your system uses a single version
8063 number for shared libraries, then you might want to use $majonly.
8064 Or, your system might be quite happy with a simple libperl.$so.
8065
8066 Since the shared libperl will get installed into a version-specific
8067 architecture-dependent directory, the version number of the shared perl
8068 library probably isn't important, so the default should be o.k.
8069
8070 EOM
8071         rp='What name do you want to give to the shared libperl?'
8072         . ./myread
8073         libperl=$ans
8074         echo "Ok, I'll use $libperl"
8075         ;;
8076 *)
8077         libperl="libperl${_a}"
8078         ;;
8079 esac
8080
8081 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8082 case "$shrpdir" in
8083 '') ;;
8084 *)      $cat >&4 <<EOM
8085 WARNING:  Use of the shrpdir variable for the installation location of
8086 the shared $libperl is not supported.  It was never documented and
8087 will not work in this version.  Let me (perlbug@perl.org)
8088 know of any problems this may cause.
8089
8090 EOM
8091         case "$shrpdir" in
8092         "$archlibexp/CORE")
8093                 $cat >&4 <<EOM
8094 But your current setting of $shrpdir is
8095 the default anyway, so it's harmless.
8096 EOM
8097                 ;;
8098         *)
8099                 $cat >&4 <<EOM
8100 Further, your current attempted setting of $shrpdir
8101 conflicts with the value of $archlibexp/CORE
8102 that installperl will use.
8103 EOM
8104                 ;;
8105         esac
8106         ;;
8107 esac
8108
8109 # How will the perl executable find the installed shared $libperl?
8110 # Add $xxx to ccdlflags.
8111 # If we can't figure out a command-line option, use $shrpenv to
8112 # set env LD_RUN_PATH.  The main perl makefile uses this.
8113 shrpdir=$archlibexp/CORE
8114 xxx=''
8115 tmp_shrpenv=''
8116 if "$useshrplib"; then
8117     case "$osname" in 
8118         aix)
8119                 # We'll set it in Makefile.SH...
8120                 ;;
8121         solaris)
8122                 xxx="-R $shrpdir"
8123                 ;;
8124         freebsd|netbsd|openbsd|interix|dragonfly)
8125                 xxx="-Wl,-R$shrpdir"
8126                 ;;
8127         bsdos|linux|irix*|dec_osf|gnu*)
8128                 xxx="-Wl,-rpath,$shrpdir"
8129                 ;;
8130         next)
8131                 # next doesn't like the default...
8132                 ;;
8133         beos)
8134                 # beos doesn't like the default, either.
8135                 ;;
8136         hpux*)
8137                 # hpux doesn't like the default, either.
8138                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8139                 ;;
8140         *)
8141                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8142                 ;;
8143         esac
8144         case "$xxx" in
8145         '') ;;
8146         *)      
8147                 # Only add $xxx if it isn't already in ccdlflags.
8148                 case " $ccdlflags " in
8149                 *" $xxx "*)     ;;
8150                 *)      ccdlflags="$ccdlflags $xxx"
8151                         cat <<EOM >&4
8152
8153 Adding $xxx to the flags
8154 passed to $ld so that the perl executable will find the 
8155 installed shared $libperl.
8156
8157 EOM
8158                         ;;
8159                 esac
8160                 ;;
8161         esac
8162 fi
8163 # Fix ccdlflags in AIX for building external extensions.
8164 # (For building Perl itself bare -bE:perl.exp is needed,
8165 #  Makefile.SH takes care of this.)
8166 case "$osname" in
8167 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8168 esac
8169 # Respect a hint or command-line value.
8170 case "$shrpenv" in
8171 '') shrpenv="$tmp_shrpenv" ;;
8172 esac
8173 case "$ldlibpthname" in
8174 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8175 none)   ldlibpthname='' ;;
8176 esac
8177
8178 : determine where manual pages are on this system
8179 echo " "
8180 case "$sysman" in
8181 '') 
8182         syspath='/usr/share/man/man1 /usr/man/man1'
8183         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8184         syspath="$syspath /usr/man/u_man/man1"
8185         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8186         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8187         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8188         sysman=`./loc . /usr/man/man1 $syspath`
8189         ;;
8190 esac
8191 if $test -d "$sysman"; then
8192         echo "System manual is in $sysman." >&4
8193 else
8194         echo "Could not find manual pages in source form." >&4
8195 fi
8196
8197 : determine where manual pages go
8198 set man1dir man1dir none
8199 eval $prefixit
8200 $cat <<EOM
8201
8202 $spackage has manual pages available in source form.
8203 EOM
8204 case "$nroff" in
8205 nroff)
8206         echo "However, you don't have nroff, so they're probably useless to you."
8207         case "$man1dir" in
8208         '') man1dir="none";;
8209         esac;;
8210 esac
8211 echo "If you don't want the manual sources installed, answer 'none'."
8212 case "$man1dir" in
8213 ' ') dflt=none
8214         ;;
8215 '')
8216         lookpath="$prefixexp/share/man/man1"
8217         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8218         lookpath="$lookpath $prefixexp/man/p_man/man1"
8219         lookpath="$lookpath $prefixexp/man/u_man/man1"
8220         lookpath="$lookpath $prefixexp/man/man.1"
8221         case "$sysman" in
8222         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8223         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8224         esac
8225         set dflt
8226         eval $prefixup
8227         ;;
8228 *)  dflt="$man1dir"
8229         ;;
8230 esac
8231 echo " "
8232 fn=dn+~
8233 rp="Where do the main $spackage manual pages (source) go?"
8234 . ./getfile
8235 if $test "X$man1direxp" != "X$ansexp"; then
8236         installman1dir=''
8237 fi
8238 prefixvar=man1dir
8239 . ./setprefixvar
8240
8241 case "$man1dir" in
8242 '')     man1dir=' '
8243         installman1dir='';;
8244 esac
8245
8246 : What suffix to use on installed man pages
8247
8248 case "$man1dir" in
8249 ' ')
8250         man1ext='0'
8251         ;;
8252 *)
8253         rp="What suffix should be used for the main $spackage man pages?"
8254         case "$man1ext" in
8255         '')     case "$man1dir" in
8256                 *1)  dflt=1 ;;
8257                 *1p) dflt=1p ;;
8258                 *1pm) dflt=1pm ;;
8259                 *l) dflt=l;;
8260                 *n) dflt=n;;
8261                 *o) dflt=o;;
8262                 *p) dflt=p;;
8263                 *C) dflt=C;;
8264                 *L) dflt=L;;
8265                 *L1) dflt=L1;;
8266                 *) dflt=1;;
8267                 esac
8268                 ;;
8269         *)      dflt="$man1ext";;
8270         esac
8271         . ./myread
8272         man1ext="$ans"
8273         ;;
8274 esac
8275
8276 : see if we can have long filenames
8277 echo " "
8278 first=123456789abcdef
8279 $rm -f $first
8280 if (echo hi >$first) 2>/dev/null; then
8281         if $test -f 123456789abcde; then
8282                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8283                 val="$undef"
8284         else
8285                 echo 'You can have filenames longer than 14 characters.'>&4
8286                 val="$define"
8287         fi
8288 else
8289         $cat <<'EOM'
8290 You can't have filenames longer than 14 chars.
8291 You can't even think about them!
8292 EOM
8293         val="$undef"
8294 fi 
8295 set d_flexfnam
8296 eval $setvar
8297 $rm -rf 123456789abcde*
8298
8299 : determine where library module manual pages go
8300 set man3dir man3dir none
8301 eval $prefixit
8302 $cat <<EOM
8303
8304 $spackage has manual pages for many of the library modules.
8305 EOM
8306
8307 case "$nroff" in
8308 nroff)
8309         $cat <<'EOM'
8310 However, you don't have nroff, so they're probably useless to you.
8311 EOM
8312         case "$man3dir" in
8313         '') man3dir="none";;
8314         esac;;
8315 esac
8316
8317 case "$d_flexfnam" in
8318 undef)
8319         $cat <<'EOM'
8320 However, your system can't handle the long file names like File::Basename.3.
8321 EOM
8322         case "$man3dir" in
8323         '') man3dir="none";;
8324         esac;;
8325 esac
8326
8327 echo "If you don't want the manual sources installed, answer 'none'."
8328 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8329 case "$man3dir" in
8330 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8331         if $test -d "$privlib/man/man3"; then
8332                 cat <<EOM >&4
8333
8334 WARNING:  Previous versions of perl installed man3 pages into
8335 $privlib/man/man3.  This version will suggest a
8336 new default of $dflt.
8337 EOM
8338                 tdflt=$dflt
8339                 dflt='n'
8340                 rp='Do you wish to preserve the old behavior?(y/n)'
8341                 . ./myread
8342                 case "$ans" in
8343                 y*) dflt="$privlib/man/man3" ;;
8344                 *)  dflt=$tdflt ;;
8345                 esac
8346     fi
8347         ;;
8348 *)      dflt="$man3dir" ;;
8349 esac
8350 case "$dflt" in
8351 ' ') dflt=none ;;
8352 esac
8353 echo " "
8354 fn=dn+~
8355 rp="Where do the $package library man pages (source) go?"
8356 . ./getfile
8357 prefixvar=man3dir
8358 . ./setprefixvar
8359
8360 case "$man3dir" in
8361 '')     man3dir=' '
8362         installman3dir='';;
8363 esac
8364
8365 : What suffix to use on installed man pages
8366 case "$man3dir" in
8367 ' ')
8368         man3ext='0'
8369         ;;
8370 *)
8371         rp="What suffix should be used for the $package library man pages?"
8372         case "$man3ext" in
8373         '')     case "$man3dir" in
8374                 *3)  dflt=3 ;;
8375                 *3p) dflt=3p ;;
8376                 *3pm) dflt=3pm ;;
8377                 *l) dflt=l;;
8378                 *n) dflt=n;;
8379                 *o) dflt=o;;
8380                 *p) dflt=p;;
8381                 *C) dflt=C;;
8382                 *L) dflt=L;;
8383                 *L3) dflt=L3;;
8384                 *) dflt=3;;
8385                 esac
8386                 ;;
8387         *)      dflt="$man3ext";;
8388         esac
8389         . ./myread
8390         man3ext="$ans"
8391         ;;
8392 esac
8393
8394 : see if we have to deal with yellow pages, now NIS.
8395 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8396         if $test -f /usr/etc/nibindd; then
8397                 echo " "
8398                 echo "I'm fairly confident you're on a NeXT."
8399                 echo " "
8400                 rp='Do you get the hosts file via NetInfo?'
8401                 dflt=y
8402                 case "$hostcat" in
8403                 nidump*) ;;
8404                 '') ;;
8405                 *) dflt=n;;
8406                 esac
8407                 . ./myread
8408                 case "$ans" in
8409                 y*) hostcat='nidump hosts .';;
8410                 *)      case "$hostcat" in
8411                         nidump*) hostcat='';;
8412                         esac
8413                         ;;
8414                 esac
8415         fi
8416         case "$hostcat" in
8417         nidump*) ;;
8418         *)
8419                 case "$hostcat" in
8420                 *ypcat*) dflt=y;;
8421                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8422                                 dflt=y
8423                         else
8424                                 dflt=n
8425                         fi;;
8426                 *) dflt=n;;
8427                 esac
8428                 echo " "
8429                 rp='Are you getting the hosts file via yellow pages?'
8430                 . ./myread
8431                 case "$ans" in
8432                 y*) hostcat='ypcat hosts';;
8433                 *) hostcat='cat /etc/hosts';;
8434                 esac
8435                 ;;
8436         esac
8437 fi
8438 case "$hostcat" in
8439 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8440 esac
8441 case "$groupcat" in
8442 '') test -f /etc/group && groupcat='cat /etc/group';;
8443 esac
8444 case "$passcat" in
8445 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8446 esac
8447
8448 : now get the host name
8449 echo " "
8450 echo "Figuring out host name..." >&4
8451 case "$myhostname" in
8452 '') cont=true
8453         echo 'Maybe "hostname" will work...'
8454         if tans=`sh -c hostname 2>&1` ; then
8455                 myhostname=$tans
8456                 phostname=hostname
8457                 cont=''
8458         fi
8459         ;;
8460 *) cont='';;
8461 esac
8462 if $test "$cont"; then
8463         if ./xenix; then
8464                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8465                 if tans=`cat /etc/systemid 2>&1` ; then
8466                         myhostname=$tans
8467                         phostname='cat /etc/systemid'
8468                         echo "Whadyaknow.  Xenix always was a bit strange..."
8469                         cont=''
8470                 fi
8471         elif $test -r /etc/systemid; then
8472                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8473         fi
8474 fi
8475 if $test "$cont"; then
8476         echo 'No, maybe "uuname -l" will work...'
8477         if tans=`sh -c 'uuname -l' 2>&1` ; then
8478                 myhostname=$tans
8479                 phostname='uuname -l'
8480         else
8481                 echo 'Strange.  Maybe "uname -n" will work...'
8482                 if tans=`sh -c 'uname -n' 2>&1` ; then
8483                         myhostname=$tans
8484                         phostname='uname -n'
8485                 else
8486                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8487                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8488                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8489                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8490                         else
8491                                 case "$myhostname" in
8492                                 '') echo "Does this machine have an identity crisis or something?"
8493                                         phostname='';;
8494                                 *)
8495                                         echo "Well, you said $myhostname before..."
8496                                         phostname='echo $myhostname';;
8497                                 esac
8498                         fi
8499                 fi
8500         fi
8501 fi
8502 case "$myhostname" in
8503 '') myhostname=noname ;;
8504 esac
8505 : you do not want to know about this
8506 set $myhostname
8507 myhostname=$1
8508
8509 : verify guess
8510 if $test "$myhostname" ; then
8511         dflt=y
8512         rp='Your host name appears to be "'$myhostname'".'" Right?"
8513         . ./myread
8514         case "$ans" in
8515         y*) ;;
8516         *) myhostname='';;
8517         esac
8518 fi
8519
8520 : bad guess or no guess
8521 while $test "X$myhostname" = X ; do
8522         dflt=''
8523         rp="Please type the (one word) name of your host:"
8524         . ./myread
8525         myhostname="$ans"
8526 done
8527
8528 : translate upper to lower if necessary
8529 case "$myhostname" in
8530 *[A-Z]*)
8531         echo "(Normalizing case in your host name)"
8532         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8533         ;;
8534 esac
8535
8536 case "$myhostname" in
8537 *.*)
8538         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8539         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8540         echo "(Trimming domain name from host name--host name is now $myhostname)"
8541         ;;
8542 *) case "$mydomain" in
8543         '')
8544                 {
8545                         test "X$hostcat" = "Xypcat hosts" &&
8546                         ypmatch "$myhostname" hosts 2>/dev/null |\
8547                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8548                         $test -s hosts
8549                 } || {
8550                         test "X$hostcat" != "X" &&
8551                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8552                                         /[       ]$myhostname[  . ]/p" > hosts
8553                 }
8554                 tmp_re="[       . ]"
8555                 if $test -f hosts; then
8556                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8557                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8558                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8559                                 hosts | $sort | $uniq | \
8560                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8561                         case `$echo X$dflt` in
8562                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8563                                 dflt=.
8564                                 ;;
8565                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8566                                 ;;
8567                         esac
8568                 else
8569                         echo "(I cannot locate a hosts database anywhere)"
8570                         dflt=.
8571                 fi
8572                 case "$dflt" in
8573                 .)
8574                         tans=`./loc resolv.conf X /etc /usr/etc`
8575                         if $test -f "$tans"; then
8576                                 echo "(Attempting domain name extraction from $tans)"
8577                                 dflt=.`$sed -n -e 's/   / /g' \
8578                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8579                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8580                                 case "$dflt" in
8581                                 .) dflt=.`$sed -n -e 's/        / /g' \
8582                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8583                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8584                                         ;;
8585                                 esac
8586                         fi
8587                         ;;
8588                 esac
8589                 case "$dflt" in
8590                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8591                         dflt=.`sh -c domainname 2>/dev/null`
8592                         case "$dflt" in
8593                         '') dflt='.';;
8594                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8595                         esac
8596                         ;;
8597                 esac
8598                 case "$dflt$osname" in
8599                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8600                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8601                         ;;
8602                 esac
8603                 case "$dflt" in
8604                 .) echo "(Lost all hope -- silly guess then)"
8605                         dflt='.nonet'
8606                         ;;
8607                 esac
8608                 $rm -f hosts
8609                 ;;
8610         *) dflt="$mydomain";;
8611         esac;;
8612 esac
8613 echo " "
8614 rp="What is your domain name?"
8615 . ./myread
8616 tans="$ans"
8617 case "$ans" in
8618 '') ;;
8619 .*) ;;
8620 *) tans=".$tans";;
8621 esac
8622 mydomain="$tans"
8623
8624 : translate upper to lower if necessary
8625 case "$mydomain" in
8626 *[A-Z]*)
8627         echo "(Normalizing case in your domain name)"
8628         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8629         ;;
8630 esac
8631
8632 : a little sanity check here
8633 case "$phostname" in
8634 '') ;;
8635 *)
8636         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8637         $myhostname$mydomain|$myhostname) ;;
8638         *)
8639                 case "$phostname" in
8640                 sed*)
8641                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8642                         ;;
8643                 *)
8644                         echo "(That doesn't agree with your $phostname command, by the way.)"
8645                         ;;
8646                 esac
8647         ;;
8648         esac
8649         ;;
8650 esac
8651
8652 $cat <<EOM
8653
8654 I need to get your e-mail address in Internet format if possible, i.e.
8655 something like user@host.domain. Please answer accurately since I have
8656 no easy means to double check it. The default value provided below
8657 is most probably close to reality but may not be valid from outside
8658 your organization...
8659
8660 EOM
8661 cont=x
8662 while test "$cont"; do
8663         case "$cf_email" in
8664         '') dflt="$cf_by@$myhostname$mydomain";;
8665         *) dflt="$cf_email";;
8666         esac
8667         rp='What is your e-mail address?'
8668         . ./myread
8669         cf_email="$ans"
8670         case "$cf_email" in
8671         *@*.*) cont='' ;;
8672         *)
8673                 rp='Address does not look like an Internet one.  Use it anyway?'
8674                 case "$fastread" in
8675                 yes) dflt=y ;;
8676                 *) dflt=n ;;
8677                 esac
8678                 . ./myread
8679                 case "$ans" in
8680                 y*) cont='' ;;
8681                 *) echo " " ;;
8682                 esac
8683                 ;;
8684         esac
8685 done
8686
8687 $cat <<EOM
8688
8689 If you or somebody else will be maintaining perl at your site, please
8690 fill in the correct e-mail address here so that they may be contacted
8691 if necessary. Currently, the "perlbug" program included with perl
8692 will send mail to this address in addition to perlbug@perl.org. You may
8693 enter "none" for no administrator.
8694
8695 EOM
8696 case "$perladmin" in
8697 '') dflt="$cf_email";;
8698 *) dflt="$perladmin";;
8699 esac
8700 rp='Perl administrator e-mail address'
8701 . ./myread
8702 perladmin="$ans"
8703
8704 : determine whether to only install version-specific parts.
8705 echo " "
8706 $cat <<EOM
8707 Do you want to install only the version-specific parts of the perl
8708 distribution?  Usually you do *not* want to do this.
8709 EOM
8710 case "$versiononly" in
8711 "$define"|[Yy]*|true) dflt='y' ;;
8712 *) dflt='n';
8713 esac
8714 rp="Do you want to install only the version-specific parts of perl?"
8715 . ./myread
8716 case "$ans" in
8717 [yY]*)  val="$define";;
8718 *)      val="$undef" ;;
8719 esac
8720 set versiononly
8721 eval $setvar
8722
8723 case "$versiononly" in
8724 "$define") inc_version_list=''
8725            inc_version_list_init=0
8726            ;;
8727 esac
8728
8729 : figure out how to guarantee perl startup
8730 : XXX Note that this currently takes advantage of the bug that binexp ignores
8731 :     the Configure -Dinstallprefix setting, which in turn means that under
8732 :     relocatable @INC, initialinstalllocation is what binexp started as.
8733 case "$startperl" in
8734 '')
8735         case "$sharpbang" in
8736         *!)
8737                 $cat <<EOH
8738
8739 I can use the #! construct to start perl on your system. This will
8740 make startup of perl scripts faster, but may cause problems if you
8741 want to share those scripts and perl is not in a standard place
8742 ($initialinstalllocation/perl) on all your platforms. The alternative
8743 is to force a shell by starting the script with a single ':' character.
8744
8745 EOH
8746                 case "$versiononly" in
8747                 "$define")      dflt="$initialinstalllocation/perl$version";;
8748                 *)              dflt="$initialinstalllocation/perl";;
8749                 esac
8750                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8751                 . ./myread
8752                 case "$ans" in
8753                 none)   startperl=": # use perl";;
8754                 *)      startperl="#!$ans"
8755                         if $test 30 -lt `echo "$ans" | wc -c`; then
8756                                 $cat >&4 <<EOM
8757
8758 WARNING:  Some systems limit the #! command to 32 characters.
8759 If you experience difficulty running Perl scripts with #!, try
8760 installing Perl in a directory with a shorter pathname.
8761
8762 EOM
8763                         fi ;;
8764                 esac
8765                 ;;
8766         *) startperl=": # use perl"
8767                 ;;
8768         esac
8769         ;;
8770 esac
8771 echo "I'll use $startperl to start perl scripts."
8772
8773 : figure best path for perl in scripts
8774 case "$perlpath" in
8775 '')
8776         case "$versiononly" in
8777         "$define")      perlpath="$initialinstalllocation/perl$version";;
8778         *)              perlpath="$initialinstalllocation/perl";;
8779         esac
8780         case "$startperl" in
8781         *!*) ;;
8782         *)
8783                 $cat <<EOH
8784
8785 I will use the "eval 'exec'" idiom to start Perl on your system.
8786 I can use the full path of your Perl binary for this purpose, but
8787 doing so may cause problems if you want to share those scripts and
8788 Perl is not always in a standard place ($initialinstalllocation/perl).
8789
8790 EOH
8791                 dflt="$initialinstalllocation/perl"
8792                 rp="What path shall I use in \"eval 'exec'\"?"
8793                 . ./myread
8794                 perlpath="$ans"
8795                 ;;
8796         esac
8797         ;;
8798 esac
8799 case "$startperl" in
8800 *!*)    ;;
8801 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8802 esac
8803
8804 : determine where public executable scripts go
8805 set scriptdir scriptdir
8806 eval $prefixit
8807 case "$scriptdir" in
8808 '')
8809         dflt="$bin"
8810         : guess some guesses
8811         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8812         $test -d /usr/share/bin     && dflt=/usr/share/bin
8813         $test -d /usr/local/script  && dflt=/usr/local/script
8814         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8815         $test -d $prefixexp/script  && dflt=$prefixexp/script
8816         set dflt
8817         eval $prefixup
8818         ;;
8819 *)  dflt="$scriptdir"
8820         ;;
8821 esac
8822 $cat <<EOM
8823
8824 Some installations have a separate directory just for executable scripts so
8825 that they can mount it across multiple architectures but keep the scripts in
8826 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8827 Or you might just lump your scripts in with all your other executables.
8828
8829 EOM
8830 fn=d~
8831 rp='Where do you keep publicly executable scripts?'
8832 . ./getfile
8833 if $test "X$ansexp" != "X$scriptdirexp"; then
8834         installscript=''
8835 fi
8836 installscriptdir=''
8837 prefixvar=scriptdir
8838 . ./setprefixvar
8839 : A little fix up for an irregularly named variable.
8840 installscript="$installscriptdir"
8841
8842 : determine where add-on public executables go
8843 case "$sitebin" in
8844 '')     dflt=$siteprefix/bin ;;
8845 *)      dflt=$sitebin ;;
8846 esac
8847 fn=d~
8848 rp='Pathname where the add-on public executables should be installed?'
8849 . ./getfile
8850 prefixvar=sitebin
8851 . ./setprefixvar
8852
8853 : determine where add-on html pages go
8854 : There is no standard location, so try to copy the previously-selected
8855 : directory structure for the core html pages.
8856 case "$sitehtml1dir" in
8857 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8858 *)     dflt=$sitehtml1dir ;;
8859 esac
8860 case "$dflt" in
8861 ''|' ') dflt=none ;;
8862 esac
8863 fn=dn+~
8864 rp='Pathname where the site-specific html pages should be installed?'
8865 . ./getfile
8866 prefixvar=sitehtml1dir
8867 . ./setprefixvar
8868
8869 : determine where add-on library html pages go
8870 : There is no standard location, so try to copy the previously-selected
8871 : directory structure for the core html pages.
8872 case "$sitehtml3dir" in
8873 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8874 *)     dflt=$sitehtml3dir ;;
8875 esac
8876 case "$dflt" in
8877 ''|' ') dflt=none ;;
8878 esac
8879 fn=dn+~
8880 rp='Pathname where the site-specific library html pages should be installed?'
8881 . ./getfile
8882 prefixvar=sitehtml3dir
8883 . ./setprefixvar
8884
8885 : determine where add-on manual pages go
8886 case "$siteman1dir" in
8887 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8888 *)      dflt=$siteman1dir ;;
8889 esac
8890 case "$dflt" in
8891 ''|' ') dflt=none ;;
8892 esac
8893 fn=dn+~
8894 rp='Pathname where the site-specific manual pages should be installed?'
8895 . ./getfile
8896 prefixvar=siteman1dir
8897 . ./setprefixvar
8898
8899 : determine where add-on library man pages go
8900 case "$siteman3dir" in
8901 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8902 *)      dflt=$siteman3dir ;;
8903 esac
8904 case "$dflt" in
8905 ''|' ') dflt=none ;;
8906 esac
8907 fn=dn+~
8908 rp='Pathname where the site-specific library manual pages should be installed?'
8909 . ./getfile
8910 prefixvar=siteman3dir
8911 . ./setprefixvar
8912
8913 : determine where add-on public executable scripts go
8914 case "$sitescript" in
8915 '')     dflt=$siteprefix/script
8916         $test -d $dflt || dflt=$sitebin ;;
8917 *)  dflt="$sitescript" ;;
8918 esac
8919 fn=d~+
8920 rp='Pathname where add-on public executable scripts should be installed?'
8921 . ./getfile
8922 prefixvar=sitescript
8923 . ./setprefixvar
8924
8925 case "$usefaststdio" in
8926 $define|true|[yY]*|'')
8927         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8928         case "$xversion" in
8929         [68])   dflt='y' ;;
8930         *)      dflt='n' ;;
8931         esac
8932         ;;
8933 *) dflt='n';;
8934 esac
8935 cat <<EOM
8936
8937 Perl can be built to use 'fast stdio', which means using the stdio
8938 library but also directly manipulating the stdio buffers to enable
8939 faster I/O.  Using stdio is better for backward compatibility (especially
8940 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8941 interface has been preferred instead of stdio.
8942
8943 If this doesn't make any sense to you, just accept the default '$dflt'.
8944 EOM
8945 rp='Use the "fast stdio" if available?'
8946 . ./myread
8947 case "$ans" in
8948 y|Y)    val="$define" ;;     
8949 *)      val="$undef" ;;
8950 esac
8951 set usefaststdio
8952 eval $setvar
8953
8954 : DTrace support
8955 dflt_dtrace='/usr/sbin/dtrace'
8956 cat <<EOM
8957
8958 Perl can be built to support DTrace on platforms that support it.
8959 DTrace is a diagnosis and performance analysis tool from Sun.
8960
8961 If this doesn't make any sense to you, just accept the default '$dflt'.
8962 EOM
8963
8964 while test 1 ; do
8965         case "$usedtrace" in
8966         $define|true|[yY]*) 
8967                 dflt='y' 
8968                 ;;
8969         ?*)
8970                 dflt='y' 
8971                 dflt_dtrace=$usedtrace
8972                 ;;
8973         *) 
8974                 dflt='n' 
8975                 ;;
8976         esac
8977
8978         rp='Support DTrace if available?'
8979         . ./myread
8980         case "$ans" in
8981         y|Y)    val="$define" ;;
8982         *)      val="$undef" ;;
8983         esac
8984         set usedtrace
8985         eval $setvar
8986
8987         test "X$usedtrace" != "X$define" && break
8988
8989         echo " "
8990         rp='Where is the dtrace executable?'
8991         dflt=$dflt_dtrace
8992         . ./getfile
8993         val="$ans"
8994         set dtrace
8995         eval $setvar
8996         
8997         if test -f $dtrace
8998         then
8999                 if $dtrace -h -s ../perldtrace.d \
9000                         -o perldtrace.tmp >/dev/null 2>&1 \
9001                         && rm -f perldtrace.tmp
9002                 then
9003                         echo " "
9004                         echo "Good: your $dtrace knows about the -h flag."
9005                 else
9006                         cat >&2 <<EOM
9007
9008 *** $me:  Fatal Error:  $dtrace doesn't support -h flag
9009 ***
9010 *** Your installed dtrace doesn't support the -h switch to compile a D
9011 *** program into a C header. Can't continue.
9012
9013 EOM
9014                         exit 1
9015                 fi
9016                 break;
9017         fi
9018
9019         echo "$dtrace was not found."
9020         echo " "
9021 done
9022
9023 : define an is-a-typedef? function
9024 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9025 case "$inclist" in
9026 "") inclist="sys/types.h";;
9027 esac;
9028 eval "varval=\$$var";
9029 case "$varval" in
9030 "")
9031         $rm -f temp.c;
9032         for inc in $inclist; do
9033                 echo "#include <$inc>" >>temp.c;
9034         done;
9035         echo "#ifdef $type" >> temp.c;
9036         echo "printf(\"We have $type\");" >> temp.c;
9037         echo "#endif" >> temp.c;
9038         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9039         if $contains $type temp.E >/dev/null 2>&1; then
9040                 eval "$var=\$type";
9041         else
9042                 eval "$var=\$def";
9043         fi;
9044         $rm -f temp.?;;
9045 *) eval "$var=\$varval";;
9046 esac'
9047
9048 : define an is-a-typedef? function that prompts if the type is not available.
9049 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9050 case "$inclist" in
9051 "") inclist="sys/types.h";;
9052 esac;
9053 eval "varval=\$$var";
9054 case "$varval" in
9055 "")
9056         $rm -f temp.c;
9057         for inc in $inclist; do
9058                 echo "#include <$inc>" >>temp.c;
9059         done;
9060         echo "#ifdef $type" >> temp.c;
9061         echo "printf(\"We have $type\");" >> temp.c;
9062         echo "#endif" >> temp.c;
9063         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9064         echo " " ;
9065         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9066         if $contains $type temp.E >/dev/null 2>&1; then
9067                 echo "$type found." >&4;
9068                 eval "$var=\$type";
9069         else
9070                 echo "$type NOT found." >&4;
9071                 dflt="$def";
9072                 . ./myread ;
9073                 eval "$var=\$ans";
9074         fi;
9075         $rm -f temp.?;;
9076 *) eval "$var=\$varval";;
9077 esac'
9078
9079 : see what type lseek is declared as in the kernel
9080 rp="What is the type used for lseek's offset on this system?"
9081 set off_t lseektype long stdio.h sys/types.h
9082 eval $typedef_ask
9083
9084 echo " "
9085 echo "Checking to see how big your file offsets are..." >&4
9086 $cat >try.c <<EOCP
9087 #include <sys/types.h>
9088 #include <stdio.h>
9089 int main()
9090 {
9091     printf("%d\n", (int)sizeof($lseektype));
9092     return(0);
9093 }
9094 EOCP
9095 set try
9096 if eval $compile_ok; then
9097         lseeksize=`$run ./try`
9098         echo "Your file offsets are $lseeksize bytes long."
9099 else
9100         dflt=$longsize
9101         echo " "
9102         echo "(I can't seem to compile the test program.  Guessing...)"
9103         rp="What is the size of your file offsets (in bytes)?"
9104         . ./myread
9105         lseeksize="$ans"
9106 fi
9107 $rm_try
9108
9109 : see what type file positions are declared as in the library
9110 rp="What is the type for file position used by fsetpos()?"
9111 set fpos_t fpostype long stdio.h sys/types.h
9112 eval $typedef_ask
9113
9114 : Check size for Fpos_t
9115 echo " "
9116 case "$fpostype" in
9117 *_t) zzz="$fpostype"    ;;
9118 *)   zzz="fpos_t"       ;;
9119 esac
9120 echo "Checking the size of $zzz..." >&4
9121 cat > try.c <<EOCP
9122 #include <sys/types.h>
9123 #include <stdio.h>
9124 #$i_stdlib I_STDLIB
9125 #ifdef I_STDLIB
9126 #include <stdlib.h>
9127 #endif
9128 int main() {
9129     printf("%d\n", (int)sizeof($fpostype));
9130     exit(0);
9131 }
9132 EOCP
9133 set try
9134 if eval $compile_ok; then
9135         yyy=`$run ./try`
9136         case "$yyy" in
9137         '')     fpossize=4
9138                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9139                 ;;
9140         *)      fpossize=$yyy
9141                 echo "Your $zzz is $fpossize bytes long."
9142                 ;;
9143         esac
9144 else
9145         dflt="$longsize"
9146         echo " " >&4
9147         echo "(I can't compile the test program.  Guessing...)" >&4
9148         rp="What is the size of your file positions (in bytes)?"
9149         . ./myread
9150         fpossize="$ans"
9151 fi
9152
9153 : Check for large file support
9154 # Backward compatibility (uselfs is deprecated).
9155 case "$uselfs" in
9156 "$define"|true|[yY]*)
9157         cat <<EOM >&4
9158
9159 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9160 EOM
9161         uselargefiles="$define"
9162         ;;
9163 esac
9164
9165 case "$lseeksize:$fpossize" in
9166 8:8) cat <<EOM
9167
9168 You can have files larger than 2 gigabytes.
9169 EOM
9170    val="$define" ;;
9171 *)    case "$uselargefiles" in
9172    "$undef"|false|[nN]*) dflt='n' ;;
9173    *)   dflt='y' ;;
9174    esac
9175    cat <<EOM
9176
9177 Perl can be built to understand large files (files larger than 2 gigabytes)
9178 on some systems.  To do so, Configure can be run with -Duselargefiles.
9179
9180 If this doesn't make any sense to you, just accept the default '$dflt'.
9181 EOM
9182    rp='Try to understand large files, if available?'
9183    . ./myread
9184    case "$ans" in
9185    y|Y)         val="$define" ;;
9186    *)           val="$undef"  ;;
9187    esac
9188    ;;
9189 esac
9190 set uselargefiles
9191 eval $setvar
9192 : Look for a hint-file generated 'call-back-unit'.  If the
9193 : user has specified that a large files perl is to be built,
9194 : we may need to set or change some other defaults.
9195 if $test -f uselargefiles.cbu; then
9196         echo "Your platform has some specific hints regarding large file builds, using them..."
9197         . ./uselargefiles.cbu
9198 fi
9199 case "$uselargefiles" in
9200 "$define")
9201         if $test -f uselargefiles.cbu; then
9202                 echo " "
9203                 echo "Rechecking to see how big your file offsets are..." >&4
9204                 $cat >try.c <<EOCP
9205 #include <sys/types.h>
9206 #include <stdio.h>
9207 int main()
9208 {
9209     printf("%d\n", (int)sizeof($lseektype));
9210     return(0);
9211 }
9212 EOCP
9213                 set try
9214                 if eval $compile_ok; then
9215                         lseeksize=`$run ./try`
9216                         $echo "Your file offsets are now $lseeksize bytes long."
9217                 else
9218                         dflt="$lseeksize"
9219                         echo " "
9220                         echo "(I can't seem to compile the test program.  Guessing...)"
9221                         rp="What is the size of your file offsets (in bytes)?"
9222                         . ./myread
9223                         lseeksize="$ans"
9224                 fi
9225                 case "$fpostype" in
9226                 *_t) zzz="$fpostype"    ;;
9227                 *)   zzz="fpos_t"       ;;
9228                 esac
9229                 $echo $n "Rechecking the size of $zzz...$c" >&4
9230                 $cat > try.c <<EOCP
9231 #include <sys/types.h>
9232 #include <stdio.h>
9233 #$i_stdlib I_STDLIB
9234 #ifdef I_STDLIB
9235 #include <stdlib.h>
9236 #endif
9237 int main() {
9238     printf("%d\n", (int)sizeof($fpostype));
9239     return(0);
9240 }
9241 EOCP
9242                 set try
9243                 if eval $compile_ok; then
9244                         yyy=`$run ./try`
9245                         dflt="$lseeksize"
9246                         case "$yyy" in
9247                         '')     echo " "
9248                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9249                                 ;;
9250                         *)      fpossize=$yyy
9251                                 echo " $fpossize bytes." >&4
9252                                 ;;
9253                         esac
9254                 else
9255                         dflt="$fpossize"
9256                         echo " "
9257                         echo "(I can't compile the test program.  Guessing...)" >&4
9258                         rp="What is the size of your file positions (in bytes)?"
9259                         . ./myread
9260                         fpossize="$ans"
9261                 fi
9262                 $rm_try
9263         fi
9264         ;;
9265 esac
9266
9267 : Set the vendorbin variables
9268 case "$vendorprefix" in
9269 '')     d_vendorbin="$undef"
9270         vendorbin=''
9271         vendorbinexp=''
9272         ;;
9273 *)      d_vendorbin="$define"
9274         : determine where vendor-supplied executables go.
9275         case "$vendorbin" in
9276         '') dflt=$vendorprefix/bin ;;
9277         *)      dflt="$vendorbin" ;;
9278         esac
9279         fn=d~+
9280         rp='Pathname for the vendor-supplied executables directory?'
9281         . ./getfile
9282         vendorbin="$ans"
9283         vendorbinexp="$ansexp"
9284         ;;
9285 esac
9286 prefixvar=vendorbin
9287 . ./installprefix
9288
9289 : Set the vendorhtml1dir variables
9290 case "$vendorprefix" in
9291 '')     vendorhtml1dir=''
9292         vendorhtml1direxp=''
9293         ;;
9294 *)      : determine where vendor-supplied html pages go.
9295         : There is no standard location, so try to copy the previously-selected
9296         : directory structure for the core html pages.
9297         : XXX Better default suggestions would be welcome.
9298         case "$vendorhtml1dir" in
9299         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9300         *)      dflt=$vendorhtml1dir ;;
9301         esac
9302         case "$dflt" in
9303         ''|' ') dflt=none ;;
9304         esac
9305         fn=dn+~
9306         rp='Pathname for the vendor-supplied html pages?'
9307         . ./getfile
9308         vendorhtml1dir="$ans"
9309         vendorhtml1direxp="$ansexp"
9310         ;;
9311 esac
9312 : Use ' ' for none so value is preserved next time through Configure
9313 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9314 prefixvar=vendorhtml1dir
9315 . ./installprefix
9316
9317 : Set the vendorhtml3dir variables
9318 case "$vendorprefix" in
9319 '')     vendorhtml3dir=''
9320         vendorhtml3direxp=''
9321         ;;
9322 *)      : determine where vendor-supplied module html pages go.
9323         : There is no standard location, so try to copy the previously-selected
9324         : directory structure for the core html pages.
9325         : XXX Better default suggestions would be welcome.
9326         case "$vendorhtml3dir" in
9327         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9328         *)      dflt=$vendorhtml3dir ;;
9329         esac
9330         case "$dflt" in
9331         ''|' ') dflt=none ;;
9332         esac
9333         fn=dn+~
9334         rp='Pathname for the vendor-supplied html pages?'
9335         . ./getfile
9336         vendorhtml3dir="$ans"
9337         vendorhtml3direxp="$ansexp"
9338         ;;
9339 esac
9340 : Use ' ' for none so value is preserved next time through Configure
9341 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9342 prefixvar=vendorhtml3dir
9343 . ./installprefix
9344
9345 : Set the vendorman1dir variables
9346 case "$vendorprefix" in
9347 '')     vendorman1dir=''
9348         vendorman1direxp=''
9349         ;;
9350 *)      : determine where vendor-supplied manual pages go.
9351         case "$vendorman1dir" in
9352         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9353         *)      dflt=$vendorman1dir ;;
9354         esac
9355         case "$dflt" in
9356         ''|' ') dflt=none ;;
9357         esac
9358         fn=nd~+
9359         rp='Pathname for the vendor-supplied manual section 1 pages?'
9360         . ./getfile
9361         vendorman1dir="$ans"
9362         vendorman1direxp="$ansexp"
9363         ;;
9364 esac
9365 : Use ' ' for none so value is preserved next time through Configure
9366 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9367 prefixvar=vendorman1dir
9368 . ./installprefix
9369
9370 : Set the vendorman3dir variables
9371 case "$vendorprefix" in
9372 '')     vendorman3dir=''
9373         vendorman3direxp=''
9374         ;;
9375 *)      : determine where vendor-supplied module manual pages go.
9376         case "$vendorman3dir" in
9377         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9378         *)      dflt=$vendorman3dir ;;
9379         esac
9380         case "$dflt" in
9381         ''|' ') dflt=none ;;
9382         esac
9383         fn=nd~+
9384         rp='Pathname for the vendor-supplied manual section 3 pages?'
9385         . ./getfile
9386         vendorman3dir="$ans"
9387         vendorman3direxp="$ansexp"
9388         ;;
9389 esac
9390 : Use ' ' for none so value is preserved next time through Configure
9391 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9392 prefixvar=vendorman3dir
9393 . ./installprefix
9394
9395 : Set the vendorscript variables
9396 case "$vendorprefix" in
9397 '')     d_vendorscript="$undef"
9398         vendorscript=''
9399         vendorscriptexp=''
9400         ;;
9401 *)      d_vendorscript="$define"
9402         : determine where vendor-supplied scripts go.
9403         case "$vendorscript" in
9404         '')     dflt=$vendorprefix/script
9405                 $test -d $dflt || dflt=$vendorbin ;;
9406         *)  dflt="$vendorscript" ;;
9407         esac
9408         $cat <<EOM
9409
9410 The installation process will create a directory for
9411 vendor-supplied scripts.
9412
9413 EOM
9414         fn=d~+
9415         rp='Pathname for the vendor-supplied scripts directory?'
9416         . ./getfile
9417         vendorscript="$ans"
9418         vendorscriptexp="$ansexp"
9419         ;;
9420 esac
9421 prefixvar=vendorscript
9422 . ./installprefix
9423
9424 : see if qgcvt exists
9425 set qgcvt d_qgcvt
9426 eval $inlibc
9427
9428 : Check print/scan long double stuff
9429 echo " "
9430
9431 if $test X"$d_longdbl" = X"$define"; then
9432
9433 echo "Checking how to print long doubles..." >&4
9434
9435 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9436         $cat >try.c <<'EOCP'
9437 #include <sys/types.h>
9438 #include <stdio.h>
9439 int main() {
9440   double d = 123.456;
9441   printf("%.3f\n", d);
9442 }
9443 EOCP
9444         set try
9445         if eval $compile; then
9446                 yyy=`$run ./try`
9447                 case "$yyy" in
9448                 123.456)
9449                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9450                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9451                         echo "We will use %f."
9452                         ;;
9453                 esac
9454         fi
9455 fi
9456
9457 if $test X"$sPRIfldbl" = X; then
9458         $cat >try.c <<'EOCP'
9459 #include <sys/types.h>
9460 #include <stdio.h>
9461 int main() {
9462   long double d = 123.456;
9463   printf("%.3Lf\n", d);
9464 }
9465 EOCP
9466         set try
9467         if eval $compile; then
9468                 yyy=`$run ./try`
9469                 case "$yyy" in
9470                 123.456)
9471                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9472                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9473                         echo "We will use %Lf."
9474                         ;;
9475                 esac
9476         fi
9477 fi
9478
9479 if $test X"$sPRIfldbl" = X; then
9480         $cat >try.c <<'EOCP'
9481 #include <sys/types.h>
9482 #include <stdio.h>
9483 int main() {
9484   long double d = 123.456;
9485   printf("%.3llf\n", d);
9486 }
9487 EOCP
9488         set try
9489         if eval $compile; then
9490                 yyy=`$run ./try`
9491                 case "$yyy" in
9492                 123.456)
9493                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9494                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9495                         echo "We will use %llf."
9496                         ;;
9497                 esac
9498         fi
9499 fi
9500
9501 if $test X"$sPRIfldbl" = X; then
9502         $cat >try.c <<'EOCP'
9503 #include <sys/types.h>
9504 #include <stdio.h>
9505 int main() {
9506   long double d = 123.456;
9507   printf("%.3lf\n", d);
9508 }
9509 EOCP
9510         set try
9511         if eval $compile; then
9512                 yyy=`$run ./try`
9513                 case "$yyy" in
9514                 123.456)
9515                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9516                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9517                         echo "We will use %lf."
9518                         ;;
9519                 esac
9520         fi
9521 fi
9522
9523 if $test X"$sPRIfldbl" = X; then
9524         echo "Cannot figure out how to print long doubles." >&4
9525 else
9526         sSCNfldbl=$sPRIfldbl    # expect consistency
9527 fi
9528
9529 $rm_try
9530
9531 fi # d_longdbl
9532
9533 case "$sPRIfldbl" in
9534 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9535         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9536         d_SCNfldbl="$undef";
9537         ;;
9538 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9539         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9540         d_SCNfldbl="$define";
9541         ;;
9542 esac
9543
9544 : Check how to convert floats to strings.
9545
9546 if test "X$d_Gconvert" = X; then
9547
9548 echo " "
9549 echo "Checking for an efficient way to convert floats to strings."
9550 echo " " > try.c
9551 case "$uselongdouble" in
9552 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9553 esac
9554 case "$d_longdbl" in
9555 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9556 esac
9557 case "$d_PRIgldbl" in
9558 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9559 esac
9560 $cat >>try.c <<EOP
9561 #ifdef TRY_gconvert
9562 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9563 char *myname = "gconvert";
9564 #endif
9565 #ifdef TRY_gcvt
9566 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9567 char *myname = "gcvt";
9568 #endif
9569 #ifdef TRY_qgcvt
9570 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9571 char *myname = "qgcvt";
9572 #define DOUBLETYPE long double
9573 #endif
9574 #ifdef TRY_sprintf
9575 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9576 #ifdef HAS_PRIgldbl
9577 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9578 #else
9579 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9580 #endif
9581 #else
9582 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9583 #endif
9584 char *myname = "sprintf";
9585 #endif
9586
9587 #ifndef DOUBLETYPE
9588 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9589 #define DOUBLETYPE long double
9590 #else
9591 #define DOUBLETYPE double
9592 #endif
9593 #endif
9594
9595 #include <stdio.h>
9596
9597 #define I_STDLIB $i_stdlib
9598 #ifdef I_STDLIB
9599 #include <stdlib.h>
9600 #endif
9601
9602 int
9603 checkit(expect, got)
9604 char *expect;
9605 char *got;
9606 {
9607     if (strcmp(expect, got)) {
9608                 printf("%s oddity:  Expected %s, got %s\n",
9609                         myname, expect, got);
9610                 exit(1);
9611         }
9612 }
9613
9614 int main()
9615 {
9616         char buf[64];
9617         buf[63] = '\0';
9618
9619         /* This must be 1st test on (which?) platform */
9620         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9621         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9622         checkit("0.1", buf);
9623
9624         Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9625         checkit("0.01", buf);
9626
9627         Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9628         checkit("0.001", buf);
9629
9630         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9631         checkit("0.0001", buf);
9632
9633         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9634         if (strlen(buf) > 5)
9635             checkit("9e-005", buf); /* for Microsoft ?? */
9636         else
9637             checkit("9e-05", buf);
9638
9639         Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9640         checkit("1", buf);
9641
9642         Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9643         checkit("1.1", buf);
9644
9645         Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9646         checkit("1.01", buf);
9647
9648         Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9649         checkit("1.001", buf);
9650
9651         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9652         checkit("1.0001", buf);
9653
9654         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9655         checkit("1.00001", buf);
9656
9657         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9658         checkit("1.000001", buf);
9659
9660         Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9661         checkit("0", buf);
9662
9663         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9664         checkit("-1", buf);
9665
9666         /* Some Linux gcvt's give 1.e+5 here. */
9667         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9668         checkit("100000", buf);
9669
9670         /* Some Linux gcvt's give -1.e+5 here. */
9671         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9672         checkit("-100000", buf);
9673
9674         Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9675         checkit("123.456", buf);
9676
9677         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9678         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9679         /* 34 should be enough to scare even long double
9680          * places into using the e notation. */
9681         if (strlen(buf) > 5)
9682             checkit("1e+034", buf); /* for Microsoft */
9683         else
9684             checkit("1e+34", buf);
9685
9686         /* For Perl, if you add additional tests here, also add them to
9687          * t/base/num.t for benefit of platforms not using Configure or
9688          * overriding d_Gconvert */
9689
9690         exit(0);
9691 }
9692 EOP
9693 : first add preferred functions to our list
9694 xxx_list=""
9695 for xxx_convert in $gconvert_preference; do
9696     case $xxx_convert in
9697     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9698     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9699     esac
9700 done
9701 : then add any others
9702 for xxx_convert in gconvert gcvt sprintf; do
9703     case "$xxx_list" in
9704     *$xxx_convert*) ;;
9705     *) xxx_list="$xxx_list $xxx_convert" ;;
9706     esac
9707 done
9708
9709 case "$d_longdbl$uselongdouble" in
9710 "$define$define")
9711     : again, add prefered functions to our list first
9712     xxx_ld_list=""
9713     for xxx_convert in $gconvert_ld_preference; do
9714         case $xxx_convert in
9715         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9716         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9717         esac
9718     done
9719     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9720     for xxx_convert in qgcvt sprintf $xxx_list; do
9721         case "$xxx_ld_list" in
9722         $xxx_convert*|*" $xxx_convert"*) ;;
9723         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9724         esac
9725     done
9726     : if sprintf cannot do long doubles, move it to the end
9727     if test "$d_PRIgldbl" != "$define"; then
9728         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9729     fi
9730     : if no qgcvt, remove it
9731     if test "$d_qgcvt" != "$define"; then
9732         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9733     fi
9734     : use the ld_list
9735     xxx_list="$xxx_ld_list"
9736     ;;
9737 esac
9738
9739 for xxx_convert in $xxx_list; do
9740         echo "Trying $xxx_convert..."
9741         $rm -f try try$_o core
9742         set try -DTRY_$xxx_convert
9743         if eval $compile; then
9744                 echo "$xxx_convert() found." >&4
9745                 if $run ./try; then
9746                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9747                         break;
9748                 else
9749                         echo "...But $xxx_convert didn't work as I expected."
9750                         xxx_convert=''
9751                 fi
9752         else
9753                 echo "$xxx_convert NOT found." >&4
9754         fi
9755 done
9756
9757 if test X$xxx_convert = X; then
9758     echo "*** WHOA THERE!!! ***" >&4
9759     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9760     xxx_convert=sprintf
9761 fi
9762
9763 case "$xxx_convert" in
9764 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9765 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9766 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9767 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9768    "$define$define$define")
9769       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9770    "$define$define$undef")
9771       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9772    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9773    esac
9774    ;;
9775 esac
9776
9777 fi
9778 $rm_try
9779
9780 : see if _fwalk exists
9781 set fwalk d__fwalk
9782 eval $inlibc
9783
9784 : Initialize h_fcntl
9785 h_fcntl=false
9786
9787 : Initialize h_sysfile
9788 h_sysfile=false
9789
9790 : access call always available on UNIX
9791 set access d_access
9792 eval $inlibc
9793
9794 : locate the flags for 'access()'
9795 case "$d_access" in
9796 "$define")
9797         echo " "
9798         $cat >access.c <<EOCP
9799 #include <sys/types.h>
9800 #ifdef I_FCNTL
9801 #include <fcntl.h>
9802 #endif
9803 #ifdef I_SYS_FILE
9804 #include <sys/file.h>
9805 #endif
9806 #ifdef I_UNISTD
9807 #include <unistd.h>
9808 #endif
9809 #$i_stdlib I_STDLIB
9810 #ifdef I_STDLIB
9811 #include <stdlib.h>
9812 #endif
9813 int main() {
9814         exit(R_OK);
9815 }
9816 EOCP
9817         : check sys/file.h first, no particular reason here
9818         if $test `./findhdr sys/file.h` && \
9819                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9820                 h_sysfile=true;
9821                 echo "<sys/file.h> defines the *_OK access constants." >&4
9822         elif $test `./findhdr fcntl.h` && \
9823                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9824                 h_fcntl=true;
9825                 echo "<fcntl.h> defines the *_OK access constants." >&4
9826         elif $test `./findhdr unistd.h` && \
9827                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9828                 echo "<unistd.h> defines the *_OK access constants." >&4
9829         else
9830                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9831         fi
9832         ;;
9833 esac
9834 $rm -f access*
9835
9836 : see if accessx exists
9837 set accessx d_accessx
9838 eval $inlibc
9839
9840 : see if aintl exists
9841 set aintl d_aintl
9842 eval $inlibc
9843
9844 : see if alarm exists
9845 set alarm d_alarm
9846 eval $inlibc
9847
9848 : see if POSIX threads are available
9849 set pthread.h i_pthread
9850 eval $inhdr
9851
9852 : define a fucntion to check prototypes
9853 $cat > protochk <<EOSH
9854 $startsh
9855 cc="$cc"
9856 optimize="$optimize"
9857 ccflags="$ccflags"
9858 prototype="$prototype"
9859 define="$define"
9860 rm_try="$rm_try"
9861 usethreads=$usethreads
9862 i_pthread=$i_pthread
9863 pthread_h_first=$pthread_h_first
9864 EOSH
9865
9866 $cat >> protochk <<'EOSH'
9867
9868 $rm_try
9869 foo="$1"
9870 shift
9871 while test $# -ge 2; do
9872         case "$1" in
9873                 $define) echo "#include <$2>" >> try.c ;;
9874                 literal) echo "$2" >> try.c ;;
9875         esac
9876     # Extra magic for the benefit of systems that need pthread.h
9877     # to be included early to correctly detect threadsafe functions.
9878     # Such functions must guarantee themselves, though, that the usethreads
9879     # and i_pthread have been defined, before calling protochk.
9880     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9881         echo "#include <pthread.h>" >> try.c
9882         pthread_h_done=yes
9883     fi
9884     shift 2
9885 done
9886 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9887 cat >> try.c <<'EOCP'
9888 #ifdef CAN_PROTOTYPE
9889 #define _(args) args
9890 #else
9891 #define _(args) ()
9892 #endif
9893 EOCP
9894 echo "$foo" >> try.c
9895 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9896 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9897 status=$?
9898 $rm_try
9899 exit $status
9900 EOSH
9901 chmod +x protochk
9902 $eunicefix protochk
9903
9904 hasproto='varname=$1; func=$2; shift; shift;
9905 while $test $# -ge 2; do
9906         case "$1" in
9907         $define) echo "#include <$2>";;
9908         esac ;
9909     shift 2;
9910 done > try.c;
9911 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9912 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9913         echo "$func() prototype found.";
9914         val="$define";
9915 else
9916         echo "$func() prototype NOT found.";
9917         val="$undef";
9918 fi;
9919 set $varname;
9920 eval $setvar;
9921 $rm_try tryout.c'
9922
9923 : see if sys/types.h has to be included
9924 set sys/types.h i_systypes
9925 eval $inhdr
9926
9927 : see if sys/select.h has to be included
9928 set sys/select.h i_sysselct
9929 eval $inhdr
9930
9931 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9932 while $test $# -ge 2; do
9933         case "$1" in
9934         $define) echo "#include <$2>";;
9935         esac ;
9936     shift 2;
9937 done > try.c;
9938 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9939 set try;
9940 if eval $compile; then
9941         val="$define";
9942 else
9943         val="$undef";
9944 fi;
9945 set $varname;
9946 eval $setvar;
9947 $rm_try'
9948
9949 : see if we should include time.h, sys/time.h, or both
9950 echo " "
9951 if test "X$timeincl" = X; then
9952         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9953         $echo $n "I'm now running the test program...$c"
9954         $cat >try.c <<EOCP
9955 #include <sys/types.h>
9956 #ifdef I_TIME
9957 #include <time.h>
9958 #endif
9959 #ifdef I_SYSTIME
9960 #ifdef SYSTIMEKERNEL
9961 #define KERNEL
9962 #endif
9963 #include <sys/time.h>
9964 #endif
9965 #ifdef I_SYSSELECT
9966 #include <sys/select.h>
9967 #endif
9968 #$i_stdlib I_STDLIB
9969 #ifdef I_STDLIB
9970 #include <stdlib.h>
9971 #endif
9972 int main()
9973 {
9974         struct tm foo;
9975 #ifdef S_TIMEVAL
9976         struct timeval bar;
9977 #endif
9978 #ifdef S_TIMEZONE
9979         struct timezone tzp;
9980 #endif
9981         if (foo.tm_sec == foo.tm_sec)
9982                 exit(0);
9983 #ifdef S_TIMEVAL
9984         if (bar.tv_sec == bar.tv_sec)
9985                 exit(0);
9986 #endif
9987         exit(1);
9988 }
9989 EOCP
9990         flags=''
9991         for s_timezone in '-DS_TIMEZONE' ''; do
9992         sysselect=''
9993         for s_timeval in '-DS_TIMEVAL' ''; do
9994         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9995         for i_time in '' '-DI_TIME'; do
9996         for i_systime in '-DI_SYSTIME' ''; do
9997                 case "$flags" in
9998                 '') $echo $n ".$c"
9999                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10000                         if eval $compile; then
10001                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10002                                 shift
10003                                 flags="$*"
10004                                 echo " "
10005                                 $echo $n "Succeeded with $flags$c"
10006                         fi
10007                         ;;
10008                 esac
10009         done
10010         done
10011         done
10012         done
10013         done
10014         timeincl=''
10015         echo " "
10016         case "$flags" in
10017         *SYSTIMEKERNEL*) i_systimek="$define"
10018                 timeincl=`./findhdr sys/time.h`
10019                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10020         *) i_systimek="$undef";;
10021         esac
10022         case "$flags" in
10023         *I_TIME*) i_time="$define"
10024                 timeincl=`./findhdr time.h`" $timeincl"
10025                 echo "We'll include <time.h>." >&4;;
10026         *) i_time="$undef";;
10027         esac
10028         case "$flags" in
10029         *I_SYSTIME*) i_systime="$define"
10030                 timeincl=`./findhdr sys/time.h`" $timeincl"
10031                 echo "We'll include <sys/time.h>." >&4;;
10032         *) i_systime="$undef";;
10033         esac
10034         $rm_try
10035 fi
10036 : see if struct tm knows about tm_zone
10037 case "$i_systime$i_time" in
10038 *$define*)
10039         echo " "
10040         echo "Checking to see if your struct tm has tm_zone field..." >&4
10041         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
10042         eval $hasfield
10043         ;;
10044 *)      val="$undef"
10045         set d_tm_tm_zone
10046         eval $setvar
10047         ;;
10048 esac
10049 case "$d_tm_tm_zone" in
10050 "$define")      echo "Yes, it does."   ;;
10051 *)              echo "No, it doesn't." ;;
10052 esac
10053 : see if struct tm knows about tm_gmtoff
10054 case "$i_systime$i_time" in
10055 *$define*)
10056         echo " "
10057         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
10058         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
10059         eval $hasfield
10060         ;;
10061 *)      val="$undef"
10062         set d_tm_tm_gmtoff
10063         eval $setvar
10064         ;;
10065 esac
10066 case "$d_tm_tm_gmtoff" in
10067 "$define")      echo "Yes, it does."   ;;
10068 *)              echo "No, it doesn't." ;;
10069 esac
10070
10071 : see if asctime_r exists
10072 set asctime_r d_asctime_r
10073 eval $inlibc
10074 case "$d_asctime_r" in
10075 "$define")
10076         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10077         case "$d_asctime_r_proto:$usethreads" in
10078         ":define")      d_asctime_r_proto=define
10079                 set d_asctime_r_proto asctime_r $hdrs
10080                 eval $hasproto ;;
10081         *)      ;;
10082         esac
10083         case "$d_asctime_r_proto" in
10084         define)
10085         case "$asctime_r_proto" in
10086         ''|0) try='char* asctime_r(const struct tm*, char*);'
10087         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
10088         esac
10089         case "$asctime_r_proto" in
10090         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
10091         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
10092         esac
10093         case "$asctime_r_proto" in
10094         ''|0) try='int asctime_r(const struct tm*, char*);'
10095         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
10096         esac
10097         case "$asctime_r_proto" in
10098         ''|0) try='int asctime_r(const struct tm*, char*, int);'
10099         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
10100         esac
10101         case "$asctime_r_proto" in
10102         ''|0)   d_asctime_r=undef
10103                 asctime_r_proto=0
10104                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10105         * )     case "$asctime_r_proto" in
10106                 REENTRANT_PROTO*) ;;
10107                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
10108                 esac
10109                 echo "Prototype: $try" ;;
10110         esac
10111         ;;
10112         *)      case "$usethreads" in
10113                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
10114                 esac
10115                 d_asctime_r=undef
10116                 asctime_r_proto=0
10117                 ;;
10118         esac
10119         ;;
10120 *)      asctime_r_proto=0
10121         ;;
10122 esac
10123
10124 : see if atolf exists
10125 set atolf d_atolf
10126 eval $inlibc
10127
10128 : see if atoll exists
10129 set atoll d_atoll
10130 eval $inlibc
10131
10132 : Look for GCC-style attribute format
10133 case "$d_attribute_format" in
10134 '')
10135 echo " "
10136 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10137 $cat >attrib.c <<'EOCP'
10138 #include <stdio.h>
10139 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10140 EOCP
10141 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10142         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10143                 echo "Your C compiler doesn't support __attribute__((format))."
10144                 val="$undef"
10145         else
10146                 echo "Your C compiler supports __attribute__((format))."
10147                 val="$define"
10148         fi
10149 else
10150         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10151         val="$undef"
10152 fi
10153 ;;
10154 *) val="$d_attribute_format" ;;
10155 esac
10156 set d_attribute_format
10157 eval $setvar
10158 $rm -f attrib*
10159
10160 : Look for GCC-style attribute format with null format allowed
10161 case "$d_printf_format_null" in
10162 '') case "$d_attribute_format" in
10163     $define)
10164         echo " "
10165         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10166 $cat >attrib.c <<EOCP
10167 #include <stdio.h>
10168 #$i_stdlib I_STDLIB
10169 #ifdef I_STDLIB
10170 #include <stdlib.h>
10171 #endif
10172 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10173 int null_printf (char* pat,...) { return (int)pat; }
10174 int main () { exit(null_printf(NULL)); }
10175 EOCP
10176         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10177             : run the executable in case it produces a run-time warning
10178             if $run ./attrib >>attrib.out 2>&1; then
10179                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10180                     echo "Your C compiler doesn't allow __printf__ format to be null."
10181                     val="$undef"
10182                 else
10183                     echo "Your C compiler allows __printf__ format to be null."
10184                     val="$define"
10185                 fi
10186             else
10187             echo "Your C compiler executable failed with __printf__ format null."
10188             val="$undef"
10189         fi
10190     else
10191         echo "Your C compiler fails with __printf__ format null."
10192         val="$undef"
10193     fi
10194     ;;
10195     *)  val="$undef" ;;
10196     esac
10197 ;;
10198 *)  val="$d_printf_format_null" ;;
10199 esac
10200 set d_printf_format_null
10201 eval $setvar
10202 $rm -f attrib*
10203
10204 : Look for GCC-style attribute malloc
10205 case "$d_attribute_malloc" in
10206 '')
10207 echo " "
10208 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10209 $cat >attrib.c <<'EOCP'
10210 #include <stdio.h>
10211 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10212 EOCP
10213 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10214         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10215                 echo "Your C compiler doesn't support __attribute__((malloc))."
10216                 val="$undef"
10217         else
10218                 echo "Your C compiler supports __attribute__((malloc))."
10219                 val="$define"
10220         fi
10221 else
10222         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10223         val="$undef"
10224 fi
10225 ;;
10226 *) val="$d_attribute_malloc" ;;
10227 esac
10228 set d_attribute_malloc
10229 eval $setvar
10230 $rm -f attrib*
10231
10232 : Look for GCC-style attribute nonnull
10233 case "$d_attribute_nonnull" in
10234 '')
10235 echo " "
10236 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10237 $cat >attrib.c <<'EOCP'
10238 #include <stdio.h>
10239 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10240 EOCP
10241 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10242         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10243                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10244                 val="$undef"
10245         else
10246                 echo "Your C compiler supports __attribute__((nonnull))."
10247                 val="$define"
10248         fi
10249 else
10250         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10251         val="$undef"
10252 fi
10253 ;;
10254 *) val="$d_attribute_nonnull" ;;
10255 esac
10256 set d_attribute_nonnull
10257 eval $setvar
10258 $rm -f attrib*
10259
10260 : Look for GCC-style attribute noreturn
10261 case "$d_attribute_noreturn" in
10262 '')
10263 echo " "
10264 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10265 $cat >attrib.c <<'EOCP'
10266 #include <stdio.h>
10267 void fall_over_dead( void ) __attribute__((noreturn));
10268 EOCP
10269 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10270         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10271                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10272                 val="$undef"
10273         else
10274                 echo "Your C compiler supports __attribute__((noreturn))."
10275                 val="$define"
10276         fi
10277 else
10278         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10279         val="$undef"
10280 fi
10281 ;;
10282 *) val="$d_attribute_noreturn" ;;
10283 esac
10284 set d_attribute_noreturn
10285 eval $setvar
10286 $rm -f attrib*
10287
10288 : Look for GCC-style attribute pure
10289 case "$d_attribute_pure" in
10290 '')
10291 echo " "
10292 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10293 $cat >attrib.c <<'EOCP'
10294 #include <stdio.h>
10295 int square( int n ) __attribute__((pure));
10296 EOCP
10297 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10298         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10299                 echo "Your C compiler doesn't support __attribute__((pure))."
10300                 val="$undef"
10301         else
10302                 echo "Your C compiler supports __attribute__((pure))."
10303                 val="$define"
10304         fi
10305 else
10306         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10307         val="$undef"
10308 fi
10309 ;;
10310 *) val="$d_attribute_pure" ;;
10311 esac
10312 set d_attribute_pure
10313 eval $setvar
10314 $rm -f attrib*
10315
10316 : Look for GCC-style attribute unused
10317 case "$d_attribute_unused" in
10318 '')
10319 echo " "
10320 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10321 $cat >attrib.c <<'EOCP'
10322 #include <stdio.h>
10323 int do_something( int dummy __attribute__((unused)), int n );
10324 EOCP
10325 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10326         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10327                 echo "Your C compiler doesn't support __attribute__((unused))."
10328                 val="$undef"
10329         else
10330                 echo "Your C compiler supports __attribute__((unused))."
10331                 val="$define"
10332         fi
10333 else
10334         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10335         val="$undef"
10336 fi
10337 ;;
10338 *) val="$d_attribute_unused" ;;
10339 esac
10340 set d_attribute_unused
10341 eval $setvar
10342 $rm -f attrib*
10343
10344 : Look for GCC-style attribute warn_unused_result
10345 case "$d_attribute_warn_unused_result" in
10346 '')
10347 echo " "
10348 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10349 $cat >attrib.c <<'EOCP'
10350 #include <stdio.h>
10351 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10352 EOCP
10353 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10354         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10355                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10356                 val="$undef"
10357         else
10358                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10359                 val="$define"
10360         fi
10361 else
10362         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10363         val="$undef"
10364 fi
10365 ;;
10366 *) val="$d_attribute_warn_unused_result" ;;
10367 esac
10368 set d_attribute_warn_unused_result
10369 eval $setvar
10370 $rm -f attrib*
10371
10372 : see if bcmp exists
10373 set bcmp d_bcmp
10374 eval $inlibc
10375
10376 : see if bcopy exists
10377 set bcopy d_bcopy
10378 eval $inlibc
10379
10380 : see if getpgrp exists
10381 set getpgrp d_getpgrp
10382 eval $inlibc
10383
10384 case "$d_getpgrp" in
10385 "$define")
10386         echo " "
10387         echo "Checking to see which flavor of getpgrp is in use..."
10388         $cat >try.c <<EOP
10389 #$i_unistd I_UNISTD
10390 #include <sys/types.h>
10391 #ifdef I_UNISTD
10392 #  include <unistd.h>
10393 #endif
10394 #$i_stdlib I_STDLIB
10395 #ifdef I_STDLIB
10396 #include <stdlib.h>
10397 #endif
10398 int main()
10399 {
10400         if (getuid() == 0) {
10401                 printf("(I see you are running Configure as super-user...)\n");
10402                 setuid(1);
10403         }
10404 #ifdef TRY_BSD_PGRP
10405         if (getpgrp(1) == 0)
10406                 exit(0);
10407 #else
10408         if (getpgrp() > 0)
10409                 exit(0);
10410 #endif
10411         exit(1);
10412 }
10413 EOP
10414         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10415                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10416                 val="$define"
10417         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10418                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10419                 val="$undef"
10420         else
10421                 echo "I can't seem to compile and run the test program."
10422                 if ./usg; then
10423                         xxx="a USG one, i.e. you use getpgrp()."
10424                 else
10425                         # SVR4 systems can appear rather BSD-ish.
10426                         case "$i_unistd" in
10427                         $undef)
10428                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10429                                 val="$define"
10430                                 ;;
10431                         $define)
10432                                 xxx="probably a USG one, i.e. you use getpgrp()."
10433                                 val="$undef"
10434                                 ;;
10435                         esac
10436                 fi
10437                 echo "Assuming your getpgrp is $xxx" >&4
10438         fi
10439         ;;
10440 *) val="$undef";;
10441 esac
10442 set d_bsdgetpgrp
10443 eval $setvar
10444 $rm_try
10445
10446 : see if setpgrp exists
10447 set setpgrp d_setpgrp
10448 eval $inlibc
10449
10450 case "$d_setpgrp" in
10451 "$define")
10452         echo " "
10453         echo "Checking to see which flavor of setpgrp is in use..."
10454         $cat >try.c <<EOP
10455 #$i_unistd I_UNISTD
10456 #include <sys/types.h>
10457 #ifdef I_UNISTD
10458 #  include <unistd.h>
10459 #endif
10460 #$i_stdlib I_STDLIB
10461 #ifdef I_STDLIB
10462 #include <stdlib.h>
10463 #endif
10464 int main()
10465 {
10466         if (getuid() == 0) {
10467                 printf("(I see you are running Configure as super-user...)\n");
10468                 setuid(1);
10469         }
10470 #ifdef TRY_BSD_PGRP
10471         if (-1 == setpgrp(1, 1))
10472                 exit(0);
10473 #else
10474         if (setpgrp() != -1)
10475                 exit(0);
10476 #endif
10477         exit(1);
10478 }
10479 EOP
10480         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10481                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10482                 val="$define"
10483         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10484                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10485                 val="$undef"
10486         else
10487                 echo "(I can't seem to compile and run the test program.)"
10488                 if ./usg; then
10489                         xxx="a USG one, i.e. you use setpgrp()."
10490                 else
10491                         # SVR4 systems can appear rather BSD-ish.
10492                         case "$i_unistd" in
10493                         $undef)
10494                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10495                                 val="$define"
10496                                 ;;
10497                         $define)
10498                                 xxx="probably a USG one, i.e. you use setpgrp()."
10499                                 val="$undef"
10500                                 ;;
10501                         esac
10502                 fi
10503                 echo "Assuming your setpgrp is $xxx" >&4
10504         fi
10505         ;;
10506 *) val="$undef";;
10507 esac
10508 set d_bsdsetpgrp
10509 eval $setvar
10510 $rm_try
10511
10512 : Look for GCC-style __builtin_choose_expr
10513 case "$d_builtin_choose_expr" in
10514 '')
10515     echo " "
10516     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10517     $cat >try.c <<'EOCP'
10518 #include <assert.h>
10519 #include <stdlib.h>
10520 #include <stdio.h>
10521
10522 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10523
10524 int main(void) {
10525     assert( SYRINX(1) == 2112 );
10526     assert( SYRINX(1) != 5150 );
10527     assert( SYRINX(0) == 5150 );
10528     assert( SYRINX(0) != 2112 );
10529     puts( "All good!" );
10530     exit(0);
10531 }
10532
10533 EOCP
10534     set try
10535     if eval $compile; then
10536         echo "Your C compiler supports __builtin_choose_expr."
10537         val="$define"
10538     else
10539         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10540         val="$undef"
10541     fi
10542 ;;
10543 *) val="$d_builtin_choose_expr" ;;
10544 esac
10545
10546 set d_builtin_choose_expr
10547 eval $setvar
10548 $rm_try
10549
10550 : Look for GCC-style __builtin_expect
10551 case "$d_builtin_expect" in
10552 '')
10553     echo " "
10554     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10555     $cat >builtin.c <<'EOCP'
10556 int main(void) {
10557     int n = 50;
10558     if ( __builtin_expect(n, 0) ) n = 1;
10559 }
10560 EOCP
10561     set try
10562     if eval $compile; then
10563         echo "Your C compiler supports __builtin_choose_expr."
10564         val="$define"
10565     else
10566         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10567         val="$undef"
10568     fi
10569     ;;
10570 *) val="$d_builtin_expect" ;;
10571 esac
10572
10573 set d_builtin_expect
10574 eval $setvar
10575 $rm_try
10576
10577 : see if bzero exists
10578 set bzero d_bzero
10579 eval $inlibc
10580
10581 : see if stdarg is available
10582 echo " "
10583 if $test `./findhdr stdarg.h`; then
10584         echo "<stdarg.h> found." >&4
10585         valstd="$define"
10586 else
10587         echo "<stdarg.h> NOT found." >&4
10588         valstd="$undef"
10589 fi
10590
10591 : see if varags is available
10592 echo " "
10593 if $test `./findhdr varargs.h`; then
10594         echo "<varargs.h> found." >&4
10595 else
10596         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10597 fi
10598
10599 : set up the varargs testing programs
10600 $cat > varargs.c <<EOP
10601 #ifdef I_STDARG
10602 #include <stdarg.h>
10603 #endif
10604 #ifdef I_VARARGS
10605 #include <varargs.h>
10606 #endif
10607
10608 #ifdef I_STDARG
10609 int f(char *p, ...)
10610 #else
10611 int f(va_alist)
10612 va_dcl
10613 #endif
10614 {
10615         va_list ap;
10616 #ifndef I_STDARG
10617         char *p;
10618 #endif
10619 #ifdef I_STDARG
10620         va_start(ap,p);
10621 #else
10622         va_start(ap);
10623         p = va_arg(ap, char *);
10624 #endif
10625         va_end(ap);
10626         return 0;
10627 }
10628 EOP
10629 $cat > varargs <<EOP
10630 $startsh
10631 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10632         echo "true"
10633 else
10634         echo "false"
10635 fi
10636 $rm -f varargs$_o
10637 EOP
10638 chmod +x varargs
10639
10640 : now check which varargs header should be included
10641 echo " "
10642 i_varhdr=''
10643 case "$valstd" in
10644 "$define")
10645         if `./varargs I_STDARG`; then
10646                 val='stdarg.h'
10647         elif `./varargs I_VARARGS`; then
10648                 val='varargs.h'
10649         fi
10650         ;;
10651 *)
10652         if `./varargs I_VARARGS`; then
10653                 val='varargs.h'
10654         fi
10655         ;;
10656 esac
10657 case "$val" in
10658 '')
10659 echo "I could not find the definition for va_dcl... You have problems..." >&4
10660         val="$undef"; set i_stdarg; eval $setvar
10661         val="$undef"; set i_varargs; eval $setvar
10662         ;;
10663 *)
10664         set i_varhdr
10665         eval $setvar
10666         case "$i_varhdr" in
10667         stdarg.h)
10668                 val="$define"; set i_stdarg; eval $setvar
10669                 val="$undef"; set i_varargs; eval $setvar
10670                 ;;
10671         varargs.h)
10672                 val="$undef"; set i_stdarg; eval $setvar
10673                 val="$define"; set i_varargs; eval $setvar
10674                 ;;
10675         esac
10676         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10677 esac
10678 $rm -f varargs*
10679
10680 : see if the Compiler supports C99 variadic macros
10681 case "$i_stdarg$i_stdlib" in
10682     "$define$define")
10683     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10684     $cat >try.c <<EOCP
10685 #include <stdio.h>
10686 #include <stdarg.h>
10687
10688 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10689
10690 int main() {
10691   char buf[20];
10692   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10693   puts(buf);
10694   return 0;
10695 }
10696 EOCP
10697     set try
10698     if eval $compile && $run ./try 2>&1 >/dev/null; then
10699         case "`$run ./try`" in
10700             "123 456 789")
10701             echo "You have C99 variadic macros." >&4
10702             d_c99_variadic_macros="$define"
10703             ;;
10704             *)
10705             echo "You don't have functional C99 variadic macros." >&4
10706             d_c99_variadic_macros="$undef"
10707             ;;
10708         esac
10709     else
10710         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10711         d_c99_variadic_macros="$undef"
10712     fi
10713     $rm_try
10714     ;;
10715     *)
10716     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10717     d_c99_variadic_macros="$undef"
10718     ;;
10719 esac
10720
10721 : see if signal is declared as pointer to function returning int or void
10722 echo " "
10723 xxx=`./findhdr signal.h`
10724 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10725 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10726         echo "You have int (*signal())() instead of void." >&4
10727         val="$undef"
10728 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10729         echo "You have void (*signal())()." >&4
10730         val="$define"
10731 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10732         echo "You have int (*signal())() instead of void." >&4
10733         val="$undef"
10734 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10735         echo "You have void (*signal())()." >&4
10736         val="$define"
10737 else
10738         case "$d_voidsig" in
10739         '')
10740         echo "I can't determine whether signal handler returns void or int..." >&4
10741                 dflt=void
10742                 rp="What type does your signal handler return?"
10743                 . ./myread
10744                 case "$ans" in
10745                 v*) val="$define";;
10746                 *) val="$undef";;
10747                 esac;;
10748         "$define")
10749                 echo "As you already told me, signal handler returns void." >&4
10750                 val="$define"
10751                 ;;
10752         *)      echo "As you already told me, signal handler returns int." >&4
10753                 val="$undef"
10754                 ;;
10755         esac
10756 fi
10757 set d_voidsig
10758 eval $setvar
10759 case "$d_voidsig" in
10760 "$define") signal_t="void";;
10761 *) signal_t="int";;
10762 esac
10763 $rm -f $$.tmp
10764
10765 : check for ability to cast large floats to 32-bit ints.
10766 echo " "
10767 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10768 if $test "$intsize" -ge 4; then
10769         xxx=int
10770 else
10771         xxx=long
10772 fi
10773 $cat >try.c <<EOCP
10774 #include <stdio.h>
10775 #$i_stdlib I_STDLIB
10776 #ifdef I_STDLIB
10777 #include <stdlib.h>
10778 #endif
10779 #include <sys/types.h>
10780 #include <signal.h>
10781 $signal_t blech(int s) { exit(3); }
10782 int main()
10783 {
10784         $xxx i32;
10785         double f, g;
10786         int result = 0;
10787         char str[16];
10788         signal(SIGFPE, blech);
10789
10790         /* Don't let compiler optimize the test away.  Store the number
10791            in a writable string for gcc to pass to sscanf under HP/UX.
10792         */
10793         sprintf(str, "2147483647");
10794         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10795         g = 10 * f;
10796         i32  = ($xxx) g;
10797
10798         /* x86 processors will probably give 0x8000 0000, which is a
10799            sign change.  We don't want that.  We want to mimic SPARC
10800            behavior here, which is to preserve the sign and give
10801            back 0x7fff ffff.
10802         */
10803         if (i32 != ($xxx) f)
10804                 result |= 1;
10805         exit(result);
10806 }
10807 EOCP
10808 set try
10809 if eval $compile_ok; then
10810         $run ./try
10811         yyy=$?
10812 else
10813         echo "(I can't seem to compile the test program--assuming it can't)"
10814         yyy=1
10815 fi
10816 case "$yyy" in
10817 0)      val="$define"
10818         echo "Yup, it can."
10819         ;;
10820 *)      val="$undef"
10821         echo "Nope, it can't."
10822         ;;
10823 esac
10824 set d_casti32
10825 eval $setvar
10826 $rm_try
10827
10828 : check for ability to cast negative floats to unsigned
10829 echo " "
10830 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10831 $cat >try.c <<EOCP
10832 #include <stdio.h>
10833 #$i_stdlib I_STDLIB
10834 #ifdef I_STDLIB
10835 #include <stdlib.h>
10836 #endif
10837 #include <sys/types.h>
10838 #include <signal.h>
10839 $signal_t blech(int s) { exit(7); }
10840 $signal_t blech_in_list(int s) { exit(4); }
10841 unsigned long dummy_long(unsigned long p) { return p; }
10842 unsigned int dummy_int(unsigned int p) { return p; }
10843 unsigned short dummy_short(unsigned short p) { return p; }
10844 int main()
10845 {
10846         double f;
10847         unsigned long along;
10848         unsigned int aint;
10849         unsigned short ashort;
10850         int result = 0;
10851         char str[16];
10852
10853         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10854            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10855            optimized the whole file away
10856         */
10857         /* Store the number in a writable string for gcc to pass to
10858            sscanf under HP/UX.
10859         */
10860         sprintf(str, "-123");
10861         sscanf(str, "%lf", &f);  /* f = -123.; */
10862
10863         signal(SIGFPE, blech);
10864         along = (unsigned long)f;
10865         aint = (unsigned int)f;
10866         ashort = (unsigned short)f;
10867         if (along != (unsigned long)-123)
10868                 result |= 1;
10869         if (aint != (unsigned int)-123)
10870                 result |= 1;
10871         if (ashort != (unsigned short)-123)
10872                 result |= 1;
10873         sprintf(str, "1073741824.");
10874         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10875         f = f + f;
10876         along = 0;
10877         along = (unsigned long)f;
10878         if (along != 0x80000000)
10879                 result |= 2;
10880         f -= 1.;
10881         along = 0;
10882         along = (unsigned long)f;
10883         if (along != 0x7fffffff)
10884                 result |= 1;
10885         f += 2.;
10886         along = 0;
10887         along = (unsigned long)f;
10888         if (along != 0x80000001)
10889                 result |= 2;
10890         if (result)
10891                 exit(result);
10892         signal(SIGFPE, blech_in_list);
10893         sprintf(str, "123.");
10894         sscanf(str, "%lf", &f);  /* f = 123.; */
10895         along = dummy_long((unsigned long)f);
10896         aint = dummy_int((unsigned int)f);
10897         ashort = dummy_short((unsigned short)f);
10898         if (along != (unsigned long)123)
10899                 result |= 4;
10900         if (aint != (unsigned int)123)
10901                 result |= 4;
10902         if (ashort != (unsigned short)123)
10903                 result |= 4;
10904         exit(result);
10905
10906 }
10907 EOCP
10908 set try
10909 if eval $compile_ok; then
10910         $run ./try
10911         castflags=$?
10912 else
10913         echo "(I can't seem to compile the test program--assuming it can't)"
10914         castflags=7
10915 fi
10916 case "$castflags" in
10917 0)      val="$define"
10918         echo "Yup, it can."
10919         ;;
10920 *)      val="$undef"
10921         echo "Nope, it can't."
10922         ;;
10923 esac
10924 set d_castneg
10925 eval $setvar
10926 $rm_try
10927
10928 : see if vprintf exists
10929 echo " "
10930 if set vprintf val -f d_vprintf; eval $csym; $val; then
10931         echo 'vprintf() found.' >&4
10932         val="$define"
10933         $cat >try.c <<EOF
10934 #$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
10935 #$i_varargs I_VARARGS
10936
10937 #$i_stdlib I_STDLIB
10938 #$i_unistd I_UNISTD
10939
10940 #ifdef I_STDARG
10941 #  include <stdarg.h>
10942 #else /* I_VARARGS */
10943 #  include <varargs.h>
10944 #endif
10945
10946 #ifdef I_UNISTD
10947 #  include <unistd.h>
10948 #endif
10949
10950 #ifdef I_STDLIB
10951 #  include <stdlib.h>
10952 #endif
10953
10954 #include <stdio.h> /* vsprintf prototype */
10955
10956 #ifdef I_STDARG
10957 void xxx(int n, ...)
10958 {
10959     va_list args;
10960     char buf[10];
10961     va_start(args, n);
10962     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10963 }
10964 int main() { xxx(1, "foo"); }
10965
10966 #else /* I_VARARGS */
10967
10968 xxx(va_alist)
10969 va_dcl
10970 {
10971     va_list args;
10972     char buf[10];
10973     va_start(args);
10974     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10975 }
10976 int main() { xxx("foo"); }
10977
10978 #endif
10979
10980 EOF
10981         set try
10982         if eval $compile_ok; then
10983                 if $run ./try; then
10984                         echo "Your vsprintf() returns (int)." >&4
10985                         val2="$undef"
10986                 else
10987                         echo "Your vsprintf() returns (char*)." >&4
10988                         val2="$define"
10989                 fi
10990         else
10991                 echo 'I am unable to compile the vsprintf() test program.' >&4
10992                 # We shouldn't get here.  If we do, assume the standard signature,
10993                 # not the old BSD one.
10994                 echo 'Guessing that vsprintf() returns (int).' >&4
10995                 val2="$undef"
10996         fi
10997 else
10998         echo 'vprintf() NOT found.' >&4
10999         val="$undef"
11000         val2="$undef"
11001 fi
11002 $rm_try
11003 set d_vprintf
11004 eval $setvar
11005 val=$val2
11006 set d_charvspr
11007 eval $setvar
11008
11009 : see if chown exists
11010 set chown d_chown
11011 eval $inlibc
11012
11013 : see if chroot exists
11014 set chroot d_chroot
11015 eval $inlibc
11016
11017 : see if chsize exists
11018 set chsize d_chsize
11019 eval $inlibc
11020
11021 : see if class exists
11022 set class d_class
11023 eval $inlibc
11024
11025 : see if clearenv exists
11026 set clearenv d_clearenv
11027 eval $inlibc
11028
11029 hasstruct='varname=$1; struct=$2; shift; shift;
11030 while $test $# -ge 2; do
11031         case "$1" in
11032         $define) echo "#include <$2>";;
11033         esac ;
11034     shift 2;
11035 done > try.c;
11036 echo "int main () { struct $struct foo; }" >> try.c;
11037 set try;
11038 if eval $compile; then
11039         val="$define";
11040 else
11041         val="$undef";
11042 fi;
11043 set $varname;
11044 eval $setvar;
11045 $rm_try'
11046
11047 socketlib=''
11048 sockethdr=''
11049 : see whether socket exists
11050 echo " "
11051 $echo $n "Hmm... $c" >&4
11052 if set socket val -f d_socket; eval $csym; $val; then
11053         echo "Looks like you have Berkeley networking support." >&4
11054         d_socket="$define"
11055         if set setsockopt val -f; eval $csym; $val; then
11056                 d_oldsock="$undef"
11057         else
11058                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
11059                 d_oldsock="$define"
11060         fi
11061 else
11062         if $contains socklib libc.list >/dev/null 2>&1; then
11063                 echo "Looks like you have Berkeley networking support." >&4
11064                 d_socket="$define"
11065                 : we will have to assume that it supports the 4.2 BSD interface
11066                 d_oldsock="$undef"
11067         else
11068                 echo "You don't have Berkeley networking in libc$_a..." >&4
11069                 if test "X$d_socket" = "X$define"; then
11070                    echo "...but you seem to believe that you have sockets." >&4
11071                 else
11072                         for net in net socket
11073                         do
11074                                 if test -f /usr/lib/lib$net$_a; then
11075                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
11076                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
11077                                         if $contains socket libc.list >/dev/null 2>&1; then
11078                                                 d_socket="$define"
11079                                                 socketlib="-l$net"
11080                                                 case "$net" in
11081                                                 net)
11082                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
11083                                                         sockethdr="-I/usr/netinclude"
11084                                                         ;;
11085                                                 esac
11086                                                 echo "Found Berkeley sockets interface in lib$net." >&4
11087                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
11088                                                         d_oldsock="$undef"
11089                                                 else
11090                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
11091                                                         d_oldsock="$define"
11092                                                 fi
11093                                                 break
11094                                         fi
11095                                 fi
11096                         done
11097                         if test "X$d_socket" != "X$define"; then
11098                            echo "or anywhere else I see." >&4
11099                            d_socket="$undef"
11100                            d_oldsock="$undef"
11101                         fi
11102                 fi
11103         fi
11104 fi
11105
11106 : see if socketpair exists
11107 set socketpair d_sockpair
11108 eval $inlibc
11109
11110
11111 echo " "
11112 echo "Checking the availability of certain socket constants..." >&4
11113 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
11114         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
11115         $cat >try.c <<EOF
11116 #include <sys/types.h>
11117 #include <sys/socket.h>
11118 int main() {
11119     int i = $ENUM;
11120 }
11121 EOF
11122         val="$undef"
11123         set try; if eval $compile; then
11124                 val="$define"
11125         fi
11126         set d_${enum}; eval $setvar
11127         $rm_try
11128 done
11129
11130 : see if this is a sys/uio.h system
11131 set sys/uio.h i_sysuio
11132 eval $inhdr
11133
11134
11135 echo " "
11136 echo "Checking to see if your system supports struct cmsghdr..." >&4
11137 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11138 eval $hasstruct
11139 case "$d_cmsghdr_s" in
11140 "$define")      echo "Yes, it does."   ;;
11141 *)              echo "No, it doesn't." ;;
11142 esac
11143
11144
11145 : check for const keyword
11146 echo " "
11147 echo 'Checking to see if your C compiler knows about "const"...' >&4
11148 $cat >const.c <<'EOCP'
11149 typedef struct spug { int drokk; } spug;
11150 int main()
11151 {
11152         const char *foo;
11153         const spug y = { 0 };
11154 }
11155 EOCP
11156 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
11157         val="$define"
11158         echo "Yup, it does."
11159 else
11160         val="$undef"
11161         echo "Nope, it doesn't."
11162 fi
11163 set d_const
11164 eval $setvar
11165
11166 : see if copysignl exists
11167 set copysignl d_copysignl
11168 eval $inlibc
11169
11170 : see if crypt exists
11171 echo " "
11172 set crypt d_crypt
11173 eval $inlibc
11174 case "$d_crypt" in
11175 $define) cryptlib='' ;;
11176 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11177                 echo 'crypt() found.' >&4
11178                 val="$define"
11179                 cryptlib=''
11180         else
11181                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11182                 if $test -z "$cryptlib"; then
11183                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11184                 else
11185                         cryptlib=-lcrypt
11186                 fi
11187                 if $test -z "$cryptlib"; then
11188                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11189                 else
11190                         cryptlib=-lcrypt
11191                 fi
11192                 if $test -z "$cryptlib"; then
11193                         cryptlib=`./loc libcrypt$_a "" $libpth`
11194                 else
11195                         cryptlib=-lcrypt
11196                 fi
11197                 if $test -z "$cryptlib"; then
11198                         echo 'crypt() NOT found.' >&4
11199                         val="$undef"
11200                 else
11201                         val="$define"
11202                 fi
11203         fi
11204         set d_crypt
11205         eval $setvar
11206         ;;
11207 esac
11208
11209 : see if this is a crypt.h system
11210 set crypt.h i_crypt
11211 eval $inhdr
11212
11213 : see if crypt_r exists
11214 set crypt_r d_crypt_r
11215 eval $inlibc
11216 case "$d_crypt_r" in
11217 "$define")
11218         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11219         case "$d_crypt_r_proto:$usethreads" in
11220         ":define")      d_crypt_r_proto=define
11221                 set d_crypt_r_proto crypt_r $hdrs
11222                 eval $hasproto ;;
11223         *)      ;;
11224         esac
11225         case "$d_crypt_r_proto" in
11226         define)
11227         case "$crypt_r_proto" in
11228         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11229         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11230         esac
11231         case "$crypt_r_proto" in
11232         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11233         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11234         esac
11235         case "$crypt_r_proto" in
11236         ''|0)   d_crypt_r=undef
11237                 crypt_r_proto=0
11238                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11239         * )     case "$crypt_r_proto" in
11240                 REENTRANT_PROTO*) ;;
11241                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11242                 esac
11243                 echo "Prototype: $try" ;;
11244         esac
11245         ;;
11246         *)      case "$usethreads" in
11247                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11248                 esac
11249                 d_crypt_r=undef
11250                 crypt_r_proto=0
11251                 ;;
11252         esac
11253         ;;
11254 *)      crypt_r_proto=0
11255         ;;
11256 esac
11257
11258 : get csh whereabouts
11259 case "$csh" in
11260 'csh') val="$undef" ;;
11261 *) val="$define" ;;
11262 esac
11263 set d_csh
11264 eval $setvar
11265 : Respect a hint or command line value for full_csh.
11266 case "$full_csh" in
11267 '') full_csh=$csh ;;
11268 esac
11269
11270 : see if ctermid exists
11271 set ctermid d_ctermid
11272 eval $inlibc
11273
11274 : see if ctermid_r exists
11275 set ctermid_r d_ctermid_r
11276 eval $inlibc
11277 case "$d_ctermid_r" in
11278 "$define")
11279         hdrs="$i_systypes sys/types.h define stdio.h "
11280         case "$d_ctermid_r_proto:$usethreads" in
11281         ":define")      d_ctermid_r_proto=define
11282                 set d_ctermid_r_proto ctermid_r $hdrs
11283                 eval $hasproto ;;
11284         *)      ;;
11285         esac
11286         case "$d_ctermid_r_proto" in
11287         define)
11288         case "$ctermid_r_proto" in
11289         ''|0) try='char* ctermid_r(char*);'
11290         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11291         esac
11292         case "$ctermid_r_proto" in
11293         ''|0)   d_ctermid_r=undef
11294                 ctermid_r_proto=0
11295                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11296         * )     case "$ctermid_r_proto" in
11297                 REENTRANT_PROTO*) ;;
11298                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11299                 esac
11300                 echo "Prototype: $try" ;;
11301         esac
11302         ;;
11303         *)      case "$usethreads" in
11304                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11305                 esac
11306                 d_ctermid_r=undef
11307                 ctermid_r_proto=0
11308                 ;;
11309         esac
11310         ;;
11311 *)      ctermid_r_proto=0
11312         ;;
11313 esac
11314
11315 : see if ctime_r exists
11316 set ctime_r d_ctime_r
11317 eval $inlibc
11318 case "$d_ctime_r" in
11319 "$define")
11320         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11321         case "$d_ctime_r_proto:$usethreads" in
11322         ":define")      d_ctime_r_proto=define
11323                 set d_ctime_r_proto ctime_r $hdrs
11324                 eval $hasproto ;;
11325         *)      ;;
11326         esac
11327         case "$d_ctime_r_proto" in
11328         define)
11329         case "$ctime_r_proto" in
11330         ''|0) try='char* ctime_r(const time_t*, char*);'
11331         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11332         esac
11333         case "$ctime_r_proto" in
11334         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11335         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11336         esac
11337         case "$ctime_r_proto" in
11338         ''|0) try='int ctime_r(const time_t*, char*);'
11339         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11340         esac
11341         case "$ctime_r_proto" in
11342         ''|0) try='int ctime_r(const time_t*, char*, int);'
11343         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11344         esac
11345         case "$ctime_r_proto" in
11346         ''|0)   d_ctime_r=undef
11347                 ctime_r_proto=0
11348                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11349         * )     case "$ctime_r_proto" in
11350                 REENTRANT_PROTO*) ;;
11351                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11352                 esac
11353                 echo "Prototype: $try" ;;
11354         esac
11355         ;;
11356         *)      case "$usethreads" in
11357                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11358                 esac
11359                 d_ctime_r=undef
11360                 ctime_r_proto=0
11361                 ;;
11362         esac
11363         ;;
11364 *)      ctime_r_proto=0
11365         ;;
11366 esac
11367
11368 : see if cuserid exists
11369 set cuserid d_cuserid
11370 eval $inlibc
11371
11372 : see if this is a limits.h system
11373 set limits.h i_limits
11374 eval $inhdr
11375
11376 : see if this is a float.h system
11377 set float.h i_float
11378 eval $inhdr
11379
11380 : See if number of significant digits in a double precision number is known
11381 echo " "
11382 $cat >dbl_dig.c <<EOM
11383 #$i_limits I_LIMITS
11384 #$i_float I_FLOAT
11385 #ifdef I_LIMITS
11386 #include <limits.h>
11387 #endif
11388 #ifdef I_FLOAT
11389 #include <float.h>
11390 #endif
11391 #ifdef DBL_DIG
11392 printf("Contains DBL_DIG");
11393 #endif
11394 EOM
11395 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11396 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11397         echo "DBL_DIG found." >&4
11398         val="$define"
11399 else
11400         echo "DBL_DIG NOT found." >&4
11401         val="$undef"
11402 fi
11403 $rm -f dbl_dig.?
11404 set d_dbl_dig
11405 eval $setvar
11406
11407 : see if dbm.h is available
11408 : see if dbmclose exists
11409 set dbmclose d_dbmclose
11410 eval $inlibc
11411
11412 case "$d_dbmclose" in
11413 $define)
11414         set dbm.h i_dbm
11415         eval $inhdr
11416         case "$i_dbm" in
11417         $define)
11418                 val="$undef"
11419                 set i_rpcsvcdbm
11420                 eval $setvar
11421                 ;;
11422         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11423                 eval $inhdr
11424                 ;;
11425         esac
11426         ;;
11427 *)      echo "We won't be including <dbm.h>"
11428         val="$undef"
11429         set i_dbm
11430         eval $setvar
11431         val="$undef"
11432         set i_rpcsvcdbm
11433         eval $setvar
11434         ;;
11435 esac
11436
11437 : see if prototype for dbminit is available
11438 echo " "
11439 set d_dbminitproto dbminit $i_dbm dbm.h
11440 eval $hasproto
11441
11442 : see if difftime exists
11443 set difftime d_difftime
11444 eval $inlibc
11445
11446 : see if this is a dirent system
11447 echo " "
11448 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11449         val="$define"
11450         echo "<dirent.h> found." >&4
11451 else
11452         val="$undef"
11453         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11454                 echo "<sys/dir.h> found." >&4
11455                 echo " "
11456         else
11457                 xinc=`./findhdr sys/ndir.h`
11458         fi
11459         echo "<dirent.h> NOT found." >&4
11460 fi
11461 set i_dirent
11462 eval $setvar
11463
11464 : Look for type of directory structure.
11465 echo " "
11466 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11467
11468 case "$direntrytype" in
11469 ''|' ')
11470         case "$i_dirent" in
11471         $define) guess1='struct dirent' ;;
11472         *) guess1='struct direct'  ;;
11473         esac
11474         ;;
11475 *)      guess1="$direntrytype"
11476         ;;
11477 esac
11478
11479 case "$guess1" in
11480 'struct dirent') guess2='struct direct' ;;
11481 *) guess2='struct dirent' ;;
11482 esac
11483
11484 if $contains "$guess1" try.c >/dev/null 2>&1; then
11485         direntrytype="$guess1"
11486         echo "Your directory entries are $direntrytype." >&4
11487 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11488         direntrytype="$guess2"
11489         echo "Your directory entries seem to be $direntrytype." >&4
11490 else
11491         echo "I don't recognize your system's directory entries." >&4
11492         rp="What type is used for directory entries on this system?"
11493         dflt="$guess1"
11494         . ./myread
11495         direntrytype="$ans"
11496 fi
11497 $rm_try
11498
11499 : see if the directory entry stores field length
11500 echo " "
11501 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11502 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11503         echo "Good, your directory entry keeps length information in d_namlen." >&4
11504         val="$define"
11505 else
11506         echo "Your directory entry does not know about the d_namlen field." >&4
11507         val="$undef"
11508 fi
11509 set d_dirnamlen
11510 eval $setvar
11511 $rm_try
11512
11513 : Look for DIR.dd_fd
11514 case "$i_dirent" in
11515 "$define")
11516     echo "Checking to see if DIR has a dd_fd member variable" >&4
11517     $cat >try.c <<EOCP
11518 #$i_stdlib I_STDLIB
11519 #ifdef I_STDLIB
11520 #include <stdlib.h>
11521 #endif
11522 #include <dirent.h>
11523
11524 int main() {
11525     DIR dir;
11526     dir.dd_fd = 1;
11527     return 0;
11528 }
11529 EOCP
11530     val=$undef
11531     set try
11532     if eval $compile; then
11533         echo "Yes, it does."
11534         val="$define"
11535     else
11536         echo "No, it does not."
11537         val="$undef"
11538     fi
11539     ;;
11540 *)
11541     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11542     val="$undef"
11543     ;;
11544 esac
11545 set d_dir_dd_fd
11546 eval $setvar
11547 $rm_try
11548
11549 : see if this is an sysdir system
11550 set sys/dir.h i_sysdir
11551 eval $inhdr
11552
11553 : see if this is an sysndir system
11554 set sys/ndir.h i_sysndir
11555 eval $inhdr
11556
11557 : Look for dirfd
11558 echo " "
11559 $cat >dirfd.c <<EOM
11560 #include <stdio.h>
11561 #$i_stdlib I_STDLIB
11562 #ifdef I_STDLIB
11563 #include <stdlib.h>
11564 #endif
11565 #$i_dirent I_DIRENT             /**/
11566 #$i_sysdir I_SYS_DIR            /**/
11567 #$i_sysndir I_SYS_NDIR          /**/
11568 #$i_systypes I_SYS_TYPES        /**/
11569 #if defined(I_SYS_TYPES)
11570 #include <sys/types.h>
11571 #endif
11572 #if defined(I_DIRENT)
11573 #include <dirent.h>
11574 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11575 #include <sys/dir.h>
11576 #endif
11577 #else
11578 #ifdef I_SYS_NDIR
11579 #include <sys/ndir.h>
11580 #else
11581 #ifdef I_SYS_DIR
11582 #ifdef hp9000s500
11583 #include <ndir.h>       /* may be wrong in the future */
11584 #else
11585 #include <sys/dir.h>
11586 #endif
11587 #endif
11588 #endif
11589 #endif 
11590 int main() {
11591         DIR *dirp = opendir(".");
11592         if (dirfd(dirp) >= 0)
11593                 exit(0);
11594         else
11595                 exit(1);
11596 }
11597 EOM
11598 val=$undef
11599 set dirfd
11600 if eval $compile; then
11601         val="$define"
11602 fi
11603 case "$val" in
11604 $define)        echo "dirfd() found." >&4       ;;
11605 *)              echo "dirfd() NOT found." >&4   ;;
11606 esac
11607 set d_dirfd
11608 eval $setvar
11609 $rm -f dirfd*
11610
11611 : see if dlerror exists
11612 xxx_runnm="$runnm"
11613 runnm=false
11614 set dlerror d_dlerror
11615 eval $inlibc
11616 runnm="$xxx_runnm"
11617
11618 : see if dlfcn is available
11619 set dlfcn.h i_dlfcn
11620 eval $inhdr
11621
11622 case "$usedl" in
11623 $define|y|true)
11624         $cat << EOM
11625
11626 On a few systems, the dynamically loaded modules that perl generates and uses
11627 will need a different extension than shared libs. The default will probably
11628 be appropriate.
11629
11630 EOM
11631         case "$dlext" in
11632         '')     dflt="$so" ;;
11633         *)      dflt="$dlext" ;;
11634         esac
11635         rp='What is the extension of dynamically loaded modules'
11636         . ./myread
11637         dlext="$ans"
11638         ;;
11639 *)
11640         dlext="none"
11641         ;;
11642 esac
11643
11644 : Check if dlsym need a leading underscore
11645 echo " "
11646 val="$undef"
11647
11648 case "$dlsrc" in
11649 dl_dlopen.xs)
11650         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11651         $cat >dyna.c <<'EOM'
11652 fred () { }
11653 EOM
11654
11655 $cat >fred.c<<EOM
11656
11657 #include <stdio.h>
11658 #$i_stdlib I_STDLIB
11659 #ifdef I_STDLIB
11660 #include <stdlib.h>
11661 #endif
11662 #$i_dlfcn I_DLFCN
11663 #ifdef I_DLFCN
11664 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11665 #else
11666 #include <sys/types.h>
11667 #include <nlist.h>
11668 #include <link.h>
11669 #endif
11670
11671 extern int fred() ;
11672
11673 int main()
11674 {
11675     void * handle ;
11676     void * symbol ;
11677 #ifndef RTLD_LAZY
11678     int mode = 1 ;
11679 #else
11680     int mode = RTLD_LAZY ;
11681 #endif
11682     handle = dlopen("./dyna.$dlext", mode) ;
11683     if (handle == NULL) {
11684         printf ("1\n") ;
11685         fflush (stdout) ;
11686         exit(0);
11687     }
11688     symbol = dlsym(handle, "fred") ;
11689     if (symbol == NULL) {
11690         /* try putting a leading underscore */
11691         symbol = dlsym(handle, "_fred") ;
11692         if (symbol == NULL) {
11693             printf ("2\n") ;
11694             fflush (stdout) ;
11695             exit(0);
11696         }
11697         printf ("3\n") ;
11698     }
11699     else
11700         printf ("4\n") ;
11701     fflush (stdout) ;
11702     exit(0);
11703 }
11704 EOM
11705         : Call the object file tmp-dyna.o in case dlext=o.
11706         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11707                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11708                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11709                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11710                 xxx=`$run ./fred`
11711                 case $xxx in
11712                 1)      echo "Test program failed using dlopen." >&4
11713                         echo "Perhaps you should not use dynamic loading." >&4;;
11714                 2)      echo "Test program failed using dlsym." >&4
11715                         echo "Perhaps you should not use dynamic loading." >&4;;
11716                 3)      echo "dlsym needs a leading underscore" >&4
11717                         val="$define" ;;
11718                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11719                 esac
11720         else
11721                 echo "I can't compile and run the test program." >&4
11722                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11723         fi
11724         ;;
11725 esac
11726
11727 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11728
11729 set d_dlsymun
11730 eval $setvar
11731
11732 : see if drand48_r exists
11733 set drand48_r d_drand48_r
11734 eval $inlibc
11735 case "$d_drand48_r" in
11736 "$define")
11737         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11738         case "$d_drand48_r_proto:$usethreads" in
11739         ":define")      d_drand48_r_proto=define
11740                 set d_drand48_r_proto drand48_r $hdrs
11741                 eval $hasproto ;;
11742         *)      ;;
11743         esac
11744         case "$d_drand48_r_proto" in
11745         define)
11746         case "$drand48_r_proto" in
11747         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11748         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11749         esac
11750         case "$drand48_r_proto" in
11751         ''|0)   d_drand48_r=undef
11752                 drand48_r_proto=0
11753                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11754         * )     case "$drand48_r_proto" in
11755                 REENTRANT_PROTO*) ;;
11756                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11757                 esac
11758                 echo "Prototype: $try" ;;
11759         esac
11760         ;;
11761         *)      case "$usethreads" in
11762                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11763                 esac
11764                 d_drand48_r=undef
11765                 drand48_r_proto=0
11766                 ;;
11767         esac
11768         ;;
11769 *)      drand48_r_proto=0
11770         ;;
11771 esac
11772
11773 : see if prototype for drand48 is available
11774 echo " "
11775 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11776 eval $hasproto
11777
11778 : see if dup2 exists
11779 set dup2 d_dup2
11780 eval $inlibc
11781
11782 : see if eaccess exists
11783 set eaccess d_eaccess
11784 eval $inlibc
11785
11786 : see if endgrent exists
11787 set endgrent d_endgrent
11788 eval $inlibc
11789
11790 : see if this is an grp system
11791 set grp.h i_grp
11792 eval $inhdr
11793
11794 case "$i_grp" in
11795 $define)
11796         xxx=`./findhdr grp.h`
11797         $cppstdin $cppflags $cppminus < $xxx >$$.h
11798
11799         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11800                 val="$define"
11801         else
11802                 val="$undef"
11803         fi
11804         set d_grpasswd
11805         eval $setvar
11806
11807         $rm -f $$.h
11808         ;;
11809 *)
11810         val="$undef";
11811         set d_grpasswd; eval $setvar
11812         ;;
11813 esac
11814
11815 : see if endgrent_r exists
11816 set endgrent_r d_endgrent_r
11817 eval $inlibc
11818 case "$d_endgrent_r" in
11819 "$define")
11820         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11821         case "$d_endgrent_r_proto:$usethreads" in
11822         ":define")      d_endgrent_r_proto=define
11823                 set d_endgrent_r_proto endgrent_r $hdrs
11824                 eval $hasproto ;;
11825         *)      ;;
11826         esac
11827         case "$d_endgrent_r_proto" in
11828         define)
11829         case "$endgrent_r_proto" in
11830         ''|0) try='int endgrent_r(FILE**);'
11831         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11832         esac
11833         case "$endgrent_r_proto" in
11834         ''|0) try='void endgrent_r(FILE**);'
11835         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11836         esac
11837         case "$endgrent_r_proto" in
11838         ''|0)   d_endgrent_r=undef
11839                 endgrent_r_proto=0
11840                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11841         * )     case "$endgrent_r_proto" in
11842                 REENTRANT_PROTO*) ;;
11843                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11844                 esac
11845                 echo "Prototype: $try" ;;
11846         esac
11847         ;;
11848         *)      case "$usethreads" in
11849                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11850                 esac
11851                 d_endgrent_r=undef
11852                 endgrent_r_proto=0
11853                 ;;
11854         esac
11855         ;;
11856 *)      endgrent_r_proto=0
11857         ;;
11858 esac
11859
11860 : see if endhostent exists
11861 set endhostent d_endhent
11862 eval $inlibc
11863
11864 : see if this is a netdb.h system
11865 set netdb.h i_netdb
11866 eval $inhdr
11867
11868 : see if endhostent_r exists
11869 set endhostent_r d_endhostent_r
11870 eval $inlibc
11871 case "$d_endhostent_r" in
11872 "$define")
11873         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11874         case "$d_endhostent_r_proto:$usethreads" in
11875         ":define")      d_endhostent_r_proto=define
11876                 set d_endhostent_r_proto endhostent_r $hdrs
11877                 eval $hasproto ;;
11878         *)      ;;
11879         esac
11880         case "$d_endhostent_r_proto" in
11881         define)
11882         case "$endhostent_r_proto" in
11883         ''|0) try='int endhostent_r(struct hostent_data*);'
11884         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11885         esac
11886         case "$endhostent_r_proto" in
11887         ''|0) try='void endhostent_r(struct hostent_data*);'
11888         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11889         esac
11890         case "$endhostent_r_proto" in
11891         ''|0)   d_endhostent_r=undef
11892                 endhostent_r_proto=0
11893                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11894         * )     case "$endhostent_r_proto" in
11895                 REENTRANT_PROTO*) ;;
11896                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11897                 esac
11898                 echo "Prototype: $try" ;;
11899         esac
11900         ;;
11901         *)      case "$usethreads" in
11902                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11903                 esac
11904                 d_endhostent_r=undef
11905                 endhostent_r_proto=0
11906                 ;;
11907         esac
11908         ;;
11909 *)      endhostent_r_proto=0
11910         ;;
11911 esac
11912
11913 : see if endnetent exists
11914 set endnetent d_endnent
11915 eval $inlibc
11916
11917 : see if endnetent_r exists
11918 set endnetent_r d_endnetent_r
11919 eval $inlibc
11920 case "$d_endnetent_r" in
11921 "$define")
11922         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11923         case "$d_endnetent_r_proto:$usethreads" in
11924         ":define")      d_endnetent_r_proto=define
11925                 set d_endnetent_r_proto endnetent_r $hdrs
11926                 eval $hasproto ;;
11927         *)      ;;
11928         esac
11929         case "$d_endnetent_r_proto" in
11930         define)
11931         case "$endnetent_r_proto" in
11932         ''|0) try='int endnetent_r(struct netent_data*);'
11933         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11934         esac
11935         case "$endnetent_r_proto" in
11936         ''|0) try='void endnetent_r(struct netent_data*);'
11937         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11938         esac
11939         case "$endnetent_r_proto" in
11940         ''|0)   d_endnetent_r=undef
11941                 endnetent_r_proto=0
11942                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11943         * )     case "$endnetent_r_proto" in
11944                 REENTRANT_PROTO*) ;;
11945                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11946                 esac
11947                 echo "Prototype: $try" ;;
11948         esac
11949         ;;
11950         *)      case "$usethreads" in
11951                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11952                 esac
11953                 d_endnetent_r=undef
11954                 endnetent_r_proto=0
11955                 ;;
11956         esac
11957         ;;
11958 *)      endnetent_r_proto=0
11959         ;;
11960 esac
11961
11962 : see if endprotoent exists
11963 set endprotoent d_endpent
11964 eval $inlibc
11965
11966 : see if endprotoent_r exists
11967 set endprotoent_r d_endprotoent_r
11968 eval $inlibc
11969 case "$d_endprotoent_r" in
11970 "$define")
11971         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11972         case "$d_endprotoent_r_proto:$usethreads" in
11973         ":define")      d_endprotoent_r_proto=define
11974                 set d_endprotoent_r_proto endprotoent_r $hdrs
11975                 eval $hasproto ;;
11976         *)      ;;
11977         esac
11978         case "$d_endprotoent_r_proto" in
11979         define)
11980         case "$endprotoent_r_proto" in
11981         ''|0) try='int endprotoent_r(struct protoent_data*);'
11982         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11983         esac
11984         case "$endprotoent_r_proto" in
11985         ''|0) try='void endprotoent_r(struct protoent_data*);'
11986         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11987         esac
11988         case "$endprotoent_r_proto" in
11989         ''|0)   d_endprotoent_r=undef
11990                 endprotoent_r_proto=0
11991                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11992         * )     case "$endprotoent_r_proto" in
11993                 REENTRANT_PROTO*) ;;
11994                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11995                 esac
11996                 echo "Prototype: $try" ;;
11997         esac
11998         ;;
11999         *)      case "$usethreads" in
12000                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
12001                 esac
12002                 d_endprotoent_r=undef
12003                 endprotoent_r_proto=0
12004                 ;;
12005         esac
12006         ;;
12007 *)      endprotoent_r_proto=0
12008         ;;
12009 esac
12010
12011 : see if endpwent exists
12012 set endpwent d_endpwent
12013 eval $inlibc
12014
12015 : see if this is a pwd.h system
12016 set pwd.h i_pwd
12017 eval $inhdr
12018
12019 case "$i_pwd" in
12020 $define)
12021         xxx=`./findhdr pwd.h`
12022         $cppstdin $cppflags $cppminus < $xxx >$$.h
12023
12024         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
12025                 val="$define"
12026         else
12027                 val="$undef"
12028         fi
12029         set d_pwquota
12030         eval $setvar
12031
12032         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
12033                 val="$define"
12034         else
12035                 val="$undef"
12036         fi
12037         set d_pwage
12038         eval $setvar
12039
12040         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
12041                 val="$define"
12042         else
12043                 val="$undef"
12044         fi
12045         set d_pwchange
12046         eval $setvar
12047
12048         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
12049                 val="$define"
12050         else
12051                 val="$undef"
12052         fi
12053         set d_pwclass
12054         eval $setvar
12055
12056         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
12057                 val="$define"
12058         else
12059                 val="$undef"
12060         fi
12061         set d_pwexpire
12062         eval $setvar
12063
12064         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
12065                 val="$define"
12066         else
12067                 val="$undef"
12068         fi
12069         set d_pwcomment
12070         eval $setvar
12071
12072         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
12073                 val="$define"
12074         else
12075                 val="$undef"
12076         fi
12077         set d_pwgecos
12078         eval $setvar
12079
12080         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
12081                 val="$define"
12082         else
12083                 val="$undef"
12084         fi
12085         set d_pwpasswd
12086         eval $setvar
12087
12088         $rm -f $$.h
12089         ;;
12090 *)
12091         val="$undef"; 
12092         set d_pwquota; eval $setvar
12093         set d_pwage; eval $setvar
12094         set d_pwchange; eval $setvar
12095         set d_pwclass; eval $setvar
12096         set d_pwexpire; eval $setvar
12097         set d_pwcomment; eval $setvar
12098         set d_pwgecos; eval $setvar
12099         set d_pwpasswd; eval $setvar
12100         ;;
12101 esac
12102
12103 : see if endpwent_r exists
12104 set endpwent_r d_endpwent_r
12105 eval $inlibc
12106 case "$d_endpwent_r" in
12107 "$define")
12108         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12109         case "$d_endpwent_r_proto:$usethreads" in
12110         ":define")      d_endpwent_r_proto=define
12111                 set d_endpwent_r_proto endpwent_r $hdrs
12112                 eval $hasproto ;;
12113         *)      ;;
12114         esac
12115         case "$d_endpwent_r_proto" in
12116         define)
12117         case "$endpwent_r_proto" in
12118         ''|0) try='int endpwent_r(FILE**);'
12119         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
12120         esac
12121         case "$endpwent_r_proto" in
12122         ''|0) try='void endpwent_r(FILE**);'
12123         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
12124         esac
12125         case "$endpwent_r_proto" in
12126         ''|0)   d_endpwent_r=undef
12127                 endpwent_r_proto=0
12128                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
12129         * )     case "$endpwent_r_proto" in
12130                 REENTRANT_PROTO*) ;;
12131                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
12132                 esac
12133                 echo "Prototype: $try" ;;
12134         esac
12135         ;;
12136         *)      case "$usethreads" in
12137                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
12138                 esac
12139                 d_endpwent_r=undef
12140                 endpwent_r_proto=0
12141                 ;;
12142         esac
12143         ;;
12144 *)      endpwent_r_proto=0
12145         ;;
12146 esac
12147
12148 : see if endservent exists
12149 set endservent d_endsent
12150 eval $inlibc
12151
12152 : see if endservent_r exists
12153 set endservent_r d_endservent_r
12154 eval $inlibc
12155 case "$d_endservent_r" in
12156 "$define")
12157         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12158         case "$d_endservent_r_proto:$usethreads" in
12159         ":define")      d_endservent_r_proto=define
12160                 set d_endservent_r_proto endservent_r $hdrs
12161                 eval $hasproto ;;
12162         *)      ;;
12163         esac
12164         case "$d_endservent_r_proto" in
12165         define)
12166         case "$endservent_r_proto" in
12167         ''|0) try='int endservent_r(struct servent_data*);'
12168         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12169         esac
12170         case "$endservent_r_proto" in
12171         ''|0) try='void endservent_r(struct servent_data*);'
12172         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12173         esac
12174         case "$endservent_r_proto" in
12175         ''|0)   d_endservent_r=undef
12176                 endservent_r_proto=0
12177                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12178         * )     case "$endservent_r_proto" in
12179                 REENTRANT_PROTO*) ;;
12180                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12181                 esac
12182                 echo "Prototype: $try" ;;
12183         esac
12184         ;;
12185         *)      case "$usethreads" in
12186                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12187                 esac
12188                 d_endservent_r=undef
12189                 endservent_r_proto=0
12190                 ;;
12191         esac
12192         ;;
12193 *)      endservent_r_proto=0
12194         ;;
12195 esac
12196
12197 : Locate the flags for 'open()'
12198 echo " "
12199 $cat >try.c <<EOCP
12200 #include <sys/types.h>
12201 #ifdef I_FCNTL
12202 #include <fcntl.h>
12203 #endif
12204 #ifdef I_SYS_FILE
12205 #include <sys/file.h>
12206 #endif
12207 #$i_stdlib I_STDLIB
12208 #ifdef I_STDLIB
12209 #include <stdlib.h>
12210 #endif
12211 int main() {
12212         if(O_RDONLY);
12213 #ifdef O_TRUNC
12214         exit(0);
12215 #else
12216         exit(1);
12217 #endif
12218 }
12219 EOCP
12220 : check sys/file.h first to get FREAD on Sun
12221 if $test `./findhdr sys/file.h` && \
12222                 set try -DI_SYS_FILE && eval $compile; then
12223         h_sysfile=true;
12224         echo "<sys/file.h> defines the O_* constants..." >&4
12225         if $run ./try; then
12226                 echo "and you have the 3 argument form of open()." >&4
12227                 val="$define"
12228         else
12229                 echo "but not the 3 argument form of open().  Oh, well." >&4
12230                 val="$undef"
12231         fi
12232 elif $test `./findhdr fcntl.h` && \
12233                 set try -DI_FCNTL && eval $compile; then
12234         h_fcntl=true;
12235         echo "<fcntl.h> defines the O_* constants..." >&4
12236         if $run ./try; then
12237                 echo "and you have the 3 argument form of open()." >&4
12238                 val="$define"
12239         else
12240                 echo "but not the 3 argument form of open().  Oh, well." >&4
12241                 val="$undef"
12242         fi
12243 else
12244         val="$undef"
12245         echo "I can't find the O_* constant definitions!  You got problems." >&4
12246 fi
12247 set d_open3
12248 eval $setvar
12249 $rm_try
12250
12251 : see which of string.h or strings.h is needed
12252 echo " "
12253 strings=`./findhdr string.h`
12254 if $test "$strings" && $test -r "$strings"; then
12255         echo "Using <string.h> instead of <strings.h>." >&4
12256         val="$define"
12257 else
12258         val="$undef"
12259         strings=`./findhdr strings.h`
12260         if $test "$strings" && $test -r "$strings"; then
12261                 echo "Using <strings.h> instead of <string.h>." >&4
12262         else
12263                 echo "No string header found -- You'll surely have problems." >&4
12264         fi
12265 fi
12266 set i_string
12267 eval $setvar
12268 case "$i_string" in
12269 "$undef") strings=`./findhdr strings.h`;;
12270 *)        strings=`./findhdr string.h`;;
12271 esac
12272
12273 : see if this is a sys/file.h system
12274 val=''
12275 set sys/file.h val
12276 eval $inhdr
12277
12278 : do we need to include sys/file.h ?
12279 case "$val" in
12280 "$define")
12281         echo " "
12282         if $h_sysfile; then
12283                 val="$define"
12284                 echo "We'll be including <sys/file.h>." >&4
12285         else
12286                 val="$undef"
12287                 echo "We won't be including <sys/file.h>." >&4
12288         fi
12289         ;;
12290 *)
12291         h_sysfile=false
12292         ;;
12293 esac
12294 set i_sysfile
12295 eval $setvar
12296
12297 : see if fcntl.h is there
12298 val=''
12299 set fcntl.h val
12300 eval $inhdr
12301
12302 : see if we can include fcntl.h
12303 case "$val" in
12304 "$define")
12305         echo " "
12306         if $h_fcntl; then
12307                 val="$define"
12308                 echo "We'll be including <fcntl.h>." >&4
12309         else
12310                 val="$undef"
12311                 if $h_sysfile; then
12312         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12313                 else
12314                         echo "We won't be including <fcntl.h>." >&4
12315                 fi
12316         fi
12317         ;;
12318 *)
12319         h_fcntl=false
12320         val="$undef"
12321         ;;
12322 esac
12323 set i_fcntl
12324 eval $setvar
12325
12326 : see if fork exists
12327 set fork d_fork
12328 eval $inlibc
12329
12330 : see if pipe exists
12331 set pipe d_pipe
12332 eval $inlibc
12333
12334 : check for non-blocking I/O stuff
12335 case "$h_sysfile" in
12336 true) echo "#include <sys/file.h>" > head.c;;
12337 *)
12338        case "$h_fcntl" in
12339        true) echo "#include <fcntl.h>" > head.c;;
12340        *) echo "#include <sys/fcntl.h>" > head.c;;
12341        esac
12342        ;;
12343 esac
12344 echo " "
12345 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12346 case "$o_nonblock" in
12347 '')
12348         $cat head.c > try.c
12349         $cat >>try.c <<EOCP
12350 #include <stdio.h>
12351 #$i_stdlib I_STDLIB
12352 #ifdef I_STDLIB
12353 #include <stdlib.h>
12354 #endif
12355 #$i_fcntl I_FCNTL
12356 #ifdef I_FCNTL
12357 #include <fcntl.h>
12358 #endif
12359 int main() {
12360 #ifdef O_NONBLOCK
12361         printf("O_NONBLOCK\n");
12362         exit(0);
12363 #endif
12364 #ifdef O_NDELAY
12365         printf("O_NDELAY\n");
12366         exit(0);
12367 #endif
12368 #ifdef FNDELAY
12369         printf("FNDELAY\n");
12370         exit(0);
12371 #endif
12372         exit(0);
12373 }
12374 EOCP
12375         set try
12376         if eval $compile_ok; then
12377                 o_nonblock=`$run ./try`
12378                 case "$o_nonblock" in
12379                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12380                 *) echo "Seems like we can use $o_nonblock.";;
12381                 esac
12382         else
12383                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12384         fi
12385         ;;
12386 *) echo "Using $hint value $o_nonblock.";;
12387 esac
12388 $rm_try
12389
12390 echo " "
12391 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12392 case "$eagain" in
12393 '')
12394         case "$d_fork:$d_pipe" in
12395         define:define)
12396         $cat head.c > try.c
12397         $cat >>try.c <<EOCP
12398 #include <errno.h>
12399 #include <sys/types.h>
12400 #include <signal.h>
12401 #include <stdio.h>
12402 #$i_stdlib I_STDLIB
12403 #ifdef I_STDLIB
12404 #include <stdlib.h>
12405 #endif
12406 #$i_fcntl I_FCNTL
12407 #ifdef I_FCNTL
12408 #include <fcntl.h>
12409 #endif
12410 #define MY_O_NONBLOCK $o_nonblock
12411 #ifndef errno  /* XXX need better Configure test */
12412 extern int errno;
12413 #endif
12414 #$i_unistd I_UNISTD
12415 #ifdef I_UNISTD
12416 #include <unistd.h>
12417 #endif
12418 #$i_string I_STRING
12419 #ifdef I_STRING
12420 #include <string.h>
12421 #else
12422 #include <strings.h>
12423 #endif
12424 $signal_t blech(int x) { exit(3); }
12425 EOCP
12426         $cat >> try.c <<'EOCP'
12427 int main()
12428 {
12429         int pd[2];
12430         int pu[2];
12431         char buf[1];
12432         char string[100];
12433
12434         pipe(pd);       /* Down: child -> parent */
12435         pipe(pu);       /* Up: parent -> child */
12436         if (0 != fork()) {
12437                 int ret;
12438                 close(pd[1]);   /* Parent reads from pd[0] */
12439                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12440 #ifdef F_SETFL
12441                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12442                         exit(1);
12443 #else
12444                 exit(4);
12445 #endif
12446                 signal(SIGALRM, blech);
12447                 alarm(5);
12448                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12449                         exit(2);
12450                 sprintf(string, "%d\n", ret);
12451                 write(2, string, strlen(string));
12452                 alarm(0);
12453 #ifdef EAGAIN
12454                 if (errno == EAGAIN) {
12455                         printf("EAGAIN\n");
12456                         goto ok;
12457                 }
12458 #endif
12459 #ifdef EWOULDBLOCK
12460                 if (errno == EWOULDBLOCK)
12461                         printf("EWOULDBLOCK\n");
12462 #endif
12463         ok:
12464                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12465                 sleep(2);                               /* Give it time to close our pipe */
12466                 alarm(5);
12467                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12468                 alarm(0);
12469                 sprintf(string, "%d\n", ret);
12470                 write(4, string, strlen(string));
12471                 exit(0);
12472         }
12473
12474         close(pd[0]);                   /* We write to pd[1] */
12475         close(pu[1]);                   /* We read from pu[0] */
12476         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12477         close(pd[1]);                   /* Pipe pd is now fully closed! */
12478         exit(0);                                /* Bye bye, thank you for playing! */
12479 }
12480 EOCP
12481         set try
12482         if eval $compile_ok; then
12483                 echo "$startsh" >mtry
12484                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12485                 chmod +x mtry
12486                 ./mtry >/dev/null 2>&1
12487                 case $? in
12488                 0) eagain=`$cat try.out`;;
12489                 1) echo "Could not perform non-blocking setting!";;
12490                 2) echo "I did a successful read() for something that was not there!";;
12491                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12492                 4) echo "Could not find F_SETFL!";;
12493                 *) echo "Something terribly wrong happened during testing.";;
12494                 esac
12495                 rd_nodata=`$cat try.ret`
12496                 echo "A read() system call with no data present returns $rd_nodata."
12497                 case "$rd_nodata" in
12498                 0|-1) ;;
12499                 *)
12500                         echo "(That's peculiar, fixing that to be -1.)"
12501                         rd_nodata=-1
12502                         ;;
12503                 esac
12504                 case "$eagain" in
12505                 '')
12506                         echo "Forcing errno EAGAIN on read() with no data available."
12507                         eagain=EAGAIN
12508                         ;;
12509                 *)
12510                         echo "Your read() sets errno to $eagain when no data is available."
12511                         ;;
12512                 esac
12513                 status=`$cat try.err`
12514                 case "$status" in
12515                 0) echo "And it correctly returns 0 to signal EOF.";;
12516                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12517                 *) echo "However, your read() returns '$status' on EOF??";;
12518                 esac
12519                 val="$define"
12520                 if test "$status" = "$rd_nodata"; then
12521                         echo "WARNING: you can't distinguish between EOF and no data!"
12522                         val="$undef"
12523                 fi
12524         else
12525                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12526                 eagain=EAGAIN
12527         fi
12528         ;;
12529         *)      echo "Can't figure out how to test this--assuming errno EAGAIN will do."
12530                 eagain=EAGAIN
12531                 val="$define"
12532                 ;;
12533         esac
12534         set d_eofnblk
12535         eval $setvar
12536         ;;
12537 *)
12538         echo "Using $hint value $eagain."
12539         echo "Your read() returns $rd_nodata when no data is present."
12540         case "$d_eofnblk" in
12541         "$define") echo "And you can see EOF because read() returns 0.";;
12542         "$undef") echo "But you can't see EOF status from read() returned value.";;
12543         *)
12544                 echo "(Assuming you can't see EOF status from read anyway.)"
12545                 d_eofnblk=$undef
12546                 ;;
12547         esac
12548         ;;
12549 esac
12550 $rm_try head.c mtry
12551
12552 : see if _ptr and _cnt from stdio act std
12553 echo " "
12554
12555 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12556         echo "(Looks like you have stdio.h from BSD.)"
12557         case "$stdio_ptr" in
12558         '') stdio_ptr='((fp)->_p)'
12559                 ptr_lval=$define
12560                 ;;
12561         *)      ptr_lval=$d_stdio_ptr_lval;;
12562         esac
12563         case "$stdio_cnt" in
12564         '') stdio_cnt='((fp)->_r)'
12565                 cnt_lval=$define
12566                 ;;
12567         *)      cnt_lval=$d_stdio_cnt_lval;;
12568         esac
12569         case "$stdio_base" in
12570         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12571         esac
12572         case "$stdio_bufsiz" in
12573         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12574         esac
12575 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12576         echo "(Looks like you have stdio.h from Linux.)"
12577         case "$stdio_ptr" in
12578         '') stdio_ptr='((fp)->_IO_read_ptr)'
12579                 ptr_lval=$define
12580                 ;;
12581         *)      ptr_lval=$d_stdio_ptr_lval;;
12582         esac
12583         case "$stdio_cnt" in
12584         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12585                 cnt_lval=$undef
12586                 ;;
12587         *)      cnt_lval=$d_stdio_cnt_lval;;
12588         esac
12589         case "$stdio_base" in
12590         '') stdio_base='((fp)->_IO_read_base)';;
12591         esac
12592         case "$stdio_bufsiz" in
12593         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12594         esac
12595 else
12596         case "$stdio_ptr" in
12597         '') stdio_ptr='((fp)->_ptr)'
12598                 ptr_lval=$define
12599                 ;;
12600         *)      ptr_lval=$d_stdio_ptr_lval;;
12601         esac
12602         case "$stdio_cnt" in
12603         '') stdio_cnt='((fp)->_cnt)'
12604                 cnt_lval=$define
12605                 ;;
12606         *)      cnt_lval=$d_stdio_cnt_lval;;
12607         esac
12608         case "$stdio_base" in
12609         '') stdio_base='((fp)->_base)';;
12610         esac
12611         case "$stdio_bufsiz" in
12612         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12613         esac
12614 fi
12615
12616 : test whether _ptr and _cnt really work
12617 echo "Checking how std your stdio is..." >&4
12618 $cat >try.c <<EOP
12619 #include <stdio.h>
12620 #$i_stdlib I_STDLIB
12621 #ifdef I_STDLIB
12622 #include <stdlib.h>
12623 #endif
12624 #define FILE_ptr(fp)    $stdio_ptr
12625 #define FILE_cnt(fp)    $stdio_cnt
12626 int main() {
12627         FILE *fp = fopen("try.c", "r");
12628         char c = getc(fp);
12629         if (
12630                 18 <= FILE_cnt(fp) &&
12631                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12632         )
12633                 exit(0);
12634         exit(1);
12635 }
12636 EOP
12637 val="$undef"
12638 set try
12639 if eval $compile && $to try.c; then
12640         if $run ./try; then
12641                 echo "Your stdio acts pretty std."
12642                 val="$define"
12643         else
12644                 echo "Your stdio isn't very std."
12645         fi
12646 else
12647         echo "Your stdio doesn't appear very std."
12648 fi
12649 $rm_try
12650
12651 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12652 # direct buffer manipulation no longer works.  The Configure tests
12653 # should be changed to correctly detect this, but until then,
12654 # the following check should at least let perl compile and run.
12655 # (This quick fix should be updated before 5.8.1.)
12656 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12657 # A. Dougherty, June 3, 2002.
12658 case "$d_gnulibc" in
12659 $define)
12660         case "$gnulibc_version" in
12661         2.[01]*)  ;;
12662         2.2) ;;
12663         2.2.[0-9]) ;;
12664         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12665                 val="$undef"
12666                 ;;
12667         esac
12668         ;;
12669 esac
12670 set d_stdstdio
12671 eval $setvar
12672
12673 : Can _ptr be used as an lvalue?
12674 case "$d_stdstdio$ptr_lval" in
12675 $define$define) val=$define ;;
12676 *) val=$undef ;;
12677 esac
12678 set d_stdio_ptr_lval
12679 eval $setvar
12680
12681 : Can _cnt be used as an lvalue?
12682 case "$d_stdstdio$cnt_lval" in
12683 $define$define) val=$define ;;
12684 *) val=$undef ;;
12685 esac
12686 set d_stdio_cnt_lval
12687 eval $setvar
12688
12689
12690 : test whether setting _ptr sets _cnt as a side effect
12691 d_stdio_ptr_lval_sets_cnt="$undef"
12692 d_stdio_ptr_lval_nochange_cnt="$undef"
12693 case "$d_stdio_ptr_lval$d_stdstdio" in
12694 $define$define)
12695         echo "Checking to see what happens if we set the stdio ptr..." >&4
12696 $cat >try.c <<EOP
12697 #include <stdio.h>
12698 /* Can we scream? */
12699 /* Eat dust sed :-) */
12700 /* In the buffer space, no one can hear you scream. */
12701 #$i_stdlib I_STDLIB
12702 #ifdef I_STDLIB
12703 #include <stdlib.h>
12704 #endif
12705 #define FILE_ptr(fp)    $stdio_ptr
12706 #define FILE_cnt(fp)    $stdio_cnt
12707 #include <sys/types.h>
12708 int main() {
12709         FILE *fp = fopen("try.c", "r");
12710         int c;
12711         char *ptr;
12712         size_t cnt;
12713         if (!fp) {
12714             puts("Fail even to read");
12715             exit(1);
12716         }
12717         c = getc(fp); /* Read away the first # */
12718         if (c == EOF) {
12719             puts("Fail even to read");
12720             exit(1);
12721         }
12722         if (!(
12723                 18 <= FILE_cnt(fp) &&
12724                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12725         )) {
12726                 puts("Fail even to read");
12727                 exit (1);
12728         }
12729         ptr = (char*) FILE_ptr(fp);
12730         cnt = (size_t)FILE_cnt(fp);
12731
12732         FILE_ptr(fp) += 42;
12733
12734         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12735                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12736                 exit (1);
12737         }
12738         if (FILE_cnt(fp) <= 20) {
12739                 printf ("Fail (<20 chars to test)");
12740                 exit (1);
12741         }
12742         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12743                 puts("Fail compare");
12744                 exit (1);
12745         }
12746         if (cnt == FILE_cnt(fp)) {
12747                 puts("Pass_unchanged");
12748                 exit (0);
12749         }
12750         if (FILE_cnt(fp) == (cnt - 42)) {
12751                 puts("Pass_changed");
12752                 exit (0);
12753         }
12754         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12755         return 1;
12756
12757 }
12758 EOP
12759         set try
12760         if eval $compile && $to try.c; then
12761                 case `$run ./try` in
12762                 Pass_changed)
12763                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12764                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12765                 Pass_unchanged)
12766                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12767                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12768                 Fail*)
12769                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12770                 *)
12771                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12772         esac
12773         else
12774                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12775         fi
12776         $rm_try
12777         ;;
12778 esac
12779
12780 : see if _base is also standard
12781 val="$undef"
12782 case "$d_stdstdio" in
12783 $define)
12784         $cat >try.c <<EOP
12785 #include <stdio.h>
12786 #$i_stdlib I_STDLIB
12787 #ifdef I_STDLIB
12788 #include <stdlib.h>
12789 #endif
12790 #define FILE_base(fp)   $stdio_base
12791 #define FILE_bufsiz(fp) $stdio_bufsiz
12792 int main() {
12793         FILE *fp = fopen("try.c", "r");
12794         char c = getc(fp);
12795         if (
12796                 19 <= FILE_bufsiz(fp) &&
12797                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12798         )
12799                 exit(0);
12800         exit(1);
12801 }
12802 EOP
12803         set try
12804         if eval $compile && $to try.c; then
12805                 if $run ./try; then
12806                         echo "And its _base field acts std."
12807                         val="$define"
12808                 else
12809                         echo "But its _base field isn't std."
12810                 fi
12811         else
12812                 echo "However, it seems to be lacking the _base field."
12813         fi
12814         $rm_try
12815         ;;
12816 esac
12817 set d_stdiobase
12818 eval $setvar
12819
12820 : see if fast_stdio exists
12821 val="$undef"
12822 case "$d_stdstdio:$d_stdio_ptr_lval" in
12823 "$define:$define")
12824         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12825         *$define*)
12826                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12827                 val="$define"
12828                 ;;
12829         esac
12830         ;;
12831 esac
12832 set d_faststdio
12833 eval $setvar
12834
12835
12836
12837 : see if fchdir exists
12838 set fchdir d_fchdir
12839 eval $inlibc
12840
12841 : see if fchmod exists
12842 set fchmod d_fchmod
12843 eval $inlibc
12844
12845 : see if fchown exists
12846 set fchown d_fchown
12847 eval $inlibc
12848
12849 : see if this is an fcntl system
12850 set fcntl d_fcntl
12851 eval $inlibc
12852
12853 : See if fcntl-based locking works.
12854 echo " "
12855 $cat >try.c <<EOCP
12856 #$i_stdlib I_STDLIB
12857 #ifdef I_STDLIB
12858 #include <stdlib.h>
12859 #endif
12860 #include <unistd.h>
12861 #include <fcntl.h>
12862 #include <signal.h>
12863 $signal_t blech(int x) { exit(3); }
12864 int main() {
12865 #if defined(F_SETLK) && defined(F_SETLKW)
12866      struct flock flock;
12867      int retval, fd;
12868      fd = open("try.c", O_RDONLY);
12869      flock.l_type = F_RDLCK;
12870      flock.l_whence = SEEK_SET;
12871      flock.l_start = flock.l_len = 0;
12872      signal(SIGALRM, blech);
12873      alarm(10);
12874      retval = fcntl(fd, F_SETLK, &flock);
12875      close(fd);
12876      (retval < 0 ? exit(2) : exit(0));
12877 #else
12878      exit(2);
12879 #endif
12880 }
12881 EOCP
12882 echo "Checking if fcntl-based file locking works... "
12883 case "$d_fcntl" in
12884 "$define")
12885         set try
12886         if eval $compile_ok; then
12887                 if $run ./try; then
12888                         echo "Yes, it seems to work."
12889                         val="$define"
12890                 else
12891                         echo "Nope, it didn't work."
12892                         val="$undef"
12893                         case "$?" in
12894                         3) $cat >&4 <<EOM
12895 ***
12896 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12897 *** This is (almost) impossible.
12898 *** If your NFS lock daemons are not feeling well, something like
12899 *** this may happen, please investigate.  Cannot continue, aborting.
12900 ***
12901 EOM
12902                                 exit 1
12903                                 ;;
12904                         esac
12905                 fi
12906         else
12907                 echo "I'm unable to compile the test program, so I'll assume not."
12908                 val="$undef"
12909         fi
12910         ;;
12911 *) val="$undef";
12912         echo "Nope, since you don't even have fcntl()."
12913         ;;
12914 esac
12915 set d_fcntl_can_lock
12916 eval $setvar
12917 $rm_try
12918
12919 : check for fd_set items
12920 $cat <<EOM
12921
12922 Checking to see how well your C compiler handles fd_set and friends ...
12923 EOM
12924 $cat >try.c <<EOCP
12925 #$i_stdlib I_STDLIB
12926 #ifdef I_STDLIB
12927 #include <stdlib.h>
12928 #endif
12929 #$i_systime I_SYS_TIME
12930 #$i_sysselct I_SYS_SELECT
12931 #$d_socket HAS_SOCKET
12932 #include <sys/types.h>
12933 #ifdef HAS_SOCKET
12934 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12935 #endif
12936 #ifdef I_SYS_TIME
12937 #include <sys/time.h>
12938 #endif
12939 #ifdef I_SYS_SELECT
12940 #include <sys/select.h>
12941 #endif
12942 int main() {
12943         fd_set fds;
12944
12945 #ifdef TRYBITS
12946         if(fds.fds_bits);
12947 #endif
12948
12949 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12950         exit(0);
12951 #else
12952         exit(1);
12953 #endif
12954 }
12955 EOCP
12956 set try -DTRYBITS
12957 if eval $compile; then
12958         d_fds_bits="$define"
12959         d_fd_set="$define"
12960         echo "Well, your system knows about the normal fd_set typedef..." >&4
12961         if $run ./try; then
12962                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12963                 d_fd_macros="$define"
12964         else
12965                 $cat >&4 <<'EOM'
12966 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12967 EOM
12968                 d_fd_macros="$undef"
12969         fi
12970 else
12971         $cat <<'EOM'
12972 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12973 EOM
12974         set try
12975         if eval $compile; then
12976                 d_fds_bits="$undef"
12977                 d_fd_set="$define"
12978                 echo "Well, your system has some sort of fd_set available..." >&4
12979                 if $run ./try; then
12980                         echo "and you have the normal fd_set macros." >&4
12981                         d_fd_macros="$define"
12982                 else
12983                         $cat <<'EOM'
12984 but not the normal fd_set macros!  Gross!  More work for me...
12985 EOM
12986                         d_fd_macros="$undef"
12987                 fi
12988         else
12989         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12990                 d_fd_set="$undef"
12991                 d_fds_bits="$undef"
12992                 d_fd_macros="$undef"
12993         fi
12994 fi
12995 $rm_try
12996
12997 : see if fgetpos exists
12998 set fgetpos d_fgetpos
12999 eval $inlibc
13000
13001 : see if finite exists
13002 set finite d_finite
13003 eval $inlibc
13004
13005 : see if finitel exists
13006 set finitel d_finitel
13007 eval $inlibc
13008
13009 : see if flock exists
13010 set flock d_flock
13011 eval $inlibc
13012
13013 : see if prototype for flock is available
13014 echo " "
13015 set d_flockproto flock $i_sysfile sys/file.h
13016 eval $hasproto
13017
13018 : see if fp_class exists
13019 set fp_class d_fp_class
13020 eval $inlibc
13021
13022 : see if pathconf exists
13023 set pathconf d_pathconf
13024 eval $inlibc
13025
13026 : see if fpathconf exists
13027 set fpathconf d_fpathconf
13028 eval $inlibc
13029
13030 : see if fpclass exists
13031 set fpclass d_fpclass
13032 eval $inlibc
13033
13034 : see if fpclassify exists
13035 set fpclassify d_fpclassify
13036 eval $inlibc
13037
13038 : see if fpclassl exists
13039 set fpclassl d_fpclassl
13040 eval $inlibc
13041
13042
13043 : check for fpos64_t
13044 echo " "
13045 echo "Checking to see if you have fpos64_t..." >&4
13046 $cat >try.c <<EOCP
13047 #include <stdio.h>
13048 int main() { fpos64_t x = 7; }
13049 EOCP
13050 set try
13051 if eval $compile; then
13052         val="$define"
13053         echo "You have fpos64_t."
13054 else
13055         val="$undef"
13056         echo "You do not have fpos64_t."
13057         case "$fpossize" in
13058         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
13059         esac
13060 fi
13061 $rm_try
13062 set d_fpos64_t
13063 eval $setvar
13064
13065 : see if frexpl exists
13066 set frexpl d_frexpl
13067 eval $inlibc
13068
13069 : see if this is a sys/param system
13070 set sys/param.h i_sysparam
13071 eval $inhdr
13072
13073 : see if this is a sys/mount.h system
13074 set sys/mount.h i_sysmount
13075 eval $inhdr
13076
13077
13078 echo " "
13079 echo "Checking to see if your system supports struct fs_data..." >&4
13080 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
13081 eval $hasstruct
13082 case "$d_fs_data_s" in
13083 "$define")      echo "Yes, it does."   ;;
13084 *)              echo "No, it doesn't." ;;
13085 esac
13086
13087 : see if fseeko exists
13088 set fseeko d_fseeko
13089 eval $inlibc
13090 case "$longsize" in
13091 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
13092 esac
13093
13094 : see if fsetpos exists
13095 set fsetpos d_fsetpos
13096 eval $inlibc
13097
13098
13099 : see if fstatfs exists
13100 set fstatfs d_fstatfs
13101 eval $inlibc
13102
13103
13104 : see if statvfs exists
13105 set statvfs d_statvfs
13106 eval $inlibc
13107
13108 : see if fstatvfs exists
13109 set fstatvfs d_fstatvfs
13110 eval $inlibc
13111
13112
13113 : see if fsync exists
13114 set fsync d_fsync
13115 eval $inlibc
13116
13117 : see if ftello exists
13118 set ftello d_ftello
13119 eval $inlibc
13120 case "$longsize" in
13121 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
13122 esac
13123
13124 : check for a working futimes
13125 d_futimes="$undef"
13126 echo " "
13127 echo "Checking if you have a working futimes()" >&4
13128 $cat >try.c <<EOCP
13129 #include <stdio.h>
13130 #include <sys/time.h>
13131 #include <errno.h>
13132 #include <fcntl.h>
13133
13134 int main ()
13135 {
13136     int fd, rv;
13137     fd = open ("try.c", O_RDWR);
13138     if (-1 == fd) exit (1);
13139     rv = futimes (fd, NULL);
13140     exit (rv == -1 ? errno : 0);
13141 }
13142 EOCP
13143 set try
13144 if eval $compile; then
13145     `$run ./try`
13146     rc=$?
13147     case "$rc" in
13148         0)  echo "Yes, you have" >&4
13149             d_futimes="$define"
13150             ;;
13151         *)  echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
13152             ;;
13153     esac
13154 else
13155     echo "No, it does not (probably harmless)" >&4
13156 fi
13157 $rm_try
13158
13159 : see if getcwd exists
13160 set getcwd d_getcwd
13161 eval $inlibc
13162
13163 : see if getespwnam exists
13164 set getespwnam d_getespwnam
13165 eval $inlibc
13166
13167
13168 : see if getfsstat exists
13169 set getfsstat d_getfsstat
13170 eval $inlibc
13171
13172 : see if getgrent exists
13173 set getgrent d_getgrent
13174 eval $inlibc
13175
13176 : see if getgrent_r exists
13177 set getgrent_r d_getgrent_r
13178 eval $inlibc
13179 case "$d_getgrent_r" in
13180 "$define")
13181         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13182         case "$d_getgrent_r_proto:$usethreads" in
13183         ":define")      d_getgrent_r_proto=define
13184                 set d_getgrent_r_proto getgrent_r $hdrs
13185                 eval $hasproto ;;
13186         *)      ;;
13187         esac
13188         case "$d_getgrent_r_proto" in
13189         define)
13190         case "$getgrent_r_proto" in
13191         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13192         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13193         esac
13194         case "$getgrent_r_proto" in
13195         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13196         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13197         esac
13198         case "$getgrent_r_proto" in
13199         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13200         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13201         esac
13202         case "$getgrent_r_proto" in
13203         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13204         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13205         esac
13206         case "$getgrent_r_proto" in
13207         ''|0) try='int getgrent_r(struct group*, char*, int);'
13208         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13209         esac
13210         case "$getgrent_r_proto" in
13211         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13212         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13213         esac
13214         case "$getgrent_r_proto" in
13215         ''|0)   d_getgrent_r=undef
13216                 getgrent_r_proto=0
13217                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13218         * )     case "$getgrent_r_proto" in
13219                 REENTRANT_PROTO*) ;;
13220                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13221                 esac
13222                 echo "Prototype: $try" ;;
13223         esac
13224         ;;
13225         *)      case "$usethreads" in
13226                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13227                 esac
13228                 d_getgrent_r=undef
13229                 getgrent_r_proto=0
13230                 ;;
13231         esac
13232         ;;
13233 *)      getgrent_r_proto=0
13234         ;;
13235 esac
13236
13237 : see if getgrgid_r exists
13238 set getgrgid_r d_getgrgid_r
13239 eval $inlibc
13240 case "$d_getgrgid_r" in
13241 "$define")
13242         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13243         case "$d_getgrgid_r_proto:$usethreads" in
13244         ":define")      d_getgrgid_r_proto=define
13245                 set d_getgrgid_r_proto getgrgid_r $hdrs
13246                 eval $hasproto ;;
13247         *)      ;;
13248         esac
13249         case "$d_getgrgid_r_proto" in
13250         define)
13251         case "$getgrgid_r_proto" in
13252         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13253         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13254         esac
13255         case "$getgrgid_r_proto" in
13256         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13257         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13258         esac
13259         case "$getgrgid_r_proto" in
13260         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13261         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13262         esac
13263         case "$getgrgid_r_proto" in
13264         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13265         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13266         esac
13267         case "$getgrgid_r_proto" in
13268         ''|0)   d_getgrgid_r=undef
13269                 getgrgid_r_proto=0
13270                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13271         * )     case "$getgrgid_r_proto" in
13272                 REENTRANT_PROTO*) ;;
13273                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13274                 esac
13275                 echo "Prototype: $try" ;;
13276         esac
13277         ;;
13278         *)      case "$usethreads" in
13279                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13280                 esac
13281                 d_getgrgid_r=undef
13282                 getgrgid_r_proto=0
13283                 ;;
13284         esac
13285         ;;
13286 *)      getgrgid_r_proto=0
13287         ;;
13288 esac
13289
13290 : see if getgrnam_r exists
13291 set getgrnam_r d_getgrnam_r
13292 eval $inlibc
13293 case "$d_getgrnam_r" in
13294 "$define")
13295         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13296         case "$d_getgrnam_r_proto:$usethreads" in
13297         ":define")      d_getgrnam_r_proto=define
13298                 set d_getgrnam_r_proto getgrnam_r $hdrs
13299                 eval $hasproto ;;
13300         *)      ;;
13301         esac
13302         case "$d_getgrnam_r_proto" in
13303         define)
13304         case "$getgrnam_r_proto" in
13305         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13306         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13307         esac
13308         case "$getgrnam_r_proto" in
13309         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13310         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13311         esac
13312         case "$getgrnam_r_proto" in
13313         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13314         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13315         esac
13316         case "$getgrnam_r_proto" in
13317         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13318         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13319         esac
13320         case "$getgrnam_r_proto" in
13321         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13322         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13323         esac
13324         case "$getgrnam_r_proto" in
13325         ''|0)   d_getgrnam_r=undef
13326                 getgrnam_r_proto=0
13327                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13328         * )     case "$getgrnam_r_proto" in
13329                 REENTRANT_PROTO*) ;;
13330                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13331                 esac
13332                 echo "Prototype: $try" ;;
13333         esac
13334         ;;
13335         *)      case "$usethreads" in
13336                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13337                 esac
13338                 d_getgrnam_r=undef
13339                 getgrnam_r_proto=0
13340                 ;;
13341         esac
13342         ;;
13343 *)      getgrnam_r_proto=0
13344         ;;
13345 esac
13346
13347 : see if gethostbyaddr exists
13348 set gethostbyaddr d_gethbyaddr
13349 eval $inlibc
13350
13351 : see if gethostbyname exists
13352 set gethostbyname d_gethbyname
13353 eval $inlibc
13354
13355 : see if gethostent exists
13356 set gethostent d_gethent
13357 eval $inlibc
13358
13359 : see how we will look up host name
13360 echo " "
13361 call=''
13362 if set gethostname val -f d_gethname; eval $csym; $val; then
13363         echo 'gethostname() found.' >&4
13364         d_gethname="$define"
13365         call=gethostname
13366 fi
13367 if set uname val -f d_uname; eval $csym; $val; then
13368         if ./xenix; then
13369                 $cat <<'EOM'
13370 uname() was found, but you're running xenix, and older versions of xenix
13371 have a broken uname(). If you don't really know whether your xenix is old
13372 enough to have a broken system call, use the default answer.
13373
13374 EOM
13375                 dflt=y
13376                 case "$d_uname" in
13377                 "$define") dflt=n;;
13378                 esac
13379                 rp='Is your uname() broken?'
13380                 . ./myread
13381                 case "$ans" in
13382                 n*) d_uname="$define"; call=uname;;
13383                 esac
13384         else
13385                 echo 'uname() found.' >&4
13386                 d_uname="$define"
13387                 case "$call" in
13388                 '') call=uname ;;
13389                 esac
13390         fi
13391 fi
13392 case "$d_gethname" in
13393 '') d_gethname="$undef";;
13394 esac
13395 case "$d_uname" in
13396 '') d_uname="$undef";;
13397 esac
13398 case "$d_uname$d_gethname" in
13399 *define*)
13400         dflt=n
13401         cat <<EOM
13402
13403 Every now and then someone has a $call() that lies about the hostname
13404 but can't be fixed for political or economic reasons.  If you wish, I can
13405 pretend $call() isn't there and maybe compute hostname at run-time
13406 thanks to the '$phostname' command.
13407
13408 EOM
13409         rp="Shall I ignore $call() from now on?"
13410         . ./myread
13411         case "$ans" in
13412         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13413         esac;;
13414 esac
13415 case "$phostname" in
13416 '') aphostname='';;
13417 *) case "$aphostname" in
13418         /*) ;;
13419         *) set X $phostname
13420                 shift
13421                 file=$1
13422                 shift
13423                 file=`./loc $file $file $pth`
13424                 aphostname=`echo $file $*`
13425                 ;;
13426         esac
13427         ;;
13428 esac
13429 case "$d_uname$d_gethname" in
13430 *define*) ;;
13431 *)
13432         case "$phostname" in
13433         '')
13434                 echo "There will be no way for $package to get your hostname." >&4;;
13435         *)
13436         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13437                 ;;
13438         esac;;
13439 esac
13440 case "$d_phostname" in
13441 '') d_phostname="$undef";;
13442 esac
13443
13444 : see if gethostbyaddr_r exists
13445 set gethostbyaddr_r d_gethostbyaddr_r
13446 eval $inlibc
13447 case "$d_gethostbyaddr_r" in
13448 "$define")
13449         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13450         case "$d_gethostbyaddr_r_proto:$usethreads" in
13451         ":define")      d_gethostbyaddr_r_proto=define
13452                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13453                 eval $hasproto ;;
13454         *)      ;;
13455         esac
13456         case "$d_gethostbyaddr_r_proto" in
13457         define)
13458         case "$gethostbyaddr_r_proto" in
13459         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13460         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13461         esac
13462         case "$gethostbyaddr_r_proto" in
13463         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13464         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13465         esac
13466         case "$gethostbyaddr_r_proto" in
13467         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13468         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13469         esac
13470         case "$gethostbyaddr_r_proto" in
13471         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13472         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13473         esac
13474         case "$gethostbyaddr_r_proto" in
13475         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13476         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13477         esac
13478         case "$gethostbyaddr_r_proto" in
13479         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13480         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13481         esac
13482         case "$gethostbyaddr_r_proto" in
13483         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13484         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13485         esac
13486         case "$gethostbyaddr_r_proto" in
13487         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13488         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13489         esac
13490         case "$gethostbyaddr_r_proto" in
13491         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13492         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13493         esac
13494         case "$gethostbyaddr_r_proto" in
13495         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13496         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13497         esac
13498         case "$gethostbyaddr_r_proto" in
13499         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13500         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13501         esac
13502         case "$gethostbyaddr_r_proto" in
13503         ''|0)   d_gethostbyaddr_r=undef
13504                 gethostbyaddr_r_proto=0
13505                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13506         * )     case "$gethostbyaddr_r_proto" in
13507                 REENTRANT_PROTO*) ;;
13508                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13509                 esac
13510                 echo "Prototype: $try" ;;
13511         esac
13512         ;;
13513         *)      case "$usethreads" in
13514                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13515                 esac
13516                 d_gethostbyaddr_r=undef
13517                 gethostbyaddr_r_proto=0
13518                 ;;
13519         esac
13520         ;;
13521 *)      gethostbyaddr_r_proto=0
13522         ;;
13523 esac
13524
13525 : see if gethostbyname_r exists
13526 set gethostbyname_r d_gethostbyname_r
13527 eval $inlibc
13528 case "$d_gethostbyname_r" in
13529 "$define")
13530         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13531         case "$d_gethostbyname_r_proto:$usethreads" in
13532         ":define")      d_gethostbyname_r_proto=define
13533                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13534                 eval $hasproto ;;
13535         *)      ;;
13536         esac
13537         case "$d_gethostbyname_r_proto" in
13538         define)
13539         case "$gethostbyname_r_proto" in
13540         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13541         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13542         esac
13543         case "$gethostbyname_r_proto" in
13544         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13545         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13546         esac
13547         case "$gethostbyname_r_proto" in
13548         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13549         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13550         esac
13551         case "$gethostbyname_r_proto" in
13552         ''|0)   d_gethostbyname_r=undef
13553                 gethostbyname_r_proto=0
13554                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13555         * )     case "$gethostbyname_r_proto" in
13556                 REENTRANT_PROTO*) ;;
13557                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13558                 esac
13559                 echo "Prototype: $try" ;;
13560         esac
13561         ;;
13562         *)      case "$usethreads" in
13563                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13564                 esac
13565                 d_gethostbyname_r=undef
13566                 gethostbyname_r_proto=0
13567                 ;;
13568         esac
13569         ;;
13570 *)      gethostbyname_r_proto=0
13571         ;;
13572 esac
13573
13574 : see if gethostent_r exists
13575 set gethostent_r d_gethostent_r
13576 eval $inlibc
13577 case "$d_gethostent_r" in
13578 "$define")
13579         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13580         case "$d_gethostent_r_proto:$usethreads" in
13581         ":define")      d_gethostent_r_proto=define
13582                 set d_gethostent_r_proto gethostent_r $hdrs
13583                 eval $hasproto ;;
13584         *)      ;;
13585         esac
13586         case "$d_gethostent_r_proto" in
13587         define)
13588         case "$gethostent_r_proto" in
13589         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13590         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13591         esac
13592         case "$gethostent_r_proto" in
13593         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13594         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13595         esac
13596         case "$gethostent_r_proto" in
13597         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13598         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13599         esac
13600         case "$gethostent_r_proto" in
13601         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13602         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13603         esac
13604         case "$gethostent_r_proto" in
13605         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13606         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13607         esac
13608         case "$gethostent_r_proto" in
13609         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13610         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13611         esac
13612         case "$gethostent_r_proto" in
13613         ''|0)   d_gethostent_r=undef
13614                 gethostent_r_proto=0
13615                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13616         * )     case "$gethostent_r_proto" in
13617                 REENTRANT_PROTO*) ;;
13618                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13619                 esac
13620                 echo "Prototype: $try" ;;
13621         esac
13622         ;;
13623         *)      case "$usethreads" in
13624                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13625                 esac
13626                 d_gethostent_r=undef
13627                 gethostent_r_proto=0
13628                 ;;
13629         esac
13630         ;;
13631 *)      gethostent_r_proto=0
13632         ;;
13633 esac
13634
13635 : see if prototypes for various gethostxxx netdb.h functions are available
13636 echo " "
13637 set d_gethostprotos gethostent $i_netdb netdb.h
13638 eval $hasproto
13639
13640 : see if getitimer exists
13641 set getitimer d_getitimer
13642 eval $inlibc
13643
13644 : see if getlogin exists
13645 set getlogin d_getlogin
13646 eval $inlibc
13647
13648 : see if getlogin_r exists
13649 set getlogin_r d_getlogin_r
13650 eval $inlibc
13651 case "$d_getlogin_r" in
13652 "$define")
13653         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13654         case "$d_getlogin_r_proto:$usethreads" in
13655         ":define")      d_getlogin_r_proto=define
13656                 set d_getlogin_r_proto getlogin_r $hdrs
13657                 eval $hasproto ;;
13658         *)      ;;
13659         esac
13660         case "$d_getlogin_r_proto" in
13661         define)
13662         case "$getlogin_r_proto" in
13663         ''|0) try='int getlogin_r(char*, size_t);'
13664         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13665         esac
13666         case "$getlogin_r_proto" in
13667         ''|0) try='int getlogin_r(char*, int);'
13668         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13669         esac
13670         case "$getlogin_r_proto" in
13671         ''|0) try='char* getlogin_r(char*, size_t);'
13672         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13673         esac
13674         case "$getlogin_r_proto" in
13675         ''|0) try='char* getlogin_r(char*, int);'
13676         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13677         esac
13678         case "$getlogin_r_proto" in
13679         ''|0)   d_getlogin_r=undef
13680                 getlogin_r_proto=0
13681                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13682         * )     case "$getlogin_r_proto" in
13683                 REENTRANT_PROTO*) ;;
13684                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13685                 esac
13686                 echo "Prototype: $try" ;;
13687         esac
13688         ;;
13689         *)      case "$usethreads" in
13690                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13691                 esac
13692                 d_getlogin_r=undef
13693                 getlogin_r_proto=0
13694                 ;;
13695         esac
13696         ;;
13697 *)      getlogin_r_proto=0
13698         ;;
13699 esac
13700
13701 : see if getmnt exists
13702 set getmnt d_getmnt
13703 eval $inlibc
13704
13705 : see if getmntent exists
13706 set getmntent d_getmntent
13707 eval $inlibc
13708
13709 : see if getnetbyaddr exists
13710 set getnetbyaddr d_getnbyaddr
13711 eval $inlibc
13712
13713 : see if getnetbyname exists
13714 set getnetbyname d_getnbyname
13715 eval $inlibc
13716
13717 : see if getnetent exists
13718 set getnetent d_getnent
13719 eval $inlibc
13720
13721 : see if getnetbyaddr_r exists
13722 set getnetbyaddr_r d_getnetbyaddr_r
13723 eval $inlibc
13724 case "$d_getnetbyaddr_r" in
13725 "$define")
13726         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13727         case "$d_getnetbyaddr_r_proto:$usethreads" in
13728         ":define")      d_getnetbyaddr_r_proto=define
13729                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13730                 eval $hasproto ;;
13731         *)      ;;
13732         esac
13733         case "$d_getnetbyaddr_r_proto" in
13734         define)
13735         case "$getnetbyaddr_r_proto" in
13736         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13737         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13738         esac
13739         case "$getnetbyaddr_r_proto" in
13740         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13741         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13742         esac
13743         case "$getnetbyaddr_r_proto" in
13744         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13745         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13746         esac
13747         case "$getnetbyaddr_r_proto" in
13748         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13749         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13750         esac
13751         case "$getnetbyaddr_r_proto" in
13752         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13753         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13754         esac
13755         case "$getnetbyaddr_r_proto" in
13756         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13757         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13758         esac
13759         case "$getnetbyaddr_r_proto" in
13760         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13761         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13762         esac
13763         case "$getnetbyaddr_r_proto" in
13764         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13765         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13766         esac
13767         case "$getnetbyaddr_r_proto" in
13768         ''|0)   d_getnetbyaddr_r=undef
13769                 getnetbyaddr_r_proto=0
13770                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13771         * )     case "$getnetbyaddr_r_proto" in
13772                 REENTRANT_PROTO*) ;;
13773                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13774                 esac
13775                 echo "Prototype: $try" ;;
13776         esac
13777         ;;
13778         *)      case "$usethreads" in
13779                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13780                 esac
13781                 d_getnetbyaddr_r=undef
13782                 getnetbyaddr_r_proto=0
13783                 ;;
13784         esac
13785         ;;
13786 *)      getnetbyaddr_r_proto=0
13787         ;;
13788 esac
13789
13790 : see if getnetbyname_r exists
13791 set getnetbyname_r d_getnetbyname_r
13792 eval $inlibc
13793 case "$d_getnetbyname_r" in
13794 "$define")
13795         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13796         case "$d_getnetbyname_r_proto:$usethreads" in
13797         ":define")      d_getnetbyname_r_proto=define
13798                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13799                 eval $hasproto ;;
13800         *)      ;;
13801         esac
13802         case "$d_getnetbyname_r_proto" in
13803         define)
13804         case "$getnetbyname_r_proto" in
13805         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13806         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13807         esac
13808         case "$getnetbyname_r_proto" in
13809         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13810         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13811         esac
13812         case "$getnetbyname_r_proto" in
13813         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13814         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13815         esac
13816         case "$getnetbyname_r_proto" in
13817         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13818         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13819         esac
13820         case "$getnetbyname_r_proto" in
13821         ''|0)   d_getnetbyname_r=undef
13822                 getnetbyname_r_proto=0
13823                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13824         * )     case "$getnetbyname_r_proto" in
13825                 REENTRANT_PROTO*) ;;
13826                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13827                 esac
13828                 echo "Prototype: $try" ;;
13829         esac
13830         ;;
13831         *)      case "$usethreads" in
13832                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13833                 esac
13834                 d_getnetbyname_r=undef
13835                 getnetbyname_r_proto=0
13836                 ;;
13837         esac
13838         ;;
13839 *)      getnetbyname_r_proto=0
13840         ;;
13841 esac
13842
13843 : see if getnetent_r exists
13844 set getnetent_r d_getnetent_r
13845 eval $inlibc
13846 case "$d_getnetent_r" in
13847 "$define")
13848         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13849         case "$d_getnetent_r_proto:$usethreads" in
13850         ":define")      d_getnetent_r_proto=define
13851                 set d_getnetent_r_proto getnetent_r $hdrs
13852                 eval $hasproto ;;
13853         *)      ;;
13854         esac
13855         case "$d_getnetent_r_proto" in
13856         define)
13857         case "$getnetent_r_proto" in
13858         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13859         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13860         esac
13861         case "$getnetent_r_proto" in
13862         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13863         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13864         esac
13865         case "$getnetent_r_proto" in
13866         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13867         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13868         esac
13869         case "$getnetent_r_proto" in
13870         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13871         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13872         esac
13873         case "$getnetent_r_proto" in
13874         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13875         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13876         esac
13877         case "$getnetent_r_proto" in
13878         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13879         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13880         esac
13881         case "$getnetent_r_proto" in
13882         ''|0)   d_getnetent_r=undef
13883                 getnetent_r_proto=0
13884                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13885         * )     case "$getnetent_r_proto" in
13886                 REENTRANT_PROTO*) ;;
13887                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13888                 esac
13889                 echo "Prototype: $try" ;;
13890         esac
13891         ;;
13892         *)      case "$usethreads" in
13893                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13894                 esac
13895                 d_getnetent_r=undef
13896                 getnetent_r_proto=0
13897                 ;;
13898         esac
13899         ;;
13900 *)      getnetent_r_proto=0
13901         ;;
13902 esac
13903
13904 : see if prototypes for various getnetxxx netdb.h functions are available
13905 echo " "
13906 set d_getnetprotos getnetent $i_netdb netdb.h
13907 eval $hasproto
13908
13909 : see if getpagesize exists
13910 set getpagesize d_getpagsz
13911 eval $inlibc
13912
13913
13914 : see if getprotobyname exists
13915 set getprotobyname d_getpbyname
13916 eval $inlibc
13917
13918 : see if getprotobynumber exists
13919 set getprotobynumber d_getpbynumber
13920 eval $inlibc
13921
13922 : see if getprotoent exists
13923 set getprotoent d_getpent
13924 eval $inlibc
13925
13926 : see if getpgid exists
13927 set getpgid d_getpgid
13928 eval $inlibc
13929
13930 : see if getpgrp2 exists
13931 set getpgrp2 d_getpgrp2
13932 eval $inlibc
13933
13934 : see if getppid exists
13935 set getppid d_getppid
13936 eval $inlibc
13937
13938 : see if getpriority exists
13939 set getpriority d_getprior
13940 eval $inlibc
13941
13942 : see if getprotobyname_r exists
13943 set getprotobyname_r d_getprotobyname_r
13944 eval $inlibc
13945 case "$d_getprotobyname_r" in
13946 "$define")
13947         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13948         case "$d_getprotobyname_r_proto:$usethreads" in
13949         ":define")      d_getprotobyname_r_proto=define
13950                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13951                 eval $hasproto ;;
13952         *)      ;;
13953         esac
13954         case "$d_getprotobyname_r_proto" in
13955         define)
13956         case "$getprotobyname_r_proto" in
13957         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13958         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13959         esac
13960         case "$getprotobyname_r_proto" in
13961         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13962         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13963         esac
13964         case "$getprotobyname_r_proto" in
13965         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13966         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13967         esac
13968         case "$getprotobyname_r_proto" in
13969         ''|0)   d_getprotobyname_r=undef
13970                 getprotobyname_r_proto=0
13971                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13972         * )     case "$getprotobyname_r_proto" in
13973                 REENTRANT_PROTO*) ;;
13974                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13975                 esac
13976                 echo "Prototype: $try" ;;
13977         esac
13978         ;;
13979         *)      case "$usethreads" in
13980                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13981                 esac
13982                 d_getprotobyname_r=undef
13983                 getprotobyname_r_proto=0
13984                 ;;
13985         esac
13986         ;;
13987 *)      getprotobyname_r_proto=0
13988         ;;
13989 esac
13990
13991 : see if getprotobynumber_r exists
13992 set getprotobynumber_r d_getprotobynumber_r
13993 eval $inlibc
13994 case "$d_getprotobynumber_r" in
13995 "$define")
13996         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13997         case "$d_getprotobynumber_r_proto:$usethreads" in
13998         ":define")      d_getprotobynumber_r_proto=define
13999                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
14000                 eval $hasproto ;;
14001         *)      ;;
14002         esac
14003         case "$d_getprotobynumber_r_proto" in
14004         define)
14005         case "$getprotobynumber_r_proto" in
14006         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
14007         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
14008         esac
14009         case "$getprotobynumber_r_proto" in
14010         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
14011         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
14012         esac
14013         case "$getprotobynumber_r_proto" in
14014         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
14015         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
14016         esac
14017         case "$getprotobynumber_r_proto" in
14018         ''|0)   d_getprotobynumber_r=undef
14019                 getprotobynumber_r_proto=0
14020                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
14021         * )     case "$getprotobynumber_r_proto" in
14022                 REENTRANT_PROTO*) ;;
14023                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
14024                 esac
14025                 echo "Prototype: $try" ;;
14026         esac
14027         ;;
14028         *)      case "$usethreads" in
14029                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
14030                 esac
14031                 d_getprotobynumber_r=undef
14032                 getprotobynumber_r_proto=0
14033                 ;;
14034         esac
14035         ;;
14036 *)      getprotobynumber_r_proto=0
14037         ;;
14038 esac
14039
14040 : see if getprotoent_r exists
14041 set getprotoent_r d_getprotoent_r
14042 eval $inlibc
14043 case "$d_getprotoent_r" in
14044 "$define")
14045         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14046         case "$d_getprotoent_r_proto:$usethreads" in
14047         ":define")      d_getprotoent_r_proto=define
14048                 set d_getprotoent_r_proto getprotoent_r $hdrs
14049                 eval $hasproto ;;
14050         *)      ;;
14051         esac
14052         case "$d_getprotoent_r_proto" in
14053         define)
14054         case "$getprotoent_r_proto" in
14055         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
14056         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
14057         esac
14058         case "$getprotoent_r_proto" in
14059         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
14060         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
14061         esac
14062         case "$getprotoent_r_proto" in
14063         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
14064         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
14065         esac
14066         case "$getprotoent_r_proto" in
14067         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
14068         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
14069         esac
14070         case "$getprotoent_r_proto" in
14071         ''|0)   d_getprotoent_r=undef
14072                 getprotoent_r_proto=0
14073                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
14074         * )     case "$getprotoent_r_proto" in
14075                 REENTRANT_PROTO*) ;;
14076                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
14077                 esac
14078                 echo "Prototype: $try" ;;
14079         esac
14080         ;;
14081         *)      case "$usethreads" in
14082                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
14083                 esac
14084                 d_getprotoent_r=undef
14085                 getprotoent_r_proto=0
14086                 ;;
14087         esac
14088         ;;
14089 *)      getprotoent_r_proto=0
14090         ;;
14091 esac
14092
14093 : see if prototypes for various getprotoxxx netdb.h functions are available
14094 echo " "
14095 set d_getprotoprotos getprotoent $i_netdb netdb.h
14096 eval $hasproto
14097
14098 : see if getprpwnam exists
14099 set getprpwnam d_getprpwnam
14100 eval $inlibc
14101
14102 : see if getpwent exists
14103 set getpwent d_getpwent
14104 eval $inlibc
14105
14106 : see if getpwent_r exists
14107 set getpwent_r d_getpwent_r
14108 eval $inlibc
14109 case "$d_getpwent_r" in
14110 "$define")
14111         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14112         case "$d_getpwent_r_proto:$usethreads" in
14113         ":define")      d_getpwent_r_proto=define
14114                 set d_getpwent_r_proto getpwent_r $hdrs
14115                 eval $hasproto ;;
14116         *)      ;;
14117         esac
14118         case "$d_getpwent_r_proto" in
14119         define)
14120         case "$getpwent_r_proto" in
14121         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
14122         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
14123         esac
14124         case "$getpwent_r_proto" in
14125         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
14126         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
14127         esac
14128         case "$getpwent_r_proto" in
14129         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
14130         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
14131         esac
14132         case "$getpwent_r_proto" in
14133         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
14134         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
14135         esac
14136         case "$getpwent_r_proto" in
14137         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
14138         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
14139         esac
14140         case "$getpwent_r_proto" in
14141         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
14142         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
14143         esac
14144         case "$getpwent_r_proto" in
14145         ''|0)   d_getpwent_r=undef
14146                 getpwent_r_proto=0
14147                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
14148         * )     case "$getpwent_r_proto" in
14149                 REENTRANT_PROTO*) ;;
14150                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
14151                 esac
14152                 echo "Prototype: $try" ;;
14153         esac
14154         ;;
14155         *)      case "$usethreads" in
14156                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
14157                 esac
14158                 d_getpwent_r=undef
14159                 getpwent_r_proto=0
14160                 ;;
14161         esac
14162         ;;
14163 *)      getpwent_r_proto=0
14164         ;;
14165 esac
14166
14167 : see if getpwnam_r exists
14168 set getpwnam_r d_getpwnam_r
14169 eval $inlibc
14170 case "$d_getpwnam_r" in
14171 "$define")
14172         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14173         case "$d_getpwnam_r_proto:$usethreads" in
14174         ":define")      d_getpwnam_r_proto=define
14175                 set d_getpwnam_r_proto getpwnam_r $hdrs
14176                 eval $hasproto ;;
14177         *)      ;;
14178         esac
14179         case "$d_getpwnam_r_proto" in
14180         define)
14181         case "$getpwnam_r_proto" in
14182         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14183         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14184         esac
14185         case "$getpwnam_r_proto" in
14186         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14187         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14188         esac
14189         case "$getpwnam_r_proto" in
14190         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14191         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14192         esac
14193         case "$getpwnam_r_proto" in
14194         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14195         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14196         esac
14197         case "$getpwnam_r_proto" in
14198         ''|0)   d_getpwnam_r=undef
14199                 getpwnam_r_proto=0
14200                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14201         * )     case "$getpwnam_r_proto" in
14202                 REENTRANT_PROTO*) ;;
14203                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14204                 esac
14205                 echo "Prototype: $try" ;;
14206         esac
14207         ;;
14208         *)      case "$usethreads" in
14209                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14210                 esac
14211                 d_getpwnam_r=undef
14212                 getpwnam_r_proto=0
14213                 ;;
14214         esac
14215         ;;
14216 *)      getpwnam_r_proto=0
14217         ;;
14218 esac
14219
14220 : see if getpwuid_r exists
14221 set getpwuid_r d_getpwuid_r
14222 eval $inlibc
14223 case "$d_getpwuid_r" in
14224 "$define")
14225         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14226         case "$d_getpwuid_r_proto:$usethreads" in
14227         ":define")      d_getpwuid_r_proto=define
14228                 set d_getpwuid_r_proto getpwuid_r $hdrs
14229                 eval $hasproto ;;
14230         *)      ;;
14231         esac
14232         case "$d_getpwuid_r_proto" in
14233         define)
14234         case "$getpwuid_r_proto" in
14235         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14236         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14237         esac
14238         case "$getpwuid_r_proto" in
14239         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14240         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14241         esac
14242         case "$getpwuid_r_proto" in
14243         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14244         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14245         esac
14246         case "$getpwuid_r_proto" in
14247         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14248         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14249         esac
14250         case "$getpwuid_r_proto" in
14251         ''|0)   d_getpwuid_r=undef
14252                 getpwuid_r_proto=0
14253                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14254         * )     case "$getpwuid_r_proto" in
14255                 REENTRANT_PROTO*) ;;
14256                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14257                 esac
14258                 echo "Prototype: $try" ;;
14259         esac
14260         ;;
14261         *)      case "$usethreads" in
14262                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14263                 esac
14264                 d_getpwuid_r=undef
14265                 getpwuid_r_proto=0
14266                 ;;
14267         esac
14268         ;;
14269 *)      getpwuid_r_proto=0
14270         ;;
14271 esac
14272
14273
14274 : see if getservbyname exists
14275 set getservbyname d_getsbyname
14276 eval $inlibc
14277
14278 : see if getservbyport exists
14279 set getservbyport d_getsbyport
14280 eval $inlibc
14281
14282 : see if getservent exists
14283 set getservent d_getsent
14284 eval $inlibc
14285
14286 : see if getservbyname_r exists
14287 set getservbyname_r d_getservbyname_r
14288 eval $inlibc
14289 case "$d_getservbyname_r" in
14290 "$define")
14291         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14292         case "$d_getservbyname_r_proto:$usethreads" in
14293         ":define")      d_getservbyname_r_proto=define
14294                 set d_getservbyname_r_proto getservbyname_r $hdrs
14295                 eval $hasproto ;;
14296         *)      ;;
14297         esac
14298         case "$d_getservbyname_r_proto" in
14299         define)
14300         case "$getservbyname_r_proto" in
14301         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14302         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14303         esac
14304         case "$getservbyname_r_proto" in
14305         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14306         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14307         esac
14308         case "$getservbyname_r_proto" in
14309         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14310         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14311         esac
14312         case "$getservbyname_r_proto" in
14313         ''|0)   d_getservbyname_r=undef
14314                 getservbyname_r_proto=0
14315                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14316         * )     case "$getservbyname_r_proto" in
14317                 REENTRANT_PROTO*) ;;
14318                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14319                 esac
14320                 echo "Prototype: $try" ;;
14321         esac
14322         ;;
14323         *)      case "$usethreads" in
14324                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14325                 esac
14326                 d_getservbyname_r=undef
14327                 getservbyname_r_proto=0
14328                 ;;
14329         esac
14330         ;;
14331 *)      getservbyname_r_proto=0
14332         ;;
14333 esac
14334
14335 : see if getservbyport_r exists
14336 set getservbyport_r d_getservbyport_r
14337 eval $inlibc
14338 case "$d_getservbyport_r" in
14339 "$define")
14340         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14341         case "$d_getservbyport_r_proto:$usethreads" in
14342         ":define")      d_getservbyport_r_proto=define
14343                 set d_getservbyport_r_proto getservbyport_r $hdrs
14344                 eval $hasproto ;;
14345         *)      ;;
14346         esac
14347         case "$d_getservbyport_r_proto" in
14348         define)
14349         case "$getservbyport_r_proto" in
14350         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14351         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14352         esac
14353         case "$getservbyport_r_proto" in
14354         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14355         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14356         esac
14357         case "$getservbyport_r_proto" in
14358         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14359         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14360         esac
14361         case "$getservbyport_r_proto" in
14362         ''|0)   d_getservbyport_r=undef
14363                 getservbyport_r_proto=0
14364                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14365         * )     case "$getservbyport_r_proto" in
14366                 REENTRANT_PROTO*) ;;
14367                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14368                 esac
14369                 echo "Prototype: $try" ;;
14370         esac
14371         ;;
14372         *)      case "$usethreads" in
14373                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14374                 esac
14375                 d_getservbyport_r=undef
14376                 getservbyport_r_proto=0
14377                 ;;
14378         esac
14379         ;;
14380 *)      getservbyport_r_proto=0
14381         ;;
14382 esac
14383
14384 : see if getservent_r exists
14385 set getservent_r d_getservent_r
14386 eval $inlibc
14387 case "$d_getservent_r" in
14388 "$define")
14389         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14390         case "$d_getservent_r_proto:$usethreads" in
14391         ":define")      d_getservent_r_proto=define
14392                 set d_getservent_r_proto getservent_r $hdrs
14393                 eval $hasproto ;;
14394         *)      ;;
14395         esac
14396         case "$d_getservent_r_proto" in
14397         define)
14398         case "$getservent_r_proto" in
14399         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14400         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14401         esac
14402         case "$getservent_r_proto" in
14403         ''|0) try='int getservent_r(struct servent*, char*, int);'
14404         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14405         esac
14406         case "$getservent_r_proto" in
14407         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14408         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14409         esac
14410         case "$getservent_r_proto" in
14411         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14412         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14413         esac
14414         case "$getservent_r_proto" in
14415         ''|0)   d_getservent_r=undef
14416                 getservent_r_proto=0
14417                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14418         * )     case "$getservent_r_proto" in
14419                 REENTRANT_PROTO*) ;;
14420                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14421                 esac
14422                 echo "Prototype: $try" ;;
14423         esac
14424         ;;
14425         *)      case "$usethreads" in
14426                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14427                 esac
14428                 d_getservent_r=undef
14429                 getservent_r_proto=0
14430                 ;;
14431         esac
14432         ;;
14433 *)      getservent_r_proto=0
14434         ;;
14435 esac
14436
14437 : see if prototypes for various getservxxx netdb.h functions are available
14438 echo " "
14439 set d_getservprotos getservent $i_netdb netdb.h
14440 eval $hasproto
14441
14442 : see if getspnam exists
14443 set getspnam d_getspnam
14444 eval $inlibc
14445
14446 : see if this is a shadow.h system
14447 set shadow.h i_shadow
14448 eval $inhdr
14449
14450 : see if getspnam_r exists
14451 set getspnam_r d_getspnam_r
14452 eval $inlibc
14453 case "$d_getspnam_r" in
14454 "$define")
14455         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14456         case "$d_getspnam_r_proto:$usethreads" in
14457         ":define")      d_getspnam_r_proto=define
14458                 set d_getspnam_r_proto getspnam_r $hdrs
14459                 eval $hasproto ;;
14460         *)      ;;
14461         esac
14462         case "$d_getspnam_r_proto" in
14463         define)
14464         case "$getspnam_r_proto" in
14465         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14466         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14467         esac
14468         case "$getspnam_r_proto" in
14469         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14470         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14471         esac
14472         case "$getspnam_r_proto" in
14473         ''|0)   d_getspnam_r=undef
14474                 getspnam_r_proto=0
14475                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14476         * )     case "$getspnam_r_proto" in
14477                 REENTRANT_PROTO*) ;;
14478                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14479                 esac
14480                 echo "Prototype: $try" ;;
14481         esac
14482         ;;
14483         *)      case "$usethreads" in
14484                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14485                 esac
14486                 d_getspnam_r=undef
14487                 getspnam_r_proto=0
14488                 ;;
14489         esac
14490         ;;
14491 *)      getspnam_r_proto=0
14492         ;;
14493 esac
14494
14495 : see if gettimeofday or ftime exists
14496 set gettimeofday d_gettimeod
14497 eval $inlibc
14498 case "$d_gettimeod" in
14499 "$undef")
14500         set ftime d_ftime 
14501         eval $inlibc
14502         ;;
14503 *)
14504         val="$undef"; set d_ftime; eval $setvar
14505         ;;
14506 esac
14507 case "$d_gettimeod$d_ftime" in
14508 "$undef$undef")
14509         echo " "
14510         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14511         ;;
14512 esac
14513
14514 : see if gmtime_r exists
14515 set gmtime_r d_gmtime_r
14516 eval $inlibc
14517 case "$d_gmtime_r" in
14518 "$define")
14519         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14520         case "$d_gmtime_r_proto:$usethreads" in
14521         ":define")      d_gmtime_r_proto=define
14522                 set d_gmtime_r_proto gmtime_r $hdrs
14523                 eval $hasproto ;;
14524         *)      ;;
14525         esac
14526         case "$d_gmtime_r_proto" in
14527         define)
14528         case "$gmtime_r_proto" in
14529         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14530         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14531         esac
14532         case "$gmtime_r_proto" in
14533         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14534         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14535         esac
14536         case "$gmtime_r_proto" in
14537         ''|0)   d_gmtime_r=undef
14538                 gmtime_r_proto=0
14539                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14540         * )     case "$gmtime_r_proto" in
14541                 REENTRANT_PROTO*) ;;
14542                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14543                 esac
14544                 echo "Prototype: $try" ;;
14545         esac
14546         ;;
14547         *)      case "$usethreads" in
14548                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14549                 esac
14550                 d_gmtime_r=undef
14551                 gmtime_r_proto=0
14552                 ;;
14553         esac
14554         ;;
14555 *)      gmtime_r_proto=0
14556         ;;
14557 esac
14558
14559 : see if hasmntopt exists
14560 set hasmntopt d_hasmntopt
14561 eval $inlibc
14562
14563 : see if this is a netinet/in.h or sys/in.h system
14564 set netinet/in.h i_niin sys/in.h i_sysin
14565 eval $inhdr
14566
14567 : see if arpa/inet.h has to be included
14568 set arpa/inet.h i_arpainet
14569 eval $inhdr
14570
14571 : see if htonl --and friends-- exists
14572 val=''
14573 set htonl val
14574 eval $inlibc
14575
14576 : Maybe they are macros.
14577 case "$val" in
14578 $undef)
14579         $cat >htonl.c <<EOM
14580 #include <stdio.h>
14581 #include <sys/types.h>
14582 #$i_niin I_NETINET_IN
14583 #$i_sysin I_SYS_IN
14584 #$i_arpainet I_ARPA_INET
14585 #ifdef I_NETINET_IN
14586 #include <netinet/in.h>
14587 #endif
14588 #ifdef I_SYS_IN
14589 #include <sys/in.h>
14590 #endif
14591 #ifdef I_ARPA_INET
14592 #include <arpa/inet.h>
14593 #endif
14594 #ifdef htonl
14595 printf("Defined as a macro.");
14596 #endif
14597 EOM
14598         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14599         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14600                 val="$define"
14601                 echo "But it seems to be defined as a macro." >&4
14602         fi
14603         $rm -f htonl.?
14604         ;;
14605 esac
14606 set d_htonl
14607 eval $setvar
14608
14609 : see if ilogbl exists
14610 set ilogbl d_ilogbl
14611 eval $inlibc
14612
14613 : index or strchr
14614 echo " "
14615 if set index val -f; eval $csym; $val; then
14616         if set strchr val -f d_strchr; eval $csym; $val; then
14617                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14618                         val="$define"
14619                         vali="$undef"
14620                         echo "strchr() found." >&4
14621                 else
14622                         val="$undef"
14623                         vali="$define"
14624                         echo "index() found." >&4
14625                 fi
14626         else
14627                 val="$undef"
14628                 vali="$define"
14629                 echo "index() found." >&4
14630         fi
14631 else
14632         if set strchr val -f d_strchr; eval $csym; $val; then
14633                 val="$define"
14634                 vali="$undef"
14635                 echo "strchr() found." >&4
14636         else
14637                 echo "No index() or strchr() found!" >&4
14638                 val="$undef"
14639                 vali="$undef"
14640         fi
14641 fi
14642 set d_strchr; eval $setvar
14643 val="$vali"
14644 set d_index; eval $setvar
14645
14646 : check whether inet_aton exists
14647 set inet_aton d_inetaton
14648 eval $inlibc
14649
14650 : Look for isascii
14651 echo " "
14652 $cat >isascii.c <<EOCP
14653 #include <stdio.h>
14654 #include <ctype.h>
14655 #$i_stdlib I_STDLIB
14656 #ifdef I_STDLIB
14657 #include <stdlib.h>
14658 #endif
14659 int main() {
14660         int c = 'A';
14661         if (isascii(c))
14662                 exit(0);
14663         else
14664                 exit(1);
14665 }
14666 EOCP
14667 set isascii
14668 if eval $compile; then
14669         echo "isascii() found." >&4
14670         val="$define"
14671 else
14672         echo "isascii() NOT found." >&4
14673         val="$undef"
14674 fi
14675 set d_isascii
14676 eval $setvar
14677 $rm -f isascii*
14678
14679 : see if isfinite exists
14680 set isfinite d_isfinite
14681 eval $inlibc
14682
14683 : see if isinf exists
14684 set isinf d_isinf
14685 eval $inlibc
14686
14687 : see if isnan exists
14688 set isnan d_isnan
14689 eval $inlibc
14690
14691 : see if isnanl exists
14692 set isnanl d_isnanl
14693 eval $inlibc
14694
14695 : see if killpg exists
14696 set killpg d_killpg
14697 eval $inlibc
14698
14699 : see if lchown exists
14700 echo " "
14701 $cat > try.c <<'EOCP'
14702 /* System header to define __stub macros and hopefully few prototypes,
14703     which can conflict with char lchown(); below.  */
14704 #include <assert.h>
14705 /* Override any gcc2 internal prototype to avoid an error.  */
14706 /* We use char because int might match the return type of a gcc2
14707    builtin and then its argument prototype would still apply.  */
14708 char lchown();
14709 int main() {
14710     /*  The GNU C library defines this for functions which it implements
14711         to always fail with ENOSYS.  Some functions are actually named
14712         something starting with __ and the normal name is an alias.  */
14713 #if defined (__stub_lchown) || defined (__stub___lchown)
14714 choke me
14715 #else
14716 lchown();
14717 #endif
14718 ; return 0; }
14719 EOCP
14720 set try
14721 if eval $compile; then
14722     $echo "lchown() found." >&4
14723     val="$define"
14724 else
14725     $echo "lchown() NOT found." >&4
14726     val="$undef"
14727 fi
14728 set d_lchown
14729 eval $setvar
14730
14731 : See if number of significant digits in a double precision number is known
14732 echo " "
14733 $cat >ldbl_dig.c <<EOM
14734 #$i_limits I_LIMITS
14735 #$i_float I_FLOAT
14736 #ifdef I_LIMITS
14737 #include <limits.h>
14738 #endif
14739 #ifdef I_FLOAT
14740 #include <float.h>
14741 #endif
14742 #ifdef LDBL_DIG
14743 printf("Contains LDBL_DIG");
14744 #endif
14745 EOM
14746 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14747 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14748         echo "LDBL_DIG found." >&4
14749         val="$define"
14750 else
14751         echo "LDBL_DIG NOT found." >&4
14752         val="$undef"
14753 fi
14754 $rm -f ldbl_dig.?
14755 set d_ldbl_dig
14756 eval $setvar
14757
14758 : see if this is a math.h system
14759 set math.h i_math
14760 eval $inhdr
14761
14762 : check to see if math.h defines _LIB_VERSION
14763 d_libm_lib_version="$undef"
14764 case $i_math in
14765     $define)
14766         echo " "
14767         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14768         $cat >try.c <<EOCP
14769 #include <unistd.h>
14770 #include <math.h>
14771 int main (int argc, char *argv[])
14772 {
14773     printf ("%d\n", _LIB_VERSION);
14774     return (0);
14775     } /* main */
14776 EOCP
14777         set try
14778         if eval $compile; then
14779             foo=`$run ./try`
14780             echo "Yes, it does ($foo)" >&4
14781             d_libm_lib_version="$define"
14782         else
14783             echo "No, it does not (probably harmless)" >&4
14784             fi
14785         $rm_try
14786         ;;
14787
14788     esac
14789
14790 : see if link exists
14791 set link d_link
14792 eval $inlibc
14793
14794 : see if localtime_r exists
14795 set localtime_r d_localtime_r
14796 eval $inlibc
14797 case "$d_localtime_r" in
14798 "$define")
14799         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14800         case "$d_localtime_r_proto:$usethreads" in
14801         ":define")      d_localtime_r_proto=define
14802                 set d_localtime_r_proto localtime_r $hdrs
14803                 eval $hasproto ;;
14804         *)      ;;
14805         esac
14806         case "$d_localtime_r_proto" in
14807         define)
14808         case "$localtime_r_proto" in
14809         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14810         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14811         esac
14812         case "$localtime_r_proto" in
14813         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14814         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14815         esac
14816         case "$localtime_r_proto" in
14817         ''|0)   d_localtime_r=undef
14818                 localtime_r_proto=0
14819                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14820         * )     case "$localtime_r_proto" in
14821                 REENTRANT_PROTO*) ;;
14822                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14823                 esac
14824                 echo "Prototype: $try" ;;
14825         esac
14826         ;;
14827         *)      case "$usethreads" in
14828                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14829                 esac
14830                 d_localtime_r=undef
14831                 localtime_r_proto=0
14832                 ;;
14833         esac
14834         ;;
14835 *)      localtime_r_proto=0
14836         ;;
14837 esac
14838
14839 : see if localtime_r calls tzset
14840 case "$localtime_r_proto" in
14841 REENTRANT_PROTO*)
14842         $cat >try.c <<EOCP
14843 /*  Does our libc's localtime_r call tzset ?
14844  *  return 0 if so, 1 otherwise.
14845  */
14846 #include <sys/types.h>
14847 #include <unistd.h>
14848 #include <time.h>
14849 #include <string.h>
14850 #include <malloc.h>
14851 int main()
14852 {
14853     time_t t = time(0L);
14854     char w_tz[]="TZ" "=GMT+5",
14855          e_tz[]="TZ" "=GMT-5",
14856         *tz_e = (char*)malloc(16),
14857         *tz_w = (char*)malloc(16);
14858     struct tm tm_e, tm_w;
14859     memset(&tm_e,'\0',sizeof(struct tm));
14860     memset(&tm_w,'\0',sizeof(struct tm));
14861     strcpy(tz_e,e_tz);
14862     strcpy(tz_w,w_tz);
14863
14864     putenv(tz_e);
14865     localtime_r(&t, &tm_e);
14866
14867     putenv(tz_w);
14868     localtime_r(&t, &tm_w);
14869
14870     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14871         return 1;
14872     return 0;
14873 }
14874 EOCP
14875         set try
14876         if eval $compile; then
14877             if $run ./try; then
14878                 d_localtime_r_needs_tzset=undef;
14879             else
14880                 d_localtime_r_needs_tzset=define;
14881             fi;
14882         else
14883             d_localtime_r_needs_tzset=undef;
14884         fi;
14885      ;;
14886   *)
14887      d_localtime_r_needs_tzset=undef;
14888      ;;
14889 esac
14890 $rm_try
14891
14892 : see if localeconv exists
14893 set localeconv d_locconv
14894 eval $inlibc
14895
14896 : see if lockf exists
14897 set lockf d_lockf
14898 eval $inlibc
14899
14900 : see if prototype for lseek is available
14901 echo " "
14902 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14903 eval $hasproto
14904
14905 : see if lstat exists
14906 set lstat d_lstat
14907 eval $inlibc
14908
14909 : see if madvise exists
14910 set madvise d_madvise
14911 eval $inlibc
14912
14913 : see if malloc_size exists
14914 set malloc_size d_malloc_size
14915 eval $inlibc
14916
14917 : see if malloc_size_good exists
14918 set malloc_good_size d_malloc_good_size
14919 eval $inlibc
14920
14921 : see if mblen exists
14922 set mblen d_mblen
14923 eval $inlibc
14924
14925 : see if mbstowcs exists
14926 set mbstowcs d_mbstowcs
14927 eval $inlibc
14928
14929 : see if mbtowc exists
14930 set mbtowc d_mbtowc
14931 eval $inlibc
14932
14933 : see if memchr exists
14934 set memchr d_memchr
14935 eval $inlibc
14936
14937 : see if memcmp exists
14938 set memcmp d_memcmp
14939 eval $inlibc
14940
14941 : see if memcpy exists
14942 set memcpy d_memcpy
14943 eval $inlibc
14944
14945 : see if memmove exists
14946 set memmove d_memmove
14947 eval $inlibc
14948
14949 : see if memset exists
14950 set memset d_memset
14951 eval $inlibc
14952
14953 : see if mkdir exists
14954 set mkdir d_mkdir
14955 eval $inlibc
14956
14957 : see if mkdtemp exists
14958 set mkdtemp d_mkdtemp
14959 eval $inlibc
14960
14961 : see if mkfifo exists
14962 set mkfifo d_mkfifo
14963 eval $inlibc
14964
14965 : see if mkstemp exists
14966 set mkstemp d_mkstemp
14967 eval $inlibc
14968
14969 : see if mkstemps exists
14970 set mkstemps d_mkstemps
14971 eval $inlibc
14972
14973 : see if mktime exists
14974 set mktime d_mktime
14975 eval $inlibc
14976
14977 : see if this is a sys/mman.h system
14978 set sys/mman.h i_sysmman
14979 eval $inhdr
14980
14981 : see if mmap exists
14982 set mmap d_mmap
14983 eval $inlibc
14984 : see what shmat returns
14985 : default to something harmless
14986 mmaptype='void *'
14987 case "$i_sysmman$d_mmap" in
14988 "$define$define")
14989         $cat >mmap.c <<'END'
14990 #include <sys/mman.h>
14991 void *mmap();
14992 END
14993         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14994                 mmaptype='void *'
14995         else
14996                 mmaptype='caddr_t'
14997         fi
14998         echo "and it returns ($mmaptype)." >&4
14999         ;;
15000 esac
15001
15002
15003
15004 : see if sqrtl exists
15005 set sqrtl d_sqrtl
15006 eval $inlibc
15007
15008 : see if scalbnl exists
15009 set scalbnl d_scalbnl
15010 eval $inlibc
15011
15012 : see if modfl exists
15013 set modfl d_modfl
15014 eval $inlibc
15015
15016 : see if prototype for modfl is available
15017 echo " "
15018 set d_modflproto modfl $i_math math.h
15019 eval $hasproto
15020
15021 d_modfl_pow32_bug="$undef"
15022
15023 case "$d_longdbl$d_modfl" in
15024 $define$define)
15025         $cat <<EOM
15026 Checking to see whether your modfl() is okay for large values...
15027 EOM
15028 $cat >try.c <<EOCP
15029 #include <math.h>
15030 #include <stdio.h>
15031 EOCP
15032 if $test "X$d_modflproto" != "X$define"; then
15033         $cat >>try.c <<EOCP
15034 /* Sigh. many current glibcs provide the function, but do not prototype it. */
15035 long double modfl (long double, long double *);
15036 EOCP
15037 fi
15038 $cat >>try.c <<EOCP
15039 int main() {
15040     long double nv = 4294967303.15;
15041     long double v, w;
15042     v = modfl(nv, &w);
15043 #ifdef __GLIBC__
15044     printf("glibc");
15045 #endif
15046     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
15047     return 0;
15048 }
15049 EOCP
15050         case "$osname:$gccversion" in
15051         aix:)   saveccflags="$ccflags"
15052                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
15053         esac
15054         set try
15055         if eval $compile; then
15056                 foo=`$run ./try`
15057                 case "$foo" in
15058                 *" 4294967303.150000 1.150000 4294967302.000000")
15059                         echo >&4 "Your modfl() is broken for large values."
15060                         d_modfl_pow32_bug="$define"
15061                         case "$foo" in
15062                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
15063                         ;;
15064                         esac
15065                         ;;
15066                 *" 4294967303.150000 0.150000 4294967303.000000")
15067                         echo >&4 "Your modfl() seems okay for large values."
15068                         ;;
15069                 *)      echo >&4 "I don't understand your modfl() at all."
15070                         d_modfl="$undef"
15071                         ;;
15072                 esac
15073                 $rm_try
15074         else
15075                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
15076                 d_modfl="$undef"
15077         fi
15078         case "$osname:$gccversion" in
15079         aix:)   ccflags="$saveccflags" ;; # restore
15080         esac
15081         ;;
15082 esac
15083
15084 if $test "$uselongdouble" = "$define"; then
15085     message=""
15086     if $test "$d_sqrtl" != "$define"; then
15087         message="$message sqrtl"
15088     fi
15089     if $test "$d_modfl" != "$define"; then
15090         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
15091             echo "You have both aintl and copysignl, so I can emulate modfl."
15092         else
15093             message="$message modfl"
15094         fi
15095     fi
15096     if $test "$d_frexpl" != "$define"; then
15097         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
15098             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
15099         else
15100             message="$message frexpl"
15101         fi
15102     fi
15103
15104     if $test "$message" != ""; then
15105         $cat <<EOM >&4
15106
15107 *** You requested the use of long doubles but you do not seem to have
15108 *** the following mathematical functions needed for long double support:
15109 ***    $message
15110 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
15111 *** Cannot continue, aborting.
15112
15113 EOM
15114
15115         exit 1
15116     fi
15117 fi
15118
15119 : see if mprotect exists
15120 set mprotect d_mprotect
15121 eval $inlibc
15122
15123 : see if msgctl exists
15124 set msgctl d_msgctl
15125 eval $inlibc
15126
15127 : see if msgget exists
15128 set msgget d_msgget
15129 eval $inlibc
15130
15131 : see if msgsnd exists
15132 set msgsnd d_msgsnd
15133 eval $inlibc
15134
15135 : see if msgrcv exists
15136 set msgrcv d_msgrcv
15137 eval $inlibc
15138
15139 : see how much of the 'msg*(2)' library is present.
15140 h_msg=true
15141 echo " "
15142 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
15143 *"$undef"*) h_msg=false;;
15144 esac
15145 case "$osname" in
15146 freebsd)
15147     case "`ipcs 2>&1`" in
15148     "SVID messages"*"not configured"*)
15149         echo "Your $osname does not have the msg*(2) configured." >&4
15150         h_msg=false
15151         val="$undef"
15152         set msgctl d_msgctl
15153         eval $setvar
15154         set msgget d_msgget
15155         eval $setvar
15156         set msgsnd d_msgsnd
15157         eval $setvar
15158         set msgrcv d_msgrcv
15159         eval $setvar
15160         ;;
15161     esac
15162     ;;
15163 esac
15164 : we could also check for sys/ipc.h ...
15165 if $h_msg && $test `./findhdr sys/msg.h`; then
15166         echo "You have the full msg*(2) library." >&4
15167         val="$define"
15168 else
15169         echo "You don't have the full msg*(2) library." >&4
15170         val="$undef"
15171 fi
15172 set d_msg
15173 eval $setvar
15174
15175
15176 echo " "
15177 echo "Checking to see if your system supports struct msghdr..." >&4
15178 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15179 eval $hasstruct
15180 case "$d_msghdr_s" in
15181 "$define")      echo "Yes, it does."   ;;
15182 *)              echo "No, it doesn't." ;;
15183 esac
15184
15185
15186 : see if msync exists
15187 set msync d_msync
15188 eval $inlibc
15189
15190 : see if munmap exists
15191 set munmap d_munmap
15192 eval $inlibc
15193
15194 : see if nice exists
15195 set nice d_nice
15196 eval $inlibc
15197
15198 : see if this is a langinfo.h system
15199 set langinfo.h i_langinfo
15200 eval $inhdr
15201
15202 : see if nl_langinfo exists
15203 set nl_langinfo d_nl_langinfo
15204 eval $inlibc
15205
15206 : check for volatile keyword
15207 echo " "
15208 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15209 $cat >try.c <<'EOCP'
15210 int main()
15211 {
15212         typedef struct _goo_struct goo_struct;
15213         goo_struct * volatile goo = ((goo_struct *)0);
15214         struct _goo_struct {
15215                 long long_int;
15216                 int reg_int;
15217                 char char_var;
15218         };
15219         typedef unsigned short foo_t;
15220         char *volatile foo;
15221         volatile int bar;
15222         volatile foo_t blech;
15223         foo = foo;
15224 }
15225 EOCP
15226 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15227         val="$define"
15228         echo "Yup, it does."
15229 else
15230         val="$undef"
15231         echo "Nope, it doesn't."
15232 fi
15233 set d_volatile
15234 eval $setvar
15235 $rm_try
15236
15237 : Check basic sizes
15238 echo " "
15239 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15240
15241 case "$use64bitint:$d_quad:$quadtype" in
15242 define:define:?*)
15243         ivtype="$quadtype"
15244         uvtype="$uquadtype"
15245         ivsize=8
15246         uvsize=8
15247         ;;
15248 *)      ivtype="long"
15249         uvtype="unsigned long"
15250         ivsize=$longsize
15251         uvsize=$longsize
15252         ;;
15253 esac
15254
15255 case "$uselongdouble:$d_longdbl" in
15256 define:define)
15257         nvtype="long double"
15258         nvsize=$longdblsize
15259         ;;
15260 *)      nvtype=double
15261         nvsize=$doublesize
15262         ;;
15263 esac
15264
15265 $echo "(IV will be "$ivtype", $ivsize bytes)"
15266 $echo "(UV will be "$uvtype", $uvsize bytes)"
15267 $echo "(NV will be "$nvtype", $nvsize bytes)"
15268
15269 $cat >try.c <<EOCP
15270 #$i_inttypes I_INTTYPES
15271 #ifdef I_INTTYPES
15272 #include <inttypes.h>
15273 #endif
15274 #include <stdio.h>
15275 int main() {
15276 #ifdef INT8
15277    int8_t i =  INT8_MAX;
15278   uint8_t u = UINT8_MAX;
15279   printf("int8_t\n");
15280 #endif
15281 #ifdef INT16
15282    int16_t i =  INT16_MAX;
15283   uint16_t i = UINT16_MAX;
15284   printf("int16_t\n");
15285 #endif
15286 #ifdef INT32
15287    int32_t i =  INT32_MAX;
15288   uint32_t u = UINT32_MAX;
15289   printf("int32_t\n");
15290 #endif
15291 }
15292 EOCP
15293
15294 i8type="signed char"
15295 u8type="unsigned char"
15296 i8size=1
15297 u8size=1
15298
15299 case "$i16type" in
15300 '')     case "$shortsize" in
15301         2)      i16type=short
15302                 u16type="unsigned short"
15303                 i16size=$shortsize
15304                 u16size=$shortsize
15305                 ;;
15306         esac
15307         ;;
15308 esac
15309 case "$i16type" in
15310 '')     set try -DINT16
15311         if eval $compile; then
15312                 case "`$run ./try`" in
15313                 int16_t)
15314                         i16type=int16_t
15315                         u16type=uint16_t
15316                         i16size=2
15317                         u16size=2
15318                         ;;
15319                 esac
15320         fi
15321         ;;
15322 esac
15323 case "$i16type" in
15324 '')     if $test $shortsize -ge 2; then
15325                 i16type=short
15326                 u16type="unsigned short"
15327                 i16size=$shortsize
15328                 u16size=$shortsize
15329         fi
15330         ;;
15331 esac
15332
15333 case "$i32type" in
15334 '')     case "$longsize" in
15335         4)      i32type=long
15336                 u32type="unsigned long"
15337                 i32size=$longsize
15338                 u32size=$longsize
15339                 ;;
15340         *)      case "$intsize" in
15341                 4)      i32type=int
15342                         u32type="unsigned int"
15343                         i32size=$intsize
15344                         u32size=$intsize
15345                         ;;
15346                 esac
15347                 ;;
15348         esac
15349         ;;
15350 esac
15351 case "$i32type" in
15352 '')     set try -DINT32
15353         if eval $compile; then
15354                 case "`$run ./try`" in
15355                 int32_t)
15356                         i32type=int32_t
15357                         u32type=uint32_t
15358                         i32size=4
15359                         u32size=4
15360                         ;;
15361                 esac
15362         fi
15363         ;;
15364 esac
15365 case "$i32type" in
15366 '')     if $test $intsize -ge 4; then
15367                 i32type=int
15368                 u32type="unsigned int"
15369                 i32size=$intsize
15370                 u32size=$intsize
15371         fi
15372         ;;
15373 esac
15374
15375 case "$i64type" in
15376 '')     case "$d_quad:$quadtype" in
15377         define:?*)
15378                 i64type="$quadtype"
15379                 u64type="$uquadtype"
15380                 i64size=8
15381                 u64size=8
15382                 ;;
15383         esac
15384         ;;
15385 esac
15386
15387 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15388 : volatile so that the compiler has to store it out to memory.
15389 if test X"$d_volatile" = X"$define"; then
15390         volatile=volatile
15391 fi
15392 $cat <<EOP >try.c
15393 #include <stdio.h>
15394 #$i_stdlib I_STDLIB
15395 #ifdef I_STDLIB
15396 #include <stdlib.h>
15397 #endif
15398 #include <sys/types.h>
15399 #include <signal.h>
15400 #ifdef SIGFPE
15401 $volatile int bletched = 0;
15402 $signal_t blech(int s) { bletched = 1; }
15403 #endif
15404 int main() {
15405     $uvtype u = 0;
15406     $nvtype d;
15407     int     n = 8 * $uvsize;
15408     int     i;
15409 #ifdef SIGFPE
15410     signal(SIGFPE, blech);
15411 #endif
15412
15413     for (i = 0; i < n; i++) {
15414       u = u << 1 | ($uvtype)1;
15415       d = ($nvtype)u;
15416       if (($uvtype)d != u)
15417         break;
15418       if (d <= 0)
15419         break;
15420       d = ($nvtype)(u - 1);
15421       if (($uvtype)d != (u - 1))
15422         break;
15423 #ifdef SIGFPE
15424       if (bletched)
15425         break;
15426 #endif
15427     }
15428     printf("%d\n", ((i == n) ? -n : i));
15429     exit(0);
15430 }
15431 EOP
15432 set try
15433
15434 d_nv_preserves_uv="$undef"
15435 if eval $compile; then
15436         nv_preserves_uv_bits="`$run ./try`"
15437 fi
15438 case "$nv_preserves_uv_bits" in
15439 \-[1-9]*)
15440         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15441         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15442         d_nv_preserves_uv="$define"
15443         ;;
15444 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15445         d_nv_preserves_uv="$undef" ;;
15446 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15447         nv_preserves_uv_bits="0" ;;
15448 esac
15449 $rm_try
15450
15451 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15452 : volatile so that the compiler has to store it out to memory.
15453 if test X"$d_volatile" = X"$define"; then
15454         volatile=volatile
15455 fi
15456 $cat <<EOP >try.c
15457 #include <stdio.h>
15458 #$i_stdlib I_STDLIB
15459 #ifdef I_STDLIB
15460 #include <stdlib.h>
15461 #endif
15462 #$i_string I_STRING
15463 #ifdef I_STRING
15464 #  include <string.h>
15465 #else
15466 #  include <strings.h>
15467 #endif
15468 #include <sys/types.h>
15469 #include <signal.h>
15470 #ifdef SIGFPE
15471 $volatile int bletched = 0;
15472 $signal_t blech(int s) { bletched = 1; }
15473 #endif
15474
15475 int checkit($nvtype d, char *where) {
15476     unsigned char *p = (char *)&d;
15477     unsigned char *end = p + sizeof(d);
15478     int fail = 0;
15479
15480     while (p < end)
15481         fail += *p++;
15482
15483     if (!fail)
15484         return 0;
15485
15486     p = (char *)&d;
15487     printf("No - %s: 0x", where);
15488     while (p < end)
15489         printf ("%02X", *p++);
15490     printf("\n");
15491     return 1;
15492 }
15493
15494 int main(int argc, char **argv) {
15495     $nvtype d = 0.0;
15496     int fail = 0;
15497     fail += checkit(d, "0.0");
15498
15499     /* The compiler shouldn't be assuming that bletched is 0  */
15500     d = bletched;
15501
15502     fail += checkit(d, "bleched");
15503
15504 #ifdef SIGFPE
15505     signal(SIGFPE, blech);
15506 #endif
15507
15508     /* Paranoia - the compiler should have no way of knowing that ANSI says
15509        that argv[argc] will always be NULL.  Actually, if it did assume this it
15510        would be buggy, as this is C and main() can be called from elsewhere in
15511        the program.  */
15512     d = argv[argc] ? 1 : 0;
15513
15514     if (d) {
15515         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15516     }
15517
15518     fail += checkit(d, "ternary");
15519
15520     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15521
15522     if (d != 0.0) {
15523         printf("No - memset doesn't give 0.0\n");
15524         /* This might just blow up:  */
15525         printf("(gives %g)\n", d);
15526         return 1;
15527     }
15528
15529 #ifdef SIGFPE
15530     if (bletched) {
15531         printf("No - something bleched\n");
15532         return 1;
15533     }
15534 #endif
15535     if (fail) {
15536       printf("No - %d fail(s)\n", fail);
15537       return 1;
15538     }
15539     printf("Yes\n");
15540     return 0;
15541 }
15542 EOP
15543 set try
15544
15545 d_nv_zero_is_allbits_zero="$undef"
15546 if eval $compile; then
15547     xxx="`$run ./try`"
15548     case "$?" in
15549         0)
15550             case "$xxx" in
15551                 Yes)  cat >&4 <<EOM
15552 0.0 is represented as all bits zero in memory
15553 EOM
15554                     d_nv_zero_is_allbits_zero="$define"
15555                     ;;
15556                 *)  cat >&4 <<EOM
15557 0.0 is not represented as all bits zero in memory
15558 EOM
15559                     d_nv_zero_is_allbits_zero="$undef"
15560                     ;;
15561             esac
15562             ;;
15563         *)  cat >&4 <<EOM
15564 0.0 is not represented as all bits zero in memory
15565 EOM
15566             d_nv_zero_is_allbits_zero="$undef"
15567             ;;
15568     esac
15569 fi
15570 $rm_try
15571
15572 : check for off64_t
15573 echo " "
15574 echo "Checking to see if you have off64_t..." >&4
15575 $cat >try.c <<EOCP
15576 #include <sys/types.h>
15577 #include <unistd.h>
15578 int main() { off64_t x = 7; }
15579 EOCP
15580 set try
15581 if eval $compile; then
15582         val="$define"
15583         echo "You have off64_t."
15584 else
15585         val="$undef"
15586         echo "You do not have off64_t."
15587         case "$lseeksize" in
15588         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15589         esac
15590 fi
15591 $rm_try
15592 set d_off64_t
15593 eval $setvar
15594
15595 : how to create joinable pthreads
15596 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15597         echo " "
15598         echo "Checking what constant to use for creating joinable pthreads..." >&4
15599         $cat >try.c <<'EOCP'
15600 #include <pthread.h>
15601 int main() {
15602     int detachstate = JOINABLE;
15603 }
15604 EOCP
15605         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15606         if eval $compile; then
15607                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15608                 val="$undef" # Yes, undef.
15609                 set d_old_pthread_create_joinable
15610                 eval $setvar
15611                 val=""
15612                 set old_pthread_create_joinable
15613                 eval $setvar
15614         else
15615                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15616                 if eval $compile; then
15617                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15618                         val="$define"
15619                         set d_old_pthread_create_joinable
15620                         eval $setvar
15621                         val=PTHREAD_CREATE_UNDETACHED
15622                         set old_pthread_create_joinable
15623                         eval $setvar
15624                 else
15625                         set try -DJOINABLE=__UNDETACHED
15626                         if eval $compile; then
15627                                 echo "You seem to use __UNDETACHED." >&4
15628                                 val="$define"
15629                                 set d_old_pthread_create_joinable
15630                                 eval $setvar
15631                                 val=__UNDETACHED
15632                                 set old_pthread_create_joinable
15633                                 eval $setvar
15634                         else
15635                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15636                                 val="$define"
15637                                 set d_old_pthread_create_joinable
15638                                 eval $setvar
15639                                 val=0
15640                                 set old_pthread_create_joinable
15641                                 eval $setvar
15642                         fi
15643                 fi
15644         fi
15645         $rm_try
15646 else
15647     d_old_pthread_create_joinable="$undef"
15648     old_pthread_create_joinable=""
15649 fi
15650
15651 : see if pause exists
15652 set pause d_pause
15653 eval $inlibc
15654
15655 : see if poll exists
15656 set poll d_poll
15657 eval $inlibc
15658
15659 : see if readlink exists
15660 set readlink d_readlink
15661 eval $inlibc
15662
15663 : Check if exe is symlink to abs path of executing program
15664 echo " "
15665 procselfexe=''
15666 val="$undef"
15667 case "$d_readlink" in
15668 "$define")
15669         if $issymlink /proc/self/exe ; then
15670                 $ls -l /proc/self/exe > reflect
15671                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15672                         echo "You have Linux-like /proc/self/exe."
15673                         procselfexe='"/proc/self/exe"'
15674                         val="$define"
15675                 fi
15676         fi
15677         if $issymlink /proc/curproc/file ; then
15678                 $ls -l /proc/curproc/file > reflect
15679                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15680                         echo "You have BSD-like /proc/curproc/file."
15681                         procselfexe='"/proc/curproc/file"'
15682                         val="$define"
15683                 fi
15684         fi
15685         ;;
15686 esac
15687 $rm -f reflect
15688 set d_procselfexe
15689 eval $setvar
15690
15691 : backward compatibility for d_hvfork
15692 if test X$d_hvfork != X; then
15693         d_vfork="$d_hvfork"
15694         d_hvfork=''
15695 fi
15696 : see if there is a vfork
15697 val=''
15698 set vfork val
15699 eval $inlibc
15700
15701 d_pseudofork=$undef
15702
15703 : Ok, but do we want to use it. vfork is reportedly unreliable in
15704 : perl on Solaris 2.x, and probably elsewhere.
15705 case "$val" in
15706 $define)
15707         echo " "
15708         case "$usevfork" in
15709         false) dflt='n';;
15710         *) dflt='y';;
15711         esac
15712         cat <<'EOM'
15713
15714 Perl can only use a vfork() that doesn't suffer from strict
15715 restrictions on calling functions or modifying global data in
15716 the child.  For example, glibc-2.1 contains such a vfork()
15717 that is unsuitable.  If your system provides a proper fork()
15718 call, chances are that you do NOT want perl to use vfork().
15719
15720 EOM
15721         rp="Do you still want to use vfork()?"
15722         . ./myread
15723         case "$ans" in
15724         y|Y) ;;
15725         *)
15726                 echo "Ok, we won't use vfork()."
15727                 val="$undef"
15728                 ;;
15729         esac
15730         ;;
15731 esac
15732 set d_vfork
15733 eval $setvar
15734 case "$d_vfork" in
15735 $define) usevfork='true';;
15736 *) usevfork='false';;
15737 esac
15738
15739 : see whether the pthread_atfork exists
15740 $cat >try.c <<EOP
15741 #include <pthread.h>
15742 #include <stdio.h>
15743 int main() {
15744 #ifdef  PTHREAD_ATFORK
15745         pthread_atfork(NULL,NULL,NULL);
15746 #endif
15747 }
15748 EOP
15749
15750 : see if pthread_atfork exists
15751 set try -DPTHREAD_ATFORK
15752 if eval $compile; then
15753     val="$define"
15754 else
15755     val="$undef"
15756 fi
15757 case "$usethreads" in
15758 $define)
15759         case "$val" in
15760         $define) echo 'pthread_atfork found.' >&4        ;;
15761         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15762         esac
15763 esac
15764 set d_pthread_atfork
15765 eval $setvar
15766
15767 : see if pthread_attr_setscope exists
15768 set pthread_attr_setscope d_pthread_attr_setscope
15769 eval $inlibc
15770
15771
15772 : see whether the various POSIXish _yields exist
15773 $cat >try.c <<EOP
15774 #include <pthread.h>
15775 #include <stdio.h>
15776 int main() {
15777 #ifdef SCHED_YIELD
15778         sched_yield();
15779 #else
15780 #ifdef PTHREAD_YIELD
15781         pthread_yield();
15782 #else
15783 #ifdef PTHREAD_YIELD_NULL
15784         pthread_yield(NULL);
15785 #endif
15786 #endif
15787 #endif
15788 }
15789 EOP
15790 : see if sched_yield exists
15791 set try -DSCHED_YIELD
15792 if eval $compile; then
15793     val="$define"
15794     sched_yield='sched_yield()'
15795 else
15796     val="$undef"
15797 fi
15798 case "$usethreads" in
15799 $define)
15800         case "$val" in
15801         $define) echo 'sched_yield() found.' >&4        ;;
15802         *)       echo 'sched_yield() NOT found.' >&4    ;;
15803         esac
15804 esac
15805 set d_sched_yield
15806 eval $setvar
15807
15808 : see if pthread_yield exists
15809 set try -DPTHREAD_YIELD
15810 if eval $compile; then
15811     val="$define"
15812     case "$sched_yield" in
15813     '') sched_yield='pthread_yield()' ;;
15814     esac
15815 else
15816     set try -DPTHREAD_YIELD_NULL
15817     if eval $compile; then
15818         val="$define"
15819         case "$sched_yield" in
15820         '') sched_yield='pthread_yield(NULL)' ;;
15821         esac
15822     else
15823         val="$undef"
15824     fi
15825 fi
15826 case "$usethreads" in
15827 $define)
15828         case "$val" in
15829         $define) echo 'pthread_yield() found.' >&4      ;;
15830         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15831         esac
15832         ;;
15833 esac
15834 set d_pthread_yield
15835 eval $setvar
15836 case "$sched_yield" in
15837 '') sched_yield=undef ;;
15838 esac
15839 $rm_try
15840
15841 : see if random_r exists
15842 set random_r d_random_r
15843 eval $inlibc
15844 case "$d_random_r" in
15845 "$define")
15846         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15847         case "$d_random_r_proto:$usethreads" in
15848         ":define")      d_random_r_proto=define
15849                 set d_random_r_proto random_r $hdrs
15850                 eval $hasproto ;;
15851         *)      ;;
15852         esac
15853         case "$d_random_r_proto" in
15854         define)
15855         case "$random_r_proto" in
15856         ''|0) try='int random_r(int*, struct random_data*);'
15857         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15858         esac
15859         case "$random_r_proto" in
15860         ''|0) try='int random_r(long*, struct random_data*);'
15861         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15862         esac
15863         case "$random_r_proto" in
15864         ''|0) try='int random_r(struct random_data*, int32_t*);'
15865         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15866         esac
15867         case "$random_r_proto" in
15868         ''|0)   d_random_r=undef
15869                 random_r_proto=0
15870                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15871         * )     case "$random_r_proto" in
15872                 REENTRANT_PROTO*) ;;
15873                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15874                 esac
15875                 echo "Prototype: $try" ;;
15876         esac
15877         ;;
15878         *)      case "$usethreads" in
15879                 define) echo "random_r has no prototype, not using it." >&4 ;;
15880                 esac
15881                 d_random_r=undef
15882                 random_r_proto=0
15883                 ;;
15884         esac
15885         ;;
15886 *)      random_r_proto=0
15887         ;;
15888 esac
15889
15890 : see if readdir and friends exist
15891 set readdir d_readdir
15892 eval $inlibc
15893 set seekdir d_seekdir
15894 eval $inlibc
15895 set telldir d_telldir
15896 eval $inlibc
15897 set rewinddir d_rewinddir
15898 eval $inlibc
15899
15900 : see if readdir64_r exists
15901 set readdir64_r d_readdir64_r
15902 eval $inlibc
15903 case "$d_readdir64_r" in
15904 "$define")
15905         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15906         case "$d_readdir64_r_proto:$usethreads" in
15907         ":define")      d_readdir64_r_proto=define
15908                 set d_readdir64_r_proto readdir64_r $hdrs
15909                 eval $hasproto ;;
15910         *)      ;;
15911         esac
15912         case "$d_readdir64_r_proto" in
15913         define)
15914         case "$readdir64_r_proto" in
15915         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15916         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15917         esac
15918         case "$readdir64_r_proto" in
15919         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15920         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15921         esac
15922         case "$readdir64_r_proto" in
15923         ''|0)   d_readdir64_r=undef
15924                 readdir64_r_proto=0
15925                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15926         * )     case "$readdir64_r_proto" in
15927                 REENTRANT_PROTO*) ;;
15928                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15929                 esac
15930                 echo "Prototype: $try" ;;
15931         esac
15932         ;;
15933         *)      case "$usethreads" in
15934                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15935                 esac
15936                 d_readdir64_r=undef
15937                 readdir64_r_proto=0
15938                 ;;
15939         esac
15940         ;;
15941 *)      readdir64_r_proto=0
15942         ;;
15943 esac
15944
15945 : see if readdir_r exists
15946 set readdir_r d_readdir_r
15947 eval $inlibc
15948 case "$d_readdir_r" in
15949 "$define")
15950         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15951         case "$d_readdir_r_proto:$usethreads" in
15952         ":define")      d_readdir_r_proto=define
15953                 set d_readdir_r_proto readdir_r $hdrs
15954                 eval $hasproto ;;
15955         *)      ;;
15956         esac
15957         case "$d_readdir_r_proto" in
15958         define)
15959         case "$readdir_r_proto" in
15960         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15961         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15962         esac
15963         case "$readdir_r_proto" in
15964         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15965         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15966         esac
15967         case "$readdir_r_proto" in
15968         ''|0)   d_readdir_r=undef
15969                 readdir_r_proto=0
15970                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15971         * )     case "$readdir_r_proto" in
15972                 REENTRANT_PROTO*) ;;
15973                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15974                 esac
15975                 echo "Prototype: $try" ;;
15976         esac
15977         ;;
15978         *)      case "$usethreads" in
15979                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15980                 esac
15981                 d_readdir_r=undef
15982                 readdir_r_proto=0
15983                 ;;
15984         esac
15985         ;;
15986 *)      readdir_r_proto=0
15987         ;;
15988 esac
15989
15990 : see if readv exists
15991 set readv d_readv
15992 eval $inlibc
15993
15994 : see if recvmsg exists
15995 set recvmsg d_recvmsg
15996 eval $inlibc
15997
15998 : see if rename exists
15999 set rename d_rename
16000 eval $inlibc
16001
16002 : see if rmdir exists
16003 set rmdir d_rmdir
16004 eval $inlibc
16005
16006 : see if memory.h is available.
16007 val=''
16008 set memory.h val
16009 eval $inhdr
16010
16011 : See if it conflicts with string.h
16012 case "$val" in
16013 $define)
16014         case "$strings" in
16015         '') ;;
16016         *)
16017                 $cppstdin $cppflags $cppminus < $strings > mem.h
16018                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
16019                         echo " "
16020                         echo "We won't be including <memory.h>."
16021                         val="$undef"
16022                 fi
16023                 $rm -f mem.h
16024                 ;;
16025         esac
16026 esac
16027 set i_memory
16028 eval $setvar
16029
16030 : can bcopy handle overlapping blocks?
16031 echo " "
16032 val="$undef"
16033 case "$d_memmove" in
16034 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
16035 *)      case "$d_bcopy" in
16036         "$define")
16037                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
16038                 $cat >try.c <<EOCP
16039 #$i_memory I_MEMORY
16040 #$i_stdlib I_STDLIB
16041 #$i_string I_STRING
16042 #$i_unistd I_UNISTD
16043 EOCP
16044         $cat >>try.c <<'EOCP'
16045 #include <stdio.h>
16046 #ifdef I_MEMORY
16047 #  include <memory.h>
16048 #endif
16049 #ifdef I_STDLIB
16050 #  include <stdlib.h>
16051 #endif
16052 #ifdef I_STRING
16053 #  include <string.h>
16054 #else
16055 #  include <strings.h>
16056 #endif
16057 #ifdef I_UNISTD
16058 #  include <unistd.h>  /* Needed for NetBSD */
16059 #endif
16060 int main()
16061 {
16062 char buf[128], abc[128];
16063 char *b;
16064 int len;
16065 int off;
16066 int align;
16067
16068 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16069    try to store the string in read-only memory. */
16070 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
16071
16072 for (align = 7; align >= 0; align--) {
16073         for (len = 36; len; len--) {
16074                 b = buf+align;
16075                 bcopy(abc, b, len);
16076                 for (off = 1; off <= len; off++) {
16077                         bcopy(b, b+off, len);
16078                         bcopy(b+off, b, len);
16079                         if (bcmp(b, abc, len))
16080                                 exit(1);
16081                 }
16082         }
16083 }
16084 exit(0);
16085 }
16086 EOCP
16087                 set try
16088                 if eval $compile_ok; then
16089                         if $run ./try 2>/dev/null; then
16090                                 echo "Yes, it can."
16091                                 val="$define"
16092                         else
16093                                 echo "It can't, sorry."
16094                         fi
16095                 else
16096                         echo "(I can't compile the test program, so we'll assume not...)"
16097                 fi
16098                 ;;
16099         esac
16100         $rm_try
16101         ;;
16102 esac
16103 set d_safebcpy
16104 eval $setvar
16105
16106 : can memcpy handle overlapping blocks?
16107 echo " "
16108 val="$undef"
16109 case "$d_memmove" in
16110 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16111 *)      case "$d_memcpy" in
16112         "$define")
16113                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16114                 $cat >try.c <<EOCP
16115 #$i_memory I_MEMORY
16116 #$i_stdlib I_STDLIB
16117 #$i_string I_STRING
16118 #$i_unistd I_UNISTD
16119 EOCP
16120         $cat >>try.c <<'EOCP'
16121 #include <stdio.h>
16122 #ifdef I_MEMORY
16123 #  include <memory.h>
16124 #endif
16125 #ifdef I_STDLIB
16126 #  include <stdlib.h>
16127 #endif
16128 #ifdef I_STRING
16129 #  include <string.h>
16130 #else
16131 #  include <strings.h>
16132 #endif
16133 #ifdef I_UNISTD
16134 #  include <unistd.h>  /* Needed for NetBSD */
16135 #endif
16136 int main()
16137 {
16138 char buf[128], abc[128];
16139 char *b;
16140 int len;
16141 int off;
16142 int align;
16143
16144 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16145    try to store the string in read-only memory. */
16146 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16147
16148 for (align = 7; align >= 0; align--) {
16149         for (len = 36; len; len--) {
16150                 b = buf+align;
16151                 memcpy(b, abc, len);
16152                 for (off = 1; off <= len; off++) {
16153                         memcpy(b+off, b, len);
16154                         memcpy(b, b+off, len);
16155                         if (memcmp(b, abc, len))
16156                                 exit(1);
16157                 }
16158         }
16159 }
16160 exit(0);
16161 }
16162 EOCP
16163                 set try
16164                 if eval $compile_ok; then
16165                         if $run ./try 2>/dev/null; then
16166                                 echo "Yes, it can."
16167                                 val="$define"
16168                         else
16169                                 echo "It can't, sorry."
16170                         fi
16171                 else
16172                         echo "(I can't compile the test program, so we'll assume not...)"
16173                 fi
16174                 ;;
16175         esac
16176         $rm_try
16177         ;;
16178 esac
16179 set d_safemcpy
16180 eval $setvar
16181
16182 : can memcmp be trusted to compare relative magnitude?
16183 val="$undef"
16184 case "$d_memcmp" in
16185 "$define")
16186         echo " "
16187         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16188         $cat >try.c <<EOCP
16189 #$i_memory I_MEMORY
16190 #$i_stdlib I_STDLIB
16191 #$i_string I_STRING
16192 #$i_unistd I_UNISTD
16193 EOCP
16194         $cat >>try.c <<'EOCP'
16195 #include <stdio.h>
16196 #ifdef I_MEMORY
16197 #  include <memory.h>
16198 #endif
16199 #ifdef I_STDLIB
16200 #  include <stdlib.h>
16201 #endif
16202 #ifdef I_STRING
16203 #  include <string.h>
16204 #else
16205 #  include <strings.h>
16206 #endif
16207 #ifdef I_UNISTD
16208 #  include <unistd.h>  /* Needed for NetBSD */
16209 #endif
16210 int main()
16211 {
16212 char a = -1;
16213 char b = 0;
16214 if ((a < b) && memcmp(&a, &b, 1) < 0)
16215         exit(1);
16216 exit(0);
16217 }
16218 EOCP
16219         set try
16220         if eval $compile_ok; then
16221                 if $run ./try 2>/dev/null; then
16222                         echo "Yes, it can."
16223                         val="$define"
16224                 else
16225                         echo "No, it can't (it uses signed chars)."
16226                 fi
16227         else
16228                 echo "(I can't compile the test program, so we'll assume not...)"
16229         fi
16230         ;;
16231 esac
16232 $rm_try
16233 set d_sanemcmp
16234 eval $setvar
16235
16236 : see if prototype for sbrk is available
16237 echo " "
16238 set d_sbrkproto sbrk $i_unistd unistd.h
16239 eval $hasproto
16240
16241 : see if select exists
16242 set select d_select
16243 eval $inlibc
16244
16245 : see if semctl exists
16246 set semctl d_semctl
16247 eval $inlibc
16248
16249 : see if semget exists
16250 set semget d_semget
16251 eval $inlibc
16252
16253 : see if semop exists
16254 set semop d_semop
16255 eval $inlibc
16256
16257 : see how much of the 'sem*(2)' library is present.
16258 h_sem=true
16259 echo " "
16260 case "$d_semctl$d_semget$d_semop" in
16261 *"$undef"*) h_sem=false;;
16262 esac
16263 case "$osname" in
16264 freebsd)
16265     case "`ipcs 2>&1`" in
16266     "SVID messages"*"not configured"*)
16267         echo "Your $osname does not have the sem*(2) configured." >&4
16268         h_sem=false
16269         val="$undef"
16270         set semctl d_semctl
16271         eval $setvar
16272         set semget d_semget
16273         eval $setvar
16274         set semop d_semop
16275         eval $setvar
16276         ;;
16277     esac
16278     ;;
16279 esac
16280 : we could also check for sys/ipc.h ...
16281 if $h_sem && $test `./findhdr sys/sem.h`; then
16282         echo "You have the full sem*(2) library." >&4
16283         val="$define"
16284 else
16285         echo "You don't have the full sem*(2) library." >&4
16286         val="$undef"
16287 fi
16288 set d_sem
16289 eval $setvar
16290
16291 : see whether sys/sem.h defines union semun
16292 echo " "
16293 $cat > try.c <<'END'
16294 #include <sys/types.h>
16295 #include <sys/ipc.h>
16296 #include <sys/sem.h>
16297 int main () { union semun semun; semun.buf = 0; }
16298 END
16299 set try
16300 if eval $compile; then
16301     echo "You have union semun in <sys/sem.h>." >&4
16302     val="$define"
16303 else
16304     echo "You do not have union semun in <sys/sem.h>." >&4
16305     val="$undef"
16306 fi
16307 $rm_try
16308 set d_union_semun
16309 eval $setvar
16310
16311 : see how to do semctl IPC_STAT
16312 case "$d_sem" in
16313 $define)
16314     echo " "
16315     $cat > tryh.h <<END
16316 #ifndef S_IRUSR
16317 #   ifdef S_IREAD
16318 #       define S_IRUSR S_IREAD
16319 #       define S_IWUSR S_IWRITE
16320 #       define S_IXUSR S_IEXEC
16321 #   else
16322 #       define S_IRUSR 0400
16323 #       define S_IWUSR 0200
16324 #       define S_IXUSR 0100
16325 #   endif
16326 #   define S_IRGRP (S_IRUSR>>3)
16327 #   define S_IWGRP (S_IWUSR>>3)
16328 #   define S_IXGRP (S_IXUSR>>3)
16329 #   define S_IROTH (S_IRUSR>>6)
16330 #   define S_IWOTH (S_IWUSR>>6)
16331 #   define S_IXOTH (S_IXUSR>>6)
16332 #endif
16333 #ifndef S_IRWXU
16334 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16335 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16336 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16337 #endif
16338 END
16339     : see whether semctl IPC_STAT can use union semun
16340     case "$d_semctl_semun" in
16341     '')
16342       val="$undef"
16343       $cat > try.c <<END
16344 #include <sys/types.h>
16345 #include <sys/ipc.h>
16346 #include <sys/sem.h>
16347 #include <sys/stat.h>
16348 #include <stdio.h>
16349 #include <errno.h>
16350 #include "tryh.h"
16351 #ifndef errno
16352 extern int errno;
16353 #endif
16354 #$d_union_semun HAS_UNION_SEMUN
16355 int main() {
16356     union semun
16357 #ifndef HAS_UNION_SEMUN
16358     {
16359         int val;
16360         struct semid_ds *buf;
16361         unsigned short *array;
16362     }
16363 #endif
16364     arg;
16365     int sem, st;
16366
16367 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16368     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16369     if (sem > -1) {
16370         struct semid_ds argbuf;
16371         arg.buf = &argbuf;
16372 #       ifdef IPC_STAT
16373         st = semctl(sem, 0, IPC_STAT, arg);
16374         if (st == 0)
16375             printf("semun\n");
16376         else
16377 #       endif /* IPC_STAT */
16378             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16379 #       ifdef IPC_RMID
16380         if (semctl(sem, 0, IPC_RMID, arg) != 0)
16381 #       endif /* IPC_RMID */
16382             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16383     } else
16384 #endif /* IPC_PRIVATE && ... */
16385         printf("semget failed: errno = %d\n", errno);
16386   return 0;
16387 }
16388 END
16389       set try
16390       if eval $compile; then
16391           xxx=`$run ./try`
16392           case "$xxx" in
16393           semun) val="$define" ;;
16394           esac
16395       fi
16396       $rm_try
16397       set d_semctl_semun
16398       eval $setvar
16399       ;;
16400     esac
16401     case "$d_semctl_semun" in
16402     $define)
16403         echo "You can use union semun for semctl IPC_STAT." >&4
16404         also='also'
16405         ;;
16406     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16407         also=''
16408         ;;
16409     esac
16410
16411     : see whether semctl IPC_STAT can use struct semid_ds pointer
16412     case "$d_semctl_semid_ds" in
16413     '')
16414       val="$undef"
16415       $cat > try.c <<'END'
16416 #include <sys/types.h>
16417 #include <sys/ipc.h>
16418 #include <sys/sem.h>
16419 #include <sys/stat.h>
16420 #include "tryh.h"
16421 #include <stdio.h>
16422 #include <errno.h>
16423 #ifndef errno
16424 extern int errno;
16425 #endif
16426 int main() {
16427     struct semid_ds arg;
16428     int sem, st;
16429
16430 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16431     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16432     if (sem > -1) {
16433 #       ifdef IPC_STAT
16434         st = semctl(sem, 0, IPC_STAT, &arg);
16435         if (st == 0)
16436             printf("semid_ds\n");
16437         else
16438 #       endif /* IPC_STAT */
16439             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16440 #       ifdef IPC_RMID
16441         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16442 #       endif /* IPC_RMID */
16443             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16444     } else
16445 #endif /* IPC_PRIVATE && ... */
16446         printf("semget failed: errno = %d\n", errno);
16447
16448     return 0;
16449 }
16450 END
16451       set try
16452       if eval $compile; then
16453           xxx=`$run ./try`
16454           case "$xxx" in
16455           semid_ds) val="$define" ;;
16456           esac
16457       fi
16458       $rm_try
16459       set d_semctl_semid_ds
16460       eval $setvar
16461       ;;
16462     esac
16463     case "$d_semctl_semid_ds" in
16464     $define)
16465         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16466         ;;
16467     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16468         ;;
16469     esac
16470     ;;
16471 *)  val="$undef"
16472
16473     # We do not have the full sem*(2) library, so assume we can not
16474     # use either.
16475
16476     set d_semctl_semun
16477     eval $setvar
16478
16479     set d_semctl_semid_ds
16480     eval $setvar
16481     ;;
16482 esac
16483 $rm_try tryh.h
16484
16485 : see if sendmsg exists
16486 set sendmsg d_sendmsg
16487 eval $inlibc
16488
16489 : see if setegid exists
16490 set setegid d_setegid
16491 eval $inlibc
16492
16493 : see if seteuid exists
16494 set seteuid d_seteuid
16495 eval $inlibc
16496
16497 : see if setgrent exists
16498 set setgrent d_setgrent
16499 eval $inlibc
16500
16501 : see if setgrent_r exists
16502 set setgrent_r d_setgrent_r
16503 eval $inlibc
16504 case "$d_setgrent_r" in
16505 "$define")
16506         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16507         case "$d_setgrent_r_proto:$usethreads" in
16508         ":define")      d_setgrent_r_proto=define
16509                 set d_setgrent_r_proto setgrent_r $hdrs
16510                 eval $hasproto ;;
16511         *)      ;;
16512         esac
16513         case "$d_setgrent_r_proto" in
16514         define)
16515         case "$setgrent_r_proto" in
16516         ''|0) try='int setgrent_r(FILE**);'
16517         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16518         esac
16519         case "$setgrent_r_proto" in
16520         ''|0) try='void setgrent_r(FILE**);'
16521         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16522         esac
16523         case "$setgrent_r_proto" in
16524         ''|0)   d_setgrent_r=undef
16525                 setgrent_r_proto=0
16526                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16527         * )     case "$setgrent_r_proto" in
16528                 REENTRANT_PROTO*) ;;
16529                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16530                 esac
16531                 echo "Prototype: $try" ;;
16532         esac
16533         ;;
16534         *)      case "$usethreads" in
16535                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16536                 esac
16537                 d_setgrent_r=undef
16538                 setgrent_r_proto=0
16539                 ;;
16540         esac
16541         ;;
16542 *)      setgrent_r_proto=0
16543         ;;
16544 esac
16545
16546 : see if sethostent exists
16547 set sethostent d_sethent
16548 eval $inlibc
16549
16550 : see if sethostent_r exists
16551 set sethostent_r d_sethostent_r
16552 eval $inlibc
16553 case "$d_sethostent_r" in
16554 "$define")
16555         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16556         case "$d_sethostent_r_proto:$usethreads" in
16557         ":define")      d_sethostent_r_proto=define
16558                 set d_sethostent_r_proto sethostent_r $hdrs
16559                 eval $hasproto ;;
16560         *)      ;;
16561         esac
16562         case "$d_sethostent_r_proto" in
16563         define)
16564         case "$sethostent_r_proto" in
16565         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16566         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16567         esac
16568         case "$sethostent_r_proto" in
16569         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16570         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16571         esac
16572         case "$sethostent_r_proto" in
16573         ''|0)   d_sethostent_r=undef
16574                 sethostent_r_proto=0
16575                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16576         * )     case "$sethostent_r_proto" in
16577                 REENTRANT_PROTO*) ;;
16578                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16579                 esac
16580                 echo "Prototype: $try" ;;
16581         esac
16582         ;;
16583         *)      case "$usethreads" in
16584                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16585                 esac
16586                 d_sethostent_r=undef
16587                 sethostent_r_proto=0
16588                 ;;
16589         esac
16590         ;;
16591 *)      sethostent_r_proto=0
16592         ;;
16593 esac
16594
16595 : see if setitimer exists
16596 set setitimer d_setitimer
16597 eval $inlibc
16598
16599 : see if setlinebuf exists
16600 set setlinebuf d_setlinebuf
16601 eval $inlibc
16602
16603 : see if setlocale exists
16604 set setlocale d_setlocale
16605 eval $inlibc
16606
16607 : see if locale.h is available
16608 set locale.h i_locale
16609 eval $inhdr
16610
16611 : see if setlocale_r exists
16612 set setlocale_r d_setlocale_r
16613 eval $inlibc
16614 case "$d_setlocale_r" in
16615 "$define")
16616         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16617         case "$d_setlocale_r_proto:$usethreads" in
16618         ":define")      d_setlocale_r_proto=define
16619                 set d_setlocale_r_proto setlocale_r $hdrs
16620                 eval $hasproto ;;
16621         *)      ;;
16622         esac
16623         case "$d_setlocale_r_proto" in
16624         define)
16625         case "$setlocale_r_proto" in
16626         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16627         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16628         esac
16629         case "$setlocale_r_proto" in
16630         ''|0)   d_setlocale_r=undef
16631                 setlocale_r_proto=0
16632                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16633         * )     case "$setlocale_r_proto" in
16634                 REENTRANT_PROTO*) ;;
16635                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16636                 esac
16637                 echo "Prototype: $try" ;;
16638         esac
16639         ;;
16640         *)      case "$usethreads" in
16641                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16642                 esac
16643                 d_setlocale_r=undef
16644                 setlocale_r_proto=0
16645                 ;;
16646         esac
16647         ;;
16648 *)      setlocale_r_proto=0
16649         ;;
16650 esac
16651
16652 : see if setnetent exists
16653 set setnetent d_setnent
16654 eval $inlibc
16655
16656 : see if setnetent_r exists
16657 set setnetent_r d_setnetent_r
16658 eval $inlibc
16659 case "$d_setnetent_r" in
16660 "$define")
16661         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16662         case "$d_setnetent_r_proto:$usethreads" in
16663         ":define")      d_setnetent_r_proto=define
16664                 set d_setnetent_r_proto setnetent_r $hdrs
16665                 eval $hasproto ;;
16666         *)      ;;
16667         esac
16668         case "$d_setnetent_r_proto" in
16669         define)
16670         case "$setnetent_r_proto" in
16671         ''|0) try='int setnetent_r(int, struct netent_data*);'
16672         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16673         esac
16674         case "$setnetent_r_proto" in
16675         ''|0) try='void setnetent_r(int, struct netent_data*);'
16676         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16677         esac
16678         case "$setnetent_r_proto" in
16679         ''|0)   d_setnetent_r=undef
16680                 setnetent_r_proto=0
16681                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16682         * )     case "$setnetent_r_proto" in
16683                 REENTRANT_PROTO*) ;;
16684                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16685                 esac
16686                 echo "Prototype: $try" ;;
16687         esac
16688         ;;
16689         *)      case "$usethreads" in
16690                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16691                 esac
16692                 d_setnetent_r=undef
16693                 setnetent_r_proto=0
16694                 ;;
16695         esac
16696         ;;
16697 *)      setnetent_r_proto=0
16698         ;;
16699 esac
16700
16701 : see if setprotoent exists
16702 set setprotoent d_setpent
16703 eval $inlibc
16704
16705 : see if setpgid exists
16706 set setpgid d_setpgid
16707 eval $inlibc
16708
16709 : see if setpgrp2 exists
16710 set setpgrp2 d_setpgrp2
16711 eval $inlibc
16712
16713 : see if setpriority exists
16714 set setpriority d_setprior
16715 eval $inlibc
16716
16717 : see if setproctitle exists
16718 set setproctitle d_setproctitle
16719 eval $inlibc
16720
16721 : see if setprotoent_r exists
16722 set setprotoent_r d_setprotoent_r
16723 eval $inlibc
16724 case "$d_setprotoent_r" in
16725 "$define")
16726         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16727         case "$d_setprotoent_r_proto:$usethreads" in
16728         ":define")      d_setprotoent_r_proto=define
16729                 set d_setprotoent_r_proto setprotoent_r $hdrs
16730                 eval $hasproto ;;
16731         *)      ;;
16732         esac
16733         case "$d_setprotoent_r_proto" in
16734         define)
16735         case "$setprotoent_r_proto" in
16736         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16737         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16738         esac
16739         case "$setprotoent_r_proto" in
16740         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16741         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16742         esac
16743         case "$setprotoent_r_proto" in
16744         ''|0)   d_setprotoent_r=undef
16745                 setprotoent_r_proto=0
16746                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16747         * )     case "$setprotoent_r_proto" in
16748                 REENTRANT_PROTO*) ;;
16749                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16750                 esac
16751                 echo "Prototype: $try" ;;
16752         esac
16753         ;;
16754         *)      case "$usethreads" in
16755                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16756                 esac
16757                 d_setprotoent_r=undef
16758                 setprotoent_r_proto=0
16759                 ;;
16760         esac
16761         ;;
16762 *)      setprotoent_r_proto=0
16763         ;;
16764 esac
16765
16766 : see if setpwent exists
16767 set setpwent d_setpwent
16768 eval $inlibc
16769
16770 : see if setpwent_r exists
16771 set setpwent_r d_setpwent_r
16772 eval $inlibc
16773 case "$d_setpwent_r" in
16774 "$define")
16775         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16776         case "$d_setpwent_r_proto:$usethreads" in
16777         ":define")      d_setpwent_r_proto=define
16778                 set d_setpwent_r_proto setpwent_r $hdrs
16779                 eval $hasproto ;;
16780         *)      ;;
16781         esac
16782         case "$d_setpwent_r_proto" in
16783         define)
16784         case "$setpwent_r_proto" in
16785         ''|0) try='int setpwent_r(FILE**);'
16786         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16787         esac
16788         case "$setpwent_r_proto" in
16789         ''|0) try='void setpwent_r(FILE**);'
16790         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16791         esac
16792         case "$setpwent_r_proto" in
16793         ''|0)   d_setpwent_r=undef
16794                 setpwent_r_proto=0
16795                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16796         * )     case "$setpwent_r_proto" in
16797                 REENTRANT_PROTO*) ;;
16798                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16799                 esac
16800                 echo "Prototype: $try" ;;
16801         esac
16802         ;;
16803         *)      case "$usethreads" in
16804                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16805                 esac
16806                 d_setpwent_r=undef
16807                 setpwent_r_proto=0
16808                 ;;
16809         esac
16810         ;;
16811 *)      setpwent_r_proto=0
16812         ;;
16813 esac
16814
16815 : see if setregid exists
16816 set setregid d_setregid
16817 eval $inlibc
16818 set setresgid d_setresgid
16819 eval $inlibc
16820
16821 : see if setreuid exists
16822 set setreuid d_setreuid
16823 eval $inlibc
16824 set setresuid d_setresuid
16825 eval $inlibc
16826
16827 : see if setrgid exists
16828 set setrgid d_setrgid
16829 eval $inlibc
16830
16831 : see if setruid exists
16832 set setruid d_setruid
16833 eval $inlibc
16834
16835 : see if setservent exists
16836 set setservent d_setsent
16837 eval $inlibc
16838
16839 : see if setservent_r exists
16840 set setservent_r d_setservent_r
16841 eval $inlibc
16842 case "$d_setservent_r" in
16843 "$define")
16844         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16845         case "$d_setservent_r_proto:$usethreads" in
16846         ":define")      d_setservent_r_proto=define
16847                 set d_setservent_r_proto setservent_r $hdrs
16848                 eval $hasproto ;;
16849         *)      ;;
16850         esac
16851         case "$d_setservent_r_proto" in
16852         define)
16853         case "$setservent_r_proto" in
16854         ''|0) try='int setservent_r(int, struct servent_data*);'
16855         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16856         esac
16857         case "$setservent_r_proto" in
16858         ''|0) try='void setservent_r(int, struct servent_data*);'
16859         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16860         esac
16861         case "$setservent_r_proto" in
16862         ''|0)   d_setservent_r=undef
16863                 setservent_r_proto=0
16864                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16865         * )     case "$setservent_r_proto" in
16866                 REENTRANT_PROTO*) ;;
16867                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16868                 esac
16869                 echo "Prototype: $try" ;;
16870         esac
16871         ;;
16872         *)      case "$usethreads" in
16873                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16874                 esac
16875                 d_setservent_r=undef
16876                 setservent_r_proto=0
16877                 ;;
16878         esac
16879         ;;
16880 *)      setservent_r_proto=0
16881         ;;
16882 esac
16883
16884 : see if setsid exists
16885 set setsid d_setsid
16886 eval $inlibc
16887
16888 : see if setvbuf exists
16889 set setvbuf d_setvbuf
16890 eval $inlibc
16891
16892 : see if sfio.h is available
16893 set sfio.h i_sfio
16894 eval $inhdr
16895
16896
16897 : see if sfio library is available
16898 case "$i_sfio" in
16899 $define)
16900         val=''
16901         set sfreserve val
16902         eval $inlibc
16903         ;;
16904 *)
16905         val="$undef"
16906         ;;
16907 esac
16908 : Ok, but do we want to use it.
16909 case "$val" in
16910 $define)
16911         case "$usesfio" in
16912         true|$define|[yY]*) dflt='y';;
16913         *) dflt='n';;
16914         esac
16915         echo "$package can use the sfio library, but it is experimental."
16916         case "$useperlio" in
16917         "$undef")
16918             echo "For sfio also the PerlIO abstraction layer is needed."
16919             echo "Earlier you said you wouldn't want that."
16920             ;;
16921         esac
16922         rp="You seem to have sfio available, do you want to try using it?"
16923         . ./myread
16924         case "$ans" in
16925         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
16926                 useperlio="$define"
16927                 val="$define"
16928                 ;;
16929         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
16930                 val="$undef"
16931                 ;;
16932         esac
16933         ;;
16934 *)      case "$usesfio" in
16935         true|$define|[yY]*)
16936                 echo "Sorry, cannot find sfio on this machine." >&4
16937                 echo "Ignoring your setting of usesfio=$usesfio." >&4
16938                 val="$undef"
16939                 ;;
16940         esac
16941         ;;
16942 esac
16943 set d_sfio
16944 eval $setvar
16945 case "$d_sfio" in
16946 $define) usesfio='true';;
16947 *) usesfio='false';;
16948 esac
16949 case "$d_sfio" in
16950 $define) ;;
16951 *)      : Remove sfio from list of libraries to use
16952         case "$libs" in
16953         *-lsfio*)
16954                 echo "Removing unneeded -lsfio from library list" >&4
16955                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16956                 shift
16957                 libs="$*"
16958                 echo "libs = $libs" >&4
16959                 ;;
16960         esac
16961 ;;
16962 esac
16963
16964
16965 : see if shmctl exists
16966 set shmctl d_shmctl
16967 eval $inlibc
16968
16969 : see if shmget exists
16970 set shmget d_shmget
16971 eval $inlibc
16972
16973 : see if shmat exists
16974 set shmat d_shmat
16975 eval $inlibc
16976 : see what shmat returns
16977 case "$d_shmat" in
16978 "$define")
16979         $cat >shmat.c <<'END'
16980 #include <sys/shm.h>
16981 void *shmat();
16982 END
16983         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16984                 shmattype='void *'
16985         else
16986                 shmattype='char *'
16987         fi
16988         echo "and it returns ($shmattype)." >&4
16989         : see if a prototype for shmat is available
16990         xxx=`./findhdr sys/shm.h`
16991         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16992         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16993                 val="$define"
16994         else
16995                 val="$undef"
16996         fi
16997         $rm -f shmat.[co]
16998         ;;
16999 *)
17000         val="$undef"
17001         ;;
17002 esac
17003 set d_shmatprototype
17004 eval $setvar
17005
17006 : see if shmdt exists
17007 set shmdt d_shmdt
17008 eval $inlibc
17009
17010 : see how much of the 'shm*(2)' library is present.
17011 h_shm=true
17012 echo " "
17013 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
17014 *"$undef"*) h_shm=false;;
17015 esac
17016 case "$osname" in
17017 freebsd)
17018     case "`ipcs 2>&1`" in
17019     "SVID shared memory"*"not configured"*)
17020         echo "Your $osname does not have the shm*(2) configured." >&4
17021         h_shm=false
17022         val="$undef"
17023         set shmctl d_shmctl
17024         evat $setvar
17025         set shmget d_shmget
17026         evat $setvar
17027         set shmat d_shmat
17028         evat $setvar
17029         set shmdt d_shmdt
17030         evat $setvar
17031         ;;
17032     esac
17033     ;;
17034 esac
17035 : we could also check for sys/ipc.h ...
17036 if $h_shm && $test `./findhdr sys/shm.h`; then
17037         echo "You have the full shm*(2) library." >&4
17038         val="$define"
17039 else
17040         echo "You don't have the full shm*(2) library." >&4
17041         val="$undef"
17042 fi
17043 set d_shm
17044 eval $setvar
17045
17046 : see if we have sigaction
17047 echo " "
17048 if set sigaction val -f d_sigaction; eval $csym; $val; then
17049         echo 'sigaction() found.' >&4
17050         $cat > try.c <<EOP
17051 #include <stdio.h>
17052 #include <sys/types.h>
17053 #include <signal.h>
17054 #$i_stdlib I_STDLIB
17055 #ifdef I_STDLIB
17056 #include <stdlib.h>
17057 #endif
17058 int main()
17059 {
17060     struct sigaction act, oact;
17061     act.sa_flags = 0;
17062     oact.sa_handler = 0;
17063     /* so that act and oact are used */
17064     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
17065 }
17066 EOP
17067         set try
17068         if eval $compile_ok; then
17069                 val="$define"
17070         else
17071                 echo "But you don't seem to have a useable struct sigaction." >&4
17072                 val="$undef"
17073         fi
17074 else
17075         echo 'sigaction NOT found.' >&4
17076         val="$undef"
17077 fi
17078 set d_sigaction; eval $setvar
17079 $rm_try
17080
17081 : see if this is a sunmath.h system
17082 set sunmath.h i_sunmath
17083 eval $inhdr
17084
17085 : see if signbit exists
17086 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
17087 $cat >try.c <<EOCP
17088 #$i_math I_MATH
17089 #$i_sunmath I_SUNMATH
17090 #ifdef I_MATH
17091 #  include <math.h>
17092 #endif
17093 #ifdef I_SUNMATH  /* Solaris special math library */
17094 #  include <sunmath.h>
17095 #endif
17096 #define NV $nvtype
17097 int main(int argc, char **argv)
17098 {
17099     NV x = 0.0;
17100     NV y = -0.0;
17101     if ((signbit(x) == 0) && (signbit(y) != 0))
17102         return 0;
17103     else
17104         return 1;
17105 }
17106 EOCP
17107 val="$undef"
17108 set try
17109 if eval $compile; then
17110     if $run ./try; then
17111         $echo "Yes." >&4
17112         val="$define"
17113     else
17114         $echo "Signbit seems to be available, but doesn't work as I expected."
17115         $echo "I won't use it." >&4
17116         val="$undef"
17117     fi
17118 else
17119     $echo "Nope." >&4
17120     dflt="$undef"
17121 fi
17122 set d_signbit
17123 eval $setvar
17124 $rm_try
17125
17126 : see if sigprocmask exists
17127 set sigprocmask d_sigprocmask
17128 eval $inlibc
17129
17130 : see if sigsetjmp exists
17131 echo " "
17132 case "$d_sigsetjmp" in
17133 '')
17134         $cat >try.c <<EOP
17135 #include <setjmp.h>
17136 #$i_stdlib I_STDLIB
17137 #ifdef I_STDLIB
17138 #include <stdlib.h>
17139 #endif
17140 sigjmp_buf env;
17141 int set = 1;
17142 int main()
17143 {
17144         if (sigsetjmp(env,1))
17145                 exit(set);
17146         set = 0;
17147         siglongjmp(env, 1);
17148         exit(1);
17149 }
17150 EOP
17151         set try
17152         if eval $compile; then
17153                 if $run ./try >/dev/null 2>&1; then
17154                         echo "POSIX sigsetjmp found." >&4
17155                         val="$define"
17156                 else
17157                         $cat >&4 <<EOM
17158 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17159 I'll ignore them.
17160 EOM
17161                         val="$undef"
17162                 fi
17163         else
17164                 echo "sigsetjmp not found." >&4
17165                 val="$undef"
17166         fi
17167         ;;
17168 *) val="$d_sigsetjmp"
17169         case "$d_sigsetjmp" in
17170         $define) echo "POSIX sigsetjmp found." >&4;;
17171         $undef) echo "sigsetjmp not found." >&4;;
17172         esac
17173         ;;
17174 esac
17175 set d_sigsetjmp
17176 eval $setvar
17177 $rm_try
17178
17179 : see if snprintf exists
17180 set snprintf d_snprintf
17181 eval $inlibc
17182
17183 : see if vsnprintf exists
17184 set vsnprintf d_vsnprintf
17185 eval $inlibc
17186
17187 case "$d_snprintf-$d_vsnprintf" in
17188 "$define-$define")
17189     $cat <<EOM
17190 Checking whether your snprintf() and vsnprintf() work okay...
17191 EOM
17192     $cat >try.c <<'EOCP'
17193 /* v?snprintf testing logic courtesy of Russ Allbery.
17194  * According to C99:
17195  * - if the buffer is too short it still must be \0-terminated
17196  * - if the buffer is too short the potentially required length
17197  *   must be returned and not -1
17198  * - if the buffer is NULL the potentially required length
17199  *   must be returned and not -1 or core dump
17200  */
17201 #include <stdio.h>
17202 #include <stdarg.h>
17203
17204 char buf[2];
17205
17206 int test (char *format, ...)
17207 {
17208     va_list args;
17209     int count;
17210
17211     va_start (args, format);
17212     count = vsnprintf (buf, sizeof buf, format, args);
17213     va_end (args);
17214     return count;
17215 }
17216
17217 int main ()
17218 {
17219     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17220              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17221 }
17222 EOCP
17223     set try
17224     if eval $compile; then
17225         `$run ./try`
17226         case "$?" in
17227         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17228         *) cat <<EOM >&4
17229 Your snprintf() and snprintf() don't seem to be working okay.
17230 EOM
17231            d_snprintf="$undef"
17232            d_vsnprintf="$undef"
17233            ;;
17234         esac
17235     else
17236         echo "(I can't seem to compile the test program--assuming they don't)"
17237         d_snprintf="$undef"
17238         d_vsnprintf="$undef"
17239     fi
17240     $rm_try
17241     ;;
17242 esac
17243
17244 : see if sockatmark exists
17245 set sockatmark d_sockatmark
17246 eval $inlibc
17247
17248 : see if prototype for sockatmark is available
17249 echo " "
17250 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17251 eval $hasproto
17252
17253 : see if socks5_init exists
17254 set socks5_init d_socks5_init
17255 eval $inlibc
17256
17257 : see if sprintf returns the length of the string in the buffer as per ANSI
17258 $echo "Checking whether sprintf returns the length of the string..." >&4
17259 $cat <<EOP >try.c
17260 #include <stdio.h>
17261 #$i_stdlib I_STDLIB
17262 #ifdef I_STDLIB
17263 #include <stdlib.h>
17264 #endif
17265 #$i_string I_STRING
17266 #ifdef I_STRING
17267 #  include <string.h>
17268 #else
17269 #  include <strings.h>
17270 #endif
17271 #$i_math I_MATH
17272 #ifdef I_MATH
17273 #include <math.h>
17274 #endif
17275
17276 char buffer[256];
17277
17278 int check (size_t expect, int test) {
17279   size_t got = strlen(buffer);
17280   if (expect == got)
17281     return 0;
17282
17283   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17284        test, buffer);
17285   exit (test);
17286 }
17287
17288 int main(int argc, char **argv) {
17289   int test = 0;
17290
17291   check(sprintf(buffer, ""), ++test);
17292   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17293   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17294
17295   return 0;
17296 }
17297 EOP
17298 set try
17299
17300 d_sprintf_returns_strlen="$undef"
17301 if eval $compile; then
17302     xxx="`$run ./try`"
17303     case "$?" in
17304         0) cat >&4 <<EOM
17305 sprintf returns the length of the string (as ANSI says it should)
17306 EOM
17307         d_sprintf_returns_strlen="$define"
17308         ;;
17309         *) cat >&4 <<EOM
17310 sprintf does not return the length of the string (how old is this system?)
17311 EOM
17312         d_sprintf_returns_strlen="$undef"
17313         ;;
17314     esac
17315 fi
17316 $rm_try
17317
17318 : see if srand48_r exists
17319 set srand48_r d_srand48_r
17320 eval $inlibc
17321 case "$d_srand48_r" in
17322 "$define")
17323         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17324         case "$d_srand48_r_proto:$usethreads" in
17325         ":define")      d_srand48_r_proto=define
17326                 set d_srand48_r_proto srand48_r $hdrs
17327                 eval $hasproto ;;
17328         *)      ;;
17329         esac
17330         case "$d_srand48_r_proto" in
17331         define)
17332         case "$srand48_r_proto" in
17333         ''|0) try='int srand48_r(long, struct drand48_data*);'
17334         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17335         esac
17336         case "$srand48_r_proto" in
17337         ''|0)   d_srand48_r=undef
17338                 srand48_r_proto=0
17339                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17340         * )     case "$srand48_r_proto" in
17341                 REENTRANT_PROTO*) ;;
17342                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17343                 esac
17344                 echo "Prototype: $try" ;;
17345         esac
17346         ;;
17347         *)      case "$usethreads" in
17348                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17349                 esac
17350                 d_srand48_r=undef
17351                 srand48_r_proto=0
17352                 ;;
17353         esac
17354         ;;
17355 *)      srand48_r_proto=0
17356         ;;
17357 esac
17358
17359 : see if srandom_r exists
17360 set srandom_r d_srandom_r
17361 eval $inlibc
17362 case "$d_srandom_r" in
17363 "$define")
17364         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17365         case "$d_srandom_r_proto:$usethreads" in
17366         ":define")      d_srandom_r_proto=define
17367                 set d_srandom_r_proto srandom_r $hdrs
17368                 eval $hasproto ;;
17369         *)      ;;
17370         esac
17371         case "$d_srandom_r_proto" in
17372         define)
17373         case "$srandom_r_proto" in
17374         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17375         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17376         esac
17377         case "$srandom_r_proto" in
17378         ''|0)   d_srandom_r=undef
17379                 srandom_r_proto=0
17380                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17381         * )     case "$srandom_r_proto" in
17382                 REENTRANT_PROTO*) ;;
17383                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17384                 esac
17385                 echo "Prototype: $try" ;;
17386         esac
17387         ;;
17388         *)      case "$usethreads" in
17389                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17390                 esac
17391                 d_srandom_r=undef
17392                 srandom_r_proto=0
17393                 ;;
17394         esac
17395         ;;
17396 *)      srandom_r_proto=0
17397         ;;
17398 esac
17399
17400 : see if prototype for setresgid is available
17401 echo " "
17402 set d_sresgproto setresgid $i_unistd unistd.h
17403 eval $hasproto
17404
17405 : see if prototype for setresuid is available
17406 echo " "
17407 set d_sresuproto setresuid $i_unistd unistd.h
17408 eval $hasproto
17409
17410 : see if sys/stat.h is available
17411 set sys/stat.h i_sysstat
17412 eval $inhdr
17413
17414
17415 : see if stat knows about block sizes
17416 echo " "
17417 echo "Checking to see if your struct stat has st_blocks field..." >&4
17418 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17419 eval $hasfield
17420
17421
17422 : see if this is a sys/vfs.h system
17423 set sys/vfs.h i_sysvfs
17424 eval $inhdr
17425
17426
17427 : see if this is a sys/statfs.h system
17428 set sys/statfs.h i_sysstatfs
17429 eval $inhdr
17430
17431
17432 echo " "
17433 echo "Checking to see if your system supports struct statfs..." >&4
17434 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
17435 eval $hasstruct
17436 case "$d_statfs_s" in
17437 "$define")      echo "Yes, it does."   ;;
17438 *)              echo "No, it doesn't." ;;
17439 esac
17440
17441
17442
17443 : see if struct statfs knows about f_flags
17444 case "$d_statfs_s" in
17445 define) 
17446         echo " "
17447         echo "Checking to see if your struct statfs has f_flags field..." >&4
17448         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
17449         eval $hasfield
17450         ;;
17451 *)      val="$undef"
17452         set d_statfs_f_flags
17453         eval $setvar
17454         ;;
17455 esac
17456 case "$d_statfs_f_flags" in
17457 "$define")      echo "Yes, it does."   ;;
17458 *)              echo "No, it doesn't." ;;
17459 esac
17460
17461 : Check stream access
17462 $cat >&4 <<EOM
17463 Checking how to access stdio streams by file descriptor number...
17464 EOM
17465 case "$stdio_stream_array" in
17466 '')     $cat >try.c <<EOCP
17467 #include <stdio.h>
17468 int main() {
17469   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17470     printf("yes\n");
17471 }
17472 EOCP
17473         for s in _iob __iob __sF
17474         do
17475                 set try -DSTDIO_STREAM_ARRAY=$s
17476                 if eval $compile; then
17477                         case "`$run ./try`" in
17478                         yes)    stdio_stream_array=$s; break ;;
17479                         esac
17480                 fi
17481         done
17482         $rm_try
17483 esac
17484 case "$stdio_stream_array" in
17485 '')     $cat >&4 <<EOM
17486 I can't figure out how to access stdio streams by file descriptor number.
17487 EOM
17488         d_stdio_stream_array="$undef"
17489         ;;
17490 *)      $cat >&4 <<EOM
17491 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17492 EOM
17493         d_stdio_stream_array="$define"
17494         ;;
17495 esac
17496
17497 : see if strcoll exists
17498 set strcoll d_strcoll
17499 eval $inlibc
17500
17501 : check for structure copying
17502 echo " "
17503 echo "Checking to see if your C compiler can copy structs..." >&4
17504 $cat >try.c <<'EOCP'
17505 int main()
17506 {
17507         struct blurfl {
17508                 int dyick;
17509         } foo, bar;
17510
17511         foo = bar;
17512 }
17513 EOCP
17514 if $cc -c try.c >/dev/null 2>&1 ; then
17515         val="$define"
17516         echo "Yup, it can."
17517 else
17518         val="$undef"
17519         echo "Nope, it can't."
17520 fi
17521 set d_strctcpy
17522 eval $setvar
17523 $rm_try
17524
17525 : see if strerror and/or sys_errlist[] exist
17526 echo " "
17527 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17528     if set strerror val -f d_strerror; eval $csym; $val; then
17529                 echo 'strerror() found.' >&4
17530                 d_strerror="$define"
17531                 d_strerrm='strerror(e)'
17532                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17533                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17534                         d_syserrlst="$define"
17535                 else
17536                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17537                         d_syserrlst="$undef"
17538                 fi
17539     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17540                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17541                 echo 'strerror() found in string header.' >&4
17542                 d_strerror="$define"
17543                 d_strerrm='strerror(e)'
17544                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17545                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17546                                 d_syserrlst="$define"
17547                 else
17548                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17549                         d_syserrlst="$undef"
17550                 fi
17551     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17552                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17553                 d_strerror="$undef"
17554                 d_syserrlst="$define"
17555                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17556     else
17557                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17558                 d_strerror="$undef"
17559                 d_syserrlst="$undef"
17560                 d_strerrm='"unknown"'
17561     fi
17562 fi
17563
17564 : see if strerror_r exists
17565 set strerror_r d_strerror_r
17566 eval $inlibc
17567 case "$d_strerror_r" in
17568 "$define")
17569         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17570         case "$d_strerror_r_proto:$usethreads" in
17571         ":define")      d_strerror_r_proto=define
17572                 set d_strerror_r_proto strerror_r $hdrs
17573                 eval $hasproto ;;
17574         *)      ;;
17575         esac
17576         case "$d_strerror_r_proto" in
17577         define)
17578         case "$strerror_r_proto" in
17579         ''|0) try='int strerror_r(int, char*, size_t);'
17580         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17581         esac
17582         case "$strerror_r_proto" in
17583         ''|0) try='int strerror_r(int, char*, int);'
17584         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17585         esac
17586         case "$strerror_r_proto" in
17587         ''|0) try='char* strerror_r(int, char*, size_t);'
17588         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17589         esac
17590         case "$strerror_r_proto" in
17591         ''|0)   d_strerror_r=undef
17592                 strerror_r_proto=0
17593                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17594         * )     case "$strerror_r_proto" in
17595                 REENTRANT_PROTO*) ;;
17596                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17597                 esac
17598                 echo "Prototype: $try" ;;
17599         esac
17600         ;;
17601         *)      case "$usethreads" in
17602                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17603                 esac
17604                 d_strerror_r=undef
17605                 strerror_r_proto=0
17606                 ;;
17607         esac
17608         ;;
17609 *)      strerror_r_proto=0
17610         ;;
17611 esac
17612
17613 : see if strftime exists
17614 set strftime d_strftime
17615 eval $inlibc
17616
17617 : see if strlcat exists
17618 set strlcat d_strlcat
17619 eval $inlibc
17620
17621 : see if strlcpy exists
17622 set strlcpy d_strlcpy
17623 eval $inlibc
17624
17625 : see if strtod exists
17626 set strtod d_strtod
17627 eval $inlibc
17628
17629 : see if strtol exists
17630 set strtol d_strtol
17631 eval $inlibc
17632
17633 : see if strtold exists
17634 set strtold d_strtold
17635 eval $inlibc
17636
17637 : see if strtoll exists
17638 set strtoll d_strtoll
17639 eval $inlibc
17640
17641 case "$d_longlong-$d_strtoll" in
17642 "$define-$define")
17643         $cat <<EOM
17644 Checking whether your strtoll() works okay...
17645 EOM
17646         $cat >try.c <<'EOCP'
17647 #include <errno.h>
17648 #ifdef __hpux
17649 #define strtoll __strtoll
17650 #endif
17651 #ifdef __EMX__
17652 #define strtoll _strtoll
17653 #endif
17654 #include <stdio.h>
17655 extern long long int strtoll(char *s, char **, int);
17656 static int bad = 0;
17657 int check(char *s, long long ell, int een) {
17658         long long gll;
17659         errno = 0;
17660         gll = strtoll(s, 0, 10);
17661         if (!((gll == ell) && (errno == een)))
17662                 bad++;
17663 }
17664 int main() {
17665         check(" 1",                                      1LL, 0);
17666         check(" 0",                                      0LL, 0);
17667         check("-1",                                     -1LL, 0);
17668         check("-9223372036854775808", -9223372036854775808LL, 0);
17669         check("-9223372036854775808", -9223372036854775808LL, 0);
17670         check(" 9223372036854775807",  9223372036854775807LL, 0);
17671         check("-9223372036854775808", -9223372036854775808LL, 0);
17672         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17673         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17674         if (!bad)
17675                 printf("ok\n");
17676 }
17677 EOCP
17678         set try
17679         if eval $compile; then
17680                 yyy=`$run ./try`
17681                 case "$yyy" in
17682                 ok) echo "Your strtoll() seems to be working okay." ;;
17683                 *) cat <<EOM >&4
17684 Your strtoll() doesn't seem to be working okay.
17685 EOM
17686                    d_strtoll="$undef"
17687                    ;;
17688                 esac
17689         else
17690                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17691                 d_strtoll="$undef"
17692         fi
17693         ;;
17694 esac
17695
17696 : see if strtoq exists
17697 set strtoq d_strtoq
17698 eval $inlibc
17699
17700 : see if strtoul exists
17701 set strtoul d_strtoul
17702 eval $inlibc
17703
17704 case "$d_strtoul" in
17705 "$define")
17706         $cat <<EOM
17707 Checking whether your strtoul() works okay...
17708 EOM
17709         $cat >try.c <<'EOCP'
17710 #include <errno.h>
17711 #include <stdio.h>
17712 extern unsigned long int strtoul(char *s, char **, int);
17713 static int bad = 0;
17714 void check(char *s, unsigned long eul, int een) {
17715         unsigned long gul;
17716         errno = 0;
17717         gul = strtoul(s, 0, 10);
17718         if (!((gul == eul) && (errno == een)))
17719                 bad++;
17720 }
17721 int main() {
17722         check(" 1", 1L, 0);
17723         check(" 0", 0L, 0);
17724 EOCP
17725         case "$longsize" in
17726         8)
17727             $cat >>try.c <<'EOCP'
17728         check("18446744073709551615", 18446744073709551615UL, 0);
17729         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17730 #if 0 /* strtoul() for /^-/ strings is undefined. */
17731         check("-1", 18446744073709551615UL, 0);
17732         check("-18446744073709551614", 2, 0);
17733         check("-18446744073709551615", 1, 0);
17734         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17735         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17736 #endif
17737 EOCP
17738                 ;;
17739         4)
17740                     $cat >>try.c <<'EOCP'
17741         check("4294967295", 4294967295UL, 0);
17742         check("4294967296", 4294967295UL, ERANGE);
17743 #if 0 /* strtoul() for /^-/ strings is undefined. */
17744         check("-1", 4294967295UL, 0);
17745         check("-4294967294", 2, 0);
17746         check("-4294967295", 1, 0);
17747         check("-4294967296", 4294967295UL, ERANGE);
17748         check("-4294967297", 4294967295UL, ERANGE);
17749 #endif
17750 EOCP
17751                 ;;
17752         *)
17753 : Should we write these tests to be more portable by sprintf-ing
17754 : ~0 and then manipulating that char string as input for strtol?
17755                 ;;
17756         esac
17757         $cat >>try.c <<'EOCP'
17758         if (!bad)
17759                 printf("ok\n");
17760         return 0;
17761 }
17762 EOCP
17763         set try
17764         if eval $compile; then
17765                 case "`$run ./try`" in
17766                 ok) echo "Your strtoul() seems to be working okay." ;;
17767                 *) cat <<EOM >&4
17768 Your strtoul() doesn't seem to be working okay.
17769 EOM
17770                    d_strtoul="$undef"
17771                    ;;
17772                 esac
17773         else
17774                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17775                 d_strtoul="$undef"
17776         fi
17777         ;;
17778 esac
17779
17780 : see if strtoull exists
17781 set strtoull d_strtoull
17782 eval $inlibc
17783
17784 case "$d_longlong-$d_strtoull" in
17785 "$define-$define")
17786         $cat <<EOM
17787 Checking whether your strtoull() works okay...
17788 EOM
17789         $cat >try.c <<'EOCP'
17790 #include <errno.h>
17791 #ifdef __hpux
17792 #define strtoull __strtoull
17793 #endif
17794 #include <stdio.h>
17795 extern unsigned long long int strtoull(char *s, char **, int);
17796 static int bad = 0;
17797 int check(char *s, long long eull, int een) {
17798         long long gull;
17799         errno = 0;
17800         gull = strtoull(s, 0, 10);
17801         if (!((gull == eull) && (errno == een)))
17802                 bad++;
17803 }
17804 int main() {
17805         check(" 1",                                        1LL, 0);
17806         check(" 0",                                        0LL, 0);
17807         check("18446744073709551615",  18446744073709551615ULL, 0);
17808         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17809 #if 0 /* strtoull() for /^-/ strings is undefined. */
17810         check("-1",                    18446744073709551615ULL, 0);
17811         check("-18446744073709551614",                     2LL, 0);
17812         check("-18446744073709551615",                     1LL, 0);
17813         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17814         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17815 #endif
17816         if (!bad)
17817                 printf("ok\n");
17818 }
17819 EOCP
17820         set try
17821         if eval $compile; then
17822                 case "`$run ./try`" in
17823                 ok) echo "Your strtoull() seems to be working okay." ;;
17824                 *) cat <<EOM >&4
17825 Your strtoull() doesn't seem to be working okay.
17826 EOM
17827                    d_strtoull="$undef"
17828                    ;;
17829                 esac
17830         else
17831                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17832                 d_strtoull="$undef"
17833         fi
17834         ;;
17835 esac
17836
17837 : see if strtouq exists
17838 set strtouq d_strtouq
17839 eval $inlibc
17840
17841 case "$d_strtouq" in
17842 "$define")
17843         $cat <<EOM
17844 Checking whether your strtouq() works okay...
17845 EOM
17846         $cat >try.c <<'EOCP'
17847 #include <errno.h>
17848 #include <stdio.h>
17849 extern unsigned long long int strtouq(char *s, char **, int);
17850 static int bad = 0;
17851 void check(char *s, unsigned long long eull, int een) {
17852         unsigned long long gull;
17853         errno = 0;
17854         gull = strtouq(s, 0, 10);
17855         if (!((gull == eull) && (errno == een)))
17856                 bad++;
17857 }
17858 int main() {
17859         check(" 1",                                        1LL, 0);
17860         check(" 0",                                        0LL, 0);
17861         check("18446744073709551615",  18446744073709551615ULL, 0);
17862         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17863 #if 0 /* strtouq() for /^-/ strings is undefined. */
17864         check("-1",                    18446744073709551615ULL, 0);
17865         check("-18446744073709551614",                     2LL, 0);
17866         check("-18446744073709551615",                     1LL, 0);
17867         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17868         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17869 #endif
17870         if (!bad)
17871                 printf("ok\n");
17872         return 0;
17873 }
17874 EOCP
17875         set try
17876         if eval $compile; then
17877                 case "`$run ./try`" in
17878                 ok) echo "Your strtouq() seems to be working okay." ;;
17879                 *) cat <<EOM >&4
17880 Your strtouq() doesn't seem to be working okay.
17881 EOM
17882                    d_strtouq="$undef"
17883                    ;;
17884                 esac
17885         else
17886                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17887                 d_strtouq="$undef"
17888         fi
17889         ;;
17890 esac
17891
17892 : see if strxfrm exists
17893 set strxfrm d_strxfrm
17894 eval $inlibc
17895
17896 : see if symlink exists
17897 set symlink d_symlink
17898 eval $inlibc
17899
17900 : see if syscall exists
17901 set syscall d_syscall
17902 eval $inlibc
17903
17904 : see if prototype for syscall is available
17905 echo " "
17906 set d_syscallproto syscall $i_unistd unistd.h
17907 eval $hasproto
17908
17909 : see if sysconf exists
17910 set sysconf d_sysconf
17911 eval $inlibc
17912
17913 : see if system exists
17914 set system d_system
17915 eval $inlibc
17916
17917 : see if tcgetpgrp exists
17918 set tcgetpgrp d_tcgetpgrp
17919 eval $inlibc
17920
17921 : see if tcsetpgrp exists
17922 set tcsetpgrp d_tcsetpgrp
17923 eval $inlibc
17924
17925 : see if prototype for telldir is available
17926 echo " "
17927 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17928 eval $hasproto
17929
17930 : see if time exists
17931 echo " "
17932 if test "X$d_time" = X -o X"$timetype" = X; then
17933     if set time val -f d_time; eval $csym; $val; then
17934                 echo 'time() found.' >&4
17935                 val="$define"
17936                 rp="What is the type returned by time() on this system?"
17937                 set time_t timetype long stdio.h sys/types.h
17938                 eval $typedef_ask
17939     else
17940                 echo 'time() not found, hope that will do.' >&4
17941                 val="$undef"
17942                 timetype='int';
17943     fi
17944     set d_time
17945     eval $setvar
17946 fi
17947
17948 : see if this is a sys/times.h system
17949 set sys/times.h i_systimes
17950 eval $inhdr
17951
17952 : see if times exists
17953 echo " "
17954 if set times val -f d_times; eval $csym; $val; then
17955         echo 'times() found.' >&4
17956         d_times="$define"
17957         inc=''
17958         case "$i_systimes" in
17959         "$define") inc='sys/times.h';;
17960         esac
17961         rp="What is the type returned by times() on this system?"
17962         set clock_t clocktype long stdio.h sys/types.h $inc
17963         eval $typedef_ask
17964 else
17965         echo 'times() NOT found, hope that will do.' >&4
17966         d_times="$undef"
17967         clocktype='int'
17968 fi
17969
17970 : see if tmpnam_r exists
17971 set tmpnam_r d_tmpnam_r
17972 eval $inlibc
17973 case "$d_tmpnam_r" in
17974 "$define")
17975         hdrs="$i_systypes sys/types.h define stdio.h "
17976         case "$d_tmpnam_r_proto:$usethreads" in
17977         ":define")      d_tmpnam_r_proto=define
17978                 set d_tmpnam_r_proto tmpnam_r $hdrs
17979                 eval $hasproto ;;
17980         *)      ;;
17981         esac
17982         case "$d_tmpnam_r_proto" in
17983         define)
17984         case "$tmpnam_r_proto" in
17985         ''|0) try='char* tmpnam_r(char*);'
17986         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17987         esac
17988         case "$tmpnam_r_proto" in
17989         ''|0)   d_tmpnam_r=undef
17990                 tmpnam_r_proto=0
17991                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17992         * )     case "$tmpnam_r_proto" in
17993                 REENTRANT_PROTO*) ;;
17994                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17995                 esac
17996                 echo "Prototype: $try" ;;
17997         esac
17998         ;;
17999         *)      case "$usethreads" in
18000                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
18001                 esac
18002                 d_tmpnam_r=undef
18003                 tmpnam_r_proto=0
18004                 ;;
18005         esac
18006         ;;
18007 *)      tmpnam_r_proto=0
18008         ;;
18009 esac
18010
18011 : see if truncate exists
18012 set truncate d_truncate
18013 eval $inlibc
18014
18015 : see if ttyname_r exists
18016 set ttyname_r d_ttyname_r
18017 eval $inlibc
18018 case "$d_ttyname_r" in
18019 "$define")
18020         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
18021         case "$d_ttyname_r_proto:$usethreads" in
18022         ":define")      d_ttyname_r_proto=define
18023                 set d_ttyname_r_proto ttyname_r $hdrs
18024                 eval $hasproto ;;
18025         *)      ;;
18026         esac
18027         case "$d_ttyname_r_proto" in
18028         define)
18029         case "$ttyname_r_proto" in
18030         ''|0) try='int ttyname_r(int, char*, size_t);'
18031         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
18032         esac
18033         case "$ttyname_r_proto" in
18034         ''|0) try='int ttyname_r(int, char*, int);'
18035         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
18036         esac
18037         case "$ttyname_r_proto" in
18038         ''|0) try='char* ttyname_r(int, char*, int);'
18039         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
18040         esac
18041         case "$ttyname_r_proto" in
18042         ''|0)   d_ttyname_r=undef
18043                 ttyname_r_proto=0
18044                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
18045         * )     case "$ttyname_r_proto" in
18046                 REENTRANT_PROTO*) ;;
18047                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
18048                 esac
18049                 echo "Prototype: $try" ;;
18050         esac
18051         ;;
18052         *)      case "$usethreads" in
18053                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
18054                 esac
18055                 d_ttyname_r=undef
18056                 ttyname_r_proto=0
18057                 ;;
18058         esac
18059         ;;
18060 *)      ttyname_r_proto=0
18061         ;;
18062 esac
18063
18064 : see if tzname[] exists
18065 echo " "
18066 if set tzname val -a d_tzname; eval $csym; $val; then
18067         val="$define"
18068         echo 'tzname[] found.' >&4
18069 else
18070         val="$undef"
18071         echo 'tzname[] NOT found.' >&4
18072 fi
18073 set d_tzname
18074 eval $setvar
18075
18076 : Check if is a multiplatform env
18077 case "$osname" in
18078 next|rhapsody|darwin) multiarch="$define" ;;
18079 esac
18080 case "$multiarch" in
18081 ''|[nN]*) multiarch="$undef" ;;
18082 esac
18083
18084 : check for ordering of bytes in a UV
18085 echo " "
18086 case "$usecrosscompile$multiarch" in
18087 *$define*)
18088         $cat <<EOM
18089 You seem to be either cross-compiling or doing a multiarchitecture build,
18090 skipping the byteorder check.
18091
18092 EOM
18093         byteorder='ffff'
18094         ;;
18095 *)
18096         case "$byteorder" in
18097         '')
18098                 $cat <<'EOM'
18099 In the following, larger digits indicate more significance.  A big-endian
18100 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
18101 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
18102 machines may have weird orders like 3412.  A Cray will report 87654321,
18103 an Alpha will report 12345678. If the test program works the default is
18104 probably right.
18105 I'm now running the test program...
18106 EOM
18107                 $cat >try.c <<EOCP
18108 #include <stdio.h>
18109 #$i_stdlib I_STDLIB
18110 #ifdef I_STDLIB
18111 #include <stdlib.h>
18112 #endif
18113 #include <sys/types.h>
18114 typedef $uvtype UV;
18115 int main()
18116 {
18117         int i;
18118         union {
18119                 UV l;
18120                 char c[$uvsize];
18121         } u;
18122
18123         if ($uvsize > 4)
18124                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18125         else
18126                 u.l = (UV)0x04030201;
18127         for (i = 0; i < $uvsize; i++)
18128                 printf("%c", u.c[i]+'0');
18129         printf("\n");
18130         exit(0);
18131 }
18132 EOCP
18133                 xxx_prompt=y
18134                 set try
18135                 if eval $compile && $run ./try > /dev/null; then
18136                         dflt=`$run ./try`
18137                         case "$dflt" in
18138                         [1-4][1-4][1-4][1-4]|12345678|87654321)
18139                                 echo "(The test program ran ok.)"
18140                                 echo "byteorder=$dflt"
18141                                 xxx_prompt=n
18142                         ;;
18143                         ????|????????) echo "(The test program ran ok.)" ;;
18144                         *) echo "(The test program didn't run right for some reason.)" ;;
18145                         esac
18146                 else
18147                         dflt='4321'
18148                         cat <<'EOM'
18149 (I can't seem to compile the test program.  Guessing big-endian...)
18150 EOM
18151                 fi
18152                 case "$xxx_prompt" in
18153                 y)
18154                         rp="What is the order of bytes in $uvtype?"
18155                         . ./myread
18156                         byteorder="$ans"
18157                         ;;
18158                 *)      byteorder=$dflt
18159                         ;;
18160                 esac
18161                 ;;
18162         esac
18163         $rm_try
18164         ;;
18165 esac
18166
18167 : Checking 32bit aligndness
18168 $cat <<EOM
18169
18170 Checking to see whether you can access character data unalignedly...
18171 EOM
18172 case "$d_u32align" in
18173 '')   $cat >try.c <<EOCP
18174 #include <stdio.h>
18175 #$i_stdlib I_STDLIB
18176 #ifdef I_STDLIB
18177 #include <stdlib.h>
18178 #endif
18179 #define U32 $u32type
18180 #define BYTEORDER 0x$byteorder
18181 #define U8 $u8type
18182 #include <signal.h>
18183 #ifdef SIGBUS
18184 $signal_t bletch(int s) { exit(4); }
18185 #endif
18186 int main() {
18187 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18188     U8 buf[8];
18189     U32 *up;
18190     int i;
18191
18192     if (sizeof(U32) != 4) {
18193         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18194         exit(1);
18195     }
18196
18197     fflush(stdout);
18198
18199 #ifdef SIGBUS
18200     signal(SIGBUS, bletch);
18201 #endif
18202
18203     buf[0] = 0;
18204     buf[1] = 0;
18205     buf[2] = 0;
18206     buf[3] = 1;
18207     buf[4] = 0;
18208     buf[5] = 0;
18209     buf[6] = 0;
18210     buf[7] = 1;
18211
18212     for (i = 0; i < 4; i++) {
18213         up = (U32*)(buf + i);
18214         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
18215                (*up == 1 << (8*(3-i)))  /* little-endian */
18216               )
18217            )
18218         {
18219             printf("read failed (%x)\n", *up);
18220             exit(2);
18221         }
18222     }
18223
18224     /* write test */
18225     for (i = 0; i < 4; i++) {
18226         up = (U32*)(buf + i);
18227         *up = 0xBeef;
18228         if (*up != 0xBeef) {
18229             printf("write failed (%x)\n", *up);
18230             exit(3);
18231         }
18232     }
18233
18234     exit(0);
18235 #else
18236     printf("1\n");
18237     exit(1);
18238 #endif
18239     return 0;
18240 }
18241 EOCP
18242 set try
18243 if eval $compile_ok; then
18244         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18245         $run ./try 2>&1 >/dev/null
18246         case "$?" in
18247         0)      cat >&4 <<EOM
18248 You can access character data pretty unalignedly.
18249 EOM
18250                 d_u32align="$undef"
18251                 ;;
18252         *)      cat >&4 <<EOM
18253 It seems that you must access character data in an aligned manner.
18254 EOM
18255                 d_u32align="$define"
18256                 ;;
18257         esac
18258 else
18259         rp='Can you access character data at unaligned addresses?'
18260         dflt='n'
18261         . ./myread
18262         case "$ans" in
18263         [yY]*)  d_u32align="$undef"  ;;
18264         *)      d_u32align="$define" ;;
18265         esac
18266 fi
18267 $rm_try
18268 ;;
18269 esac
18270
18271 : see if ualarm exists
18272 set ualarm d_ualarm
18273 eval $inlibc
18274
18275 : see if umask exists
18276 set umask d_umask
18277 eval $inlibc
18278
18279 : see if unordered exists
18280 set unordered d_unordered
18281 eval $inlibc
18282
18283 : see if unsetenv exists
18284 set unsetenv d_unsetenv
18285 eval $inlibc
18286
18287 : see if usleep exists
18288 set usleep d_usleep
18289 eval $inlibc
18290
18291 : see if prototype for usleep is available
18292 echo " "
18293 set d_usleepproto usleep $i_unistd unistd.h
18294 eval $hasproto
18295
18296 : see if ustat exists
18297 set ustat d_ustat
18298 eval $inlibc
18299
18300 : see if closedir exists
18301 set closedir d_closedir
18302 eval $inlibc
18303
18304 case "$d_closedir" in
18305 "$define")
18306         echo " "
18307         echo "Checking whether closedir() returns a status..." >&4
18308         cat > try.c <<EOM
18309 #$i_dirent I_DIRENT             /**/
18310 #$i_sysdir I_SYS_DIR            /**/
18311 #$i_sysndir I_SYS_NDIR          /**/
18312 #$i_systypes I_SYS_TYPES        /**/
18313
18314 #if defined(I_SYS_TYPES)
18315 #include <sys/types.h>
18316 #endif
18317 #if defined(I_DIRENT)
18318 #include <dirent.h>
18319 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18320 #include <sys/dir.h>
18321 #endif
18322 #else
18323 #ifdef I_SYS_NDIR
18324 #include <sys/ndir.h>
18325 #else
18326 #ifdef I_SYS_DIR
18327 #ifdef hp9000s500
18328 #include <ndir.h>       /* may be wrong in the future */
18329 #else
18330 #include <sys/dir.h>
18331 #endif
18332 #endif
18333 #endif
18334 #endif
18335 int main() { return closedir(opendir(".")); }
18336 EOM
18337         set try
18338         if eval $compile_ok; then
18339                 if $run ./try > /dev/null 2>&1 ; then
18340                         echo "Yes, it does."
18341                         val="$undef"
18342                 else
18343                         echo "No, it doesn't."
18344                         val="$define"
18345                 fi
18346         else
18347                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18348                 val="$define"
18349         fi
18350         ;;
18351 *)
18352         val="$undef";
18353         ;;
18354 esac
18355 set d_void_closedir
18356 eval $setvar
18357 $rm_try
18358
18359 : see if there is a wait4
18360 set wait4 d_wait4
18361 eval $inlibc
18362
18363 : see if waitpid exists
18364 set waitpid d_waitpid
18365 eval $inlibc
18366
18367 : see if wcstombs exists
18368 set wcstombs d_wcstombs
18369 eval $inlibc
18370
18371 : see if wctomb exists
18372 set wctomb d_wctomb
18373 eval $inlibc
18374
18375 : see if writev exists
18376 set writev d_writev
18377 eval $inlibc
18378
18379 : preserve RCS keywords in files with variable substitution, grrr
18380 Date='$Date'
18381 Id='$Id'
18382 Log='$Log'
18383 RCSfile='$RCSfile'
18384 Revision='$Revision'
18385
18386 : check for alignment requirements
18387 echo " "
18388 case "$usecrosscompile$multiarch" in
18389 *$define*)
18390         $cat <<EOM
18391 You seem to be either cross-compiling or doing a multiarchitecture build,
18392 skipping the memory alignment check.
18393
18394 EOM
18395         case "$alignbytes" in
18396         '') alignbytes=8 ;;
18397         esac
18398         ;;
18399 *)
18400         case "$alignbytes" in
18401         '') echo "Checking alignment constraints..." >&4
18402                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18403                         $cat >try.c <<'EOCP'
18404 typedef long double NV;
18405 EOCP
18406                 else
18407                         $cat >try.c <<'EOCP'
18408 typedef double NV;
18409 EOCP
18410                 fi
18411                 $cat >>try.c <<'EOCP'
18412 #include <stdio.h>
18413 struct foobar {
18414         char foo;
18415         NV bar;
18416 } try_algn;
18417 int main()
18418 {
18419     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18420     return(0);
18421 }
18422 EOCP
18423                 set try
18424                 if eval $compile_ok; then
18425                         dflt=`$run ./try`
18426                 else
18427                         dflt='8'
18428                         echo "(I can't seem to compile the test program...)"
18429                 fi
18430                 ;;
18431         *) dflt="$alignbytes"
18432                 ;;
18433         esac
18434         rp="Doubles must be aligned on a how-many-byte boundary?"
18435         . ./myread
18436         alignbytes="$ans"
18437         $rm_try
18438         ;;
18439 esac
18440
18441
18442 : set the base revision
18443 baserev=5.0
18444
18445 : how do we concatenate cpp tokens here?
18446 echo " "
18447 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18448 $cat >cpp_stuff.c <<'EOCP'
18449 #define RCAT(a,b)a/**/b
18450 #define ACAT(a,b)a ## b
18451 RCAT(Rei,ser)
18452 ACAT(Cir,cus)
18453 EOCP
18454 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18455 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18456         echo "Oh!  Smells like ANSI's been here." >&4
18457         echo "We can catify or stringify, separately or together!"
18458         cpp_stuff=42
18459 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18460         echo "Ah, yes!  The good old days!" >&4
18461         echo "However, in the good old days we don't know how to stringify and"
18462         echo "catify at the same time."
18463         cpp_stuff=1
18464 else
18465         $cat >&4 <<EOM
18466 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18467 You're going to have to edit the values of CAT[2-5] in config.h...
18468 EOM
18469         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18470 fi
18471 $rm -f cpp_stuff.*
18472
18473 : see if this is a db.h system
18474 set db.h i_db
18475 eval $inhdr
18476
18477 case "$i_db" in
18478 $define)
18479         : Check db version.
18480         echo " "
18481         echo "Checking Berkeley DB version ..." >&4
18482         $cat >try.c <<EOCP
18483 #$d_const HASCONST
18484 #ifndef HASCONST
18485 #define const
18486 #endif
18487 #include <sys/types.h>
18488 #include <stdio.h>
18489 #$i_stdlib I_STDLIB
18490 #ifdef I_STDLIB
18491 #include <stdlib.h>
18492 #endif
18493 #include <db.h>
18494 int main(int argc, char *argv[])
18495 {
18496 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18497     int Major, Minor, Patch ;
18498     unsigned long Version ;
18499     (void)db_version(&Major, &Minor, &Patch) ;
18500     if (argc == 2) {
18501         printf("%d %d %d %d %d %d\n",
18502                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18503                Major, Minor, Patch);
18504         exit(0);
18505     }
18506     printf("You have Berkeley DB Version 2 or greater.\n");
18507
18508     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18509                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18510     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18511                 Major, Minor, Patch) ;
18512
18513     /* check that db.h & libdb are compatible */
18514     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18515         printf("db.h and libdb are incompatible.\n") ;
18516         exit(3);
18517     }
18518
18519     printf("db.h and libdb are compatible.\n") ;
18520
18521     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18522                 + DB_VERSION_PATCH ;
18523
18524     /* needs to be >= 2.3.4 */
18525     if (Version < 2003004) {
18526     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18527         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18528         exit(2);
18529     }
18530
18531     exit(0);
18532 #else
18533 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18534     if (argc == 2) {
18535         printf("1 0 0\n");
18536         exit(0);
18537     }
18538     printf("You have Berkeley DB Version 1.\n");
18539     exit(0);    /* DB version < 2: the coast is clear. */
18540 #else
18541     exit(1);    /* <db.h> not Berkeley DB? */
18542 #endif
18543 #endif
18544 }
18545 EOCP
18546         set try
18547         if eval $compile_ok && $run ./try; then
18548                 echo 'Looks OK.' >&4
18549                 set `$run ./try 1`
18550                 db_version_major=$1
18551                 db_version_minor=$2
18552                 db_version_patch=$3
18553         else
18554                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18555                 i_db=$undef
18556                 case " $libs " in
18557                 *"-ldb "*)
18558                         : Remove db from list of libraries to use
18559                         echo "Removing unusable -ldb from library list" >&4
18560                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18561                         shift
18562                         libs="$*"
18563                         echo "libs = $libs" >&4
18564                         ;;
18565                 esac
18566         fi
18567         $rm_try
18568         ;;
18569 esac
18570
18571 case "$i_db" in
18572 define)
18573         : Check the return type needed for hash
18574         echo " "
18575         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18576         $cat >try.c <<EOCP
18577 #$d_const HASCONST
18578 #ifndef HASCONST
18579 #define const
18580 #endif
18581 #include <sys/types.h>
18582 #include <db.h>
18583
18584 #ifndef DB_VERSION_MAJOR
18585 u_int32_t hash_cb (ptr, size)
18586 const void *ptr;
18587 size_t size;
18588 {
18589 }
18590 HASHINFO info;
18591 int main()
18592 {
18593         info.hash = hash_cb;
18594 }
18595 #endif
18596 EOCP
18597         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18598                 if $contains warning try.out >>/dev/null 2>&1 ; then
18599                         db_hashtype='int'
18600                 else
18601                         db_hashtype='u_int32_t'
18602                 fi
18603         else
18604                 : XXX Maybe we should just give up here.
18605                 db_hashtype=u_int32_t
18606                 $cat try.out >&4
18607                 echo "Help:  I can't seem to compile the db test program." >&4
18608                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18609         fi
18610         $rm_try
18611         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18612         ;;
18613 *)      db_hashtype=u_int32_t
18614         ;;
18615 esac
18616 case "$i_db" in
18617 define)
18618         : Check the return type needed for prefix
18619         echo " "
18620         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18621         cat >try.c <<EOCP
18622 #$d_const HASCONST
18623 #ifndef HASCONST
18624 #define const
18625 #endif
18626 #include <sys/types.h>
18627 #include <db.h>
18628
18629 #ifndef DB_VERSION_MAJOR
18630 size_t prefix_cb (key1, key2)
18631 const DBT *key1;
18632 const DBT *key2;
18633 {
18634 }
18635 BTREEINFO info;
18636 int main()
18637 {
18638         info.prefix = prefix_cb;
18639 }
18640 #endif
18641 EOCP
18642         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18643                 if $contains warning try.out >>/dev/null 2>&1 ; then
18644                         db_prefixtype='int'
18645                 else
18646                         db_prefixtype='size_t'
18647                 fi
18648         else
18649                 db_prefixtype='size_t'
18650                 : XXX Maybe we should just give up here.
18651                 $cat try.out >&4
18652                 echo "Help:  I can't seem to compile the db test program." >&4
18653                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18654         fi
18655         $rm_try
18656         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18657         ;;
18658 *)      db_prefixtype='size_t'
18659         ;;
18660 esac
18661
18662 : How can we generate normalized random numbers ?
18663 echo " "
18664 echo "Looking for a random number function..." >&4
18665 case "$randfunc" in
18666 '')
18667         if set drand48 val -f; eval $csym; $val; then
18668                 dflt="drand48"
18669                 echo "Good, found drand48()." >&4
18670         elif set random val -f; eval $csym; $val; then
18671                 dflt="random"
18672                 echo "OK, found random()." >&4
18673         else
18674                 dflt="rand"
18675                 echo "Yick, looks like I have to use rand()." >&4
18676         fi
18677         echo " "
18678         ;;
18679 *)
18680         dflt="$randfunc"
18681         ;;
18682 esac
18683 cont=true
18684
18685 case "$ccflags" in
18686 *-Dmy_rand=*|*-Dmy_srand=*)
18687         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18688         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18689         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18690         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18691         ;;
18692 esac
18693
18694 while $test "$cont"; do
18695         rp="Use which function to generate random numbers?"
18696         . ./myread
18697         if $test "$ans" = "$dflt"; then
18698                 : null
18699         else
18700                 randbits=''
18701         fi
18702         randfunc="$ans"
18703         if set $ans val -f; eval $csym; $val; then
18704                 cont=''
18705         else
18706                 dflt=y
18707                 rp="I cannot find function $ans. Use that name anyway?"
18708                 . ./myread
18709                 dflt=rand
18710                 case "$ans" in
18711                         [yY]*) cont='';;
18712                 esac
18713         fi
18714         case "$cont" in
18715         '')
18716                 case "$randfunc" in
18717                 drand48)
18718                         drand01="drand48()"
18719                         seedfunc="srand48"
18720                         randbits=48
18721                         randseedtype=long
18722                         ;;
18723                 rand|random)
18724                         case "$randbits" in
18725                         '')
18726 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18727                                 $cat >try.c <<EOCP
18728 #$i_unistd I_UNISTD
18729 #$i_stdlib I_STDLIB
18730 #include <stdio.h>
18731 #ifdef I_UNISTD
18732 #  include <unistd.h>
18733 #endif
18734 #ifdef I_STDLIB
18735 #  include <stdlib.h>
18736 #endif
18737 int main()
18738 {
18739         register int i;
18740         register unsigned long tmp;
18741         register unsigned long max = 0L;
18742
18743         for (i = 1000; i; i--) {
18744                 tmp = (unsigned long) $randfunc();
18745                 if (tmp > max) max = tmp;
18746         }
18747         for (i = 0; max; i++)
18748                 max /= 2;
18749         printf("%d\n",i);
18750 }
18751 EOCP
18752                                 set try
18753                                 if eval $compile_ok; then
18754                                         dflt=`try`
18755                                 else
18756                                         dflt='?'
18757                                         echo "(I can't seem to compile the test program...)"
18758                                 fi
18759                                 ;;
18760                         *)
18761                                 dflt="$randbits"
18762                                 ;;
18763                         esac
18764                         rp="How many bits does your $randfunc() function produce?"
18765                         . ./myread
18766                         randbits="$ans"
18767                         $rm_try
18768                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18769                         seedfunc="s$randfunc"
18770                         randseedtype=unsigned
18771                         ;;
18772                 *)
18773                         dflt="31"
18774                         rp="How many bits does your $randfunc() function produce?"
18775                         . ./myread
18776                         randbits="$ans"
18777                         seedfunc="s$randfunc"
18778                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18779                         if set $seedfunc val -f; eval $csym; $val; then
18780                                 echo "(Using $seedfunc() to seed random generator)"
18781                         else
18782                                 echo "(Warning: no $seedfunc() to seed random generator)"
18783                                 seedfunc=rand
18784                         fi
18785                         randseedtype=unsigned
18786                         ;;
18787                 esac
18788                 ;;
18789         esac
18790 done
18791
18792 : Determine if this is an EBCDIC system
18793 echo " "
18794 echo "Determining whether or not we are on an EBCDIC system..." >&4
18795 $cat >try.c <<'EOM'
18796 int main()
18797 {
18798   if ('M'==0xd4) return 0;
18799   return 1;
18800 }
18801 EOM
18802
18803 val=$undef
18804 set try
18805 if eval $compile_ok; then
18806         if $run ./try; then
18807                 echo "You seem to speak EBCDIC." >&4
18808                 val="$define"
18809         else
18810                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18811         fi
18812 else
18813         echo "I'm unable to compile the test program." >&4
18814         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18815 fi
18816 $rm_try
18817 set ebcdic
18818 eval $setvar
18819
18820 : Check how to flush
18821 echo " "
18822 $cat >&4 <<EOM
18823 Checking how to flush all pending stdio output...
18824 EOM
18825 # I only know how to find the first 32 possibly open files on SunOS.
18826 # See also hints/sunos_4_1.sh and util.c  --AD
18827 case "$osname" in
18828 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18829 esac
18830 $cat >>try.c <<EOCP
18831 #include <stdio.h>
18832 #$i_stdlib I_STDLIB
18833 #ifdef I_STDLIB
18834 #include <stdlib.h>
18835 #endif
18836 #$i_unistd I_UNISTD
18837 #ifdef I_UNISTD
18838 # include <unistd.h>
18839 #endif
18840 #$d_sysconf HAS_SYSCONF
18841 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18842 #ifdef HAS_STDIO_STREAM_ARRAY
18843 # define STDIO_STREAM_ARRAY $stdio_stream_array
18844 #endif
18845 int main() {
18846   FILE* p;
18847   unlink("try.out");
18848   p = fopen("try.out", "w");
18849 #ifdef TRY_FPUTC
18850   fputc('x', p);
18851 #else
18852 # ifdef TRY_FPRINTF
18853   fprintf(p, "x");
18854 # endif
18855 #endif
18856 #ifdef TRY_FFLUSH_NULL
18857   fflush(NULL);
18858 #endif
18859 #ifdef TRY_FFLUSH_ALL
18860   {
18861     long open_max = -1;
18862 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18863     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18864 # else
18865 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18866     open_max = sysconf(_SC_OPEN_MAX);
18867 #  else
18868 #   ifdef FOPEN_MAX
18869     open_max = FOPEN_MAX;
18870 #   else
18871 #    ifdef OPEN_MAX
18872     open_max = OPEN_MAX;
18873 #    else
18874 #     ifdef _NFILE
18875     open_max = _NFILE;
18876 #     endif
18877 #    endif
18878 #   endif
18879 #  endif
18880 # endif
18881 # ifdef HAS_STDIO_STREAM_ARRAY
18882     if (open_max > 0) {
18883       long i;
18884       for (i = 0; i < open_max; i++)
18885             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18886                 STDIO_STREAM_ARRAY[i]._file < open_max &&
18887                 STDIO_STREAM_ARRAY[i]._flag)
18888                 fflush(&STDIO_STREAM_ARRAY[i]);
18889     }
18890   }
18891 # endif
18892 #endif
18893   _exit(42);
18894 }
18895 EOCP
18896 : first we have to find out how _not_ to flush
18897 $to try.c
18898 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18899     output=''
18900     set try -DTRY_FPUTC
18901     if eval $compile; then
18902             $run ./try 2>/dev/null
18903             code="$?"
18904             $from try.out
18905             if $test ! -s try.out -a "X$code" = X42; then
18906                 output=-DTRY_FPUTC
18907             fi
18908     fi
18909     case "$output" in
18910     '')
18911             set try -DTRY_FPRINTF
18912             if eval $compile; then
18913                     $run ./try 2>/dev/null
18914                     code="$?"
18915                     $from try.out
18916                     if $test ! -s try.out -a "X$code" = X42; then
18917                         output=-DTRY_FPRINTF
18918                     fi
18919             fi
18920         ;;
18921     esac
18922 fi
18923 : check for fflush NULL behaviour
18924 case "$fflushNULL" in
18925 '')     set try -DTRY_FFLUSH_NULL $output
18926         if eval $compile; then
18927                 $run ./try 2>/dev/null
18928                 code="$?"
18929                 $from try.out
18930                 if $test -s try.out -a "X$code" = X42; then
18931                         fflushNULL="`$cat try.out`"
18932                 else
18933                         if $test "X$code" != X42; then
18934                                 $cat >&4 <<EOM
18935 (If this test failed, don't worry, we'll try another method shortly.)
18936 EOM
18937                         fi
18938                 fi
18939         fi
18940         $rm_try
18941         case "$fflushNULL" in
18942         x)      $cat >&4 <<EOM
18943 Your fflush(NULL) works okay for output streams.
18944 Let's see if it clobbers input pipes...
18945 EOM
18946 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18947 # bug that improperly flushes the input end of pipes.  So we avoid the
18948 # autoflush on fork/system/exec support for now. :-(
18949 $cat >tryp.c <<EOCP
18950 #include <stdio.h>
18951 int
18952 main(int argc, char **argv)
18953 {
18954     char buf[1024];
18955     int i;
18956     char *bp = buf;
18957     while (1) {
18958         while ((i = getc(stdin)) != -1
18959                && (*bp++ = i) != '\n'
18960                && bp < &buf[1024])
18961         /* DO NOTHING */ ;
18962         *bp = '\0';
18963         fprintf(stdout, "%s", buf);
18964         fflush(NULL);
18965         if (i == -1)
18966             return 0;
18967         bp = buf;
18968     }
18969 }
18970 EOCP
18971                 fflushNULL="$define"
18972                 set tryp
18973                 if eval $compile; then
18974                     $rm -f tryp.out
18975                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18976                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
18977                        $cat >&4 <<EOM
18978 fflush(NULL) seems to behave okay with input streams.
18979 EOM
18980                         fflushNULL="$define"
18981                     else
18982                         $cat >&4 <<EOM
18983 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
18984 EOM
18985                         fflushNULL="$undef"
18986                     fi
18987                 fi
18988                 $rm -f core tryp.c tryp.core core.tryp.*
18989                 ;;
18990         '')     $cat >&4 <<EOM
18991 Your fflush(NULL) isn't working (contrary to ANSI C).
18992 EOM
18993                 fflushNULL="$undef"
18994                 ;;
18995         *)      $cat >&4 <<EOM
18996 Cannot figure out whether your fflush(NULL) works or not.
18997 I'm assuming it doesn't (contrary to ANSI C).
18998 EOM
18999                 fflushNULL="$undef"
19000                 ;;
19001         esac
19002         ;;
19003 $define|true|[yY]*)
19004         fflushNULL="$define"
19005         ;;
19006 *)
19007         fflushNULL="$undef"
19008         ;;
19009 esac
19010 : check explicit looping only if NULL did not work, and if the pipe
19011 : bug does not show up on an explicit flush too
19012 case "$fflushNULL" in
19013 "$undef")
19014         $cat >tryp.c <<EOCP
19015 #include <stdio.h>
19016 int
19017 main(int argc, char **argv)
19018 {
19019     char buf[1024];
19020     int i;
19021     char *bp = buf;
19022     while (1) {
19023         while ((i = getc(stdin)) != -1
19024                && (*bp++ = i) != '\n'
19025                && bp < &buf[1024])
19026         /* DO NOTHING */ ;
19027         *bp = '\0';
19028         fprintf(stdout, "%s", buf);
19029         fflush(stdin);
19030         if (i == -1)
19031             return 0;
19032         bp = buf;
19033     }
19034 }
19035 EOCP
19036         set tryp
19037         if eval $compile; then
19038             $rm -f tryp.out
19039             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19040             if cmp tryp.c tryp.out >/dev/null 2>&1; then
19041                $cat >&4 <<EOM
19042 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
19043 EOM
19044                 : now check for fflushall behaviour
19045                 case "$fflushall" in
19046                 '')     set try -DTRY_FFLUSH_ALL $output
19047                         if eval $compile; then
19048                                 $cat >&4 <<EOM
19049 (Now testing the other method--but note that this also may fail.)
19050 EOM
19051                                 $run ./try 2>/dev/null
19052                                 code=$?
19053                                 $from try.out
19054                                 if $test -s try.out -a "X$code" = X42; then
19055                                         fflushall="`$cat try.out`"
19056                                 fi
19057                         fi
19058                         $rm_try
19059                         case "$fflushall" in
19060                         x)      $cat >&4 <<EOM
19061 Whew. Flushing explicitly all the stdio streams works.
19062 EOM
19063                                 fflushall="$define"
19064                                 ;;
19065                         '')     $cat >&4 <<EOM
19066 Sigh. Flushing explicitly all the stdio streams doesn't work.
19067 EOM
19068                                 fflushall="$undef"
19069                                 ;;
19070                         *)      $cat >&4 <<EOM
19071 Cannot figure out whether flushing stdio streams explicitly works or not.
19072 I'm assuming it doesn't.
19073 EOM
19074                                 fflushall="$undef"
19075                                 ;;
19076                         esac
19077                         ;;
19078                 "$define"|true|[yY]*)
19079                         fflushall="$define"
19080                         ;;
19081                 *)
19082                         fflushall="$undef"
19083                         ;;
19084                 esac
19085             else
19086                 $cat >&4 <<EOM
19087 All is futile.  Even fflush(stdin) clobbers input pipes!
19088 EOM
19089                 fflushall="$undef"
19090             fi
19091         else
19092             fflushall="$undef"
19093         fi
19094         $rm -f core tryp.c tryp.core core.tryp.*
19095         ;;
19096 *)      fflushall="$undef"
19097         ;;
19098 esac
19099
19100 case "$fflushNULL$fflushall" in
19101 undefundef)
19102         $cat <<EOM
19103 OK, I give up.  I cannot figure out how to flush pending stdio output.
19104 We won't be flushing handles at all before fork/exec/popen.
19105 EOM
19106         ;;
19107 esac
19108 $rm_try
19109
19110 : Store the full pathname to the ar program for use in the C program
19111 : Respect a hint or command line value for full_ar.
19112 case "$full_ar" in
19113 '') full_ar=$ar ;;
19114 esac
19115
19116 : Store the full pathname to the sed program for use in the C program
19117 full_sed=$sed
19118
19119 : see what type gids are declared as in the kernel
19120 echo " "
19121 echo "Looking for the type for group ids returned by getgid()."
19122 set gid_t gidtype xxx stdio.h sys/types.h
19123 eval $typedef
19124 case "$gidtype" in
19125 xxx)
19126         xxx=`./findhdr sys/user.h`
19127         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19128         case $1 in
19129         unsigned) dflt="$1 $2" ;;
19130         *) dflt="$1" ;;
19131         esac
19132         ;;
19133 *) dflt="$gidtype";;
19134 esac
19135 case "$gidtype" in
19136 gid_t) echo "gid_t found." ;;
19137 *)      rp="What is the type for group ids returned by getgid()?"
19138         . ./myread
19139         gidtype="$ans"
19140         ;;
19141 esac
19142
19143 : Check the size of GID
19144 echo " "
19145 case "$gidtype" in
19146 *_t) zzz="$gidtype"     ;;
19147 *)   zzz="gid"          ;;
19148 esac
19149 echo "Checking the size of $zzz..." >&4
19150 cat > try.c <<EOCP
19151 #include <sys/types.h>
19152 #include <stdio.h>
19153 #$i_stdlib I_STDLIB
19154 #ifdef I_STDLIB
19155 #include <stdlib.h>
19156 #endif
19157 int main() {
19158     printf("%d\n", (int)sizeof($gidtype));
19159     exit(0);
19160 }
19161 EOCP
19162 set try
19163 if eval $compile_ok; then
19164         yyy=`$run ./try`
19165         case "$yyy" in
19166         '')     gidsize=4
19167                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19168                 ;;
19169         *)      gidsize=$yyy
19170                 echo "Your $zzz is $gidsize bytes long."
19171                 ;;
19172         esac
19173 else
19174         gidsize=4
19175         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19176 fi
19177
19178
19179 : Check if GID is signed
19180 echo " "
19181 case "$gidtype" in
19182 *_t) zzz="$gidtype"     ;;
19183 *)   zzz="gid"          ;;
19184 esac
19185 echo "Checking the sign of $zzz..." >&4
19186 cat > try.c <<EOCP
19187 #include <sys/types.h>
19188 #include <stdio.h>
19189 int main() {
19190         $gidtype foo = -1;
19191         if (foo < 0)
19192                 printf("-1\n");
19193         else
19194                 printf("1\n");
19195 }
19196 EOCP
19197 set try
19198 if eval $compile; then
19199         yyy=`$run ./try`
19200         case "$yyy" in
19201         '')     gidsign=1
19202                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19203                 ;;
19204         *)      gidsign=$yyy
19205                 case "$gidsign" in
19206                  1) echo "Your $zzz is unsigned." ;;
19207                 -1) echo "Your $zzz is signed."   ;;
19208                 esac
19209                 ;;
19210         esac
19211 else
19212         gidsign=1
19213         echo "(I can't compile the test program--guessing unsigned.)" >&4
19214 fi
19215
19216
19217 : Check 64bit sizes
19218 echo " "
19219
19220 if $test X"$quadtype" != X; then
19221
19222 echo "Checking how to print 64-bit integers..." >&4
19223
19224 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19225         $cat >try.c <<'EOCP'
19226 #include <sys/types.h>
19227 #include <stdio.h>
19228 int main() {
19229   int q = 12345678901;
19230   printf("%ld\n", q);
19231 }
19232 EOCP
19233         set try
19234         if eval $compile; then
19235                 yyy=`$run ./try`
19236                 case "$yyy" in
19237                 12345678901)
19238                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19239                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19240                         echo "We will use %d."
19241                         ;;
19242                 esac
19243         fi
19244 fi
19245
19246 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19247         $cat >try.c <<'EOCP'
19248 #include <sys/types.h>
19249 #include <stdio.h>
19250 int main() {
19251   long q = 12345678901;
19252   printf("%ld\n", q);
19253 }
19254 EOCP
19255         set try
19256         if eval $compile; then
19257                 yyy=`$run ./try`
19258                 case "$yyy" in
19259                 12345678901)
19260                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19261                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19262                         echo "We will use %ld."
19263                         ;;
19264                 esac
19265         fi
19266 fi
19267
19268 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19269         $cat >try.c <<'EOCP'
19270 #include <sys/types.h>
19271 #include <inttypes.h>
19272 #include <stdio.h>
19273 int main() {
19274   int64_t q = 12345678901;
19275   printf("%" PRId64 "\n", q);
19276 }
19277 EOCP
19278         set try
19279         if eval $compile; then
19280                 yyy=`$run ./try`
19281                 case "$yyy" in
19282                 12345678901)
19283                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19284                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19285                         echo "We will use the C9X style."
19286                         ;;
19287                 esac
19288         fi
19289 fi
19290
19291 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19292         $cat >try.c <<EOCP
19293 #include <sys/types.h>
19294 #include <stdio.h>
19295 int main() {
19296   $quadtype q = 12345678901;
19297   printf("%Ld\n", q);
19298 }
19299 EOCP
19300         set try
19301         if eval $compile; then
19302                 yyy=`$run ./try`
19303                 case "$yyy" in
19304                 12345678901)
19305                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19306                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19307                         echo "We will use %Ld."
19308                         ;;
19309                 esac
19310         fi
19311 fi
19312
19313 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19314         $cat >try.c <<'EOCP'
19315 #include <sys/types.h>
19316 #include <stdio.h>
19317 int main() {
19318   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19319   printf("%lld\n", q);
19320 }
19321 EOCP
19322         set try
19323         if eval $compile; then
19324                 yyy=`$run ./try`
19325                 case "$yyy" in
19326                 12345678901)
19327                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19328                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19329                         echo "We will use the %lld style."
19330                         ;;
19331                 esac
19332         fi
19333 fi
19334
19335 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19336         $cat >try.c <<EOCP
19337 #include <sys/types.h>
19338 #include <stdio.h>
19339 int main() {
19340   $quadtype q = 12345678901;
19341   printf("%qd\n", q);
19342 }
19343 EOCP
19344         set try
19345         if eval $compile; then
19346                 yyy=`$run ./try`
19347                 case "$yyy" in
19348                 12345678901)
19349                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19350                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19351                         echo "We will use %qd."
19352                         ;;
19353                 esac
19354         fi
19355 fi
19356
19357 if $test X"$sPRId64" = X; then
19358         echo "Cannot figure out how to print 64-bit integers." >&4
19359 fi
19360 $rm_try
19361
19362 fi
19363
19364 case "$sPRId64" in
19365 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19366         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19367         ;;
19368 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19369         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19370         ;;
19371 esac
19372
19373
19374 echo " "
19375 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19376
19377 if $test X"$ivsize" = X8; then
19378         ivdformat="$sPRId64"
19379         uvuformat="$sPRIu64"
19380         uvoformat="$sPRIo64"
19381         uvxformat="$sPRIx64"
19382         uvXUformat="$sPRIXU64"
19383 else
19384         if $test X"$ivsize" = X"$longsize"; then
19385                 ivdformat='"ld"'
19386                 uvuformat='"lu"'
19387                 uvoformat='"lo"'
19388                 uvxformat='"lx"'
19389                 uvXUformat='"lX"'
19390         else
19391                 if $test X"$ivsize" = X"$intsize"; then
19392                         ivdformat='"d"'
19393                         uvuformat='"u"'
19394                         uvoformat='"o"'
19395                         uvxformat='"x"'
19396                         uvXUformat='"X"'
19397                 else
19398                         : far out
19399                         if $test X"$ivsize" = X"$shortsize"; then
19400                                 ivdformat='"hd"'
19401                                 uvuformat='"hu"'
19402                                 uvoformat='"ho"'
19403                                 uvxformat='"hx"'
19404                                 uvXUformat='"hX"'
19405                         fi
19406                 fi
19407         fi
19408 fi
19409
19410 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19411         nveformat="$sPRIeldbl"
19412         nvfformat="$sPRIfldbl"
19413         nvgformat="$sPRIgldbl"
19414         nvEUformat="$sPRIEUldbl"
19415         nvFUformat="$sPRIFUldbl"
19416         nvGUformat="$sPRIGUldbl"
19417 else
19418         nveformat='"e"'
19419         nvfformat='"f"'
19420         nvgformat='"g"'
19421         nvEUformat='"E"'
19422         nvFUformat='"F"'
19423         nvGUformat='"G"'
19424 fi
19425
19426 case "$ivdformat" in
19427 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19428     exit 1
19429     ;;
19430 esac
19431
19432
19433 echo " "
19434 $echo "Checking the format string to be used for gids..." >&4
19435
19436 case "$gidsign" in
19437 -1)     if $test X"$gidsize" = X"$ivsize"; then
19438                 gidformat="$ivdformat"
19439         else
19440                 if $test X"$gidsize" = X"$longsize"; then
19441                         gidformat='"ld"'
19442                 else
19443                         if $test X"$gidsize" = X"$intsize"; then
19444                                 gidformat='"d"'
19445                         else
19446                                 if $test X"$gidsize" = X"$shortsize"; then
19447                                         gidformat='"hd"'
19448                                 fi
19449                         fi
19450                 fi
19451         fi
19452         ;;
19453 *)      if $test X"$gidsize" = X"$uvsize"; then
19454                 gidformat="$uvuformat"
19455         else
19456                 if $test X"$gidsize" = X"$longsize"; then
19457                         gidformat='"lu"'
19458                 else
19459                         if $test X"$gidsize" = X"$intsize"; then
19460                                 gidformat='"u"'
19461                         else
19462                                 if $test X"$gidsize" = X"$shortsize"; then
19463                                         gidformat='"hu"'
19464                                 fi
19465                         fi
19466                 fi
19467         fi
19468         ;;
19469 esac
19470
19471 : see if getgroups exists
19472 set getgroups d_getgrps
19473 eval $inlibc
19474
19475 : see if setgroups exists
19476 set setgroups d_setgrps
19477 eval $inlibc
19478
19479
19480 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19481 echo " "
19482 case "$d_getgrps$d_setgrps" in
19483 *define*)
19484         case "$groupstype" in
19485         '') dflt="$gidtype" ;;
19486         *)  dflt="$groupstype" ;;
19487         esac
19488         $cat <<EOM
19489 What type of pointer is the second argument to getgroups() and setgroups()?
19490 Usually this is the same as group ids, $gidtype, but not always.
19491
19492 EOM
19493         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19494         . ./myread
19495         groupstype="$ans"
19496         ;;
19497 *)  groupstype="$gidtype";;
19498 esac
19499
19500 : MAD = Misc Attribute Definition
19501
19502 if $test $patchlevel -lt 9; then
19503 : MAD is not available in 5.8.x or earlier.
19504     ans=n;
19505 else
19506     case "$mad" in
19507     $define|true|[yY]*) dflt='y' ;;
19508     *)                  dflt='n' ;;
19509     esac
19510     cat <<EOM
19511
19512 Would you like to build with Misc Attribute Decoration? This is development
19513 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19514 overhead on the interpreter.
19515
19516 If this doesn't make any sense to you, just accept the default '$dflt'.
19517 EOM
19518     rp='Build Perl with MAD?'
19519     . ./myread
19520 fi
19521 case "$ans" in
19522 y|Y)    val="$define"
19523         madlyh='madly.h madly.act madly.tab'
19524         madlysrc='madly.c'
19525         madlyobj="madly$_o" ;;
19526 *)      val="$undef"
19527         madlyh=''
19528         madlysrc=''
19529         madlyobj='' ;;
19530 esac
19531 set mad
19532 eval $setvar
19533
19534 echo " "
19535 echo "Checking if your $make program sets \$(MAKE)..." >&4
19536 case "$make_set_make" in
19537 '')
19538         $sed 's/^X //' > testmake.mak << 'EOF'
19539 Xall:
19540 X       @echo 'maketemp="$(MAKE)"'
19541 EOF
19542         case "`$make -f testmake.mak 2>/dev/null`" in
19543         *maketemp=*) make_set_make='#' ;;
19544         *)      make_set_make="MAKE=$make" ;;
19545         esac
19546         $rm -f testmake.mak
19547         ;;
19548 esac
19549 case "$make_set_make" in
19550 '#') echo "Yup, it does.";;
19551 *) echo "Nope, it doesn't.";;
19552 esac
19553
19554 : see what type is used for mode_t
19555 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19556 set mode_t modetype int stdio.h sys/types.h
19557 eval $typedef_ask
19558
19559 : see if we need va_copy
19560 echo " "
19561 case "$i_stdarg" in
19562 "$define")
19563         $cat >try.c <<EOCP
19564 #include <stdarg.h>
19565 #include <stdio.h>
19566 #$i_stdlib I_STDLIB
19567 #ifdef I_STDLIB
19568 #include <stdlib.h>
19569 #endif
19570 #include <signal.h>
19571
19572 int
19573 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19574 {
19575   return vfprintf(f, fmt, *valp);
19576 }
19577
19578 int
19579 myvfprintf(FILE *f, const  char *fmt, va_list val)
19580 {
19581   return ivfprintf(f, fmt, &val);
19582 }
19583
19584 int
19585 myprintf(char *fmt, ...)
19586 {
19587   va_list val;
19588   va_start(val, fmt);
19589   return myvfprintf(stdout, fmt, val);
19590 }
19591
19592 int
19593 main(int ac, char **av)
19594 {
19595   signal(SIGSEGV, exit);
19596
19597   myprintf("%s%cs all right, then\n", "that", '\'');
19598   exit(0);
19599 }
19600 EOCP
19601         set try
19602         if eval $compile && $run ./try 2>&1 >/dev/null; then
19603                 case "`$run ./try`" in
19604                 "that's all right, then")
19605                         okay=yes
19606                         ;;
19607                 esac
19608         fi
19609         case "$okay" in
19610         yes)    echo "It seems that you don't need va_copy()." >&4
19611                 need_va_copy="$undef"
19612                 ;;
19613         *)      echo "It seems that va_copy() or similar will be needed." >&4
19614                 need_va_copy="$define"
19615                 ;;
19616         esac
19617         $rm_try
19618         ;;
19619 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19620         ;;
19621 esac
19622
19623 : see what type is used for size_t
19624 rp="What is the type used for the length parameter for string functions?"
19625 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19626 eval $typedef_ask
19627
19628 : check for type of arguments to gethostbyaddr. 
19629 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19630         case "$d_gethbyaddr" in
19631         $define)
19632                 $cat <<EOM
19633
19634 Checking to see what type of arguments are accepted by gethostbyaddr().
19635 EOM
19636                 hdrs="$define sys/types.h
19637                         $d_socket sys/socket.h 
19638                         $i_niin netinet/in.h 
19639                         $i_netdb netdb.h
19640                         $i_unistd unistd.h"
19641                 : The first arg can 'char *' or 'void *'
19642                 : The second arg is some of integral type
19643                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19644                         for yyy in size_t long int; do
19645                                 case "$netdb_host_type" in
19646                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19647                                         if ./protochk "$try" $hdrs; then
19648                                                 echo "Your system accepts $xxx for the first arg."
19649                                                 echo "...and $yyy for the second arg."
19650                                                 netdb_host_type="$xxx"
19651                                                 netdb_hlen_type="$yyy"
19652                                         fi
19653                                         ;;
19654                                 esac
19655                         done
19656                 done
19657                 : In case none of those worked, prompt the user.
19658                 case "$netdb_host_type" in
19659                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19660                         dflt='char *'
19661                         . ./myread
19662                         netdb_host_type=$ans
19663                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19664                         dflt="$sizetype"
19665                         . ./myread
19666                         netdb_hlen_type=$ans
19667                         ;;
19668                 esac
19669                 ;;
19670         *)      : no gethostbyaddr, so pick harmless defaults
19671                 netdb_host_type='char *'
19672                 netdb_hlen_type="$sizetype"
19673                 ;;
19674         esac
19675         # Remove the "const" if needed. -- but then we'll have a 
19676         # prototype clash!
19677         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19678 fi
19679
19680 : check for type of argument to gethostbyname. 
19681 if test "X$netdb_name_type" = X ; then
19682         case "$d_gethbyname" in
19683         $define)
19684                 $cat <<EOM
19685
19686 Checking to see what type of argument is accepted by gethostbyname().
19687 EOM
19688                 hdrs="$define sys/types.h
19689                         $d_socket sys/socket.h 
19690                         $i_niin netinet/in.h 
19691                         $i_netdb netdb.h
19692                         $i_unistd unistd.h"
19693                 for xxx in "const char *" "char *"; do
19694                         case "$netdb_name_type" in
19695                         '')     try="extern struct hostent *gethostbyname($xxx);"
19696                                 if ./protochk "$try" $hdrs; then
19697                                         echo "Your system accepts $xxx."
19698                                         netdb_name_type="$xxx"
19699                                 fi
19700                                 ;;
19701                         esac
19702                 done
19703                 : In case none of those worked, prompt the user.
19704                 case "$netdb_name_type" in
19705                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19706                         dflt='char *'
19707                         . ./myread
19708                         netdb_name_type=$ans
19709                         ;;
19710                 esac
19711                 ;;
19712         *)      : no gethostbyname, so pick harmless default
19713                 netdb_name_type='char *'
19714                 ;;
19715         esac
19716 fi
19717
19718 : check for type of 1st argument to getnetbyaddr. 
19719 if test "X$netdb_net_type" = X ; then
19720         case "$d_getnbyaddr" in
19721         $define)
19722                 $cat <<EOM
19723
19724 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19725 EOM
19726                 hdrs="$define sys/types.h
19727                         $d_socket sys/socket.h 
19728                         $i_niin netinet/in.h 
19729                         $i_netdb netdb.h
19730                         $i_unistd unistd.h"
19731                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19732                         case "$netdb_net_type" in
19733                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19734                                 if ./protochk "$try" $hdrs; then
19735                                         echo "Your system accepts $xxx."
19736                                         netdb_net_type="$xxx"
19737                                 fi
19738                                 ;;
19739                         esac
19740                 done
19741                 : In case none of those worked, prompt the user.
19742                 case "$netdb_net_type" in
19743                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19744                         dflt='long'
19745                         . ./myread
19746                         netdb_net_type=$ans
19747                         ;;
19748                 esac
19749                 ;;
19750         *)      : no getnetbyaddr, so pick harmless default
19751                 netdb_net_type='long'
19752                 ;;
19753         esac
19754 fi
19755 : locate the preferred pager for this system
19756 fn=f/
19757 case "$pager" in
19758 '')
19759         dflt=''
19760         case "$pg" in
19761         /*) dflt=$pg;;
19762         [a-zA-Z]:/*) dflt=$pg;;
19763         esac
19764         case "$more" in
19765         /*) dflt=$more;;
19766         [a-zA-Z]:/*) dflt=$more;;
19767         esac
19768         case "$less" in
19769         /*) dflt=$less;;
19770         [a-zA-Z]:/*) dflt=$less;;
19771         esac
19772         case "$dflt" in
19773         '') dflt=/usr/ucb/more;;
19774         esac
19775         ;;
19776 *)      dflt="$pager"
19777         : Instruct ./getfile to trust the hinted or previous pager value,
19778         : even if it does not begin with a slash.  For example, on os2,
19779         : pager might be cmd /c more.  See comments in UU/getfile.
19780         fn="f/($pager)"
19781         ;;
19782 esac
19783 echo " "
19784 rp='What pager is used on your system?'
19785 . ./getfile
19786 pager="$ans"
19787
19788 : see what type pids are declared as in the kernel
19789 rp="What is the type of process ids on this system?"
19790 set pid_t pidtype int stdio.h sys/types.h
19791 eval $typedef_ask
19792
19793 : see if ar generates random libraries by itself
19794 echo " "
19795 echo "Checking how to generate random libraries on your machine..." >&4
19796 echo 'int bar1() { return bar2(); }' > bar1.c
19797 echo 'int bar2() { return 2; }' > bar2.c
19798 $cat > foo.c <<EOP
19799 #$i_stdlib I_STDLIB
19800 #ifdef I_STDLIB
19801 #include <stdlib.h>
19802 #endif
19803 int main() { printf("%d\n", bar1()); exit(0); }
19804 EOP
19805 $cc $ccflags -c bar1.c >/dev/null 2>&1
19806 $cc $ccflags -c bar2.c >/dev/null 2>&1
19807 $cc $ccflags -c foo.c >/dev/null 2>&1
19808 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19809 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19810         $run ./foobar >/dev/null 2>&1; then
19811         echo "$ar appears to generate random libraries itself."
19812         orderlib=false
19813         if [ "X$ranlib" = "X" ]; then
19814             ranlib=":"
19815         fi
19816 elif $ar s bar$_a >/dev/null 2>&1 &&
19817         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19818         $run ./foobar >/dev/null 2>&1; then
19819                 echo "a table of contents needs to be added with '$ar s'."
19820                 orderlib=false
19821                 ranlib="$ar s"
19822 elif $ar ts bar$_a >/dev/null 2>&1 &&
19823         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19824         $run ./foobar >/dev/null 2>&1; then
19825                 echo "a table of contents needs to be added with '$ar ts'."
19826                 orderlib=false
19827                 ranlib="$ar ts"
19828 else
19829         case "$ranlib" in
19830         :) ranlib='';;
19831         '')
19832                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19833                 $test -f $ranlib || ranlib=''
19834                 ;;
19835         esac
19836         if $test -n "$ranlib"; then
19837                 echo "your system has '$ranlib'; we'll use that."
19838                 orderlib=false
19839         else
19840                 echo "your system doesn't seem to support random libraries"
19841                 echo "so we'll use lorder and tsort to order the libraries."
19842                 orderlib=true
19843                 ranlib=":"
19844         fi
19845 fi
19846 $rm -f foo* bar*
19847
19848 : check for type of arguments to select.
19849 case "$selecttype" in
19850 '') case "$d_select" in
19851         $define)
19852                 echo " "
19853                 $cat <<EOM
19854 Checking to see what type of arguments are accepted by select().
19855 EOM
19856                 hdrs="$define sys/types.h
19857                         $i_systime sys/time.h
19858                         $i_sysselct sys/select.h
19859                         $d_socket sys/socket.h"
19860                 : The first arg can be int, unsigned, or size_t
19861                 : The last arg may or may not be 'const'
19862                 val=''
19863                 : void pointer has been seen but using that
19864                 : breaks the selectminbits test
19865                 for xxx in 'fd_set *' 'int *'; do
19866                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19867                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19868                                         case "$val" in
19869                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19870                                                 if ./protochk "$try" $hdrs; then
19871                                                         echo "Your system accepts $xxx."
19872                                                         val="$xxx"
19873                                                 fi
19874                                                 ;;
19875                                         esac
19876                                 done
19877                         done
19878                 done
19879                 case "$val" in
19880                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19881                         case "$d_fd_set" in
19882                                 $define) dflt="fd_set *" ;;
19883                                 *)              dflt="int *" ;;
19884                         esac
19885                         . ./myread
19886                         val=$ans
19887                         ;;
19888                 esac
19889                 selecttype="$val"
19890                 ;;
19891         *)      : no select, so pick a harmless default
19892                 selecttype='int *'
19893                 ;;
19894         esac
19895         ;;
19896 esac
19897
19898 : check for the select 'width'
19899 case "$selectminbits" in
19900 '') safebits=`expr $ptrsize \* 8`
19901     case "$d_select" in
19902         $define)
19903                 $cat <<EOM
19904
19905 Checking to see on how many bits at a time your select() operates...
19906 EOM
19907                 $cat >try.c <<EOCP
19908 #include <sys/types.h>
19909 #$i_time I_TIME
19910 #$i_systime I_SYS_TIME
19911 #$i_systimek I_SYS_TIME_KERNEL
19912 #ifdef I_TIME
19913 #   include <time.h>
19914 #endif
19915 #ifdef I_SYS_TIME
19916 #   ifdef I_SYS_TIME_KERNEL
19917 #       define KERNEL
19918 #   endif
19919 #   include <sys/time.h>
19920 #   ifdef I_SYS_TIME_KERNEL
19921 #       undef KERNEL
19922 #   endif
19923 #endif
19924 #$i_sysselct I_SYS_SELECT
19925 #ifdef I_SYS_SELECT
19926 #include <sys/select.h>
19927 #endif
19928 #$d_socket HAS_SOCKET
19929 #ifdef HAS_SOCKET
19930 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19931 #endif
19932 #include <stdio.h>
19933 #$i_stdlib I_STDLIB
19934 #ifdef I_STDLIB
19935 #include <stdlib.h>
19936 #endif
19937 $selecttype b;
19938 #define S sizeof(*(b))
19939 #define MINBITS 64
19940 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19941 #define NBITS  (NBYTES * 8)
19942 int main() {
19943     char *s = (char *)malloc(NBYTES);
19944     struct timeval t;
19945     int i;
19946     FILE* fp;
19947     int fd;
19948
19949     if (!s)
19950         exit(1);
19951     fclose(stdin);
19952     fp = fopen("try.c", "r");
19953     if (fp == 0)
19954       exit(2);
19955     fd = fileno(fp);
19956     if (fd < 0)
19957       exit(3);
19958     b = ($selecttype)s;
19959     for (i = 0; i < NBITS; i++)
19960         FD_SET(i, b);
19961     t.tv_sec  = 0;
19962     t.tv_usec = 0;
19963     select(fd + 1, b, 0, 0, &t);
19964     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19965     free(s);
19966     printf("%d\n", i + 1);
19967     return 0;
19968 }
19969 EOCP
19970                 set try
19971                 if eval $compile_ok; then
19972                         selectminbits=`$run ./try`
19973                         case "$selectminbits" in
19974                         '')     cat >&4 <<EOM
19975 Cannot figure out on how many bits at a time your select() operates.
19976 I'll play safe and guess it is $safebits bits.
19977 EOM
19978                                 selectminbits=$safebits
19979                                 bits="$safebits bits"
19980                                 ;;
19981                         1)      bits="1 bit" ;;
19982                         *)      bits="$selectminbits bits" ;;
19983                         esac
19984                         echo "Your select() operates on $bits at a time." >&4
19985                 else
19986                         rp='What is the minimum number of bits your select() operates on?'
19987                         case "$byteorder" in
19988                         12345678)       dflt=64 ;;
19989                         1234)           dflt=32 ;;
19990                         *)              dflt=1  ;;
19991                         esac
19992                         . ./myread
19993                         val=$ans
19994                         selectminbits="$val"
19995                 fi
19996                 $rm_try
19997                 ;;
19998         *)      : no select, so pick a harmless default
19999                 selectminbits=$safebits
20000                 ;;
20001         esac
20002         ;;
20003 esac
20004
20005 : Trace out the files included by signal.h, then look for SIGxxx names.
20006 : Remove SIGARRAYSIZE used by HPUX.
20007 : Remove SIGSTKSIZE used by Linux.
20008 : Remove SIGSTKSZ used by Posix.
20009 : Remove SIGTYP void lines used by OS2.
20010 : Some cpps, like os390, dont give the file name anywhere
20011 if [ "X$fieldn" = X ]; then
20012         : Just make some guesses.  We check them later.
20013         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
20014 else
20015         xxx=`echo '#include <signal.h>' |
20016         $cppstdin $cppminus $cppflags 2>/dev/null |
20017         $grep '^[       ]*#.*include' |
20018         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
20019 fi
20020 : Check this list of files to be sure we have parsed the cpp output ok.
20021 : This will also avoid potentially non-existent files, such
20022 : as ../foo/bar.h
20023 xxxfiles=''
20024 for xx in $xxx /dev/null ; do
20025         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
20026 done
20027 : If we have found no files, at least try signal.h
20028 case "$xxxfiles" in
20029 '')     xxxfiles=`./findhdr signal.h` ;;
20030 esac
20031 xxx=`awk '
20032 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
20033         print substr($2, 4, 20)
20034 }
20035 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
20036         print substr($3, 4, 20)
20037 }' $xxxfiles`
20038 : Append some common names just in case the awk scan failed.
20039 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
20040 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
20041 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
20042 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
20043 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
20044
20045 : generate a few handy files for later
20046 $cat > signal.c <<EOCP
20047 #include <sys/types.h>
20048 #include <signal.h>
20049 #$i_stdlib I_STDLIB
20050 #ifdef I_STDLIB
20051 #include <stdlib.h>
20052 #endif
20053 #include <stdio.h>
20054 int main() {
20055
20056 /* Strange style to avoid deeply-nested #if/#else/#endif */
20057 #ifndef NSIG
20058 #  ifdef _NSIG
20059 #    define NSIG (_NSIG)
20060 #  endif
20061 #endif
20062
20063 #ifndef NSIG
20064 #  ifdef SIGMAX
20065 #    define NSIG (SIGMAX+1)
20066 #  endif
20067 #endif
20068
20069 #ifndef NSIG
20070 #  ifdef SIG_MAX
20071 #    define NSIG (SIG_MAX+1)
20072 #  endif
20073 #endif
20074
20075 #ifndef NSIG
20076 #  ifdef _SIG_MAX
20077 #    define NSIG (_SIG_MAX+1)
20078 #  endif
20079 #endif
20080
20081 #ifndef NSIG
20082 #  ifdef MAXSIG
20083 #    define NSIG (MAXSIG+1)
20084 #  endif
20085 #endif
20086
20087 #ifndef NSIG
20088 #  ifdef MAX_SIG
20089 #    define NSIG (MAX_SIG+1)
20090 #  endif
20091 #endif
20092
20093 #ifndef NSIG
20094 #  ifdef SIGARRAYSIZE
20095 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
20096 #  endif
20097 #endif
20098
20099 #ifndef NSIG
20100 #  ifdef _sys_nsig
20101 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
20102 #  endif
20103 #endif
20104
20105 /* Default to some arbitrary number that's big enough to get most
20106    of the common signals.
20107 */
20108 #ifndef NSIG
20109 #    define NSIG 50
20110 #endif
20111
20112 printf("NSIG %d\n", NSIG);
20113
20114 #ifndef JUST_NSIG
20115
20116 EOCP
20117
20118 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20119 {
20120         printf "#ifdef SIG"; printf $1; printf "\n"
20121         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20122         printf $1; printf ");\n"
20123         printf "#endif\n"
20124 }
20125 END {
20126         printf "#endif /* JUST_NSIG */\n";
20127         printf "exit(0);\n}\n";
20128 }
20129 ' >>signal.c
20130 $cat >signal.awk <<'EOP'
20131 BEGIN { ndups = 0 }
20132 $1 ~ /^NSIG$/ { nsig = $2 }
20133 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20134     if ($2 > maxsig) { maxsig = $2 }
20135     if (sig_name[$2]) {
20136         dup_name[ndups] = $1
20137         dup_num[ndups] = $2
20138         ndups++
20139     }
20140     else {
20141         sig_name[$2] = $1
20142         sig_num[$2] = $2
20143     }
20144 }
20145 END {
20146     if (nsig == 0) {
20147         nsig = maxsig + 1
20148     }
20149     printf("NSIG %d\n", nsig);
20150     for (n = 1; n < nsig; n++) {
20151         if (sig_name[n]) {
20152             printf("%s %d\n", sig_name[n], sig_num[n])
20153         }
20154         else {
20155             printf("NUM%d %d\n", n, n)
20156         }
20157     }
20158     for (n = 0; n < ndups; n++) {
20159         printf("%s %d\n", dup_name[n], dup_num[n])
20160     }
20161 }
20162 EOP
20163 $cat >signal_cmd <<EOS
20164 $startsh
20165 if $test -s signal.lst; then
20166     echo "Using your existing signal.lst file"
20167         exit 0
20168 fi
20169 xxx="$xxx"
20170 EOS
20171 $cat >>signal_cmd <<'EOS'
20172
20173 set signal
20174 if eval $compile_ok; then
20175         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
20176 else
20177         echo "(I can't seem be able to compile the whole test program)" >&4
20178         echo "(I'll try it in little pieces.)" >&4
20179         set signal -DJUST_NSIG
20180         if eval $compile_ok; then
20181                 $run ./signal$_exe > signal.nsg
20182                 $cat signal.nsg
20183         else
20184                 echo "I can't seem to figure out how many signals you have." >&4
20185                 echo "Guessing 50." >&4
20186                 echo 'NSIG 50' > signal.nsg
20187         fi
20188         : Now look at all the signal names, one at a time.
20189         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20190                 $cat > signal.c <<EOCP
20191 #include <sys/types.h>
20192 #include <signal.h>
20193 #include <stdio.h>
20194 int main() {
20195 printf("$xx %d\n", SIG${xx});
20196 return 0;
20197 }
20198 EOCP
20199                 set signal
20200                 if eval $compile; then
20201                         echo "SIG${xx} found."
20202                         $run ./signal$_exe  >> signal.ls1
20203                 else
20204                         echo "SIG${xx} NOT found."
20205                 fi
20206         done
20207         if $test -s signal.ls1; then
20208                 $cat signal.nsg signal.ls1 |
20209                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20210         fi
20211
20212 fi
20213 if $test -s signal.lst; then
20214         :
20215 else
20216         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20217         echo 'kill -l' >signal
20218         set X `csh -f <signal`
20219         $rm -f signal
20220         shift
20221         case $# in
20222         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20223         esac
20224         echo $@ | $tr ' ' $trnl | \
20225             $awk '{ printf "%s %d\n", $1, ++s; }
20226                   END { printf "NSIG %d\n", ++s }' >signal.lst
20227 fi
20228 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20229 EOS
20230 chmod a+x signal_cmd
20231 $eunicefix signal_cmd
20232
20233 : generate list of signal names
20234 echo " "
20235 case "$sig_name_init" in
20236 '') doinit=yes ;;
20237 *)  case "$sig_num_init" in
20238     ''|*,*) doinit=yes ;;
20239     esac ;;
20240 esac
20241 case "$doinit" in
20242 yes)
20243         echo "Generating a list of signal names and numbers..." >&4
20244         . ./signal_cmd
20245         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20246         sig_name=`$awk 'BEGIN { printf "ZERO " }
20247                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20248         sig_num=`$awk  'BEGIN { printf "0 " }
20249                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20250         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20251                              !/^NSIG/   { printf "\"%s\", ", $1 }
20252                              END        { printf "0\n" }' signal.lst`
20253         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20254                              !/^NSIG/   { printf "%d, ", $2}
20255                              END        { printf "0\n"}' signal.lst`
20256         ;;
20257 esac
20258 echo "The following $sig_count signals are available:"
20259 echo " "
20260 echo $sig_name | $awk \
20261 'BEGIN { linelen = 0 }
20262 {
20263         for (i = 1; i <= NF; i++) {
20264                 name = "SIG" $i " "
20265                 linelen = linelen + length(name)
20266                 if (linelen > 70) {
20267                         printf "\n"
20268                         linelen = length(name)
20269                 }
20270                 printf "%s", name
20271         }
20272         printf "\n"
20273 }'
20274 sig_size=`echo $sig_name | awk '{print NF}'`
20275 $rm -f signal signal.c signal.awk signal.lst signal_cmd
20276
20277 : Check size of size
20278 echo " "
20279 case "$sizetype" in
20280 *_t) zzz="$sizetype"    ;;
20281 *)   zzz="filesize"     ;;
20282 esac
20283 echo "Checking the size of $zzz..." >&4
20284 cat > try.c <<EOCP
20285 #include <sys/types.h>
20286 #include <stdio.h>
20287 #$i_stdlib I_STDLIB
20288 #ifdef I_STDLIB
20289 #include <stdlib.h>
20290 #endif
20291 int main() {
20292     printf("%d\n", (int)sizeof($sizetype));
20293     exit(0);
20294 }
20295 EOCP
20296 set try
20297 if eval $compile_ok; then
20298         yyy=`$run ./try`
20299         case "$yyy" in
20300         '')     sizesize=4
20301                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20302                 ;;
20303         *)      sizesize=$yyy
20304                 echo "Your $zzz size is $sizesize bytes."
20305                 ;;
20306         esac
20307 else
20308         sizesize=4
20309         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20310 fi
20311
20312
20313 : check for socklen_t
20314 echo " "
20315 echo "Checking to see if you have socklen_t..." >&4
20316 $cat >try.c <<EOCP
20317 #include <sys/types.h>
20318 #$d_socket HAS_SOCKET
20319 #ifdef HAS_SOCKET
20320 #include <sys/socket.h>
20321 #endif
20322 int main() { socklen_t x = 16; }
20323 EOCP
20324 set try
20325 if eval $compile; then
20326         val="$define"
20327         echo "You have socklen_t."
20328 else
20329         val="$undef"
20330         echo "You do not have socklen_t."
20331         case "$sizetype" in
20332         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20333         esac
20334 fi
20335 $rm_try
20336 set d_socklen_t
20337 eval $setvar
20338
20339 : see if this is a socks.h system
20340 set socks.h i_socks
20341 eval $inhdr
20342
20343 : check for type of the size argument to socket calls
20344 case "$d_socket" in
20345 "$define")
20346         $cat <<EOM
20347
20348 Checking to see what type is the last argument of accept().
20349 EOM
20350         yyy=''
20351         case "$d_socklen_t" in
20352         "$define") yyy="$yyy socklen_t"
20353         esac
20354         yyy="$yyy $sizetype int long unsigned"
20355         for xxx in $yyy; do
20356                 case "$socksizetype" in
20357                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20358                         case "$usesocks" in
20359                         "$define")
20360                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20361                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20362                                         socksizetype="$xxx"
20363                                 fi
20364                                 ;;
20365                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20366                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20367                                         socksizetype="$xxx"
20368                                 fi
20369                                 ;;
20370                         esac
20371                         ;;
20372                 esac
20373         done
20374 : In case none of those worked, prompt the user.
20375         case "$socksizetype" in
20376         '')     rp='What is the type for socket address structure sizes?'
20377                 dflt='int'
20378                 . ./myread
20379                 socksizetype=$ans
20380                 ;;
20381         esac
20382         ;;
20383 *)      : no sockets, so pick relatively harmless default
20384         socksizetype='int'
20385         ;;
20386 esac
20387
20388 : see what type is used for signed size_t
20389 set ssize_t ssizetype int stdio.h sys/types.h
20390 eval $typedef
20391 dflt="$ssizetype"
20392 $cat > try.c <<EOM
20393 #include <stdio.h>
20394 #$i_stdlib I_STDLIB
20395 #ifdef I_STDLIB
20396 #include <stdlib.h>
20397 #endif
20398 #include <sys/types.h>
20399 #define Size_t $sizetype
20400 #define SSize_t $dflt
20401 int main()
20402 {
20403         if (sizeof(Size_t) == sizeof(SSize_t))
20404                 printf("$dflt\n");
20405         else if (sizeof(Size_t) == sizeof(int))
20406                 printf("int\n");
20407         else
20408                 printf("long\n");
20409         exit(0);
20410 }
20411 EOM
20412 echo " "
20413 set try
20414 if eval $compile_ok && $run ./try > /dev/null; then
20415         ssizetype=`$run ./try`
20416         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20417 else
20418         $cat >&4 <<EOM
20419 Help! I can't compile and run the ssize_t test program: please enlighten me!
20420 (This is probably a misconfiguration in your system or libraries, and
20421 you really ought to fix it.  Still, I'll try anyway.)
20422
20423 I need a type that is the same size as $sizetype, but is guaranteed to
20424 be signed.  Common values are ssize_t, int and long.
20425
20426 EOM
20427         rp="What signed type is the same size as $sizetype?"
20428         . ./myread
20429         ssizetype="$ans"
20430 fi
20431 $rm_try
20432
20433 : see what type of char stdio uses.
20434 echo " "
20435 echo '#include <stdio.h>' > stdio.c
20436 $cppstdin $cppminus < stdio.c > stdioh
20437 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20438         echo "Your stdio uses unsigned chars." >&4
20439         stdchar="unsigned char"
20440 else
20441         echo "Your stdio uses signed chars." >&4
20442         stdchar="char"
20443 fi
20444 $rm -f stdio.* stdioh
20445
20446 : see what type uids are declared as in the kernel
20447 echo " "
20448 echo "Looking for the type for user ids returned by getuid()."
20449 set uid_t uidtype xxx stdio.h sys/types.h
20450 eval $typedef
20451 case "$uidtype" in
20452 xxx)
20453         xxx=`./findhdr sys/user.h`
20454         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20455         case $1 in
20456         unsigned) dflt="$1 $2" ;;
20457         *) dflt="$1" ;;
20458         esac
20459         ;;
20460 *) dflt="$uidtype";;
20461 esac
20462 case "$uidtype" in
20463 uid_t)  echo "uid_t found." ;;
20464 *)      rp="What is the type for user ids returned by getuid()?"
20465         . ./myread
20466         uidtype="$ans"
20467         ;;
20468 esac
20469
20470 : Check size of UID
20471 echo " "
20472 case "$uidtype" in
20473 *_t) zzz="$uidtype"     ;;
20474 *)   zzz="uid"          ;;
20475 esac
20476 echo "Checking the size of $zzz..." >&4
20477 cat > try.c <<EOCP
20478 #include <sys/types.h>
20479 #include <stdio.h>
20480 #$i_stdlib I_STDLIB
20481 #ifdef I_STDLIB
20482 #include <stdlib.h>
20483 #endif
20484 int main() {
20485     printf("%d\n", (int)sizeof($uidtype));
20486     exit(0);
20487 }
20488 EOCP
20489 set try
20490 if eval $compile_ok; then
20491         yyy=`$run ./try`
20492         case "$yyy" in
20493         '')     uidsize=4
20494                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20495                 ;;
20496         *)      uidsize=$yyy
20497                 echo "Your $zzz is $uidsize bytes long."
20498                 ;;
20499         esac
20500 else
20501         uidsize=4
20502         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20503 fi
20504
20505 : Check if UID is signed
20506 echo " "
20507 case "$uidtype" in
20508 *_t) zzz="$uidtype"     ;;
20509 *)   zzz="uid"          ;;
20510 esac
20511 echo "Checking the sign of $zzz..." >&4
20512 cat > try.c <<EOCP
20513 #include <sys/types.h>
20514 #include <stdio.h>
20515 int main() {
20516         $uidtype foo = -1;
20517         if (foo < 0)
20518                 printf("-1\n");
20519         else
20520                 printf("1\n");
20521 }
20522 EOCP
20523 set try
20524 if eval $compile; then
20525         yyy=`$run ./try`
20526         case "$yyy" in
20527         '')     uidsign=1
20528                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20529                 ;;
20530         *)      uidsign=$yyy
20531                 case "$uidsign" in
20532                  1) echo "Your $zzz is unsigned." ;;
20533                 -1) echo "Your $zzz is signed."   ;;
20534                 esac
20535                 ;;
20536         esac
20537 else
20538         uidsign=1
20539         echo "(I can't compile the test program--guessing unsigned.)" >&4
20540 fi
20541
20542
20543
20544 echo " "
20545 $echo "Checking the format string to be used for uids..." >&4
20546
20547 case "$uidsign" in
20548 -1)     if $test X"$uidsize" = X"$ivsize"; then
20549                 uidformat="$ivdformat"
20550         else
20551                 if $test X"$uidsize" = X"$longsize"; then
20552                         uidformat='"ld"'
20553                 else
20554                         if $test X"$uidsize" = X"$intsize"; then
20555                                 uidformat='"d"'
20556                         else
20557                                 if $test X"$uidsize" = X"$shortsize"; then
20558                                         uidformat='"hd"'
20559                                 fi
20560                         fi
20561                 fi
20562         fi
20563         ;;
20564 *)      if $test X"$uidsize" = X"$uvsize"; then
20565                 uidformat="$uvuformat"
20566         else
20567                 if $test X"$uidsize" = X"$longsize"; then
20568                         uidformat='"lu"'
20569                 else
20570                         if $test X"$uidsize" = X"$intsize"; then
20571                                 uidformat='"u"'
20572                         else
20573                                 if $test X"$uidsize" = X"$shortsize"; then
20574                                         uidformat='"hu"'
20575                                 fi
20576                         fi
20577                 fi
20578         fi
20579         ;;
20580 esac
20581
20582
20583 case "$usesitecustomize" in
20584     $define|true|[Yy]*)
20585         usesitecustomize="$define"
20586         ;;
20587     *)
20588         usesitecustomize="$undef"
20589         ;;
20590     esac
20591
20592 : determine compiler compiler
20593 case "$yacc" in
20594 '')
20595         dflt=yacc;;
20596 *)
20597         dflt="$yacc";;
20598 esac
20599 echo " "
20600 comp='yacc'
20601 if $test -f "$byacc$_exe"; then
20602         dflt="$byacc"
20603         comp="byacc or $comp"
20604 fi
20605 if $test -f "$bison$_exe"; then
20606         comp="$comp or bison -y"
20607 fi
20608 rp="Which compiler compiler ($comp) shall I use?"
20609 . ./myread
20610 yacc="$ans"
20611 case "$yacc" in
20612 *bis*)
20613         case "$yacc" in
20614         *-y*) ;;
20615         *)
20616                 yacc="$yacc -y"
20617                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20618                 ;;
20619         esac
20620         ;;
20621 esac
20622
20623
20624 : see if this is a assert.h system
20625 set assert.h i_assert
20626 eval $inhdr
20627
20628 : see if this is a fp.h system
20629 set fp.h i_fp
20630 eval $inhdr
20631
20632 : see if this is a fp_class.h system
20633 set fp_class.h i_fp_class
20634 eval $inhdr
20635
20636 : see if gdbm.h is available
20637 set gdbm.h t_gdbm
20638 eval $inhdr
20639 case "$t_gdbm" in
20640 $define)
20641         : see if gdbm_open exists
20642         set gdbm_open d_gdbm_open
20643         eval $inlibc
20644         case "$d_gdbm_open" in
20645         $undef)
20646                 t_gdbm="$undef"
20647                 echo "We won't be including <gdbm.h>"
20648                 ;;
20649         esac
20650         ;;
20651 esac
20652 val="$t_gdbm"
20653 set i_gdbm
20654 eval $setvar
20655
20656 : see if this is a ieeefp.h system
20657 case "$i_ieeefp" in
20658 '' ) set ieeefp.h i_ieeefp
20659      eval $inhdr
20660      ;;
20661 esac
20662
20663 : see if this is a libutil.h system
20664 set libutil.h i_libutil
20665 eval $inhdr
20666
20667 : see if mach cthreads are available
20668 if test "X$usethreads" = "X$define"; then
20669         set mach/cthreads.h i_machcthr
20670         eval $inhdr
20671 else
20672         i_machcthr="$undef"
20673 fi
20674
20675 : see if this is a mntent.h system
20676 set mntent.h i_mntent
20677 eval $inhdr
20678
20679 : see if ndbm.h is available
20680 set ndbm.h t_ndbm
20681 eval $inhdr
20682
20683 case "$t_ndbm" in
20684 $undef)
20685     # Some Linux distributions such as RedHat 7.1 put the
20686     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20687     if $test -f /usr/include/gdbm/ndbm.h; then
20688         echo '<gdbm/ndbm.h> found.'
20689         ccflags="$ccflags -I/usr/include/gdbm"
20690         cppflags="$cppflags -I/usr/include/gdbm"
20691         t_ndbm=$define
20692     fi
20693     ;;
20694 esac
20695
20696 case "$t_ndbm" in
20697 $define)
20698         : see if dbm_open exists
20699         set dbm_open d_dbm_open
20700         eval $inlibc
20701         case "$d_dbm_open" in
20702         $undef)
20703                 t_ndbm="$undef"
20704                 echo "We won't be including <ndbm.h>"
20705                 ;;
20706         esac
20707         ;;
20708 esac
20709 val="$t_ndbm"
20710 set i_ndbm
20711 eval $setvar
20712
20713 : see if net/errno.h is available
20714 val=''
20715 set net/errno.h val
20716 eval $inhdr
20717
20718 : Unfortunately, it causes problems on some systems.  Arrgh.
20719 case "$val" in
20720 $define)
20721         cat > try.c <<'EOM'
20722 #include <stdio.h>
20723 #include <errno.h>
20724 #include <net/errno.h>
20725 int func()
20726 {
20727         return ENOTSOCK;
20728 }
20729 EOM
20730         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20731                 echo "We'll be including <net/errno.h>." >&4
20732         else
20733                 echo "We won't be including <net/errno.h>." >&4
20734                 val="$undef"
20735         fi
20736         $rm_try
20737         ;;
20738 esac
20739 set i_neterrno
20740 eval $setvar
20741
20742 : see if netinet/tcp.h is available
20743 set netinet/tcp.h i_netinettcp
20744 eval $inhdr
20745
20746 : see if this is a poll.h system
20747 set poll.h i_poll
20748 eval $inhdr
20749
20750 : see if this is a prot.h system
20751 set prot.h i_prot
20752 eval $inhdr
20753
20754 : Preprocessor symbols
20755 echo " "
20756 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20757 $cat <<'EOSH' > Cppsym.know
20758 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20759 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20760 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20761 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20762 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20763 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20764 bull c cadmus clipper CMU COFF COMPILER_VERSION
20765 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20766 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20767 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20768 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20769 GLIBC GLIBC_MINOR
20770 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20771 H3050R H3050RX hbullx20 hcx host_mips
20772 hp200 hp300 hp700 HP700 hp800 hp9000
20773 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20774 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20775 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20776 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20777 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20778 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20779 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20780 LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20781 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20782 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20783 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20784 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20785 MATH_HAS_NO_SIDE_EFFECTS
20786 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20787 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20788 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20789 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20790 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20791 NetBSD news1500 news1700 news1800 news1900 news3700
20792 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20793 ns32016 ns32332 ns32k nsc32000
20794 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20795 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20796 pc532 pdp11 PGC PIC plexus PORTAR posix
20797 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20798 POSIX_C_SOURCE POSIX_SOURCE POWER
20799 PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
20800 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20801 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20802 sony sony_news sonyrisc sparc sparclite spectrum
20803 stardent stdc STDC_EXT stratos sun sun3 sun386
20804 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20805 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20806 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20807 sysV68 sysV88 Tek4132 Tek4300 titan
20808 TM3200 TM5400 TM5600
20809 tower tower32 tower32_200 tower32_600 tower32_700
20810 tower32_800 tower32_850 tss
20811 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20812 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20813 unix UNIX95 UNIX99 unixpc unos
20814 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20815 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20816 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20817 USGr4 USGr4_2
20818 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20819 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20820 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20821 z8000
20822 EOSH
20823 # Maybe put other stuff here too.
20824 cat <<EOSH >>Cppsym.know
20825 $osname
20826 EOSH
20827 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20828 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20829 $cat Cppsym.know > Cppsym.c
20830 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20831 $rm -f Cppsym.a Cppsym.b Cppsym.c
20832 cat <<EOSH > Cppsym
20833 $startsh
20834 if $test \$# -gt 0; then
20835     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20836     if $test -s Cppsym.got; then
20837         $rm -f Cppsym.got
20838         exit 0
20839     fi
20840     $rm -f Cppsym.got
20841     exit 1
20842 else
20843     $tr " " "$trnl" | ./Cppsym.try
20844     exit 0
20845 fi
20846 EOSH
20847 chmod +x Cppsym
20848 $eunicefix Cppsym
20849 cat <<EOSH > Cppsym.try
20850 $startsh
20851 cat <<'EOCP' > try.c
20852 #include <stdio.h>
20853 #if cpp_stuff == 1
20854 #define STRINGIFY(a)    "a"
20855 #endif
20856 #if cpp_stuff == 42
20857 #define StGiFy(a)  #a
20858 #define STRINGIFY(a)    StGiFy(a)
20859 #endif
20860 #if $cpp_stuff != 1 && $cpp_stuff != 42
20861 #   include "Bletch: How does this C preprocessor stringify macros?"
20862 #endif
20863 int main() {
20864 EOCP
20865 $awk \\
20866 EOSH
20867 cat <<'EOSH' >> Cppsym.try
20868 'length($1) > 0 {
20869     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20870     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20871     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20872     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20873 }'       >> try.c
20874 echo 'return 0;}' >> try.c
20875 EOSH
20876 cat <<EOSH >> Cppsym.try
20877 ccflags="$ccflags"
20878 case "$osname-$gccversion" in
20879 irix-) ccflags="\$ccflags -woff 1178" ;;
20880 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20881 esac
20882 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20883 EOSH
20884 chmod +x Cppsym.try
20885 $eunicefix Cppsym.try
20886 ./Cppsym < Cppsym.know > Cppsym.true
20887 : Add in any linux cpp "predefined macros":
20888 case "$osname::$gccversion" in
20889   *linux*::*.*)
20890     tHdrH=_tmpHdr
20891     rm -f $tHdrH'.h' $tHdrH
20892     touch $tHdrH'.h'
20893     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20894        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20895        if [ -s $tHdrH'_cppsym.real' ]; then
20896           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20897        fi
20898     fi
20899     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20900   ;;
20901 esac
20902 : now check the C compiler for additional symbols
20903 postprocess_cc_v=''
20904 case "$osname" in
20905 aix) postprocess_cc_v="|$tr , ' '" ;;
20906 esac
20907 $cat >ccsym <<EOS
20908 $startsh
20909 $cat >tmp.c <<EOF
20910 extern int foo;
20911 EOF
20912 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20913 do
20914         case "\$i" in
20915         -D*) echo "\$i" | $sed 's/^-D//';;
20916         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20917         esac
20918 done
20919 $rm_try
20920 EOS
20921 postprocess_cc_v=''
20922 chmod +x ccsym
20923 $eunicefix ccsym
20924 ./ccsym > ccsym1.raw
20925 if $test -s ccsym1.raw; then
20926        $sort ccsym1.raw | $uniq >ccsym.raw
20927 else
20928        mv ccsym1.raw ccsym.raw
20929 fi
20930
20931 $awk '/\=/ { print $0; next }
20932         { print $0"=1" }' ccsym.raw >ccsym.list
20933 $comm -13 Cppsym.true ccsym.list >ccsym.own
20934 $comm -12 Cppsym.true ccsym.list >ccsym.com
20935 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20936 also=''
20937 if $test -z ccsym.raw; then
20938         echo "Your C compiler doesn't seem to define any symbols!" >&4
20939         echo " "
20940         echo "However, your C preprocessor defines the following symbols:"
20941         $cat Cppsym.true
20942         ccsymbols=''
20943         cppsymbols=`$cat Cppsym.true`
20944         cppsymbols=`echo $cppsymbols`
20945         cppccsymbols="$cppsymbols"
20946 else
20947         if $test -s ccsym.com; then
20948                 echo "Your C compiler and pre-processor define these symbols:"
20949                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20950                 also='also '
20951                 symbols='ones'
20952                 cppccsymbols=`$cat ccsym.com`
20953                 cppccsymbols=`echo $cppccsymbols`
20954                 $test "$silent" || sleep 1
20955         fi
20956         if $test -s ccsym.cpp; then
20957                 $test "$also" && echo " "
20958                 echo "Your C pre-processor ${also}defines the following symbols:"
20959                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20960                 also='further '
20961                 cppsymbols=`$cat ccsym.cpp`
20962                 cppsymbols=`echo $cppsymbols`
20963                 $test "$silent" || sleep 1
20964         fi
20965         if $test -s ccsym.own; then
20966                 $test "$also" && echo " "
20967                 echo "Your C compiler ${also}defines the following cpp symbols:"
20968                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20969                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20970                 ccsymbols=`$cat ccsym.own`
20971                 ccsymbols=`echo $ccsymbols`
20972                 $test "$silent" || sleep 1
20973         fi
20974 fi
20975
20976 : see if this is a termio system
20977 val="$undef"
20978 val2="$undef"
20979 val3="$undef"
20980 if $test `./findhdr termios.h`; then
20981         set tcsetattr i_termios
20982         eval $inlibc
20983         val3="$i_termios"
20984 fi
20985 echo " "
20986 case "$val3" in
20987 "$define") echo "You have POSIX termios.h... good!" >&4;;
20988 *) if ./Cppsym pyr; then
20989                 case "`/bin/universe`" in
20990                 ucb) if $test `./findhdr sgtty.h`; then
20991                                 val2="$define"
20992                                 echo "<sgtty.h> found." >&4
20993                         else
20994                                 echo "System is pyramid with BSD universe."
20995                                 echo "<sgtty.h> not found--you could have problems." >&4
20996                         fi;;
20997                 *) if $test `./findhdr termio.h`; then
20998                                 val="$define"
20999                                 echo "<termio.h> found." >&4
21000                         else
21001                                 echo "System is pyramid with USG universe."
21002                                 echo "<termio.h> not found--you could have problems." >&4
21003                         fi;;
21004                 esac
21005         elif ./usg; then
21006                 if $test `./findhdr termio.h`; then
21007                         echo "<termio.h> found." >&4
21008                         val="$define"
21009                 elif $test `./findhdr sgtty.h`; then
21010                         echo "<sgtty.h> found." >&4
21011                         val2="$define"
21012                 else
21013 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
21014                 fi
21015         else
21016                 if $test `./findhdr sgtty.h`; then
21017                         echo "<sgtty.h> found." >&4
21018                         val2="$define"
21019                 elif $test `./findhdr termio.h`; then
21020                         echo "<termio.h> found." >&4
21021                         val="$define"
21022                 else
21023 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
21024                 fi
21025         fi;;
21026 esac
21027 set i_termio; eval $setvar
21028 val=$val2; set i_sgtty; eval $setvar
21029 val=$val3; set i_termios; eval $setvar
21030
21031 : see if stddef is available
21032 set stddef.h i_stddef
21033 eval $inhdr
21034
21035 : see if sys/access.h is available
21036 set sys/access.h i_sysaccess
21037 eval $inhdr
21038
21039 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
21040 set sys/filio.h i_sysfilio
21041 eval $inhdr
21042 echo " "
21043 if $test `./findhdr sys/ioctl.h`; then
21044         val="$define"
21045         echo '<sys/ioctl.h> found.' >&4
21046 else
21047         val="$undef"
21048         if $test $i_sysfilio = "$define"; then
21049             echo '<sys/ioctl.h> NOT found.' >&4
21050         else
21051                 $test $i_sgtty = "$define" && xxx="sgtty.h"
21052                 $test $i_termio = "$define" && xxx="termio.h"
21053                 $test $i_termios = "$define" && xxx="termios.h"
21054 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
21055         fi
21056 fi
21057 set i_sysioctl
21058 eval $setvar
21059
21060 : see if socket ioctl defs are in sys/sockio.h
21061 echo " "
21062 xxx=`./findhdr sys/sockio.h`
21063 if $test "$xxx"; then
21064         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
21065                 val="$define"
21066                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
21067         else
21068                 val="$undef"
21069                 echo "No socket ioctls found in <sys/sockio.h>." >&4
21070         fi
21071 else
21072         val="$undef"
21073         $cat <<EOM
21074 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
21075 EOM
21076 fi
21077 set i_syssockio
21078 eval $setvar
21079
21080
21081 : see if this is a syslog.h system
21082 set syslog.h i_syslog
21083 eval $inhdr
21084
21085
21086 : see if this is a sys/mode.h system
21087 set sys/mode.h i_sysmode
21088 eval $inhdr
21089
21090 : see if sys/resource.h has to be included
21091 set sys/resource.h i_sysresrc
21092 eval $inhdr
21093
21094 : see if sys/security.h is available
21095 set sys/security.h i_syssecrt
21096 eval $inhdr
21097
21098 : see if this is a sys/statvfs.h system
21099 set sys/statvfs.h i_sysstatvfs
21100 eval $inhdr
21101
21102 : see if this is a sys/un.h system
21103 set sys/un.h i_sysun
21104 eval $inhdr
21105
21106
21107 : see if this is a sys/utsname.h system
21108 set sys/utsname.h i_sysutsname
21109 eval $inhdr
21110
21111 : see if this is a syswait system
21112 set sys/wait.h i_syswait
21113 eval $inhdr
21114
21115 : see if this is a ustat.h system
21116 set ustat.h i_ustat
21117 eval $inhdr
21118
21119 : see if this is an utime system
21120 set utime.h i_utime
21121 eval $inhdr
21122
21123 : see if this is a values.h system
21124 set values.h i_values
21125 eval $inhdr
21126
21127 : see if this is a vfork system
21128 case "$d_vfork" in
21129 "$define")
21130         set vfork.h i_vfork
21131         eval $inhdr
21132         ;;
21133 *)
21134         i_vfork="$undef"
21135         ;;
21136 esac
21137
21138 : Check extensions
21139 echo " "
21140 echo "Looking for extensions..." >&4
21141 : If we are using the old config.sh, known_extensions may contain
21142 : old or inaccurate or duplicate values.
21143 known_extensions=''
21144 nonxs_extensions=''
21145 : We do not use find because it might not be available.
21146 : We do not just use MANIFEST because the user may have dropped
21147 : some additional extensions into the source tree and expect them
21148 : to be built.
21149
21150 : Function to recursively find available extensions, ignoring DynaLoader
21151 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21152 find_extensions='
21153     for xxx in *; do
21154         case "$xxx" in
21155             DynaLoader|dynaload) ;;
21156             *)
21157             if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21158                 known_extensions="$known_extensions $1$xxx";
21159             elif $test -f $xxx/Makefile.PL; then
21160                 nonxs_extensions="$nonxs_extensions $1$xxx";
21161             else
21162                 if $test -d $xxx -a $# -lt 10; then
21163                     set $1$xxx/ $*;
21164                     cd "$xxx";
21165                     eval $find_extensions;
21166                     cd ..;
21167                     shift;
21168                 fi;
21169             fi
21170             ;;
21171         esac;
21172     done'
21173 tdir=`pwd`
21174 cd "$rsrc/ext"
21175 set X
21176 shift
21177 eval $find_extensions
21178 # Special case:  Add in modules that nest beyond the first level.
21179 # Currently threads/shared and Hash/Util/FieldHash, since they are
21180 # not picked up by the recursive find above (and adding in general
21181 # recursive finding breaks SDBM_File/sdbm).
21182 # A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
21183 known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
21184 set X $known_extensions
21185 shift
21186 known_extensions="$*"
21187 set X $nonxs_extensions
21188 shift
21189 nonxs_extensions="$*"
21190 cd "$tdir"
21191
21192 : Now see which are supported on this system.
21193 avail_ext=''
21194 for xxx in $known_extensions ; do
21195         case "$xxx" in
21196         DB_File|db_file)
21197                 case "$i_db" in
21198                 $define) avail_ext="$avail_ext $xxx" ;;
21199                 esac
21200                 ;;
21201         GDBM_File|gdbm_fil)
21202                 case "$i_gdbm" in
21203                 $define) avail_ext="$avail_ext $xxx" ;;
21204                 esac
21205                 ;;
21206         I18N/Langinfo|i18n_lan)
21207                 case "$i_langinfo$d_nl_langinfo" in
21208                 $define$define) avail_ext="$avail_ext $xxx" ;;
21209                 esac
21210                 ;;
21211         IPC/SysV|ipc/sysv)
21212                 : XXX Do we need a useipcsysv variable here
21213                 case "${d_msg}${d_sem}${d_shm}" in
21214                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21215                 esac
21216                 ;;
21217         NDBM_File|ndbm_fil)
21218                 case "$i_ndbm" in
21219                 $define)
21220                     case "$osname-$use64bitint" in
21221                     hpux-define)
21222                         case "$libs" in
21223                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21224                         esac
21225                         ;;
21226                     *) avail_ext="$avail_ext $xxx" ;;
21227                     esac
21228                     ;;
21229                 esac
21230                 ;;
21231         ODBM_File|odbm_fil)
21232                 case "${i_dbm}${i_rpcsvcdbm}" in
21233                 *"${define}"*)
21234                     case "$d_cplusplus" in
21235                     define) ;; # delete as a function name will not work
21236                     *)  case "$osname-$use64bitint" in
21237                         hpux-define)
21238                             case "$libs" in
21239                             *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21240                             esac
21241                             ;;
21242                         *) avail_ext="$avail_ext $xxx" ;;
21243                         esac
21244                         ;;
21245                     esac
21246                     ;;
21247                 esac
21248                 ;;
21249         Opcode|opcode)
21250                 case "$useopcode" in
21251                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21252                 esac
21253                 ;;
21254         POSIX|posix)
21255                 case "$useposix" in
21256                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21257                 esac
21258                 ;;
21259         Socket|socket)
21260                 case "$d_socket" in
21261                 true|$define|y)
21262                     case "$osname" in
21263                     beos) ;; # not unless BONE
21264                     *) avail_ext="$avail_ext $xxx" ;;
21265                     esac
21266                     ;;
21267                 esac
21268                 ;;
21269         Sys/Syslog|sys/syslog)
21270                 : XXX syslog requires socket
21271                 case "$d_socket" in
21272                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21273                 esac
21274                 ;;
21275         Thread|thread)
21276                 case "$usethreads" in
21277                 true|$define|y)
21278                         case "$use5005threads" in
21279                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21280                         esac
21281                 esac
21282                 ;;
21283         threads|threads/shared)
21284                 # threads and threads::shared are special cases.
21285                 # To stop people from asking "Perl 5.8.0 was supposed
21286                 # to have this new fancy threads implementation but my
21287                 # perl doesn't have it" and from people trying to
21288                 # (re)install the threads module using CPAN.pm and
21289                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21290                 # the threads.pm and threads/shared.pm will always be
21291                 # there, croaking informatively ("you need to rebuild
21292                 # all of Perl with threads, sorry") when threads haven't
21293                 # been compiled in.
21294                 # --jhi
21295                 avail_ext="$avail_ext $xxx"
21296                 ;;
21297         Win32*)
21298                 case "$osname" in
21299                 cygwin) avail_ext="$avail_ext $xxx" ;;
21300                 esac
21301                 ;;
21302         XS/APItest|xs/apitest)
21303                 # This is just for testing.  Skip it unless we have dynamic loading.
21304
21305                 case "$usedl" in
21306                 $define) avail_ext="$avail_ext $xxx" ;;
21307                 esac
21308                 ;;
21309         XS/Typemap|xs/typemap)
21310                 # This is just for testing.  Skip it unless we have dynamic loading.
21311                 case "$usedl" in
21312                 $define) avail_ext="$avail_ext $xxx" ;;
21313                 esac
21314                 ;;
21315         *)      avail_ext="$avail_ext $xxx"
21316                 ;;
21317         esac
21318 done
21319
21320 set X $avail_ext
21321 shift
21322 avail_ext="$*"
21323
21324 case "$onlyextensions" in
21325 '') ;;
21326 *)  keepextensions=''
21327     echo "You have requested that only certains extensions be included..." >&4
21328     for i in $onlyextensions; do
21329         case " $avail_ext " in
21330         *" $i "*)
21331             echo "Keeping extension $i."
21332             keepextensions="$keepextensions $i"
21333             ;;
21334         *) echo "Ignoring extension $i." ;;
21335         esac
21336     done
21337     avail_ext="$keepextensions"
21338     ;;
21339 esac
21340
21341 case "$noextensions" in
21342 '') ;;
21343 *)  keepextensions=''
21344     echo "You have requested that certain extensions be ignored..." >&4
21345     for i in $avail_ext; do
21346         case " $noextensions " in
21347         *" $i "*) echo "Ignoring extension $i." ;;
21348         *) echo "Keeping extension $i.";
21349            keepextensions="$keepextensions $i"
21350            ;;
21351         esac
21352     done
21353     avail_ext="$keepextensions"
21354     ;;
21355 esac
21356
21357 : Now see which nonxs extensions are supported on this system.
21358 : For now assume all are.
21359 nonxs_ext=''
21360 for xxx in $nonxs_extensions ; do
21361         case "$xxx" in
21362         *)      nonxs_ext="$nonxs_ext $xxx"
21363                 ;;
21364         esac
21365 done
21366
21367 set X $nonxs_ext
21368 shift
21369 nonxs_ext="$*"
21370
21371 case $usedl in
21372 $define)
21373         $cat <<EOM
21374 A number of extensions are supplied with $package.  You may choose to
21375 compile these extensions for dynamic loading (the default), compile
21376 them into the $package executable (static loading), or not include
21377 them at all.  Answer "none" to include no extensions.
21378 Note that DynaLoader is always built and need not be mentioned here.
21379
21380 EOM
21381         case "$dynamic_ext" in
21382         '')
21383                 : Exclude those listed in static_ext
21384                 dflt=''
21385                 for xxx in $avail_ext; do
21386                         case " $static_ext " in
21387                         *" $xxx "*) ;;
21388                         *) dflt="$dflt $xxx" ;;
21389                         esac
21390                 done
21391                 set X $dflt
21392                 shift
21393                 dflt="$*"
21394                 ;;
21395         *)      dflt="$dynamic_ext"
21396                 # Perhaps we are reusing an old out-of-date config.sh.
21397                 case "$hint" in
21398                 previous)
21399                         if test X"$dynamic_ext" != X"$avail_ext"; then
21400                                 $cat <<EOM
21401 NOTICE:  Your previous config.sh list may be incorrect.
21402 The extensions now available to you are
21403         ${avail_ext}
21404 but the default list from your previous config.sh is
21405         ${dynamic_ext}
21406
21407 EOM
21408                         fi
21409                         ;;
21410                 esac
21411                 ;;
21412         esac
21413         case "$dflt" in
21414         '')     dflt=none;;
21415         esac
21416         rp="What extensions do you wish to load dynamically?"
21417         . ./myread
21418         case "$ans" in
21419         none) dynamic_ext=' ' ;;
21420         *) dynamic_ext="$ans" ;;
21421         esac
21422
21423         case "$static_ext" in
21424         '')
21425                 : Exclude those already listed in dynamic linking
21426                 dflt=''
21427                 for xxx in $avail_ext; do
21428                         case " $dynamic_ext " in
21429                         *" $xxx "*) ;;
21430                         *) dflt="$dflt $xxx" ;;
21431                         esac
21432                 done
21433                 set X $dflt
21434                 shift
21435                 dflt="$*"
21436                 ;;
21437         *)  dflt="$static_ext"
21438                 ;;
21439         esac
21440
21441         case "$dflt" in
21442         '')     dflt=none;;
21443         esac
21444         rp="What extensions do you wish to load statically?"
21445         . ./myread
21446         case "$ans" in
21447         none) static_ext=' ' ;;
21448         *) static_ext="$ans" ;;
21449         esac
21450         ;;
21451 *)
21452         $cat <<EOM
21453 A number of extensions are supplied with $package.  Answer "none"
21454 to include no extensions.
21455 Note that DynaLoader is always built and need not be mentioned here.
21456
21457 EOM
21458         case "$static_ext" in
21459         '') dflt="$avail_ext" ;;
21460         *)      dflt="$static_ext"
21461                 # Perhaps we are reusing an old out-of-date config.sh.
21462                 case "$hint" in
21463                 previous)
21464                         if test X"$static_ext" != X"$avail_ext"; then
21465                                 $cat <<EOM
21466 NOTICE:  Your previous config.sh list may be incorrect.
21467 The extensions now available to you are
21468         ${avail_ext}
21469 but the default list from your previous config.sh is
21470         ${static_ext}
21471
21472 EOM
21473                         fi
21474                         ;;
21475                 esac
21476                 ;;
21477         esac
21478         : Exclude those that are not xs extensions
21479         case "$dflt" in
21480         '')     dflt=none;;
21481         esac
21482         rp="What extensions do you wish to include?"
21483         . ./myread
21484         case "$ans" in
21485         none) static_ext=' ' ;;
21486         *) static_ext="$ans" ;;
21487         esac
21488         ;;
21489 esac
21490 #
21491 # Encode is a special case.  If we are building Encode as a static
21492 # extension, we need to explicitly list its subextensions as well.
21493 # For other nested extensions, this is handled automatically by
21494 # the appropriate Makefile.PL.
21495 case " $static_ext " in
21496         *" Encode "*) # Add the subextensions of Encode
21497         cd "$rsrc/ext"
21498         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21499                 static_ext="$static_ext Encode/$xxx"
21500         done
21501         cd "$tdir"
21502         ;;
21503 esac
21504
21505 set X $dynamic_ext $static_ext $nonxs_ext
21506 shift
21507 extensions="$*"
21508
21509 # Sanity check:  We require an extension suitable for use with
21510 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21511 # should show up as failures in the test suite, but it's helpful to
21512 # catch them now.) The 'extensions' list is normally sorted
21513 # alphabetically, so we need to accept either
21514 #    DB_File ... Fcntl ... IO  ....
21515 # or something like
21516 #    Fcntl ... NDBM_File ... IO  ....
21517 case " $extensions"  in
21518 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21519 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21520 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21521 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21522    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21523    ;;
21524 esac
21525
21526 : Remove libraries needed only for extensions
21527 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21528 : The exception is SunOS 4.x, which needs them.
21529 case "${osname}X${osvers}" in
21530 sunos*X4*)
21531     perllibs="$libs"
21532     ;;
21533 *) case "$usedl" in
21534     $define|true|[yY]*)
21535             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21536             shift
21537             perllibs="$*"
21538             ;;
21539     *)  perllibs="$libs"
21540             ;;
21541     esac
21542     ;;
21543 esac
21544
21545 : Remove build directory name from cppstdin so it can be used from
21546 : either the present location or the final installed location.
21547 echo " "
21548 : Get out of the UU directory to get correct path name.
21549 cd ..
21550 case "$cppstdin" in
21551 `pwd`/cppstdin)
21552         echo "Stripping down cppstdin path name"
21553         cppstdin=cppstdin
21554         ;;
21555 esac
21556 cd UU
21557
21558 : end of configuration questions
21559 echo " "
21560 echo "End of configuration questions."
21561 echo " "
21562
21563 : back to where it started
21564 if test -d ../UU; then
21565         cd ..
21566 fi
21567
21568 : configuration may be patched via a 'config.arch' file
21569 if $test -f config.arch; then
21570         echo "I see a config.arch file, loading it."
21571         . ./config.arch
21572 fi
21573
21574 : configuration may be patched via a 'config.over' file
21575 if $test -f config.over; then
21576         echo " "
21577         dflt=y
21578         rp='I see a config.over file.  Do you wish to load it?'
21579         . UU/myread
21580         case "$ans" in
21581         n*) echo "OK, I'll ignore it.";;
21582         *)      . ./config.over
21583                 echo "Configuration override changes have been loaded."
21584                 ;;
21585         esac
21586 fi
21587
21588 : in case they want portability, strip down executable paths
21589 case "$d_portable" in
21590 "$define")
21591         echo " "
21592         echo "Stripping down executable paths..." >&4
21593         for file in $loclist $trylist; do
21594                 eval temp=\$$file
21595                 eval $file=`basename $temp`
21596         done
21597         ;;
21598 esac
21599
21600 : create config.sh file
21601 echo " "
21602 echo "Creating config.sh..." >&4
21603 $spitshell <<EOT >config.sh
21604 $startsh
21605 #
21606 # This file was produced by running the Configure script. It holds all the
21607 # definitions figured out by Configure. Should you modify one of these values,
21608 # do not forget to propagate your changes by running "Configure -der". You may
21609 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21610 #
21611
21612 # Package name      : $package
21613 # Source directory  : $src
21614 # Configuration time: $cf_time
21615 # Configured by     : $cf_by
21616 # Target system     : $myuname
21617
21618 Author='$Author'
21619 Date='$Date'
21620 Header='$Header'
21621 Id='$Id'
21622 Locker='$Locker'
21623 Log='$Log'
21624 Mcc='$Mcc'
21625 RCSfile='$RCSfile'
21626 Revision='$Revision'
21627 Source='$Source'
21628 State='$State'
21629 _a='$_a'
21630 _exe='$_exe'
21631 _o='$_o'
21632 afs='$afs'
21633 afsroot='$afsroot'
21634 alignbytes='$alignbytes'
21635 ansi2knr='$ansi2knr'
21636 aphostname='$aphostname'
21637 api_revision='$api_revision'
21638 api_subversion='$api_subversion'
21639 api_version='$api_version'
21640 api_versionstring='$api_versionstring'
21641 ar='$ar'
21642 archlib='$archlib'
21643 archlibexp='$archlibexp'
21644 archname64='$archname64'
21645 archname='$archname'
21646 archobjs='$archobjs'
21647 asctime_r_proto='$asctime_r_proto'
21648 awk='$awk'
21649 baserev='$baserev'
21650 bash='$bash'
21651 bin='$bin'
21652 binexp='$binexp'
21653 bison='$bison'
21654 byacc='$byacc'
21655 byteorder='$byteorder'
21656 c='$c'
21657 castflags='$castflags'
21658 cat='$cat'
21659 cc='$cc'
21660 cccdlflags='$cccdlflags'
21661 ccdlflags='$ccdlflags'
21662 ccflags='$ccflags'
21663 ccflags_uselargefiles='$ccflags_uselargefiles'
21664 ccname='$ccname'
21665 ccsymbols='$ccsymbols'
21666 ccversion='$ccversion'
21667 cf_by='$cf_by'
21668 cf_email='$cf_email'
21669 cf_time='$cf_time'
21670 chgrp='$chgrp'
21671 chmod='$chmod'
21672 chown='$chown'
21673 clocktype='$clocktype'
21674 comm='$comm'
21675 compress='$compress'
21676 contains='$contains'
21677 cp='$cp'
21678 cpio='$cpio'
21679 cpp='$cpp'
21680 cpp_stuff='$cpp_stuff'
21681 cppccsymbols='$cppccsymbols'
21682 cppflags='$cppflags'
21683 cpplast='$cpplast'
21684 cppminus='$cppminus'
21685 cpprun='$cpprun'
21686 cppstdin='$cppstdin'
21687 cppsymbols='$cppsymbols'
21688 crypt_r_proto='$crypt_r_proto'
21689 cryptlib='$cryptlib'
21690 csh='$csh'
21691 ctermid_r_proto='$ctermid_r_proto'
21692 ctime_r_proto='$ctime_r_proto'
21693 d_Gconvert='$d_Gconvert'
21694 d_PRIEUldbl='$d_PRIEUldbl'
21695 d_PRIFUldbl='$d_PRIFUldbl'
21696 d_PRIGUldbl='$d_PRIGUldbl'
21697 d_PRIXU64='$d_PRIXU64'
21698 d_PRId64='$d_PRId64'
21699 d_PRIeldbl='$d_PRIeldbl'
21700 d_PRIfldbl='$d_PRIfldbl'
21701 d_PRIgldbl='$d_PRIgldbl'
21702 d_PRIi64='$d_PRIi64'
21703 d_PRIo64='$d_PRIo64'
21704 d_PRIu64='$d_PRIu64'
21705 d_PRIx64='$d_PRIx64'
21706 d_SCNfldbl='$d_SCNfldbl'
21707 d__fwalk='$d__fwalk'
21708 d_access='$d_access'
21709 d_accessx='$d_accessx'
21710 d_aintl='$d_aintl'
21711 d_alarm='$d_alarm'
21712 d_archlib='$d_archlib'
21713 d_asctime_r='$d_asctime_r'
21714 d_atolf='$d_atolf'
21715 d_atoll='$d_atoll'
21716 d_attribute_format='$d_attribute_format'
21717 d_attribute_malloc='$d_attribute_malloc'
21718 d_attribute_nonnull='$d_attribute_nonnull'
21719 d_attribute_noreturn='$d_attribute_noreturn'
21720 d_attribute_pure='$d_attribute_pure'
21721 d_attribute_unused='$d_attribute_unused'
21722 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21723 d_bcmp='$d_bcmp'
21724 d_bcopy='$d_bcopy'
21725 d_bsd='$d_bsd'
21726 d_bsdgetpgrp='$d_bsdgetpgrp'
21727 d_bsdsetpgrp='$d_bsdsetpgrp'
21728 d_builtin_choose_expr='$d_builtin_choose_expr'
21729 d_builtin_expect='$d_builtin_expect'
21730 d_bzero='$d_bzero'
21731 d_c99_variadic_macros='$d_c99_variadic_macros'
21732 d_casti32='$d_casti32'
21733 d_castneg='$d_castneg'
21734 d_charvspr='$d_charvspr'
21735 d_chown='$d_chown'
21736 d_chroot='$d_chroot'
21737 d_chsize='$d_chsize'
21738 d_class='$d_class'
21739 d_clearenv='$d_clearenv'
21740 d_closedir='$d_closedir'
21741 d_cmsghdr_s='$d_cmsghdr_s'
21742 d_const='$d_const'
21743 d_copysignl='$d_copysignl'
21744 d_cplusplus='$d_cplusplus'
21745 d_crypt='$d_crypt'
21746 d_crypt_r='$d_crypt_r'
21747 d_csh='$d_csh'
21748 d_ctermid='$d_ctermid'
21749 d_ctermid_r='$d_ctermid_r'
21750 d_ctime_r='$d_ctime_r'
21751 d_cuserid='$d_cuserid'
21752 d_dbl_dig='$d_dbl_dig'
21753 d_dbminitproto='$d_dbminitproto'
21754 d_difftime='$d_difftime'
21755 d_dir_dd_fd='$d_dir_dd_fd'
21756 d_dirfd='$d_dirfd'
21757 d_dirnamlen='$d_dirnamlen'
21758 d_dlerror='$d_dlerror'
21759 d_dlopen='$d_dlopen'
21760 d_dlsymun='$d_dlsymun'
21761 d_dosuid='$d_dosuid'
21762 d_drand48_r='$d_drand48_r'
21763 d_drand48proto='$d_drand48proto'
21764 d_dup2='$d_dup2'
21765 d_eaccess='$d_eaccess'
21766 d_endgrent='$d_endgrent'
21767 d_endgrent_r='$d_endgrent_r'
21768 d_endhent='$d_endhent'
21769 d_endhostent_r='$d_endhostent_r'
21770 d_endnent='$d_endnent'
21771 d_endnetent_r='$d_endnetent_r'
21772 d_endpent='$d_endpent'
21773 d_endprotoent_r='$d_endprotoent_r'
21774 d_endpwent='$d_endpwent'
21775 d_endpwent_r='$d_endpwent_r'
21776 d_endsent='$d_endsent'
21777 d_endservent_r='$d_endservent_r'
21778 d_eofnblk='$d_eofnblk'
21779 d_eunice='$d_eunice'
21780 d_faststdio='$d_faststdio'
21781 d_fchdir='$d_fchdir'
21782 d_fchmod='$d_fchmod'
21783 d_fchown='$d_fchown'
21784 d_fcntl='$d_fcntl'
21785 d_fcntl_can_lock='$d_fcntl_can_lock'
21786 d_fd_macros='$d_fd_macros'
21787 d_fd_set='$d_fd_set'
21788 d_fds_bits='$d_fds_bits'
21789 d_fgetpos='$d_fgetpos'
21790 d_finite='$d_finite'
21791 d_finitel='$d_finitel'
21792 d_flexfnam='$d_flexfnam'
21793 d_flock='$d_flock'
21794 d_flockproto='$d_flockproto'
21795 d_fork='$d_fork'
21796 d_fp_class='$d_fp_class'
21797 d_fpathconf='$d_fpathconf'
21798 d_fpclass='$d_fpclass'
21799 d_fpclassify='$d_fpclassify'
21800 d_fpclassl='$d_fpclassl'
21801 d_fpos64_t='$d_fpos64_t'
21802 d_frexpl='$d_frexpl'
21803 d_fs_data_s='$d_fs_data_s'
21804 d_fseeko='$d_fseeko'
21805 d_fsetpos='$d_fsetpos'
21806 d_fstatfs='$d_fstatfs'
21807 d_fstatvfs='$d_fstatvfs'
21808 d_fsync='$d_fsync'
21809 d_ftello='$d_ftello'
21810 d_ftime='$d_ftime'
21811 d_futimes='$d_futimes'
21812 d_getcwd='$d_getcwd'
21813 d_getespwnam='$d_getespwnam'
21814 d_getfsstat='$d_getfsstat'
21815 d_getgrent='$d_getgrent'
21816 d_getgrent_r='$d_getgrent_r'
21817 d_getgrgid_r='$d_getgrgid_r'
21818 d_getgrnam_r='$d_getgrnam_r'
21819 d_getgrps='$d_getgrps'
21820 d_gethbyaddr='$d_gethbyaddr'
21821 d_gethbyname='$d_gethbyname'
21822 d_gethent='$d_gethent'
21823 d_gethname='$d_gethname'
21824 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21825 d_gethostbyname_r='$d_gethostbyname_r'
21826 d_gethostent_r='$d_gethostent_r'
21827 d_gethostprotos='$d_gethostprotos'
21828 d_getitimer='$d_getitimer'
21829 d_getlogin='$d_getlogin'
21830 d_getlogin_r='$d_getlogin_r'
21831 d_getmnt='$d_getmnt'
21832 d_getmntent='$d_getmntent'
21833 d_getnbyaddr='$d_getnbyaddr'
21834 d_getnbyname='$d_getnbyname'
21835 d_getnent='$d_getnent'
21836 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21837 d_getnetbyname_r='$d_getnetbyname_r'
21838 d_getnetent_r='$d_getnetent_r'
21839 d_getnetprotos='$d_getnetprotos'
21840 d_getpagsz='$d_getpagsz'
21841 d_getpbyname='$d_getpbyname'
21842 d_getpbynumber='$d_getpbynumber'
21843 d_getpent='$d_getpent'
21844 d_getpgid='$d_getpgid'
21845 d_getpgrp2='$d_getpgrp2'
21846 d_getpgrp='$d_getpgrp'
21847 d_getppid='$d_getppid'
21848 d_getprior='$d_getprior'
21849 d_getprotobyname_r='$d_getprotobyname_r'
21850 d_getprotobynumber_r='$d_getprotobynumber_r'
21851 d_getprotoent_r='$d_getprotoent_r'
21852 d_getprotoprotos='$d_getprotoprotos'
21853 d_getprpwnam='$d_getprpwnam'
21854 d_getpwent='$d_getpwent'
21855 d_getpwent_r='$d_getpwent_r'
21856 d_getpwnam_r='$d_getpwnam_r'
21857 d_getpwuid_r='$d_getpwuid_r'
21858 d_getsbyname='$d_getsbyname'
21859 d_getsbyport='$d_getsbyport'
21860 d_getsent='$d_getsent'
21861 d_getservbyname_r='$d_getservbyname_r'
21862 d_getservbyport_r='$d_getservbyport_r'
21863 d_getservent_r='$d_getservent_r'
21864 d_getservprotos='$d_getservprotos'
21865 d_getspnam='$d_getspnam'
21866 d_getspnam_r='$d_getspnam_r'
21867 d_gettimeod='$d_gettimeod'
21868 d_gmtime_r='$d_gmtime_r'
21869 d_gnulibc='$d_gnulibc'
21870 d_grpasswd='$d_grpasswd'
21871 d_hasmntopt='$d_hasmntopt'
21872 d_htonl='$d_htonl'
21873 d_ilogbl='$d_ilogbl'
21874 d_inc_version_list='$d_inc_version_list'
21875 d_index='$d_index'
21876 d_inetaton='$d_inetaton'
21877 d_int64_t='$d_int64_t'
21878 d_isascii='$d_isascii'
21879 d_isfinite='$d_isfinite'
21880 d_isinf='$d_isinf'
21881 d_isnan='$d_isnan'
21882 d_isnanl='$d_isnanl'
21883 d_killpg='$d_killpg'
21884 d_lchown='$d_lchown'
21885 d_ldbl_dig='$d_ldbl_dig'
21886 d_libm_lib_version='$d_libm_lib_version'
21887 d_link='$d_link'
21888 d_localtime_r='$d_localtime_r'
21889 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
21890 d_locconv='$d_locconv'
21891 d_lockf='$d_lockf'
21892 d_longdbl='$d_longdbl'
21893 d_longlong='$d_longlong'
21894 d_lseekproto='$d_lseekproto'
21895 d_lstat='$d_lstat'
21896 d_madvise='$d_madvise'
21897 d_malloc_good_size='$d_malloc_good_size'
21898 d_malloc_size='$d_malloc_size'
21899 d_mblen='$d_mblen'
21900 d_mbstowcs='$d_mbstowcs'
21901 d_mbtowc='$d_mbtowc'
21902 d_memchr='$d_memchr'
21903 d_memcmp='$d_memcmp'
21904 d_memcpy='$d_memcpy'
21905 d_memmove='$d_memmove'
21906 d_memset='$d_memset'
21907 d_mkdir='$d_mkdir'
21908 d_mkdtemp='$d_mkdtemp'
21909 d_mkfifo='$d_mkfifo'
21910 d_mkstemp='$d_mkstemp'
21911 d_mkstemps='$d_mkstemps'
21912 d_mktime='$d_mktime'
21913 d_mmap='$d_mmap'
21914 d_modfl='$d_modfl'
21915 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21916 d_modflproto='$d_modflproto'
21917 d_mprotect='$d_mprotect'
21918 d_msg='$d_msg'
21919 d_msg_ctrunc='$d_msg_ctrunc'
21920 d_msg_dontroute='$d_msg_dontroute'
21921 d_msg_oob='$d_msg_oob'
21922 d_msg_peek='$d_msg_peek'
21923 d_msg_proxy='$d_msg_proxy'
21924 d_msgctl='$d_msgctl'
21925 d_msgget='$d_msgget'
21926 d_msghdr_s='$d_msghdr_s'
21927 d_msgrcv='$d_msgrcv'
21928 d_msgsnd='$d_msgsnd'
21929 d_msync='$d_msync'
21930 d_munmap='$d_munmap'
21931 d_mymalloc='$d_mymalloc'
21932 d_nice='$d_nice'
21933 d_nl_langinfo='$d_nl_langinfo'
21934 d_nv_preserves_uv='$d_nv_preserves_uv'
21935 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21936 d_off64_t='$d_off64_t'
21937 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21938 d_oldpthreads='$d_oldpthreads'
21939 d_oldsock='$d_oldsock'
21940 d_open3='$d_open3'
21941 d_pathconf='$d_pathconf'
21942 d_pause='$d_pause'
21943 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21944 d_phostname='$d_phostname'
21945 d_pipe='$d_pipe'
21946 d_poll='$d_poll'
21947 d_portable='$d_portable'
21948 d_printf_format_null='$d_printf_format_null'
21949 d_procselfexe='$d_procselfexe'
21950 d_pseudofork='$d_pseudofork'
21951 d_pthread_atfork='$d_pthread_atfork'
21952 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21953 d_pthread_yield='$d_pthread_yield'
21954 d_pwage='$d_pwage'
21955 d_pwchange='$d_pwchange'
21956 d_pwclass='$d_pwclass'
21957 d_pwcomment='$d_pwcomment'
21958 d_pwexpire='$d_pwexpire'
21959 d_pwgecos='$d_pwgecos'
21960 d_pwpasswd='$d_pwpasswd'
21961 d_pwquota='$d_pwquota'
21962 d_qgcvt='$d_qgcvt'
21963 d_quad='$d_quad'
21964 d_random_r='$d_random_r'
21965 d_readdir64_r='$d_readdir64_r'
21966 d_readdir='$d_readdir'
21967 d_readdir_r='$d_readdir_r'
21968 d_readlink='$d_readlink'
21969 d_readv='$d_readv'
21970 d_recvmsg='$d_recvmsg'
21971 d_rename='$d_rename'
21972 d_rewinddir='$d_rewinddir'
21973 d_rmdir='$d_rmdir'
21974 d_safebcpy='$d_safebcpy'
21975 d_safemcpy='$d_safemcpy'
21976 d_sanemcmp='$d_sanemcmp'
21977 d_sbrkproto='$d_sbrkproto'
21978 d_scalbnl='$d_scalbnl'
21979 d_sched_yield='$d_sched_yield'
21980 d_scm_rights='$d_scm_rights'
21981 d_seekdir='$d_seekdir'
21982 d_select='$d_select'
21983 d_sem='$d_sem'
21984 d_semctl='$d_semctl'
21985 d_semctl_semid_ds='$d_semctl_semid_ds'
21986 d_semctl_semun='$d_semctl_semun'
21987 d_semget='$d_semget'
21988 d_semop='$d_semop'
21989 d_sendmsg='$d_sendmsg'
21990 d_setegid='$d_setegid'
21991 d_seteuid='$d_seteuid'
21992 d_setgrent='$d_setgrent'
21993 d_setgrent_r='$d_setgrent_r'
21994 d_setgrps='$d_setgrps'
21995 d_sethent='$d_sethent'
21996 d_sethostent_r='$d_sethostent_r'
21997 d_setitimer='$d_setitimer'
21998 d_setlinebuf='$d_setlinebuf'
21999 d_setlocale='$d_setlocale'
22000 d_setlocale_r='$d_setlocale_r'
22001 d_setnent='$d_setnent'
22002 d_setnetent_r='$d_setnetent_r'
22003 d_setpent='$d_setpent'
22004 d_setpgid='$d_setpgid'
22005 d_setpgrp2='$d_setpgrp2'
22006 d_setpgrp='$d_setpgrp'
22007 d_setprior='$d_setprior'
22008 d_setproctitle='$d_setproctitle'
22009 d_setprotoent_r='$d_setprotoent_r'
22010 d_setpwent='$d_setpwent'
22011 d_setpwent_r='$d_setpwent_r'
22012 d_setregid='$d_setregid'
22013 d_setresgid='$d_setresgid'
22014 d_setresuid='$d_setresuid'
22015 d_setreuid='$d_setreuid'
22016 d_setrgid='$d_setrgid'
22017 d_setruid='$d_setruid'
22018 d_setsent='$d_setsent'
22019 d_setservent_r='$d_setservent_r'
22020 d_setsid='$d_setsid'
22021 d_setvbuf='$d_setvbuf'
22022 d_sfio='$d_sfio'
22023 d_shm='$d_shm'
22024 d_shmat='$d_shmat'
22025 d_shmatprototype='$d_shmatprototype'
22026 d_shmctl='$d_shmctl'
22027 d_shmdt='$d_shmdt'
22028 d_shmget='$d_shmget'
22029 d_sigaction='$d_sigaction'
22030 d_signbit='$d_signbit'
22031 d_sigprocmask='$d_sigprocmask'
22032 d_sigsetjmp='$d_sigsetjmp'
22033 d_sitearch='$d_sitearch'
22034 d_snprintf='$d_snprintf'
22035 d_sockatmark='$d_sockatmark'
22036 d_sockatmarkproto='$d_sockatmarkproto'
22037 d_socket='$d_socket'
22038 d_socklen_t='$d_socklen_t'
22039 d_sockpair='$d_sockpair'
22040 d_socks5_init='$d_socks5_init'
22041 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
22042 d_sqrtl='$d_sqrtl'
22043 d_srand48_r='$d_srand48_r'
22044 d_srandom_r='$d_srandom_r'
22045 d_sresgproto='$d_sresgproto'
22046 d_sresuproto='$d_sresuproto'
22047 d_statblks='$d_statblks'
22048 d_statfs_f_flags='$d_statfs_f_flags'
22049 d_statfs_s='$d_statfs_s'
22050 d_statvfs='$d_statvfs'
22051 d_stdio_cnt_lval='$d_stdio_cnt_lval'
22052 d_stdio_ptr_lval='$d_stdio_ptr_lval'
22053 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
22054 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
22055 d_stdio_stream_array='$d_stdio_stream_array'
22056 d_stdiobase='$d_stdiobase'
22057 d_stdstdio='$d_stdstdio'
22058 d_strchr='$d_strchr'
22059 d_strcoll='$d_strcoll'
22060 d_strctcpy='$d_strctcpy'
22061 d_strerrm='$d_strerrm'
22062 d_strerror='$d_strerror'
22063 d_strerror_r='$d_strerror_r'
22064 d_strftime='$d_strftime'
22065 d_strlcat='$d_strlcat'
22066 d_strlcpy='$d_strlcpy'
22067 d_strtod='$d_strtod'
22068 d_strtol='$d_strtol'
22069 d_strtold='$d_strtold'
22070 d_strtoll='$d_strtoll'
22071 d_strtoq='$d_strtoq'
22072 d_strtoul='$d_strtoul'
22073 d_strtoull='$d_strtoull'
22074 d_strtouq='$d_strtouq'
22075 d_strxfrm='$d_strxfrm'
22076 d_suidsafe='$d_suidsafe'
22077 d_symlink='$d_symlink'
22078 d_syscall='$d_syscall'
22079 d_syscallproto='$d_syscallproto'
22080 d_sysconf='$d_sysconf'
22081 d_sysernlst='$d_sysernlst'
22082 d_syserrlst='$d_syserrlst'
22083 d_system='$d_system'
22084 d_tcgetpgrp='$d_tcgetpgrp'
22085 d_tcsetpgrp='$d_tcsetpgrp'
22086 d_telldir='$d_telldir'
22087 d_telldirproto='$d_telldirproto'
22088 d_time='$d_time'
22089 d_times='$d_times'
22090 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
22091 d_tm_tm_zone='$d_tm_tm_zone'
22092 d_tmpnam_r='$d_tmpnam_r'
22093 d_truncate='$d_truncate'
22094 d_ttyname_r='$d_ttyname_r'
22095 d_tzname='$d_tzname'
22096 d_u32align='$d_u32align'
22097 d_ualarm='$d_ualarm'
22098 d_umask='$d_umask'
22099 d_uname='$d_uname'
22100 d_union_semun='$d_union_semun'
22101 d_unordered='$d_unordered'
22102 d_unsetenv='$d_unsetenv'
22103 d_usleep='$d_usleep'
22104 d_usleepproto='$d_usleepproto'
22105 d_ustat='$d_ustat'
22106 d_vendorarch='$d_vendorarch'
22107 d_vendorbin='$d_vendorbin'
22108 d_vendorlib='$d_vendorlib'
22109 d_vendorscript='$d_vendorscript'
22110 d_vfork='$d_vfork'
22111 d_void_closedir='$d_void_closedir'
22112 d_voidsig='$d_voidsig'
22113 d_voidtty='$d_voidtty'
22114 d_volatile='$d_volatile'
22115 d_vprintf='$d_vprintf'
22116 d_vsnprintf='$d_vsnprintf'
22117 d_wait4='$d_wait4'
22118 d_waitpid='$d_waitpid'
22119 d_wcstombs='$d_wcstombs'
22120 d_wctomb='$d_wctomb'
22121 d_writev='$d_writev'
22122 d_xenix='$d_xenix'
22123 date='$date'
22124 db_hashtype='$db_hashtype'
22125 db_prefixtype='$db_prefixtype'
22126 db_version_major='$db_version_major'
22127 db_version_minor='$db_version_minor'
22128 db_version_patch='$db_version_patch'
22129 defvoidused='$defvoidused'
22130 direntrytype='$direntrytype'
22131 dlext='$dlext'
22132 dlsrc='$dlsrc'
22133 doublesize='$doublesize'
22134 drand01='$drand01'
22135 drand48_r_proto='$drand48_r_proto'
22136 dtrace='$dtrace'
22137 dynamic_ext='$dynamic_ext'
22138 eagain='$eagain'
22139 ebcdic='$ebcdic'
22140 echo='$echo'
22141 egrep='$egrep'
22142 emacs='$emacs'
22143 endgrent_r_proto='$endgrent_r_proto'
22144 endhostent_r_proto='$endhostent_r_proto'
22145 endnetent_r_proto='$endnetent_r_proto'
22146 endprotoent_r_proto='$endprotoent_r_proto'
22147 endpwent_r_proto='$endpwent_r_proto'
22148 endservent_r_proto='$endservent_r_proto'
22149 eunicefix='$eunicefix'
22150 exe_ext='$exe_ext'
22151 expr='$expr'
22152 extensions='$extensions'
22153 extras='$extras'
22154 fflushNULL='$fflushNULL'
22155 fflushall='$fflushall'
22156 find='$find'
22157 firstmakefile='$firstmakefile'
22158 flex='$flex'
22159 fpossize='$fpossize'
22160 fpostype='$fpostype'
22161 freetype='$freetype'
22162 from='$from'
22163 full_ar='$full_ar'
22164 full_csh='$full_csh'
22165 full_sed='$full_sed'
22166 gccansipedantic='$gccansipedantic'
22167 gccosandvers='$gccosandvers'
22168 gccversion='$gccversion'
22169 getgrent_r_proto='$getgrent_r_proto'
22170 getgrgid_r_proto='$getgrgid_r_proto'
22171 getgrnam_r_proto='$getgrnam_r_proto'
22172 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22173 gethostbyname_r_proto='$gethostbyname_r_proto'
22174 gethostent_r_proto='$gethostent_r_proto'
22175 getlogin_r_proto='$getlogin_r_proto'
22176 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22177 getnetbyname_r_proto='$getnetbyname_r_proto'
22178 getnetent_r_proto='$getnetent_r_proto'
22179 getprotobyname_r_proto='$getprotobyname_r_proto'
22180 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22181 getprotoent_r_proto='$getprotoent_r_proto'
22182 getpwent_r_proto='$getpwent_r_proto'
22183 getpwnam_r_proto='$getpwnam_r_proto'
22184 getpwuid_r_proto='$getpwuid_r_proto'
22185 getservbyname_r_proto='$getservbyname_r_proto'
22186 getservbyport_r_proto='$getservbyport_r_proto'
22187 getservent_r_proto='$getservent_r_proto'
22188 getspnam_r_proto='$getspnam_r_proto'
22189 gidformat='$gidformat'
22190 gidsign='$gidsign'
22191 gidsize='$gidsize'
22192 gidtype='$gidtype'
22193 glibpth='$glibpth'
22194 gmake='$gmake'
22195 gmtime_r_proto='$gmtime_r_proto'
22196 gnulibc_version='$gnulibc_version'
22197 grep='$grep'
22198 groupcat='$groupcat'
22199 groupstype='$groupstype'
22200 gzip='$gzip'
22201 h_fcntl='$h_fcntl'
22202 h_sysfile='$h_sysfile'
22203 hint='$hint'
22204 hostcat='$hostcat'
22205 html1dir='$html1dir'
22206 html1direxp='$html1direxp'
22207 html3dir='$html3dir'
22208 html3direxp='$html3direxp'
22209 i16size='$i16size'
22210 i16type='$i16type'
22211 i32size='$i32size'
22212 i32type='$i32type'
22213 i64size='$i64size'
22214 i64type='$i64type'
22215 i8size='$i8size'
22216 i8type='$i8type'
22217 i_arpainet='$i_arpainet'
22218 i_assert='$i_assert'
22219 i_bsdioctl='$i_bsdioctl'
22220 i_crypt='$i_crypt'
22221 i_db='$i_db'
22222 i_dbm='$i_dbm'
22223 i_dirent='$i_dirent'
22224 i_dld='$i_dld'
22225 i_dlfcn='$i_dlfcn'
22226 i_fcntl='$i_fcntl'
22227 i_float='$i_float'
22228 i_fp='$i_fp'
22229 i_fp_class='$i_fp_class'
22230 i_gdbm='$i_gdbm'
22231 i_grp='$i_grp'
22232 i_ieeefp='$i_ieeefp'
22233 i_inttypes='$i_inttypes'
22234 i_langinfo='$i_langinfo'
22235 i_libutil='$i_libutil'
22236 i_limits='$i_limits'
22237 i_locale='$i_locale'
22238 i_machcthr='$i_machcthr'
22239 i_malloc='$i_malloc'
22240 i_math='$i_math'
22241 i_memory='$i_memory'
22242 i_mntent='$i_mntent'
22243 i_ndbm='$i_ndbm'
22244 i_netdb='$i_netdb'
22245 i_neterrno='$i_neterrno'
22246 i_netinettcp='$i_netinettcp'
22247 i_niin='$i_niin'
22248 i_poll='$i_poll'
22249 i_prot='$i_prot'
22250 i_pthread='$i_pthread'
22251 i_pwd='$i_pwd'
22252 i_rpcsvcdbm='$i_rpcsvcdbm'
22253 i_sfio='$i_sfio'
22254 i_sgtty='$i_sgtty'
22255 i_shadow='$i_shadow'
22256 i_socks='$i_socks'
22257 i_stdarg='$i_stdarg'
22258 i_stddef='$i_stddef'
22259 i_stdlib='$i_stdlib'
22260 i_string='$i_string'
22261 i_sunmath='$i_sunmath'
22262 i_sysaccess='$i_sysaccess'
22263 i_sysdir='$i_sysdir'
22264 i_sysfile='$i_sysfile'
22265 i_sysfilio='$i_sysfilio'
22266 i_sysin='$i_sysin'
22267 i_sysioctl='$i_sysioctl'
22268 i_syslog='$i_syslog'
22269 i_sysmman='$i_sysmman'
22270 i_sysmode='$i_sysmode'
22271 i_sysmount='$i_sysmount'
22272 i_sysndir='$i_sysndir'
22273 i_sysparam='$i_sysparam'
22274 i_sysresrc='$i_sysresrc'
22275 i_syssecrt='$i_syssecrt'
22276 i_sysselct='$i_sysselct'
22277 i_syssockio='$i_syssockio'
22278 i_sysstat='$i_sysstat'
22279 i_sysstatfs='$i_sysstatfs'
22280 i_sysstatvfs='$i_sysstatvfs'
22281 i_systime='$i_systime'
22282 i_systimek='$i_systimek'
22283 i_systimes='$i_systimes'
22284 i_systypes='$i_systypes'
22285 i_sysuio='$i_sysuio'
22286 i_sysun='$i_sysun'
22287 i_sysutsname='$i_sysutsname'
22288 i_sysvfs='$i_sysvfs'
22289 i_syswait='$i_syswait'
22290 i_termio='$i_termio'
22291 i_termios='$i_termios'
22292 i_time='$i_time'
22293 i_unistd='$i_unistd'
22294 i_ustat='$i_ustat'
22295 i_utime='$i_utime'
22296 i_values='$i_values'
22297 i_varargs='$i_varargs'
22298 i_varhdr='$i_varhdr'
22299 i_vfork='$i_vfork'
22300 ignore_versioned_solibs='$ignore_versioned_solibs'
22301 inc_version_list='$inc_version_list'
22302 inc_version_list_init='$inc_version_list_init'
22303 incpath='$incpath'
22304 inews='$inews'
22305 initialinstalllocation='$initialinstalllocation'
22306 installarchlib='$installarchlib'
22307 installbin='$installbin'
22308 installhtml1dir='$installhtml1dir'
22309 installhtml3dir='$installhtml3dir'
22310 installman1dir='$installman1dir'
22311 installman3dir='$installman3dir'
22312 installprefix='$installprefix'
22313 installprefixexp='$installprefixexp'
22314 installprivlib='$installprivlib'
22315 installscript='$installscript'
22316 installsitearch='$installsitearch'
22317 installsitebin='$installsitebin'
22318 installsitehtml1dir='$installsitehtml1dir'
22319 installsitehtml3dir='$installsitehtml3dir'
22320 installsitelib='$installsitelib'
22321 installsiteman1dir='$installsiteman1dir'
22322 installsiteman3dir='$installsiteman3dir'
22323 installsitescript='$installsitescript'
22324 installstyle='$installstyle'
22325 installusrbinperl='$installusrbinperl'
22326 installvendorarch='$installvendorarch'
22327 installvendorbin='$installvendorbin'
22328 installvendorhtml1dir='$installvendorhtml1dir'
22329 installvendorhtml3dir='$installvendorhtml3dir'
22330 installvendorlib='$installvendorlib'
22331 installvendorman1dir='$installvendorman1dir'
22332 installvendorman3dir='$installvendorman3dir'
22333 installvendorscript='$installvendorscript'
22334 intsize='$intsize'
22335 issymlink='$issymlink'
22336 ivdformat='$ivdformat'
22337 ivsize='$ivsize'
22338 ivtype='$ivtype'
22339 known_extensions='$known_extensions'
22340 ksh='$ksh'
22341 ld='$ld'
22342 lddlflags='$lddlflags'
22343 ldflags='$ldflags'
22344 ldflags_uselargefiles='$ldflags_uselargefiles'
22345 ldlibpthname='$ldlibpthname'
22346 less='$less'
22347 lib_ext='$lib_ext'
22348 libc='$libc'
22349 libperl='$libperl'
22350 libpth='$libpth'
22351 libs='$libs'
22352 libsdirs='$libsdirs'
22353 libsfiles='$libsfiles'
22354 libsfound='$libsfound'
22355 libspath='$libspath'
22356 libswanted='$libswanted'
22357 libswanted_uselargefiles='$libswanted_uselargefiles'
22358 line='$line'
22359 lint='$lint'
22360 lkflags='$lkflags'
22361 ln='$ln'
22362 lns='$lns'
22363 localtime_r_proto='$localtime_r_proto'
22364 locincpth='$locincpth'
22365 loclibpth='$loclibpth'
22366 longdblsize='$longdblsize'
22367 longlongsize='$longlongsize'
22368 longsize='$longsize'
22369 lp='$lp'
22370 lpr='$lpr'
22371 ls='$ls'
22372 lseeksize='$lseeksize'
22373 lseektype='$lseektype'
22374 mad='$mad'
22375 madlyh='$madlyh'
22376 madlyobj='$madlyobj'
22377 madlysrc='$madlysrc'
22378 mail='$mail'
22379 mailx='$mailx'
22380 make='$make'
22381 make_set_make='$make_set_make'
22382 mallocobj='$mallocobj'
22383 mallocsrc='$mallocsrc'
22384 malloctype='$malloctype'
22385 man1dir='$man1dir'
22386 man1direxp='$man1direxp'
22387 man1ext='$man1ext'
22388 man3dir='$man3dir'
22389 man3direxp='$man3direxp'
22390 man3ext='$man3ext'
22391 mips_type='$mips_type'
22392 mistrustnm='$mistrustnm'
22393 mkdir='$mkdir'
22394 mmaptype='$mmaptype'
22395 modetype='$modetype'
22396 more='$more'
22397 multiarch='$multiarch'
22398 mv='$mv'
22399 myarchname='$myarchname'
22400 mydomain='$mydomain'
22401 myhostname='$myhostname'
22402 myuname='$myuname'
22403 n='$n'
22404 need_va_copy='$need_va_copy'
22405 netdb_hlen_type='$netdb_hlen_type'
22406 netdb_host_type='$netdb_host_type'
22407 netdb_name_type='$netdb_name_type'
22408 netdb_net_type='$netdb_net_type'
22409 nm='$nm'
22410 nm_opt='$nm_opt'
22411 nm_so_opt='$nm_so_opt'
22412 nonxs_ext='$nonxs_ext'
22413 nroff='$nroff'
22414 nvEUformat='$nvEUformat'
22415 nvFUformat='$nvFUformat'
22416 nvGUformat='$nvGUformat'
22417 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22418 nveformat='$nveformat'
22419 nvfformat='$nvfformat'
22420 nvgformat='$nvgformat'
22421 nvsize='$nvsize'
22422 nvtype='$nvtype'
22423 o_nonblock='$o_nonblock'
22424 obj_ext='$obj_ext'
22425 old_pthread_create_joinable='$old_pthread_create_joinable'
22426 optimize='$optimize'
22427 orderlib='$orderlib'
22428 osname='$osname'
22429 osvers='$osvers'
22430 otherlibdirs='$otherlibdirs'
22431 package='$package'
22432 pager='$pager'
22433 passcat='$passcat'
22434 patchlevel='$patchlevel'
22435 path_sep='$path_sep'
22436 perl5='$perl5'
22437 perl='$perl'
22438 perl_patchlevel='$perl_patchlevel'
22439 perladmin='$perladmin'
22440 perllibs='$perllibs'
22441 perlpath='$perlpath'
22442 pg='$pg'
22443 phostname='$phostname'
22444 pidtype='$pidtype'
22445 plibpth='$plibpth'
22446 pmake='$pmake'
22447 pr='$pr'
22448 prefix='$prefix'
22449 prefixexp='$prefixexp'
22450 privlib='$privlib'
22451 privlibexp='$privlibexp'
22452 procselfexe='$procselfexe'
22453 prototype='$prototype'
22454 ptrsize='$ptrsize'
22455 quadkind='$quadkind'
22456 quadtype='$quadtype'
22457 randbits='$randbits'
22458 randfunc='$randfunc'
22459 random_r_proto='$random_r_proto'
22460 randseedtype='$randseedtype'
22461 ranlib='$ranlib'
22462 rd_nodata='$rd_nodata'
22463 readdir64_r_proto='$readdir64_r_proto'
22464 readdir_r_proto='$readdir_r_proto'
22465 revision='$revision'
22466 rm='$rm'
22467 rm_try='$rm_try'
22468 rmail='$rmail'
22469 run='$run'
22470 runnm='$runnm'
22471 sPRIEUldbl='$sPRIEUldbl'
22472 sPRIFUldbl='$sPRIFUldbl'
22473 sPRIGUldbl='$sPRIGUldbl'
22474 sPRIXU64='$sPRIXU64'
22475 sPRId64='$sPRId64'
22476 sPRIeldbl='$sPRIeldbl'
22477 sPRIfldbl='$sPRIfldbl'
22478 sPRIgldbl='$sPRIgldbl'
22479 sPRIi64='$sPRIi64'
22480 sPRIo64='$sPRIo64'
22481 sPRIu64='$sPRIu64'
22482 sPRIx64='$sPRIx64'
22483 sSCNfldbl='$sSCNfldbl'
22484 sched_yield='$sched_yield'
22485 scriptdir='$scriptdir'
22486 scriptdirexp='$scriptdirexp'
22487 sed='$sed'
22488 seedfunc='$seedfunc'
22489 selectminbits='$selectminbits'
22490 selecttype='$selecttype'
22491 sendmail='$sendmail'
22492 setgrent_r_proto='$setgrent_r_proto'
22493 sethostent_r_proto='$sethostent_r_proto'
22494 setlocale_r_proto='$setlocale_r_proto'
22495 setnetent_r_proto='$setnetent_r_proto'
22496 setprotoent_r_proto='$setprotoent_r_proto'
22497 setpwent_r_proto='$setpwent_r_proto'
22498 setservent_r_proto='$setservent_r_proto'
22499 sh='$sh'
22500 shar='$shar'
22501 sharpbang='$sharpbang'
22502 shmattype='$shmattype'
22503 shortsize='$shortsize'
22504 shrpenv='$shrpenv'
22505 shsharp='$shsharp'
22506 sig_count='$sig_count'
22507 sig_name='$sig_name'
22508 sig_name_init='$sig_name_init'
22509 sig_num='$sig_num'
22510 sig_num_init='$sig_num_init'
22511 sig_size='$sig_size'
22512 signal_t='$signal_t'
22513 sitearch='$sitearch'
22514 sitearchexp='$sitearchexp'
22515 sitebin='$sitebin'
22516 sitebinexp='$sitebinexp'
22517 sitehtml1dir='$sitehtml1dir'
22518 sitehtml1direxp='$sitehtml1direxp'
22519 sitehtml3dir='$sitehtml3dir'
22520 sitehtml3direxp='$sitehtml3direxp'
22521 sitelib='$sitelib'
22522 sitelib_stem='$sitelib_stem'
22523 sitelibexp='$sitelibexp'
22524 siteman1dir='$siteman1dir'
22525 siteman1direxp='$siteman1direxp'
22526 siteman3dir='$siteman3dir'
22527 siteman3direxp='$siteman3direxp'
22528 siteprefix='$siteprefix'
22529 siteprefixexp='$siteprefixexp'
22530 sitescript='$sitescript'
22531 sitescriptexp='$sitescriptexp'
22532 sizesize='$sizesize'
22533 sizetype='$sizetype'
22534 sleep='$sleep'
22535 smail='$smail'
22536 so='$so'
22537 sockethdr='$sockethdr'
22538 socketlib='$socketlib'
22539 socksizetype='$socksizetype'
22540 sort='$sort'
22541 spackage='$spackage'
22542 spitshell='$spitshell'
22543 srand48_r_proto='$srand48_r_proto'
22544 srandom_r_proto='$srandom_r_proto'
22545 src='$src'
22546 ssizetype='$ssizetype'
22547 startperl='$startperl'
22548 startsh='$startsh'
22549 static_ext='$static_ext'
22550 stdchar='$stdchar'
22551 stdio_base='$stdio_base'
22552 stdio_bufsiz='$stdio_bufsiz'
22553 stdio_cnt='$stdio_cnt'
22554 stdio_filbuf='$stdio_filbuf'
22555 stdio_ptr='$stdio_ptr'
22556 stdio_stream_array='$stdio_stream_array'
22557 strerror_r_proto='$strerror_r_proto'
22558 strings='$strings'
22559 submit='$submit'
22560 subversion='$subversion'
22561 sysman='$sysman'
22562 tail='$tail'
22563 tar='$tar'
22564 targetarch='$targetarch'
22565 tbl='$tbl'
22566 tee='$tee'
22567 test='$test'
22568 timeincl='$timeincl'
22569 timetype='$timetype'
22570 tmpnam_r_proto='$tmpnam_r_proto'
22571 to='$to'
22572 touch='$touch'
22573 tr='$tr'
22574 trnl='$trnl'
22575 troff='$troff'
22576 ttyname_r_proto='$ttyname_r_proto'
22577 u16size='$u16size'
22578 u16type='$u16type'
22579 u32size='$u32size'
22580 u32type='$u32type'
22581 u64size='$u64size'
22582 u64type='$u64type'
22583 u8size='$u8size'
22584 u8type='$u8type'
22585 uidformat='$uidformat'
22586 uidsign='$uidsign'
22587 uidsize='$uidsize'
22588 uidtype='$uidtype'
22589 uname='$uname'
22590 uniq='$uniq'
22591 uquadtype='$uquadtype'
22592 use5005threads='$use5005threads'
22593 use64bitall='$use64bitall'
22594 use64bitint='$use64bitint'
22595 usecrosscompile='$usecrosscompile'
22596 usedl='$usedl'
22597 usedtrace='$usedtrace'
22598 usefaststdio='$usefaststdio'
22599 useithreads='$useithreads'
22600 uselargefiles='$uselargefiles'
22601 uselongdouble='$uselongdouble'
22602 usemallocwrap='$usemallocwrap'
22603 usemorebits='$usemorebits'
22604 usemultiplicity='$usemultiplicity'
22605 usemymalloc='$usemymalloc'
22606 usenm='$usenm'
22607 useopcode='$useopcode'
22608 useperlio='$useperlio'
22609 useposix='$useposix'
22610 usereentrant='$usereentrant'
22611 userelocatableinc='$userelocatableinc'
22612 usesfio='$usesfio'
22613 useshrplib='$useshrplib'
22614 usesitecustomize='$usesitecustomize'
22615 usesocks='$usesocks'
22616 usethreads='$usethreads'
22617 usevendorprefix='$usevendorprefix'
22618 usevfork='$usevfork'
22619 usrinc='$usrinc'
22620 uuname='$uuname'
22621 uvXUformat='$uvXUformat'
22622 uvoformat='$uvoformat'
22623 uvsize='$uvsize'
22624 uvtype='$uvtype'
22625 uvuformat='$uvuformat'
22626 uvxformat='$uvxformat'
22627 vendorarch='$vendorarch'
22628 vendorarchexp='$vendorarchexp'
22629 vendorbin='$vendorbin'
22630 vendorbinexp='$vendorbinexp'
22631 vendorhtml1dir='$vendorhtml1dir'
22632 vendorhtml1direxp='$vendorhtml1direxp'
22633 vendorhtml3dir='$vendorhtml3dir'
22634 vendorhtml3direxp='$vendorhtml3direxp'
22635 vendorlib='$vendorlib'
22636 vendorlib_stem='$vendorlib_stem'
22637 vendorlibexp='$vendorlibexp'
22638 vendorman1dir='$vendorman1dir'
22639 vendorman1direxp='$vendorman1direxp'
22640 vendorman3dir='$vendorman3dir'
22641 vendorman3direxp='$vendorman3direxp'
22642 vendorprefix='$vendorprefix'
22643 vendorprefixexp='$vendorprefixexp'
22644 vendorscript='$vendorscript'
22645 vendorscriptexp='$vendorscriptexp'
22646 version='$version'
22647 version_patchlevel_string='$version_patchlevel_string'
22648 versiononly='$versiononly'
22649 vi='$vi'
22650 voidflags='$voidflags'
22651 xlibpth='$xlibpth'
22652 yacc='$yacc'
22653 yaccflags='$yaccflags'
22654 zcat='$zcat'
22655 zip='$zip'
22656 EOT
22657
22658 : Add in command line options if available
22659 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22660
22661 : add special variables
22662 $test -f $src/patchlevel.h && \
22663 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22664 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22665 echo "PERL_CONFIG_SH=true" >>config.sh
22666
22667 : propagate old symbols
22668 if $test -f UU/config.sh; then
22669         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22670         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22671         $sort | $uniq -u >UU/oldsyms
22672         set X `cat UU/oldsyms`
22673         shift
22674         case $# in
22675         0) ;;
22676         *)
22677                 cat <<EOM
22678 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22679 EOM
22680                 echo "# Variables propagated from previous config.sh file." >>config.sh
22681                 for sym in `cat UU/oldsyms`; do
22682                         echo "    Propagating $hint variable "'$'"$sym..."
22683                         eval 'tmp="$'"${sym}"'"'
22684                         echo "$tmp" | \
22685                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22686                 done
22687                 ;;
22688         esac
22689 fi
22690
22691 : Finish up by extracting the .SH files
22692 case "$alldone" in
22693 exit)
22694         $rm -rf UU
22695         echo "Extraction done."
22696         exit 0
22697         ;;
22698 cont)
22699         ;;
22700 '')
22701         dflt=''
22702         nostick=true
22703         $cat <<EOM
22704
22705 If you'd like to make any changes to the config.sh file before I begin
22706 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22707
22708 EOM
22709         rp="Press return or use a shell escape to edit config.sh:"
22710         . UU/myread
22711         nostick=''
22712         case "$ans" in
22713         '') ;;
22714         *) : in case they cannot read
22715                 sh 1>&4 -c "$ans";;
22716         esac
22717         ;;
22718 esac
22719
22720 : if this fails, just run all the .SH files by hand
22721 . ./config.sh
22722
22723 echo " "
22724 exec 1>&4
22725 pwd=`pwd`
22726 . ./UU/extract
22727 cd "$pwd"
22728
22729 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22730         dflt=y
22731         case "$silent" in
22732         true) ;;
22733         *)
22734                 $cat <<EOM
22735
22736 Now you need to generate make dependencies by running "$make depend".
22737 You might prefer to run it in background: "$make depend > makedepend.out &"
22738 It can take a while, so you might not want to run it right now.
22739
22740 EOM
22741                 ;;
22742         esac
22743         rp="Run $make depend now?"
22744         . UU/myread
22745         case "$ans" in
22746         y*)
22747                 $make depend && echo "Now you must run '$make'."
22748                 ;;
22749         *)
22750                 echo "You must run '$make depend' then '$make'."
22751                 ;;
22752         esac
22753 elif test -f [Mm]akefile; then
22754         echo " "
22755         echo "Now you must run a $make."
22756 else
22757         echo "Configure done."
22758 fi
22759
22760 if $test -f Policy.sh; then
22761     $cat <<EOM
22762
22763 If you compile $package on a different machine or from a different object
22764 directory, copy the Policy.sh file from this object directory to the
22765 new one before you run Configure -- this will help you with most of
22766 the policy defaults.
22767
22768 EOM
22769 fi
22770 if $test -f config.msg; then
22771     echo "Hmm.  I also noted the following information while running:"
22772     echo " "
22773     $cat config.msg >&4
22774     $rm -f config.msg
22775 fi
22776 $rm -f kit*isdone ark*isdone
22777 $rm -rf UU
22778
22779 : End of Configure
22780