diff options
-rwxr-xr-x | Configure | 1477 | ||||
-rw-r--r-- | MANIFEST | 12 | ||||
-rw-r--r-- | MANIFEST.new | 547 | ||||
-rw-r--r-- | Makefile.SH | 73 | ||||
-rw-r--r-- | README | 9 | ||||
-rwxr-xr-x | cflags.SH | 1 | ||||
-rw-r--r-- | config.H | 471 | ||||
-rwxr-xr-x | config_h.SH | 472 | ||||
-rw-r--r-- | deb.c | 2 | ||||
-rw-r--r-- | doop.c | 18 | ||||
-rw-r--r-- | ext/DB_File/DB_File.xs | 12 | ||||
-rw-r--r-- | ext/SDBM_File/sdbm/sdbm.h | 2 | ||||
-rw-r--r-- | ext/util/make_ext | 17 | ||||
-rw-r--r-- | globals.c | 2 | ||||
-rw-r--r-- | hints/irix_6.sh | 25 | ||||
-rw-r--r-- | hints/next_3_2.sh | 6 | ||||
-rwxr-xr-x | installperl | 54 | ||||
-rw-r--r-- | lib/ExtUtils/MakeMaker.pm | 4 | ||||
-rw-r--r-- | lib/Term/Cap.pm | 2 | ||||
-rw-r--r-- | mg.c | 2 | ||||
-rw-r--r-- | miniperlmain.c | 2 | ||||
-rw-r--r-- | opcode.h | 2 | ||||
-rwxr-xr-x | opcode.pl | 2 | ||||
-rw-r--r-- | perl.c | 2 | ||||
-rw-r--r-- | perl.h | 29 | ||||
-rw-r--r-- | pod/Makefile | 1 | ||||
-rw-r--r-- | pp.c | 40 | ||||
-rw-r--r-- | pp_ctl.c | 11 | ||||
-rw-r--r-- | pp_hot.c | 7 | ||||
-rw-r--r-- | pp_sys.c | 4 | ||||
-rw-r--r-- | proto.h | 11 | ||||
-rw-r--r-- | util.c | 41 |
32 files changed, 2151 insertions, 1209 deletions
@@ -18,9 +18,9 @@ # archive site. Check with Archie if you don't know where that can be.) # -# $Id: Head.U,v 3.0.1.5 1994/08/29 16:03:44 ram Exp $ +# $Id: Head.U,v 3.0.1.6 1994/10/29 15:54:19 ram Exp $ # -# Generated on Tue Oct 11 22:49:31 EDT 1994 [metaconfig 3.0 PL35] +# Generated on Wed Jan 18 13:55:15 EST 1995 [metaconfig 3.0 PL48] cat >/tmp/c1$$ <<EOF ARGGGHHHH!!!!! @@ -89,6 +89,7 @@ if test -f /hp-ux -a -f /bin/ksh; then cat <<'EOM' (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.) EOM + unset ENV exec /bin/ksh $0 "$@" fi else @@ -109,6 +110,7 @@ extensions='' known_extensions='' static_ext='' useposix='' +d_bsd='' d_eunice='' d_xenix='' eunicefix='' @@ -121,6 +123,7 @@ cat='' chgrp='' chmod='' chown='' +comm='' compress='' cp='' cpio='' @@ -199,6 +202,7 @@ archlibexp='' archname='' d_archlib='' installarchlib='' +baserev='' bin='' binexp='' installbin='' @@ -220,14 +224,13 @@ cpprun='' cppstdin='' d_access='' d_alarm='' -d_attrib='' +d_attribut='' d_bcmp='' d_bcopy='' d_bzero='' d_casti32='' castflags='' d_castneg='' -d_charsprf='' d_chown='' d_chroot='' d_chsize='' @@ -383,14 +386,18 @@ d_wctomb='' dlext='' cccdlflags='' ccdlflags='' +d_shrplib='' dlsrc='' lddlflags='' +shrpdir='' usedl='' fpostype='' gidtype='' groupstype='' h_fcntl='' h_sysfile='' +db_hashtype='' +db_prefixtype='' i_db='' i_dbm='' d_dirnamlen='' @@ -482,6 +489,7 @@ orderlib='' ranlib='' package='' spackage='' +patchlevel='' prefix='' installprivlib='' privlib='' @@ -512,10 +520,124 @@ mips_type='' usrinc='' defvoidused='' voidflags='' -yacc='' -yaccflags='' CONFIG='' +define='define' +undef='undef' +smallmach='pdp11 i8086 z8000 i80286 iAPX286' +rmlist='' + +: We must find out about Eunice early +eunicefix=':' +if test -f /etc/unixtovms; then + eunicefix=/etc/unixtovms +fi +if test -f /etc/unixtovms.exe; then + eunicefix=/etc/unixtovms.exe +fi + +: list of known cpp symbols, sorted alphabetically +al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2" +al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH" +al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS" +al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM" +al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX" +al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX" +al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4" +al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300" +al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek" +al="$al VMS Xenix286" +al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI" +al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET" +al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3" +al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000" +al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4" +al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS" +al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__" +al="$al __DGUX__ __DPX2__ __H3050R __H3050RX" +al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__" +al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__" +al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__" +al="$al __SVR4_2__ __UMAXV__" +al="$al ____386BSD____ __alpha __alpha__ __amiga" +al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__" +al="$al __host_mips__" +al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500" +al="$al __hp9000s500 __hp9000s700 __hp9000s800" +al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__" +al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__" +al="$al __m68k __m68k__ __m88100__ __m88k __m88k__" +al="$al __mc68000 __mc68000__ __mc68020 __mc68020__" +al="$al __mc68030 __mc68030__ __mc68040 __mc68040__" +al="$al __mc88100 __mc88100__ __mips __mips__" +al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__" +al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__" +al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__" +al="$al _host_mips _mips _unix" +al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent" +al="$al apollo ardent att386 att3b" +al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull" +al="$al cadmus clipper concurrent convex cray ctix" +al="$al dmert encore gcos gcx gimpel gould" +al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800" +al="$al hp9000 hp9000s300 hp9000s400 hp9000s500" +al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux" +al="$al i186 i286 i386 i486 i8086" +al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k" +al="$al ksr1 linux luna luna88k m68k m88100 m88k" +al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030" +al="$al mc68040 mc68060 mc68k mc68k32 mc700" +al="$al mc88000 mc88100 merlin mert mips mvs n16" +al="$al ncl_el ncl_mr" +al="$al news1500 news1700 news1800 news1900 news3700" +al="$al news700 news800 news900 ns16000 ns32000" +al="$al ns32016 ns32332 ns32k nsc32000 os osf" +al="$al parisc pc532 pdp11 plexus posix pyr" +al="$al riscix riscos scs sequent sgi sinix sony sony_news" +al="$al sonyrisc sparc sparclite spectrum stardent stratos" +al="$al sun sun3 sun386 svr4 sysV68 sysV88" +al="$al titan tower tower32 tower32_200 tower32_600 tower32_700" +al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200" +al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms" +al="$al xenix z8000" + +gccversion='' +groupstype='' +i_whoami='' +: change the next line if compiling for Xenix/286 on Xenix/386 +xlibpth='/usr/lib/386 /lib/386' + +: general looking path for locating libraries +glibpth="/lib/pa1.1 /usr/lib/large /lib /usr/lib $xlibpth" +glibpth="$glibpth /lib/large /usr/lib/small /lib/small" +glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib /usr/shlib" + +: Private path used by Configure to find libraries. Its value +: is prepended to libpth. This variable takes care of special +: machines, like the mips. Usually, it should be empty. +plibpth='' + +: default library list +libswanted='' +: full support for void wanted by default +defvoidused=15 + +: set useposix=false in your hint file to disable the POSIX extension. +useposix=true +: no include file wanted by default +inclwanted='' + +: List of libraries we want. +libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl' +libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt" +libswanted="$libswanted ucb bsd BSD PW x" +: We want to search /usr/shlib before most other libraries. +: This is only used by ext/util/extliblist +glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` +glibpth="/usr/shlib $glibpth" +: Do not use vfork unless overridden by a hint file. +usevfork=false + : script used to extract .SH files with variable substitutions cat >extract <<'EOS' CONFIG=true @@ -565,7 +687,7 @@ EOS : produce awk script to parse command line options cat >options.awk <<'EOF' BEGIN { - optstr = "deEf:hrsSD:U:V"; # getopt-style specification + optstr = "dD:eEf:hOrsSU:V"; # getopt-style specification len = length(optstr); for (i = 1; i <= len; i++) { @@ -622,7 +744,9 @@ alldone='' error='' silent='' extractsh='' +override='' optdef='optdef.sh' +rm -f $optdef : option parsing while test $# -gt 0; do @@ -644,6 +768,7 @@ while test $# -gt 0; do -r) shift; reuseval=true;; -s) shift; silent=true;; -E) shift; alldone=exit;; + -O) shift; override=true;; -S) shift; extractsh=true;; -D) shift @@ -652,7 +777,8 @@ while test $# -gt 0; do echo "$me: use '-U symbol=', not '-D symbol='." >&2 echo "$me: ignoring -D $1" >&2 ;; - *=*) echo "$1" >> $optdef;; + *=*) echo "$1" | \ + sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> $optdef;; *) echo "$1='define'" >> $optdef;; esac shift @@ -669,7 +795,7 @@ while test $# -gt 0; do esac shift ;; - -V) echo "$me generated by metaconfig 3.0 PL35." >&2 + -V) echo "$me generated by metaconfig 3.0 PL48." >&2 exit 0;; --) break;; -*) echo "$me: unknown option $1" >&2; shift; error=true;; @@ -680,7 +806,7 @@ done case "$error" in true) cat >&2 <<EOM -Usage: $me [-dehrESV] [-f config.sh] [-D symbol] [-D symbol=value] +Usage: $me [-dehrEOSV] [-f config.sh] [-D symbol] [-D symbol=value] [-U symbol] [-U symbol=] -d : use defaults for all answers. -e : go on without questioning past the production of config.sh. @@ -692,6 +818,7 @@ Usage: $me [-dehrESV] [-f config.sh] [-D symbol] [-D symbol=value] -D symbol symbol gets the value 'define' -D symbol=value symbol gets the value 'value' -E : stop at the end of questions, after having produced config.sh. + -O : let -D and -U override definitions from loaded configuration file. -S : perform variable substitutions on all .SH files (can mix with -f) -U : undefine symbol: -U symbol symbol gets the value 'undef' @@ -707,10 +834,9 @@ case "$silent" in true) exec 1>/dev/null;; esac -: run the defines and the undefines, if any +: run the defines and the undefines, if any, but leave the file out there... touch $optdef . ./$optdef -rm -f $optdef case "$extractsh" in true) @@ -723,6 +849,7 @@ true) echo "Fetching answers from $config_sh..." cd .. . $config + test "$override" && . ./$optdef echo " " . ./UU/extract rm -rf UU @@ -739,121 +866,8 @@ echo " " : Here we go... echo "Beginning of configuration questions for $package." -define='define' -undef='undef' -smallmach='pdp11 i8086 z8000 i80286 iAPX286' -rmlist='' - trap 'echo " "; rm -rf $rmlist; exit 1' 1 2 3 15 -: We must find out about Eunice early -eunicefix=':' -if test -f /etc/unixtovms; then - eunicefix=/etc/unixtovms -fi -if test -f /etc/unixtovms.exe; then - eunicefix=/etc/unixtovms.exe -fi - -: list of known cpp symbols -al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CRAY DGUX DOLPHIN DPX2" -al="$al GO32 HP700 I386 I80960 I960 Lynx M68000 M68K MACH" -al="$al MIPSEB MIPSEL MSDOS MTXINU MVS" -al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM" -al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX" -al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX" -al="$al PWB R3000 SVR3 SVR4" -al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV" -al="$al UTEK UTS UTek UnicomPBB UnicomPBD Utek VMS" -al="$al _AIX _AIX32 _AM29000 _COFF _CRAY _EPI _IBMR2" -al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3" -al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _R3000" -al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4" -al="$al _SYSTYPE_SYSV _SYSV3 _UNICOS" -al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__" -al="$al __DGUX__ __DPX2__ __H3050R __H3050RX" -al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__" -al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__" -al="$al __Next__ __OSF1__ __PARAGON__ __PWB __STDC__" -al="$al ____386BSD____ __alpha __alpha__ __amiga" -al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__" -al="$al __host_mips__" -al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500" -al="$al __hp9000s500 __hp9000s700 __hp9000s800" -al="$al __hppa __hpux __i286 __i286__ __i386 __i386__" -al="$al __i486 __i486__ __i860 __i860__" -al="$al __m68k __m68k__ __m88100__ __m88k __m88k__" -al="$al __mc68000 __mc68000__ __mc68020 __mc68020__" -al="$al __mc68030 __mc68030__ __mc68040 __mc68040__" -al="$al __mc88100 __mc88100__ __mips __mips__" -al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__" -al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__" -al="$al __unix __unix__ __vax __vax__" -al="$al _host_mips _mips _unix" -al="$al a29k aegis alliant am29000 amiga ansi" -al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bull" -al="$al convex cray ctix encore gcos gimpel" -al="$al hcx host_mips hp200 hp300 hp700 hp800" -al="$al hp9000 hp9000s300 hp9000s400 hp9000s500" -al="$al hp9000s700 hp9000s800 hp9k8 hpux" -al="$al i186 i286 i386 i486 i8086" -al="$al i80960 i860 iAPX286 ibm interdata is68k" -al="$al linux luna luna88k m68k m88100 m88k" -al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030" -al="$al mc68040 mc68060 mc68k mc68k32 mc700" -al="$al mc88000 mc88100 merlin mert mips mvs n16" -al="$al ncl_el ncl_mr" -al="$al news1500 news1700 news1800 news1900 news3700" -al="$al news700 news800 news900 ns16000 ns32000" -al="$al ns32016 ns32332 ns32k nsc32000 os osf" -al="$al parisc pc532 pdp11 plexus posix pyr" -al="$al riscix riscos sequent sgi sinix sony sony_news" -al="$al sonyrisc sparc sparclite spectrum stratos" -al="$al sun sun3 sun386 svr4 sysV68 sysV88" -al="$al tower tower32 tower32_200 tower32_600 tower32_700" -al="$al tower32_800 tower32_850 tss u3b u3b2 u3b20 u3b200" -al="$al u3b5 ultrix unix unixpc unos vax venix vms" -al="$al xenix z8000" - -i_whoami='' -: change the next line if compiling for Xenix/286 on Xenix/386 -xlibpth='/usr/lib/386 /lib/386' - -: general looking path for locating libraries -glibpth="/lib/pa1.1 /usr/lib/large /lib /usr/lib $xlibpth" -glibpth="$glibpth /lib/large /usr/lib/small /lib/small" -glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib /usr/shlib" - -: Private path used by Configure to find libraries. Its value -: is prepended to libpth. This variable takes care of special -: machines, like the mips. Usually, it should be empty. -plibpth='' - -: full support for void wanted by default -defvoidused=15 - -: set useposix=false in your hint file to disable the POSIX extension. -useposix=true -gccversion='' -: no include file wanted by default -inclwanted='' - -groupstype='' -: default library list -libswanted='' -: List of libraries we want. -libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl' -libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt" -libswanted="$libswanted ucb bsd BSD PW x" -: We want to search /usr/shlib before most other libraries. -: This is only used by ext/util/extliblist -glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` -glibpth="/usr/shlib $glibpth" -: Do not use vfork unless overridden by a hint file. -usevfork=false -: We can look for titanos too. -al="$al ardent titan" - : Some greps do not return status, grrr. echo "grimblepritz" >grimble if grep blurfldyick grimble >/dev/null 2>&1 ; then @@ -984,6 +998,21 @@ while expr "X\$ans" : "X!" >/dev/null; do case "\$answ" in "\$ans") case "\$ans" in + \\&*) + set x \`expr "X\$ans" : "X&\(.*\)\$"\` + shift + case "\$1" in + -d) + fastread=yes + echo "(OK, I'll run with -d after this question.)" + ;; + -*) + echo "*** Sorry, \$1 not supported yet." + ;; + esac + $myecho + ans=! + ;; "!") sh 1>&4 echo " " @@ -1083,6 +1112,8 @@ and you will be prompted again. If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all the questions and use the computed defaults (or the previous answers if there was already a config.sh file). Type 'Configure -h' for a list of options. +You may also start interactively and then answer '& -d' at any prompt to turn +on the non-interactive behaviour for the remaining of the execution. EOH . ./myread @@ -1116,14 +1147,14 @@ fi : see if sh knows # comments echo " " echo "Checking your sh to see if it knows about # comments..." >&4 -if sh -c '#' >/dev/null 2>&1 ; then +if `sh -c '#' >/dev/null 2>&1`; then echo "Your sh handles # comments correctly." shsharp=true spitshell=cat echo " " echo "Okay, let's see if #! works on this system..." xcat=/bin/cat - test -r $xcat || xcat=/usr/bin/cat + test -f $xcat || xcat=/usr/bin/cat echo "#!$xcat" >try $eunicefix try chmod +x try @@ -1203,7 +1234,7 @@ for dir in \$*; do ;; *) for thisthing in \$dir/\$thing; do - : Just loop through to pick last element + : just loop through to pick last item done if test -f \$thisthing; then echo \$thisthing @@ -1224,6 +1255,7 @@ $eunicefix loc loclist=" awk cat +comm cp echo expr @@ -1241,7 +1273,6 @@ uniq " trylist=" Mcc -bison byacc cpp csh @@ -1296,7 +1327,7 @@ test) echo "Hopefully test is built into your sh." ;; *) - if sh -c "PATH= test true" >/dev/null 2>&1; then + if `sh -c "PATH= test true" >/dev/null 2>&1`; then echo "Using the test built into your sh." test=test _test=test @@ -1346,14 +1377,42 @@ else fi $rm -f blurfl sym +: see whether [:lower:] and [:upper:] are supported character classes +echo " " +up='[A-Z]' +low='[a-z]' +case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in +ABYZ) + echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4 + up='[:upper:]' + low='[:lower:]' + ;; +*) + echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4 + ;; +esac +: set up the translation script tr, must be called with ./tr of course +cat >tr <<EOSC +$startsh +case "\$1\$2" in +'[A-Z][a-z]') exec $tr '$up' '$low';; +'[a-z][A-Z]') exec $tr '$low' '$up';; +esac +exec $tr "\$@" +EOSC +chmod +x tr +$eunicefix tr + : Try to determine whether config.sh was made on this system case "$config_sh" in '') myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1` myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \ - tr '[A-Z]' '[a-z]' | tr '\012' ' '` + ./tr '[A-Z]' '[a-z]' | tr '\012' ' '` dflt=n -if test -f ../config.sh; then +if test "$fastread" = yes; then + dflt=y +elif test -f ../config.sh; then oldmyuname='' if $contains myuname= ../config.sh >/dev/null 2>&1; then eval "old`grep myuname= ../config.sh`" @@ -1374,12 +1433,13 @@ if test -f config.sh; then case "$ans" in n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;; *) echo "Fetching default answers from your old config.sh file..." >&4 - tmp="$n" - tans="$c" + tmp_n="$n" + tmp_c="$c" . ./config.sh + test "$override" && . UU/$optdef cp config.sh UU - n="$tmp" - c="$tans" + n="$tmp_n" + c="$tmp_c" hint=previous ;; esac @@ -1401,7 +1461,8 @@ EOM $test -f /dnix && osname=dnix $test -f /unicos && osname=unicos && osvers=`$uname -r` $test -f /bin/mips && /bin/mips && osname=mips - $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4 + $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \ + $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4 $test -d /usr/apollo/bin && osname=apollo $test -f /etc/saf/_sactab && osname=svr4 $test -d /usr/include/minix && osname=minix @@ -1419,17 +1480,18 @@ EOM [23]100) osname=mips ;; next*) osname=next ;; news*) osname=news ;; - i386*) if $test -f /etc/kconfig; then - osname=isc + i386*) + if $test -f /etc/kconfig; then + osname=isc if test "$lns" = "ln -s"; then osvers=4 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then osvers=3 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then osvers=2 - fi - fi - ;; + fi + fi + ;; esac case "$1" in @@ -1460,12 +1522,14 @@ EOM *.08.*) osvers=9 ;; *.09.*) osvers=9 ;; *.10.*) osvers=10 ;; + *) osvers="$3" ;; esac ;; irix) osname=irix case "$3" in 4*) osvers=4 ;; 5*) osvers=5 ;; + *) osvers="$3" ;; esac ;; linux) osname=linux @@ -1475,8 +1539,8 @@ EOM esac ;; netbsd*) osname=netbsd - osvers="$3" - ;; + osvers="$3" + ;; bsd386) osname=bsd386 osvers=`$uname -r` ;; @@ -1484,6 +1548,7 @@ EOM solaris) osname=solaris case "$3" in 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;; + *) osvers="$3" ;; esac ;; sunos) osname=sunos @@ -1499,27 +1564,22 @@ EOM 2*) osvers=2 ;; 3*) osvers=3 ;; 4*) osvers=4 ;; + *) osvers="$3" ;; esac ;; ultrix) osname=ultrix - case "$3" in - 1*) osvers=1 ;; - 2*) osvers=2 ;; - 3*) osvers=3 ;; - 4*) osvers=4 ;; - esac + osvers="$3" ;; osf1) case "$5" in alpha) osname=dec_osf case "$3" in - [vt]1\.*) osvers=1 ;; - [vt]2\.*) osvers=2 ;; - [vt]3\.*) osvers=3 ;; + [vt]1\.*) osvers=1 ;; + [vt]2\.*) osvers=2 ;; + [vt]3\.*) osvers=3 ;; esac - ;; - hp*) osname=hp_osf1 ;; # TR - mips) osname=mips_osf1 ;; # TR - # TR = Technology Releases: unsupported + ;; + hp*) osname=hp_osf1 ;; + mips) osname=mips_osf1 ;; esac ;; uts) osname=uts @@ -1541,9 +1601,9 @@ EOM : Check for ESIX if test -f /stand/boot ; then eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot` - if test -n $INITPROG -a -f $INITPROG; then - isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'` - if test -n $isesix; then + if test -n "$INITPROG" -a -f "$INITPROG"; then + isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'` + if test -n "$isesix"; then osname=esix4 fi fi @@ -1582,7 +1642,7 @@ EOM esac else if test -f /vmunix -a -f news_os.sh; then - (what /vmunix | tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1 + (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then osname=news_os fi @@ -1594,12 +1654,12 @@ EOM : specified already. case "$hintfile" in ''|' ') - file=`echo "${osname}_${osvers}" | sed -e 's@\.@_@g' -e 's@_$@@'` + file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'` : Also try without trailing minor version numbers. - xfile=`echo $file | sed -e 's@_[^_]*$@@'` - xxfile=`echo $xfile | sed -e 's@_[^_]*$@@'` - xxxfile=`echo $xxfile | sed -e 's@_[^_]*$@@'` - xxxxfile=`echo $xxxfile | sed -e 's@_[^_]*$@@'` + xfile=`echo $file | $sed -e 's@_[^_]*$@@'` + xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'` + xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'` + xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'` case "$file" in '') dflt=none ;; *) case "$osvers" in @@ -1626,7 +1686,7 @@ EOM esac ;; *) - dflt=`echo $hintfile | sed 's/\.sh$//'` + dflt=`echo $hintfile | $sed 's/\.sh$//'` ;; esac @@ -1679,15 +1739,16 @@ cd UU *) echo " " echo "Fetching default answers from $config_sh..." >&4 - tmp="$n" - tans="$c" + tmp_n="$n" + tmp_c="$c" cd .. cp $config_sh config.sh 2>/dev/null . ./config.sh cd UU + test "$override" && . ./$optdef cp ../config.sh . - n="$tmp" - c="$tans" + n="$tmp_n" + c="$tmp_c" hint=previous ;; esac @@ -1700,15 +1761,16 @@ done cat << EOM Configure uses the operating system name and version to set some defaults. -Say "none" to leave it blank. +The default value is probably right if the name rings a bell. Otherwise, +since spelling matters for me, either accept the default or answer "none" +to leave it blank. EOM - case "$osname" in ''|' ') case "$hintfile" in ''|' '|none) dflt=none ;; - *) dflt=`echo $hintfile | sed -e 's/\.sh$//' -e 's/_.*$//'` ;; + *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;; esac ;; *) dflt="$osname" ;; @@ -1716,8 +1778,8 @@ esac rp="Operating system name?" . ./myread case "$ans" in - none) osname='' ;; - *) osname="$ans" ;; +none) osname='' ;; +*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;; esac : who configured the system cf_time=`$date 2>&1` @@ -1898,6 +1960,7 @@ echo exit 1 >osf1 echo exit 1 >eunice echo exit 1 >xenix echo exit 1 >venix +d_bsd="$undef" $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 then @@ -1919,6 +1982,7 @@ elif test `echo abc | tr a-z A-Z` = Abc ; then fi elif $contains SIGTSTP foo >/dev/null 2>&1 ; then echo "Looks kind of like a BSD system, but we'll see..." + d_bsd="$define" echo exit 0 >bsd else echo "Looks kind of like a Version 7 system, but we'll see..." @@ -1956,7 +2020,7 @@ if test -f /venix; then echo exit 0 >venix else echo " " - if xenix; then + if ./xenix; then : null else echo "Nor is it Venix..." @@ -1968,7 +2032,7 @@ $rm -f foo : see if we need a special compiler echo " " -if usg; then +if ./usg; then case "$cc" in '') case "$Mcc" in /*) dflt='Mcc';; @@ -2008,18 +2072,19 @@ else . ./myread cc="$ans" fi -echo "Checking if you are using GNU cc ..." >&4 +echo " " +echo "Checking for GNU cc in disguise and/or its version number..." >&4 $cat >gccvers.c <<EOM #include <stdio.h> int main() { #ifdef __GNUC__ #ifdef __VERSION__ -printf("%s\n", __VERSION__); + printf("%s\n", __VERSION__); #else -printf("%s\n", "1"); + printf("%s\n", "1"); #endif #endif -return 0; + exit(0); } EOM if $cc -o gccvers gccvers.c >/dev/null 2>&1; then @@ -2029,7 +2094,7 @@ if $cc -o gccvers gccvers.c >/dev/null 2>&1; then *) echo "You are using GNU cc $gccversion." ;; esac else - echo "I can't compile the test program. I'll assume it's not GNU cc." + echo "I can't compile the test program -- Assuming it isn't GNU cc." fi $rm -f gccvers* case "$gccversion" in @@ -2057,9 +2122,6 @@ rp="Do you expect to run these scripts and binaries on multiple machines?" . ./myread case "$ans" in y*) d_portable="$define" - for file in $loclist $trylist; do - eval $file="\$file" - done ;; *) d_portable="$undef" ;; esac @@ -2117,6 +2179,13 @@ orig_rp="$rp" orig_dflt="$dflt" case "$fn" in +*\(*) + expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok + fn=`echo $fn | sed 's/(.*)//'` + ;; +esac + +case "$fn" in *:*) loc_file=`expr $fn : '.*:\(.*\)'` fn=`expr $fn : '\(.*\):.*'` @@ -2171,6 +2240,13 @@ while test "$type"; do true) rp="$rp (~name ok)";; esac . UU/myread + if test -f UU/getfile.ok && \ + $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1 + then + value="$ans" + ansexp="$ans" + break + fi case "$ans" in none) value='' @@ -2188,7 +2264,7 @@ while test "$type"; do case $? in 0) if test "$ans" != "$value"; then - echo "(That is $value on this particular system.)" + echo "(That expands to $value on this system.)" fi ;; *) value="$ans";; @@ -2290,6 +2366,7 @@ cd UU ans="$value" rp="$orig_rp" dflt="$orig_dflt" +rm -f getfile.ok EOSC : What should the include directory be ? @@ -2631,7 +2708,7 @@ esac : flags used in final linking phase case "$ldflags" in -'') if venix; then +'') if ./venix; then dflt='-i -z' else dflt='' @@ -2656,7 +2733,7 @@ rmlist="$rmlist pdp11" : Set private lib path case "$plibpth" in -'') if mips; then +'') if ./mips; then plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib" fi;; esac @@ -2711,10 +2788,12 @@ case "$so" in ;; *) dflt="$so";; esac -$cat << EOM +$cat <<EOM On some systems, shared libraries may be available. Answer 'none' if -you want to suppress searching of shared libraries. +you want to suppress searching of shared libraries for the remaining +of this configuration. + EOM rp='What is the file extension used for shared libraries?' . ./myread @@ -2870,7 +2949,7 @@ case "$libs" in : Handle C library specially below. ;; -l*) - thislib=`echo X$thislib | $sed -e 's/^X//' -e 's/^-l//'` + thislib=`echo $thislib | $sed -e 's/^-l//'` if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then : elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then @@ -2986,6 +3065,7 @@ echo " " $sed 's/^/ /' libnames >&4 echo " " $echo $n "This may take a while...$c" >&4 + nm $nm_opt $* 2>/dev/null >libc.tmp $echo $n ".$c" $grep fprintf libc.tmp > libc.ptf @@ -3140,10 +3220,10 @@ yes) case "$tres" in true) echo "$sym() found." >&4; - case "$was" in $undef) . whoa; esac; eval "$var=\$td";; + case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";; *) echo "$sym() NOT found." >&4; - case "$was" in $define) . whoa; esac; eval "$var=\$tu";; + case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";; esac;; *) case "$was" in @@ -3158,6 +3238,7 @@ eval $inlibc case "$d_gconvert" in $define) + echo "We'll use it to convert floats into a string then." >&4 d_Gconvert="gconvert((x),(n),(t),(b))" ;; *) @@ -3168,24 +3249,25 @@ $define) case "$d_gcvt" in $define) : Test whether gcvt drops a trailing decimal point - cat >try.c <<'EOP' + $cat >try.c <<'EOP' main() { -char buf[64]; -gcvt(1.0, 8, buf); -if (buf[0] != '1' || buf[1] != '\0') - return 1; -gcvt(0.0, 8, buf); -if (buf[0] != '0' || buf[1] != '\0') - return 1; -gcvt(-1.0, 8, buf); -if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0') - return 1; -return 0; + char buf[64]; + gcvt(1.0, 8, buf); + if (buf[0] != '1' || buf[1] != '\0') + exit(1); + gcvt(0.0, 8, buf); + if (buf[0] != '0' || buf[1] != '\0') + exit(1); + gcvt(-1.0, 8, buf); + if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0') + exit(1); + exit(0); } EOP if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then if ./try; then echo "Good, your gcvt() drops a trailing decimal point." + echo "We'll use it to convert floats into a string." >&4 d_Gconvert="gcvt((x),(n),(b))" else echo "But your gcvt() keeps a trailing decimal point". @@ -3200,7 +3282,7 @@ EOP esac case "$d_Gconvert" in '') - echo "I'll use sprintf instead." >&4 + echo "I'll use sprintf instead to convert floats into a string." >&4 d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;; esac @@ -3396,20 +3478,29 @@ fi : determine where public architecture dependent libraries go case "$archname" in '') tpath=`echo $PATH | sed -e 's/:/ /g'` - xxx=`./loc arch blurfl $tpath` - if test -f "$xxx"; then + if xxx=`./loc arch blurfl $tpath`; test -f "$xxx"; then tarchname=`arch` - archname="${tarchname}-${osname}" + archname="${tarchname}-$osname" + elif xxx=`./loc uname blurfl $tpath`; test -f "$xxx" ; then + if uname -m > tmparch 2>&1 ; then + tarchname=`cat tmparch` + archname="${tarchname}-$osname" + fi + rm -f tmparch else archname="$osname" fi ;; esac -case "$privlib" in -'') dflt=`./loc . "." $prefix/lib /usr/local/lib /usr/lib /lib`;; -*) dflt="$privlib/$archname";; +case "$archlib" in +'') + case "$privlib" in + '') dflt=`./loc . "." $prefix/lib /usr/local/lib /usr/lib /lib`;; + *) dflt="$privlib/$archname";; + esac + ;; +*) dflt="$archlib";; esac -fn=d~ cat <<EOM $package contains architecture-dependent library files. If you are @@ -3418,6 +3509,7 @@ these files in a separate location. Otherwise, you can just include them with the rest of the public library files. EOM +fn=d~ rp='Where do you want to put the public architecture-dependent libraries?' . ./getfile archlib="$ans" @@ -3448,34 +3540,33 @@ else d_archlib="$define" fi - : function used to set $1 to $val setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef; case "$val$was" in -$define$undef) . whoa; eval "$var=\$td";; -$undef$define) . whoa; eval "$var=\$tu";; +$define$undef) . ./whoa; eval "$var=\$td";; +$undef$define) . ./whoa; eval "$var=\$tu";; *) eval "$var=$val";; esac' -: Look for GNUC style attribute checking +: Look for GNU-cc style attribute checking echo " " echo "Checking whether your compiler can handle __attribute__ ..." >&4 $cat >attrib.c <<'EOCP' -void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn)); +void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn)); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then if $contains 'warning' attrib.out >/dev/null 2>&1; then - echo "Your C compiler doesn't fully support __attribute__. ." + echo "Your C compiler doesn't fully support __attribute__." val="$undef" else - echo "Your C compiler supports __attribute__. ." + echo "Your C compiler supports __attribute__." val="$define" fi else - echo "Your C compiler doesn't seem to understand __attribute__. ." + echo "Your C compiler doesn't seem to understand __attribute__ at all." val="$undef" fi -set d_attrib +set d_attribut eval $setvar $rm -f attrib* @@ -3507,7 +3598,7 @@ main() exit(0); } EOP - if $cc $ccflags -o set $ldflags set.c $libs >/dev/null 2>&1; then + if $cc $ccflags -o set set.c $ldflags $libs >/dev/null 2>&1; then ./set 2>/dev/null case $? in 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4 @@ -3516,7 +3607,7 @@ EOP val="$define";; esac else - if usg; then + if ./usg; then xxx="USG one, i.e. you use setpgrp()." val="$undef" else @@ -3564,6 +3655,44 @@ rp="What is the size of an integer (in bytes)?" intsize="$ans" $rm -f try.c try +: see if signal is declared as pointer to function returning int or void +echo " " +xxx=`./findhdr signal.h` +$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null +if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then + echo "You have int (*signal())() instead of void." >&4 + val="$undef" +elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then + echo "You have void (*signal())() instead of int." >&4 + val="$define" +elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then + echo "You have int (*signal())() instead of void." >&4 + val="$undef" +else + case "$d_voidsig" in + '') + echo "I can't determine whether signal handler returns void or int..." >&4 + dflt=void + rp="What type does your signal handler return?" + . ./myread + case "$ans" in + v*) val="$define";; + *) val="$undef";; + esac;; + "$define") + echo "As you already told me, signal handler returns void." >&4;; + *) + echo "As you already told me, signal handler returns int." >&4;; + esac +fi +set d_voidsig +eval $setvar +case "$d_voidsig" in +"$define") signal_t="void";; +*) signal_t="int";; +esac +$rm -f $$.tmp + : check for ability to cast large floats to 32-bit ints. echo " " echo 'Checking whether your C compiler can cast large floats to int32.' >&4 @@ -3575,7 +3704,7 @@ fi $cat >try.c <<EOCP #include <sys/types.h> #include <signal.h> -blech() { exit(3); } +$signal_t blech() { exit(3); } main() { $xxx i32; @@ -3614,9 +3743,10 @@ $rm -f try try.* : check for ability to cast negative floats to unsigned echo " " echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4 -$cat >try.c <<'EOCP' +$cat >try.c <<EOCP +#include <sys/types.h> #include <signal.h> -blech() { exit(3); } +$signal_t blech() { exit(3); } main() { double f = -123; @@ -3659,6 +3789,7 @@ if $cc -o try $ccflags try.c >/dev/null 2>&1; then ./try castflags=$? else + echo "(I can't seem to compile the test program--assuming it can't)" castflags=3 fi case "$castflags" in @@ -3673,27 +3804,6 @@ set d_castneg eval $setvar $rm -f try.* -: see if sprintf is declared as int or pointer to char -echo " " -$cat >ucbsprf.c <<'EOF' -main() -{ - int sprintf(); - char buf[10]; - exit((unsigned long)sprintf(buf,"%s","foo") > 10L); -} -EOF -if $cc ucbsprf.c -o ucbsprf >/dev/null 2>&1 && ./ucbsprf; then - echo "Your sprintf() returns (int)." >&4 - val="$undef" -else - echo "Your sprintf() returns (char*)." >&4 - val="$define" -fi -set d_charsprf -eval $setvar -$rm -f ucbsprf* - : see if vprintf exists echo " " if set vprintf val -f d_vprintf; eval $csym; $val; then @@ -3822,10 +3932,10 @@ while $test "$cont"; do var=$2; eval "was=\$$2"; if $test "$xxx" && $test -r "$xxx"; then eval $xxf; - eval "case \"\$$var\" in $undef) . whoa; esac"; eval "$var=\$td"; + eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td"; cont=""; else eval $xxnf; - eval "case \"\$$var\" in $define) . whoa; esac"; eval "$var=\$tu"; fi; + eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi; set $yyy; shift; shift; yyy=$@; case $# in 0) cont="";; 2) xxf="echo \"but I found <\$1> $instead.\" >&4"; @@ -3836,7 +3946,7 @@ while $test "$cont"; do done; while $test "$yyy"; do set $yyy; var=$2; eval "was=\$$2"; - eval "case \"\$$var\" in $define) . whoa; esac"; eval "$var=\$tu"; + eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; set $yyy; shift; shift; yyy=$@; done' @@ -3935,7 +4045,8 @@ $rm -f try.c : see if the directory entry stores field length echo " " -if $contains 'd_namlen' $xinc >/dev/null 2>&1; then +$cppstdin $cppflags $cppminus < "$xinc" > try.c +if $contains 'd_namlen' try.c >/dev/null 2>&1; then echo "Good, your directory entry keeps length information in d_namlen." >&4 val="$define" else @@ -3944,6 +4055,7 @@ else fi set d_dirnamlen eval $setvar +$rm -f try.c : see if dlerror exists set dlerror d_dlerror @@ -3972,14 +4084,14 @@ $undef|n|false) *) dflt='n' case "$d_dlopen" in - define) dflt='y' ;; - esac + $define) dflt='y' ;; + esac case "$i_dld" in - define) dflt='y' ;; - esac - : Does a dl_xxx.xs file exist for this operating system - $test -f ../$dldir/dl_${osname}.xs && dflt='y' - ;; + $define) dflt='y' ;; + esac + : Does a dl_xxx.xs file exist for this operating system + $test -f ../$dldir/dl_${osname}.xs && dflt='y' + ;; esac rp="Do you wish to use dynamic loading?" . ./myread @@ -4018,24 +4130,17 @@ To use no flags, say "none". EOM case "$cccdlflags" in - ''|' ') case "$osname" in - hpux) dflt='+z' ;; - next) dflt='none' ;; - sunos) - case "$cc" in - *gcc*) dflt='-fpic' ;; - *) dflt='-pic' ;; - esac - ;; - solaris) - case "$cc" in - *gcc*) dflt='-fpic' ;; - *) dflt='-K pic' ;; - esac - ;; - *) dflt='none' ;; - esac - ;; + ''|' ') case "$cc" in + *gcc*) dflt='-fpic' ;; + *) case "$osname" in + hpux) dflt='+z' ;; + next) dflt='none' ;; + solaris) dflt='-K pic' ;; + sunos) dflt='-pic' ;; + svr4*|esix*) dflt='-Kpic' ;; + *) dflt='none' ;; + esac ;; + esac ;; *) dflt="$cccdlflags" ;; esac rp="Any special flags to pass to $cc -c to compile shared library modules?" @@ -4047,11 +4152,11 @@ EOM cat << 'EOM' -Some systems may require passing special flags to ld to create a shared -library. If your ld flags include -L/local/path options to locate libraries -outside your loader's normal search path, you may need to specify those --L options here as well. -To use no flags, say "none". +Some systems may require passing special flags to ld to create a +library that can be dynamically loaded. If your ld flags include +-L/other/path options to locate libraries outside your loader's normal +search path, you may need to specify those -L options here as well. To +use no flags, say "none". EOM case "$lddlflags" in @@ -4059,13 +4164,14 @@ EOM hpux) dflt='-b' ;; next) dflt='none' ;; solaris) dflt='-G' ;; - sunos) dflt='none' ;; + sunos) dflt='-assert nodefinitions' ;; + svr4*|esix*) dflt="-G $ldflags" ;; *) dflt='none' ;; esac ;; *) dflt="$lddlflags" ;; esac - rp="Any special flags to pass to ld to create a shared library?" + rp="Any special flags to pass to ld to create a dynamically loaded library?" . ./myread case "$ans" in none) lddlflags='' ;; @@ -4080,16 +4186,13 @@ say "none". EOM case "$ccdlflags" in - ''|' ') - case "$osname" in - hpux) dflt='none' ;; - next) dflt='none' ;; - sunos) dflt='none' ;; - *) dflt='none' ;; - esac - ;; - *) dflt="$ccdlflags" - ;; + ''|' ') case "$osname" in + hpux) dflt='none' ;; + next) dflt='none' ;; + sunos) dflt='none' ;; + *) dflt='none' ;; + esac ;; + *) dflt="$ccdlflags" ;; esac rp="Any special flags to pass to $cc to use dynamic loading?" . ./myread @@ -4105,6 +4208,50 @@ EOM ;; esac +val="$undef" +case "$osname" in +esix*|svr4*) + case "$usedl" in + $define) + $cat <<EOM + +System V Release 4 systems can support dynamic loading +only if libperl is created as a shared library. + +EOM + val="$define" + ;; + esac ;; +esac +set d_shrplib; eval $setvar +case "$d_shrplib" in +$define) + cat <<EOM >&4 + +Be sure to add the perl source directory to the LD_LIBRARY_PATH +environment variable before running make: + LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH +or + setenv LD_LIBRARY_PATH `cd ..;pwd` + +EOM +;; +esac +case "$d_shrplib" in +$define) + case "$shrpdir" in + "") dflt="$archlib/CORE";; + *) dflt="$shrpdir";; + esac + rp="What directory should we install the shared libperl into?" + fn="d~" + . ./getfile + shrpdir="$ans" + ;; +*) shrpdir='none' + ;; +esac + : see if dlfcn is available set dlfcn.h i_dlfcn eval $inhdr @@ -4210,7 +4357,7 @@ set d_dlsymun eval $setvar : see if setuid scripts can be secure -cat <<EOM +$cat <<EOM Some kernels have a bug that prevents setuid #! scripts from being secure. Some sites have disabled setuid #! scripts because of this. @@ -4227,8 +4374,8 @@ if $test -d /dev/fd; then chmod +x,u+s reflect ./reflect >flect 2>&1 if $contains "/dev/fd" flect >/dev/null; then - echo "Congratulations, your kernel has secure setuid scripts!" >&4 - val="$define" + echo "Congratulations, your kernel has secure setuid scripts!" >&4 + val="$define" else $cat <<EOM If you are not sure if they are secure, I can check but I'll need a @@ -4248,24 +4395,25 @@ EOM "$undef") echo "Well, the $hint value is *not* secure." >&4 dflt=n;; - *) echo "Well, the $hint value *is* secure." >&4 + *) echo "Well, the $hint value *is* secure." >&4 dflt=y;; esac ;; - *) $rm -f reflect flect - echo "#!$ls" >reflect - chmod +x,u+s reflect - echo >flect - chmod a+w flect - echo '"su" will (probably) prompt you for '"$ans's password." - su $ans -c './reflect >flect' - if $contains "/dev/fd" flect >/dev/null; then + *) + $rm -f reflect flect + echo "#!$ls" >reflect + chmod +x,u+s reflect + echo >flect + chmod a+w flect + echo '"su" will (probably) prompt you for '"$ans's password." + su $ans -c './reflect >flect' + if $contains "/dev/fd" flect >/dev/null; then echo "Okay, it looks like setuid scripts are secure." >&4 dflt=y - else + else echo "I don't think setuid scripts are secure." >&4 dflt=n - fi + fi ;; esac rp='Does your kernel have *secure* setuid scripts?' @@ -4285,8 +4433,15 @@ eval $setvar $rm -f reflect flect : now see if they want to do setuid emulation -cat <<EOM - +echo " " +val="$undef" +case "$d_suidsafe" in +"$define") + val="$undef" + echo "No need to emulate SUID scripts since they are secure here." >& 4 + ;; +*) + $cat <<EOM Some systems have disabled setuid scripts, especially systems where setuid scripts cannot be secure. On systems where setuid scripts have been disabled, the setuid/setgid bits on scripts are currently @@ -4295,13 +4450,6 @@ setuid/setgid in a secure fashion. This emulation will only work if setuid scripts have been disabled in your kernel. EOM -val="$undef" -case "$d_suidsafe" in -"$define") - val="$undef" - echo "No need to emulate SUID scripts since they are secure here." >& 4 - ;; -*) case "$d_dosuid" in "$define") dflt=y ;; *) dflt=n ;; @@ -5297,8 +5445,8 @@ typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@; case "$inclist" in "") inclist="sys/types.h";; esac; -eval "val=\$$var"; -case "$val" in +eval "varval=\$$var"; +case "$varval" in "") $rm -f temp.c; for inc in $inclist; do @@ -5311,7 +5459,7 @@ case "$val" in eval "$var=$def"; fi; $rm -f temp.?;; -*) eval "$var=$val";; +*) eval "$var=$varval";; esac' : see if this is a sys/times.h system @@ -5417,7 +5565,7 @@ case "$myhostname" in *) cont='';; esac if $test "$cont"; then - if xenix; then + if ./xenix; then echo 'Oh, dear. Maybe "/etc/systemid" is the key...' if tans=`cat /etc/systemid 2>&1` ; then myhostname=$tans @@ -5460,14 +5608,6 @@ fi set $myhostname myhostname=$1 -: translate upper to lower if necessary -case "$myhostname" in -*[A-Z]*) - echo "(Normalizing case in your host name)" - myhostname=`echo $myhostname | tr '[A-Z]' '[a-z]'` - ;; -esac - : verify guess if $test "$myhostname" ; then dflt=y @@ -5487,11 +5627,19 @@ while $test "X$myhostname" = X ; do myhostname="$ans" done +: translate upper to lower if necessary +case "$myhostname" in +*[A-Z]*) + echo "(Normalizing case in your host name)" + myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'` + ;; +esac + : a little sanity check here case "$phostname" in '') ;; *) - case `$phostname | tr '[A-Z]' '[a-z]'` in + case `$phostname | ./tr '[A-Z]' '[a-z]'` in $myhostname$mydomain|$myhostname) ;; *) case "$phostname" in @@ -5512,7 +5660,7 @@ echo " " if false; then : dummy stub to allow use of elif elif set uname val -f d_uname; eval $csym; $val; then - if xenix; then + if ./xenix; then $cat <<'EOM' uname() was found, but you're running xenix, and older versions of xenix have a broken uname(). If you don't really know whether your xenix is old @@ -5642,44 +5790,6 @@ esac set d_void_closedir eval $setvar $rm -f closedir* -: see if signal is declared as pointer to function returning int or void -echo " " -xxx=`./findhdr signal.h` -$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null -if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then - echo "You have int (*signal())() instead of void." >&4 - val="$undef" -elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then - echo "You have void (*signal())() instead of int." >&4 - val="$define" -elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then - echo "You have int (*signal())() instead of void." >&4 - val="$undef" -else - case "$d_voidsig" in - '') - echo "I can't determine whether signal handler returns void or int..." >&4 - dflt=void - rp="What type does your signal handler return?" - . ./myread - case "$ans" in - v*) val="$define";; - *) val="$undef";; - esac;; - "$define") - echo "As you already told me, signal handler returns void." >&4;; - *) - echo "As you already told me, signal handler returns int." >&4;; - esac -fi -set d_voidsig -eval $setvar -case "$d_voidsig" in -"$define") signal_t="void";; -*) signal_t="int";; -esac -$rm -f $$.tmp - : check for volatile keyword echo " " echo 'Checking to see if your C compiler knows about "volatile"...' >&4 @@ -5861,7 +5971,7 @@ $cat >cpp_stuff.c <<'EOCP' RCAT(Rei,ser) ACAT(Cir,cus) EOCP -$cppstdin $cppflags $cppminus < cpp_stuff.c >cpp_stuff.out 2>&1 +$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then echo "Oh! Smells like ANSI's been here." echo "We can catify or stringify, separately or together!" @@ -5878,19 +5988,96 @@ to have to edit the values of CAT[2-5] in config.h... EOM cpp_stuff="/* Help! How do we handle cpp_stuff? */*/" fi +$rm -f cpp_stuff.* + +: see if this is a db.h system +set db.h i_db +eval $inhdr + +case "$i_db" in +define) + : Check the return type needed for hash + echo "Checking return type needed for hash for Berkeley DB ..." >&4 + cat >try.c <<'EOCP' +#include <sys/types.h> +#include <db.h> +u_int32_t +hash_cb (ptr, size) +const void * ptr ; +size_t size ; +{ +} +HASHINFO info ; +main() +{ + info.hash = hash_cb ; +} +EOCP + if $cc $ccflags -c try.c >try.out 2>&1 ; then + if $contains warning try.out >>/dev/null 2>&1 ; then + db_hashtype='int' + else + db_hashtype='u_int32_t' + fi + else + echo "I can't seem to compile the test program." >&4 + db_hashtype=int + fi + $rm -f try.[co] + echo "Your version of Berkeley DB uses $db_hashtype for hash." + ;; +*) db_hashtype=int + ;; +esac + +case "$i_db" in +define) + : Check the return type needed for prefix + echo "Checking return type needed for prefix for Berkeley DB ..." >&4 + cat >try.c <<'EOCP' +#include <sys/types.h> +#include <db.h> +size_t +prefix_cb (key1, key2) +const DBT * key1 ; +const DBT * key2 ; +{ +} +BTREEINFO info ; +main() +{ + info.prefix = prefix_cb ; +} +EOCP + if $cc $ccflags -c try.c >try.out 2>&1 ; then + if $contains warning try.out >>/dev/null 2>&1 ; then + db_prefixtype='int' + else + db_prefixtype='size_t' + fi + else + echo "I can't seem to compile the test program." >&4 + db_prefixtype='int' + fi + $rm -f try.[co] + echo "Your version of Berkeley DB uses $db_prefixtype for prefix." + ;; +*) db_prefixtype='int' + ;; +esac : check for void type echo " " +echo "Checking to see how well your C compiler groks the void type..." >&4 +echo " " $cat >&4 <<EOM -Checking to see how well your C compiler groks the void type... - Support flag bits are: 1: basic void declarations. 2: arrays of pointers to functions returning void. 4: operations between pointers to and addresses of void functions. 8: generic void pointers. - EOM +echo " " case "$voidflags" in '') $cat >try.c <<'EOCP' @@ -5968,21 +6155,65 @@ rp="Your void support flags add up to what?" voidflags="$ans" $rm -f try.* .out -: see if this is a db.h system -set db.h i_db -eval $inhdr - -: see if we have the old dbm -set dbm.h i_dbm +: see if dbm.h is available +set dbm.h t_dbm eval $inhdr +case "$t_dbm" in +$define) + : see if dbmclose exists + set dbmclose d_dbmclose + eval $inlibc + case "$d_dbmclose" in + $undef) + t_dbm="$undef" + echo "We won't be including <dbm.h>" + ;; + esac + ;; +esac +val="$t_dbm" +set i_dbm +eval $setvar : see if ndbm.h is available -set ndbm.h i_ndbm +set ndbm.h t_ndbm eval $inhdr +case "$t_ndbm" in +$define) + : see if dbm_open exists + set dbm_open d_dbm_open + eval $inlibc + case "$d_dbm_open" in + $undef) + t_ndbm="$undef" + echo "We won't be including <ndbm.h>" + ;; + esac + ;; +esac +val="$t_ndbm" +set i_ndbm +eval $setvar : see if gdbm.h is available -set gdbm.h i_gdbm +set gdbm.h t_gdbm eval $inhdr +case "$t_gdbm" in +$define) + : see if gdbm_open exists + set gdbm_open d_gdbm_open + eval $inlibc + case "$d_gdbm_open" in + $undef) + t_gdbm="$undef" + echo "We won't be including <gdbm.h>" + ;; + esac + ;; +esac +val="$t_gdbm" +set i_gdbm +eval $setvar echo " " echo "Looking for extensions..." >&4 @@ -6179,7 +6410,7 @@ $cat <<EOM $package has manual pages available in source form. EOM -case "$_nroff" in +case "$nroff" in nroff) echo "However, you don't have nroff, so they're probably useless to you." case "$mansrc" in @@ -6252,6 +6483,19 @@ rp="What type is used for file modes?" . ./myread modetype="$ans" +: set the base revision +baserev=5.0 + +: get the patchlevel +echo " " +echo "Getting the current patchlevel..." >&4 +if $test -r ../patchlevel.h;then + patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h` +else + patchlevel=0 +fi +echo "(You have $package $baserev PL$patchlevel.)" + : Cruising for prototypes echo " " echo "Checking out function prototypes..." >&4 @@ -6320,9 +6564,7 @@ $cc $ccflags -c bar1.c >/dev/null 2>&1 $cc $ccflags -c bar2.c >/dev/null 2>&1 $cc $ccflags -c foo.c >/dev/null 2>&1 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1 -if test -n "$ranlib" ; then - orderlib=false -elif $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 && +if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 && ./foobar >/dev/null 2>&1; then echo "ar appears to generate random libraries itself." orderlib=false @@ -6334,16 +6576,15 @@ elif ar ts bar.a >/dev/null 2>&1 && orderlib=false ranlib="ar ts" else - if $test -f /usr/bin/ranlib; then - ranlib=/usr/bin/ranlib - elif $test -f /bin/ranlib; then - ranlib=/bin/ranlib - elif $test -f /usr/local/bin/ranlib; then - ranlib=/usr/local/bin/ranlib - fi - + case "$ranlib" in + :) ranlib='';; + '') + ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin` + $test -f $ranlib || ranlib='' + ;; + esac if $test -n "$ranlib"; then - echo "your system has $ranlib; we'll use that." + echo "your system has '$ranlib'; we'll use that." orderlib=false else echo "your system doesn't seem to support random libraries" @@ -6747,9 +6988,9 @@ fi : see if time exists echo " " -if set time tval -f d_time; eval $csym; $tval; then +if set time val -f d_time; eval $csym; $val; then echo 'time() found.' >&4 - tval="$define" + val="$define" set time_t timetype long stdio.h sys/types.h eval $typedef dflt="$timetype" @@ -6759,10 +7000,9 @@ if set time tval -f d_time; eval $csym; $tval; then timetype="$ans" else echo 'time() not found, hope that will do.' >&4 - tval="$undef" + val="$undef" timetype='int'; fi -val=$tval set d_time eval $setvar @@ -6785,37 +7025,6 @@ rp="What is the type for user ids returned by getuid()?" . ./myread uidtype="$ans" -: determine compiler compiler -case "$yacc" in -'') - dflt=yacc;; -*) - dflt="$yacc";; -esac -echo " " -comp='yacc' -if $test -f "$byacc"; then - dflt="$byacc" - comp="byacc or $comp" -fi -if $test -f "$bison"; then - comp="$comp or bison -y" -fi -rp="Which compiler compiler ($comp) shall I use?" -. ./myread -yacc="$ans" -case "$yacc" in -*bis*) - case "$yacc" in - *-y*) ;; - *) - yacc="$yacc -y" - echo "(Adding -y option to bison to get yacc-compatible behaviour.)" - ;; - esac - ;; -esac - : see if this is a sys/file.h system val='' set sys/file.h val @@ -6932,6 +7141,7 @@ eval $setvar : get C preprocessor symbols handy echo " " +$echo $n "Hmm... $c" echo $al | $tr ' ' '\012' >Cppsym.know $cat <<EOSS >Cppsym $startsh @@ -6978,9 +7188,62 @@ exit \$status EOSS chmod +x Cppsym $eunicefix Cppsym -echo "Your C preprocessor defines the following symbols:" -Cppsym -l $al >Cppsym.true -$cat Cppsym.true +./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true + +: now check the C compiler for additional symbols +$cat >ccsym <<EOS +$startsh +$cat >tmp.c <<EOF +extern int foo; +EOF +for i in \`$cc -v -c tmp.c 2>&1\` +do + case "\$i" in + -D*) echo "\$i" | $sed 's/^-D//';; + -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';; + esac +done +$rm -f try.c +EOS +chmod +x ccsym +$eunicefix ccsym +./ccsym | $sort | $uniq >ccsym.raw +$awk '/\=/ { print $0; next } { print $0"=1" }' ccsym.raw >ccsym.list +$awk '{ print $0"=1" }' Cppsym.true >ccsym.true +$comm -13 ccsym.true ccsym.list >ccsym.own +$comm -12 ccsym.true ccsym.list >ccsym.com +$comm -23 ccsym.true ccsym.list >ccsym.cpp +also='' +symbols='symbols' +if $test -z ccsym.raw; then + echo "Your C compiler doesn't seem to define any symbol!" >&4 + echo " " + echo "However, your C preprocessor defines the following ones:" + $cat Cppsym.true +else + if $test -s ccsym.com; then + echo "Your C compiler and pre-processor define these symbols:" + $sed -e 's/\(.*\)=.*/\1/' ccsym.com + also='also ' + symbols='ones' + $test "$silent" || sleep 1 + fi + if $test -s ccsym.cpp; then + $test "$also" && echo " " + echo "Your C pre-processor ${also}defines the following $symbols:" + $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp + also='further ' + $test "$silent" || sleep 1 + fi + if $test -s ccsym.own; then + $test "$also" && echo " " + echo "Your C compiler ${also}defines the following cpp variables:" + $sed -e 's/\(.*\)=1/\1/' ccsym.own + $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true + $test "$silent" || sleep 1 + fi +fi +$rm -f ccsym* : see if this is a termio system val="$undef" @@ -6994,7 +7257,7 @@ fi echo " " case "$val3" in "$define") echo "You have POSIX termios.h... good!" >&4;; -*) if Cppsym pyr; then +*) if ./Cppsym pyr; then case "`/bin/universe`" in ucb) if $test `./findhdr sgtty.h`; then val2="$define" @@ -7011,7 +7274,7 @@ case "$val3" in echo "<termio.h> not found--you could have problems." >&4 fi;; esac - elif usg; then + elif ./usg; then if $test `./findhdr termio.h`; then echo "<termio.h> found." >&4 val="$define" @@ -7210,6 +7473,17 @@ if $test -f config.over; then esac fi +: in case they want portability, strip down executable paths +case "$d_portable" in +"$define") + echo " " + echo "Stripping down executable paths..." >&4 + for file in $loclist $trylist; do + eval $file="\$file" + done + ;; +esac + : create config.sh file echo " " echo "Creating config.sh..." >&4 @@ -7226,149 +7500,89 @@ $startsh # Configured by: $cf_by # Target system: $myuname -dynamic_ext='$dynamic_ext' -extensions='$extensions' -known_extensions='$known_extensions' -static_ext='$static_ext' -useposix='$useposix' -d_eunice='$d_eunice' -d_xenix='$d_xenix' -eunicefix='$eunicefix' -Mcc='$Mcc' -awk='$awk' -bash='$bash' -bison='$bison' -byacc='$byacc' -cat='$cat' -chgrp='$chgrp' -chmod='$chmod' -chown='$chown' -compress='$compress' -cp='$cp' -cpio='$cpio' -cpp='$cpp' -csh='$csh' -date='$date' -echo='$echo' -egrep='$egrep' -emacs='$emacs' -expr='$expr' -find='$find' -flex='$flex' -gcc='$gcc' -grep='$grep' -inews='$inews' -ksh='$ksh' -less='$less' -line='$line' -lint='$lint' -ln='$ln' -lp='$lp' -lpr='$lpr' -ls='$ls' -mail='$mail' -mailx='$mailx' -make='$make' -mkdir='$mkdir' -more='$more' -mv='$mv' -nroff='$nroff' -perl='$perl' -pg='$pg' -pmake='$pmake' -pr='$pr' -rm='$rm' -rmail='$rmail' -sed='$sed' -sendmail='$sendmail' -sh='$sh' -shar='$shar' -sleep='$sleep' -smail='$smail' -sort='$sort' -submit='$submit' -tail='$tail' -tar='$tar' -tbl='$tbl' -test='$test' -touch='$touch' -tr='$tr' -troff='$troff' -uname='$uname' -uniq='$uniq' -uuname='$uuname' -vi='$vi' -zcat='$zcat' -libswanted='$libswanted' -hint='$hint' -myuname='$myuname' -osname='$osname' -osvers='$osvers' Author='$Author' Date='$Date' Header='$Header' Id='$Id' Locker='$Locker' Log='$Log' +Mcc='$Mcc' RCSfile='$RCSfile' Revision='$Revision' Source='$Source' State='$State' afs='$afs' alignbytes='$alignbytes' +aphostname='$aphostname' archlib='$archlib' archlibexp='$archlibexp' archname='$archname' -d_archlib='$d_archlib' -installarchlib='$installarchlib' +awk='$awk' +baserev='$baserev' +bash='$bash' bin='$bin' binexp='$binexp' -installbin='$installbin' +bison='$bison' +byacc='$byacc' byteorder='$byteorder' +c='$c' +castflags='$castflags' +cat='$cat' cc='$cc' -gccversion='$gccversion' +cccdlflags='$cccdlflags' +ccdlflags='$ccdlflags' ccflags='$ccflags' -cppflags='$cppflags' -ldflags='$ldflags' -lkflags='$lkflags' -optimize='$optimize' cf_by='$cf_by' cf_time='$cf_time' +chgrp='$chgrp' +chmod='$chmod' +chown='$chown' +clocktype='$clocktype' +comm='$comm' +compress='$compress' contains='$contains' +cp='$cp' +cpio='$cpio' +cpp='$cpp' cpp_stuff='$cpp_stuff' +cppflags='$cppflags' cpplast='$cpplast' cppminus='$cppminus' cpprun='$cpprun' cppstdin='$cppstdin' +cryptlib='$cryptlib' +csh='$csh' +d_Gconvert='$d_Gconvert' d_access='$d_access' d_alarm='$d_alarm' -d_attrib='$d_attrib' +d_archlib='$d_archlib' +d_attribut='$d_attribut' d_bcmp='$d_bcmp' d_bcopy='$d_bcopy' +d_bsd='$d_bsd' +d_bsdpgrp='$d_bsdpgrp' d_bzero='$d_bzero' d_casti32='$d_casti32' -castflags='$castflags' d_castneg='$d_castneg' -d_charsprf='$d_charsprf' +d_charvspr='$d_charvspr' d_chown='$d_chown' d_chroot='$d_chroot' d_chsize='$d_chsize' d_closedir='$d_closedir' -d_void_closedir='$d_void_closedir' d_const='$d_const' -cryptlib='$cryptlib' d_crypt='$d_crypt' d_csh='$d_csh' d_cuserid='$d_cuserid' d_dbl_dig='$d_dbl_dig' d_difftime='$d_difftime' +d_dirnamlen='$d_dirnamlen' d_dlerror='$d_dlerror' d_dlopen='$d_dlopen' d_dlsymun='$d_dlsymun' d_dosuid='$d_dosuid' -d_suidsafe='$d_suidsafe' d_drem='$d_drem' d_dup2='$d_dup2' +d_eunice='$d_eunice' d_fchmod='$d_fchmod' d_fchown='$d_fchown' d_fcntl='$d_fcntl' @@ -7380,14 +7594,11 @@ d_flexfnam='$d_flexfnam' d_flock='$d_flock' d_fmod='$d_fmod' d_fork='$d_fork' +d_fpathconf='$d_fpathconf' d_fsetpos='$d_fsetpos' -d_Gconvert='$d_Gconvert' d_getgrps='$d_getgrps' d_gethent='$d_gethent' -aphostname='$aphostname' d_gethname='$d_gethname' -d_phostname='$d_phostname' -d_uname='$d_uname' d_getlogin='$d_getlogin' d_getpgrp2='$d_getpgrp2' d_getpgrp='$d_getpgrp' @@ -7395,6 +7606,7 @@ d_getppid='$d_getppid' d_getprior='$d_getprior' d_group='$d_group' d_htonl='$d_htonl' +d_index='$d_index' d_isascii='$d_isascii' d_killpg='$d_killpg' d_link='$d_link' @@ -7417,23 +7629,30 @@ d_msgctl='$d_msgctl' d_msgget='$d_msgget' d_msgrcv='$d_msgrcv' d_msgsnd='$d_msgsnd' +d_mymalloc='$d_mymalloc' d_nice='$d_nice' +d_oldsock='$d_oldsock' d_open3='$d_open3' d_passwd='$d_passwd' -d_fpathconf='$d_fpathconf' d_pathconf='$d_pathconf' d_pause='$d_pause' +d_phostname='$d_phostname' d_pipe='$d_pipe' d_portable='$d_portable' +d_pwage='$d_pwage' +d_pwchange='$d_pwchange' +d_pwclass='$d_pwclass' +d_pwcomment='$d_pwcomment' +d_pwexpire='$d_pwexpire' +d_pwquota='$d_pwquota' d_readdir='$d_readdir' -d_rewinddir='$d_rewinddir' -d_seekdir='$d_seekdir' -d_telldir='$d_telldir' d_readlink='$d_readlink' d_rename='$d_rename' +d_rewinddir='$d_rewinddir' d_rmdir='$d_rmdir' d_safebcpy='$d_safebcpy' d_safemcpy='$d_safemcpy' +d_seekdir='$d_seekdir' d_select='$d_select' d_sem='$d_sem' d_semctl='$d_semctl' @@ -7445,7 +7664,6 @@ d_setlinebuf='$d_setlinebuf' d_setlocale='$d_setlocale' d_setpgid='$d_setpgid' d_setpgrp2='$d_setpgrp2' -d_bsdpgrp='$d_bsdpgrp' d_setpgrp='$d_setpgrp' d_setprior='$d_setprior' d_setregid='$d_setregid' @@ -7458,65 +7676,79 @@ d_setsid='$d_setsid' d_shm='$d_shm' d_shmat='$d_shmat' d_shmatprototype='$d_shmatprototype' -shmattype='$shmattype' d_shmctl='$d_shmctl' d_shmdt='$d_shmdt' d_shmget='$d_shmget' -d_oldsock='$d_oldsock' +d_shrplib='$d_shrplib' d_socket='$d_socket' d_sockpair='$d_sockpair' -sockethdr='$sockethdr' -socketlib='$socketlib' d_statblks='$d_statblks' d_stdstdio='$d_stdstdio' -d_index='$d_index' d_strchr='$d_strchr' d_strcoll='$d_strcoll' d_strctcpy='$d_strctcpy' d_strerrm='$d_strerrm' d_strerror='$d_strerror' -d_sysernlst='$d_sysernlst' -d_syserrlst='$d_syserrlst' d_strxfrm='$d_strxfrm' +d_suidsafe='$d_suidsafe' d_symlink='$d_symlink' d_syscall='$d_syscall' d_sysconf='$d_sysconf' +d_sysernlst='$d_sysernlst' +d_syserrlst='$d_syserrlst' d_system='$d_system' d_tcgetpgrp='$d_tcgetpgrp' d_tcsetpgrp='$d_tcsetpgrp' +d_telldir='$d_telldir' d_time='$d_time' -timetype='$timetype' -clocktype='$clocktype' d_times='$d_times' d_truncate='$d_truncate' d_tzname='$d_tzname' d_umask='$d_umask' +d_uname='$d_uname' d_vfork='$d_vfork' -usevfork='$usevfork' +d_void_closedir='$d_void_closedir' d_voidsig='$d_voidsig' -signal_t='$signal_t' +d_voidtty='$d_voidtty' d_volatile='$d_volatile' -d_charvspr='$d_charvspr' d_vprintf='$d_vprintf' d_wait4='$d_wait4' d_waitpid='$d_waitpid' d_wcstombs='$d_wcstombs' d_wctomb='$d_wctomb' +d_xenix='$d_xenix' +date='$date' +db_hashtype='$db_hashtype' +db_prefixtype='$db_prefixtype' +defvoidused='$defvoidused' +direntrytype='$direntrytype' dlext='$dlext' -cccdlflags='$cccdlflags' -ccdlflags='$ccdlflags' dlsrc='$dlsrc' -lddlflags='$lddlflags' -usedl='$usedl' +dynamic_ext='$dynamic_ext' +echo='$echo' +egrep='$egrep' +emacs='$emacs' +eunicefix='$eunicefix' +expr='$expr' +extensions='$extensions' +find='$find' +flex='$flex' fpostype='$fpostype' +gcc='$gcc' +gccversion='$gccversion' gidtype='$gidtype' +glibpth='$glibpth' +grep='$grep' +groupcat='$groupcat' groupstype='$groupstype' h_fcntl='$h_fcntl' h_sysfile='$h_sysfile' +hint='$hint' +hostcat='$hostcat' +huge='$huge' +i_bsdioctl='$i_bsdioctl' i_db='$i_db' i_dbm='$i_dbm' -d_dirnamlen='$d_dirnamlen' -direntrytype='$direntrytype' i_dirent='$i_dirent' i_dld='$i_dld' i_dlfcn='$i_dlfcn' @@ -7531,111 +7763,158 @@ i_memory='$i_memory' i_ndbm='$i_ndbm' i_neterrno='$i_neterrno' i_niin='$i_niin' -i_sysin='$i_sysin' -d_pwage='$d_pwage' -d_pwchange='$d_pwchange' -d_pwclass='$d_pwclass' -d_pwcomment='$d_pwcomment' -d_pwexpire='$d_pwexpire' -d_pwquota='$d_pwquota' i_pwd='$i_pwd' +i_sgtty='$i_sgtty' +i_stdarg='$i_stdarg' i_stddef='$i_stddef' i_stdlib='$i_stdlib' i_string='$i_string' -strings='$strings' i_sysdir='$i_sysdir' i_sysfile='$i_sysfile' -d_voidtty='$d_voidtty' -i_bsdioctl='$i_bsdioctl' i_sysfilio='$i_sysfilio' +i_sysin='$i_sysin' i_sysioctl='$i_sysioctl' -i_syssockio='$i_syssockio' i_sysndir='$i_sysndir' i_sysparam='$i_sysparam' i_sysselct='$i_sysselct' +i_syssockio='$i_syssockio' +i_systime='$i_systime' +i_systimek='$i_systimek' i_systimes='$i_systimes' -i_sgtty='$i_sgtty' i_termio='$i_termio' i_termios='$i_termios' -i_systime='$i_systime' -i_systimek='$i_systimek' i_time='$i_time' -timeincl='$timeincl' i_unistd='$i_unistd' i_utime='$i_utime' -i_stdarg='$i_stdarg' i_varargs='$i_varargs' i_varhdr='$i_varhdr' i_vfork='$i_vfork' +incpath='$incpath' +inews='$inews' +installarchlib='$installarchlib' +installbin='$installbin' +installmansrc='$installmansrc' +installprivlib='$installprivlib' +installscript='$installscript' intsize='$intsize' +known_extensions='$known_extensions' +ksh='$ksh' +large='$large' +lddlflags='$lddlflags' +ldflags='$ldflags' +less='$less' libc='$libc' -glibpth='$glibpth' libpth='$libpth' -plibpth='$plibpth' -xlibpth='$xlibpth' libs='$libs' +libswanted='$libswanted' +line='$line' +lint='$lint' +lkflags='$lkflags' +ln='$ln' lns='$lns' +lp='$lp' +lpr='$lpr' +ls='$ls' lseektype='$lseektype' -d_mymalloc='$d_mymalloc' +mail='$mail' +mailx='$mailx' +make='$make' mallocobj='$mallocobj' mallocsrc='$mallocsrc' malloctype='$malloctype' -usemymalloc='$usemymalloc' -installmansrc='$installmansrc' manext='$manext' mansrc='$mansrc' mansrcexp='$mansrcexp' -huge='$huge' -large='$large' medium='$medium' +mips='$mips' +mips_type='$mips_type' +mkdir='$mkdir' models='$models' -small='$small' -split='$split' modetype='$modetype' +more='$more' +mv='$mv' mydomain='$mydomain' myhostname='$myhostname' -phostname='$phostname' -c='$c' +myuname='$myuname' n='$n' -groupcat='$groupcat' -hostcat='$hostcat' -passcat='$passcat' +nm_opt='$nm_opt' +nroff='$nroff' +optimize='$optimize' orderlib='$orderlib' -ranlib='$ranlib' +osname='$osname' +osvers='$osvers' package='$package' -spackage='$spackage' +passcat='$passcat' +patchlevel='$patchlevel' +perl='$perl' +pg='$pg' +phostname='$phostname' +plibpth='$plibpth' +pmake='$pmake' +pr='$pr' prefix='$prefix' -installprivlib='$installprivlib' privlib='$privlib' privlibexp='$privlibexp' prototype='$prototype' randbits='$randbits' -installscript='$installscript' +ranlib='$ranlib' +rm='$rm' +rmail='$rmail' +runnm='$runnm' scriptdir='$scriptdir' scriptdirexp='$scriptdirexp' +sed='$sed' selecttype='$selecttype' +sendmail='$sendmail' +sh='$sh' +shar='$shar' +sharpbang='$sharpbang' +shmattype='$shmattype' +shrpdir='$shrpdir' +shsharp='$shsharp' sig_name='$sig_name' +signal_t='$signal_t' sizetype='$sizetype' +sleep='$sleep' +smail='$smail' +small='$small' so='$so' -sharpbang='$sharpbang' -shsharp='$shsharp' +sockethdr='$sockethdr' +socketlib='$socketlib' +sort='$sort' +spackage='$spackage' spitshell='$spitshell' +split='$split' ssizetype='$ssizetype' startsh='$startsh' +static_ext='$static_ext' stdchar='$stdchar' +strings='$strings' +submit='$submit' sysman='$sysman' +tail='$tail' +tar='$tar' +tbl='$tbl' +test='$test' +timeincl='$timeincl' +timetype='$timetype' +touch='$touch' +tr='$tr' +troff='$troff' uidtype='$uidtype' -nm_opt='$nm_opt' -runnm='$runnm' +uname='$uname' +uniq='$uniq' +usedl='$usedl' +usemymalloc='$usemymalloc' usenm='$usenm' -incpath='$incpath' -mips='$mips' -mips_type='$mips_type' +useposix='$useposix' +usevfork='$usevfork' usrinc='$usrinc' -defvoidused='$defvoidused' +uuname='$uuname' +vi='$vi' voidflags='$voidflags' -yacc='$yacc' -yaccflags='$yaccflags' +xlibpth='$xlibpth' +zcat='$zcat' EOT : add special variables @@ -18,7 +18,7 @@ c2ph.SH program to translate dbx stabs to perl c2ph.doc documentation for c2ph cflags.SH A script that emits C compilation flags per file config.H Sample config.h -config_h.SH Produces config.h +config_h.SH Produces config.h configpm Produces lib/Config.pm cop.h Control operator header cv.h Code value header @@ -155,6 +155,7 @@ ext/util/make_ext Used by Makefile to execute extension Makefiles ext/util/mkbootstrap Turns ext/*/*_BS into bootstrap info form.h Public declarations for the above global.sym Symbols that need hiding when embedded +globals.c File to declare global symbols (for shared library) gv.c Glob value code gv.h Glob value header h2ph.SH A thing to turn C .h files into perl .ph files @@ -180,6 +181,7 @@ hints/altos486.sh Hints for named architecture hints/apollo.sh Hints for named architecture hints/aux.sh Hints for named architecture hints/bsd386.sh Hints for named architecture +hints/convexos.sh Hints for named architecture hints/dec_osf.sh Hints for named architecture hints/dgux.sh Hints for named architecture hints/dnix.sh Hints for named architecture @@ -193,6 +195,7 @@ hints/hpux_9.sh Hints for named architecture hints/i386.sh Hints for named architecture hints/irix_4.sh Hints for named architecture hints/irix_5.sh Hints for named architecture +hints/irix_6.sh Hints for named architecture hints/isc.sh Hints for named architecture hints/isc_2.sh Hints for named architecture hints/linux.sh Hints for named architecture @@ -243,17 +246,17 @@ lib/File/Basename.pm A module to emulate the basename program lib/File/CheckTree.pm Perl module supporting wholesale file mode validation lib/File/Find.pm Routines to do a find lib/FileHandle.pm FileHandle methods -lib/Shell.pm A module to make AUTOLOADEed system() calls lib/Getopt/Long.pm A module to fetch command options (GetOptions) lib/Getopt/Std.pm A module to fetch command options (getopt, getopts) lib/I18N/Collate.pm Routines to do strxfrm-based collation lib/IPC/Open2.pm Open a two-ended pipe lib/IPC/Open3.pm Open a three-ended pipe! -lib/Math/BigInt.pm An arbitrary precision integer arithmetic package lib/Math/BigFloat.pm An arbitrary precision floating-point arithmetic package +lib/Math/BigInt.pm An arbitrary precision integer arithmetic package lib/Math/Complex.pm A Complex package lib/Net/Ping.pm Ping methods lib/Search/Dict.pm A module to do binary search on dictionaries +lib/Shell.pm A module to make AUTOLOADEed system() calls lib/Sys/Hostname.pm Hostname methods lib/Sys/Syslog.pm Perl module supporting syslogging lib/Term/Cap.pm Perl module supporting termcap usage @@ -507,9 +510,9 @@ util.c Utility routines util.h Public declarations for the above vms/config.vms VMS port vms/descrip.mms VMS port +vms/gen_shrfls.pl VMS port vms/genconfig.pl VMS port vms/genopt.com VMS port -vms/gen_shrfls.pl VMS port vms/makefile. VMS port vms/mms2make.pl VMS port vms/perlshr.c VMS port @@ -524,6 +527,7 @@ writemain.SH Generate perlmain.c from miniperlmain.c+extensions x2p/EXTERN.h Same as above x2p/INTERN.h Same as above x2p/Makefile.SH Precursor to Makefile +x2p/a2p.c A byacc'ed a2p.y x2p/a2p.h Global declarations x2p/a2p.man Manual page for awk to perl translator x2p/a2p.y A yacc grammer for awk diff --git a/MANIFEST.new b/MANIFEST.new new file mode 100644 index 0000000000..78c73a0658 --- /dev/null +++ b/MANIFEST.new @@ -0,0 +1,547 @@ +Artistic The "Artistic License" +Changes Differences between Perl 4 and Perl 5 +Configure Portability tool +Copying The GNU General Public License +Doc/perl5-notes Samples of new functionality +EXTERN.h Included before foreign .h files +INTERN.h Included before domestic .h files +MANIFEST This list of files +Makefile.SH A script that generates Makefile +README The Instructions +README.vms Notes about VMS +Todo The Wishlist +XSUB.h Include file for extension subroutines +autosplit Splits up autoloader functions +av.c Array value code +av.h Array value header +c2ph.SH program to translate dbx stabs to perl +c2ph.doc documentation for c2ph +cflags.SH A script that emits C compilation flags per file +config.H Sample config.h +config_h.SH Produces config.h +configpm Produces lib/Config.pm +cop.h Control operator header +cv.h Code value header +deb.c Debugging routines +doSH Script to run all the *.SH files +doio.c I/O operations +doop.c Support code for various operations +dosish.h Some defines for MS/DOSish machines +dump.c Debugging output +eg/ADB An adb wrapper to put in your crash dir +eg/README Intro to example perl scripts +eg/changes A program to list recently changed files +eg/client A sample client +eg/down A program to do things to subdirectories +eg/dus A program to do du -s on non-mounted dirs +eg/findcp A find wrapper that implements a -cp switch +eg/findtar A find wrapper that pumps out a tar file +eg/g/gcp A program to do a global rcp +eg/g/gcp.man Manual page for gcp +eg/g/ged A program to do a global edit +eg/g/ghosts A sample /etc/ghosts file +eg/g/gsh A program to do a global rsh +eg/g/gsh.man Manual page for gsh +eg/muck A program to find missing make dependencies +eg/muck.man Manual page for muck +eg/myrup A program to find lightly loaded machines +eg/nih Script to insert #! workaround +eg/relink A program to change symbolic links +eg/rename A program to rename files +eg/rmfrom A program to feed doomed filenames to +eg/scan/scan_df Scan for filesystem anomalies +eg/scan/scan_last Scan for login anomalies +eg/scan/scan_messages Scan for console message anomalies +eg/scan/scan_passwd Scan for passwd file anomalies +eg/scan/scan_ps Scan for process anomalies +eg/scan/scan_sudo Scan for sudo anomalies +eg/scan/scan_suid Scan for setuid anomalies +eg/scan/scanner An anomaly reporter +eg/server A sample server +eg/shmkill A program to remove unused shared memory +eg/sysvipc/README Intro to Sys V IPC examples +eg/sysvipc/ipcmsg Example of SYS V IPC message queues +eg/sysvipc/ipcsem Example of Sys V IPC semaphores +eg/sysvipc/ipcshm Example of Sys V IPC shared memory +eg/travesty A program to print travesties of its input text +eg/unuc Un-uppercases an all-uppercase text +eg/uudecode A version of uudecode +eg/van/empty A program to empty the trashcan +eg/van/unvanish A program to undo what vanish does +eg/van/vanexp A program to expire vanished files +eg/van/vanish A program to put files in a trashcan +eg/who A sample who program +eg/wrapsuid A setuid script wrapper generator +emacs/cperl-mode An alternate perl-mode +emacs/emacs19 Notes about emacs 19 +emacs/perl-mode.el Emacs major mode for perl +emacs/perldb.el Emacs debugging +emacs/perldb.pl Emacs debugging +emacs/tedstuff Some optional patches +embed.h Maps symbols to safer names +embed_h.sh Produces embed.h +ext/DB_File/DB_File.pm Berkeley DB extension Perl module +ext/DB_File/DB_File.xs Berkeley DB extension external subroutines +ext/DB_File/DB_File_BS Berkeley DB extension mkbootstrap fodder +ext/DB_File/Makefile.PL Berkeley DB extension makefile writer +ext/DB_File/typemap Berkeley DB extension interface types +ext/DynaLoader/DynaLoader.doc Dynamic Loader specification +ext/DynaLoader/DynaLoader.pm Dynamic Loader perl module +ext/DynaLoader/Makefile.PL Dynamic Loader makefile writer +ext/DynaLoader/README Dynamic Loader notes and intro +ext/DynaLoader/dl_aix.xs AIX implementation +ext/DynaLoader/dl_dld.xs GNU dld style implementation +ext/DynaLoader/dl_dlopen.xs BSD/SunOS4&5 dlopen() style implementation +ext/DynaLoader/dl_hpux.xs HP-UX implementation +ext/DynaLoader/dl_next.xs Next implementation +ext/DynaLoader/dl_none.xs Stub implementation +ext/DynaLoader/dl_vms.xs VMS implementation +ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files +ext/Fcntl/Fcntl.pm Fcntl extension Perl module +ext/Fcntl/Fcntl.xs Fcntl extension external subroutines +ext/Fcntl/MANIFEST Fcntl extension file list +ext/Fcntl/Makefile.PL Fcntl extension makefile writer +ext/GDBM_File/GDBM_File.pm GDBM extension Perl module +ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines +ext/GDBM_File/Makefile.PL GDBM extension makefile writer +ext/GDBM_File/typemap GDBM extension interface types +ext/NDBM_File/Makefile.PL NDBM extension makefile writer +ext/NDBM_File/NDBM_File.pm NDBM extension Perl module +ext/NDBM_File/NDBM_File.xs NDBM extension external subroutines +ext/NDBM_File/typemap NDBM extension interface types +ext/ODBM_File/Makefile.PL ODBM extension makefile writer +ext/ODBM_File/ODBM_File.pm ODBM extension Perl module +ext/ODBM_File/ODBM_File.xs ODBM extension external subroutines +ext/ODBM_File/typemap ODBM extension interface types +ext/POSIX/Makefile.PL POSIX extension makefile writer +ext/POSIX/POSIX.pm POSIX extension Perl module +ext/POSIX/POSIX.xs POSIX extension external subroutines +ext/POSIX/typemap POSIX extension interface types +ext/SDBM_File/Makefile.PL SDBM extension makefile writer +ext/SDBM_File/SDBM_File.pm SDBM extension Perl module +ext/SDBM_File/SDBM_File.xs SDBM extension external subroutines +ext/SDBM_File/sdbm/CHANGES SDBM kit +ext/SDBM_File/sdbm/COMPARE SDBM kit +ext/SDBM_File/sdbm/Makefile.PL SDBM kit +ext/SDBM_File/sdbm/README SDBM kit +ext/SDBM_File/sdbm/README.too SDBM kit +ext/SDBM_File/sdbm/biblio SDBM kit +ext/SDBM_File/sdbm/dba.c SDBM kit +ext/SDBM_File/sdbm/dbd.c SDBM kit +ext/SDBM_File/sdbm/dbe.1 SDBM kit +ext/SDBM_File/sdbm/dbe.c SDBM kit +ext/SDBM_File/sdbm/dbm.c SDBM kit +ext/SDBM_File/sdbm/dbm.h SDBM kit +ext/SDBM_File/sdbm/dbu.c SDBM kit +ext/SDBM_File/sdbm/grind SDBM kit +ext/SDBM_File/sdbm/hash.c SDBM kit +ext/SDBM_File/sdbm/linux.patches SDBM kit +ext/SDBM_File/sdbm/makefile.sdbm SDBM kit +ext/SDBM_File/sdbm/pair.c SDBM kit +ext/SDBM_File/sdbm/pair.h SDBM kit +ext/SDBM_File/sdbm/readme.ms SDBM kit +ext/SDBM_File/sdbm/readme.ps SDBM kit +ext/SDBM_File/sdbm/sdbm.3 SDBM kit +ext/SDBM_File/sdbm/sdbm.c SDBM kit +ext/SDBM_File/sdbm/sdbm.h SDBM kit +ext/SDBM_File/sdbm/tune.h SDBM kit +ext/SDBM_File/sdbm/util.c SDBM kit +ext/SDBM_File/typemap SDBM extension interface types +ext/Socket/Makefile.PL Socket extension makefile writer +ext/Socket/Socket.pm Socket extension Perl module +ext/Socket/Socket.xs Socket extension external subroutines +ext/util/extliblist Used by extension Makefile.PL to make lib lists +ext/util/make_ext Used by Makefile to execute extension Makefiles +ext/util/mkbootstrap Turns ext/*/*_BS into bootstrap info +form.h Public declarations for the above +global.sym Symbols that need hiding when embedded +globals.c File to declare global symbols (for shared library) +gv.c Glob value code +gv.h Glob value header +h2ph.SH A thing to turn C .h files into perl .ph files +h2pl/README How to turn .ph files into .pl files +h2pl/cbreak.pl cbreak routines using .ph +h2pl/cbreak2.pl cbreak routines using .pl +h2pl/eg/sizeof.ph Sample sizeof array initialization +h2pl/eg/sys/errno.pl Sample translated errno.pl +h2pl/eg/sys/ioctl.pl Sample translated ioctl.pl +h2pl/eg/sysexits.pl Sample translated sysexits.pl +h2pl/getioctlsizes Program to extract types from ioctl.h +h2pl/mksizes Program to make %sizeof array +h2pl/mkvars Program to make .pl from .ph files +h2pl/tcbreak cbreak test routine using .ph +h2pl/tcbreak2 cbreak test routine using .pl +h2xs Program to make .xs files from C header files +handy.h Handy definitions +hints/3b1.sh Hints for named architecture +hints/3b1cc Hints for named architecture +hints/README.hints Hints for named architecture +hints/aix.sh Hints for named architecture +hints/altos486.sh Hints for named architecture +hints/apollo.sh Hints for named architecture +hints/aux.sh Hints for named architecture +hints/bsd386.sh Hints for named architecture +hints/convexos.sh Hints for named architecture +hints/dec_osf.sh Hints for named architecture +hints/dgux.sh Hints for named architecture +hints/dnix.sh Hints for named architecture +hints/dynix.sh Hints for named architecture +hints/esix4.sh Hints for named architecture +hints/fps.sh Hints for named architecture +hints/freebsd.sh Hints for named architecture +hints/genix.sh Hints for named architecture +hints/greenhills.sh Hints for named architecture +hints/hpux_9.sh Hints for named architecture +hints/i386.sh Hints for named architecture +hints/irix_4.sh Hints for named architecture +hints/irix_5.sh Hints for named architecture +hints/irix_6.sh Hints for named architecture +hints/isc.sh Hints for named architecture +hints/isc_2.sh Hints for named architecture +hints/linux.sh Hints for named architecture +hints/mips.sh Hints for named architecture +hints/mpc.sh Hints for named architecture +hints/ncr_tower.sh Hints for named architecture +hints/netbsd.sh Hints for named architecture +hints/next_3_2.sh Hints for named architecture +hints/opus.sh Hints for named architecture +hints/sco_2_3_0.sh Hints for named architecture +hints/sco_2_3_1.sh Hints for named architecture +hints/sco_2_3_2.sh Hints for named architecture +hints/sco_2_3_3.sh Hints for named architecture +hints/sco_2_3_4.sh Hints for named architecture +hints/sco_3.sh Hints for named architecture +hints/solaris_2.sh Hints for named architecture +hints/stellar.sh Hints for named architecture +hints/sunos_4_0.sh Hints for named architecture +hints/sunos_4_1.sh Hints for named architecture +hints/svr4.sh Hints for named architecture +hints/ti1500.sh Hints for named architecture +hints/titanos.sh Hints for named architecture +hints/ultrix_4.sh Hints for named architecture +hints/unicos.sh Hints for named architecture +hints/unisysdynix.sh Hints for named architecture +hints/utekv.sh Hints for named architecture +hints/uts.sh Hints for named architecture +hv.c Hash value code +hv.h Hash value header +installperl Perl script to do "make install" dirty work +interp.sym Interpreter specific symbols to hide in a struct +ioctl.pl Sample ioctl.pl +keywords.h The keyword numbers +keywords.pl Program to write keywords.h +lib/AnyDBM_File.pm Perl module to emulate dbmopen +lib/AutoLoader.pm Autoloader base class +lib/AutoSplit.pm A module to split up autoload functions +lib/Benchmark.pm A module to time pieces of code and such +lib/Carp.pm Error message base class +lib/Cwd.pm Various cwd routines (getcwd, fastcwd, chdir) +lib/English.pm Readable aliases for short variables +lib/Env.pm Map environment into ordinary variables +lib/Exporter.pm Exporter base class +lib/ExtUtils/MakeMaker.pm Write Makefiles for extensions +lib/ExtUtils/typemap Extension interface types +lib/ExtUtils/xsubpp External subroutine preprocessor +lib/File/Basename.pm A module to emulate the basename program +lib/File/CheckTree.pm Perl module supporting wholesale file mode validation +lib/File/Find.pm Routines to do a find +lib/FileHandle.pm FileHandle methods +lib/Getopt/Long.pm A module to fetch command options (GetOptions) +lib/Getopt/Std.pm A module to fetch command options (getopt, getopts) +lib/I18N/Collate.pm Routines to do strxfrm-based collation +lib/IPC/Open2.pm Open a two-ended pipe +lib/IPC/Open3.pm Open a three-ended pipe! +lib/Math/BigFloat.pm An arbitrary precision floating-point arithmetic package +lib/Math/BigInt.pm An arbitrary precision integer arithmetic package +lib/Math/Complex.pm A Complex package +lib/Net/Ping.pm Ping methods +lib/Search/Dict.pm A module to do binary search on dictionaries +lib/Shell.pm A module to make AUTOLOADEed system() calls +lib/Sys/Hostname.pm Hostname methods +lib/Sys/Syslog.pm Perl module supporting syslogging +lib/Term/Cap.pm Perl module supporting termcap usage +lib/Term/Complete.pm A command completion subroutine +lib/Test/Harness.pm A test harness +lib/Text/Abbrev.pm An abbreviation table builder +lib/Text/ParseWords.pm Perl module to split words on arbitrary delimiter +lib/Text/Soundex.pm Perl module to implement Soundex +lib/Text/Tabs.pm Do expand and unexpand +lib/TieHash.pm Base class for tied hashes +lib/Time/Local.pm Reverse translation of localtime, gmtime +lib/abbrev.pl An abbreviation table builder +lib/assert.pl assertion and panic with stack trace +lib/bigfloat.pl An arbitrary precision floating point package +lib/bigint.pl An arbitrary precision integer arithmetic package +lib/bigrat.pl An arbitrary precision rational arithmetic package +lib/cacheout.pl Manages output filehandles when you need too many +lib/chat2.inter A chat2 with interaction +lib/chat2.pl Randal's famous expect-ish routines +lib/complete.pl A command completion subroutine +lib/ctime.pl A ctime workalike +lib/dotsh.pl Code to "dot" in a shell script +lib/dumpvar.pl A variable dumper +lib/exceptions.pl catch and throw routines +lib/fastcwd.pl a faster but more dangerous getcwd +lib/find.pl A find emulator--used by find2perl +lib/finddepth.pl A depth-first find emulator--used by find2perl +lib/flush.pl Routines to do single flush +lib/ftp.pl FTP code +lib/getcwd.pl A getcwd() emulator +lib/getopt.pl Perl library supporting option parsing +lib/getopts.pl Perl library supporting option parsing +lib/hostname.pl Old hostname code +lib/importenv.pl Perl routine to get environment into variables +lib/integer.pm For "use integer" +lib/less.pm For "use less" +lib/look.pl A "look" equivalent +lib/newgetopt.pl A perl library supporting long option parsing +lib/open2.pl Open a two-ended pipe +lib/open3.pl Open a three-ended pipe +lib/perl5db.pl Perl debugging routines +lib/pwd.pl Routines to keep track of PWD environment variable +lib/shellwords.pl Perl library to split into words with shell quoting +lib/sigtrap.pm For trapping an abort and giving traceback +lib/stat.pl Perl library supporting stat function +lib/strict.pm For "use strict" +lib/subs.pm Declare overriding subs +lib/syslog.pl Perl library supporting syslogging +lib/tainted.pl Old code for tainting +lib/termcap.pl Perl library supporting termcap usage +lib/timelocal.pl Perl library supporting inverse of localtime, gmtime +lib/validate.pl Perl library supporting wholesale file mode validation +makedepend.SH Precursor to makedepend +makedir.SH Precursor to makedir +malloc.c A version of malloc you might not want +mg.c Magic code +mg.h Magic header +miniperlmain.c Basic perl w/o dynamic loading or extensions +mv-if-diff Script to mv a file if it changed +myconfig Prints summary of the current configuration +op.c Opcode syntax tree code +op.h Opcode syntax tree header +opcode.h Automatically generated opcode header +opcode.pl Opcode header generatore +patchlevel.h The current patch level of perl +perl.c main() +perl.h Global declarations +perl_exp.SH Creates list of exported symbols for AIX. +perlsh A poor man's perl shell +perly.c A byacc'ed perly.y +perly.c.diff Fixup perly.c to allow recursion +perly.fixer A program to remove yacc stack limitations +perly.h The header file for perly.c +perly.y Yacc grammar for perl +pl2pm A pl to pm translator +pod/Makefile Make pods into something else +pod/modpods/Abbrev.pod Doc for Abbrev.pm +pod/modpods/AnyDBMFile.pod Doc for AnyDBMFile.pm +pod/modpods/AutoLoader.pod Doc for AutoLoader.pm +pod/modpods/AutoSplit.pod Doc for AutoSplit.pm +pod/modpods/Basename.pod Doc for Basename.pm +pod/modpods/Benchmark.pod Doc for Benchmark.pm +pod/modpods/Carp.pod Doc for Carp.pm +pod/modpods/CheckTree.pod Doc for CheckTree.pm +pod/modpods/Collate.pod Doc for Collate.pm +pod/modpods/Config.pod Doc for Config.pm +pod/modpods/Cwd.pod Doc for Cwd.pm +pod/modpods/DB_File.pod Doc for File.pm +pod/modpods/Dynaloader.pod Doc for Dynaloader.pm +pod/modpods/English.pod Doc for English.pm +pod/modpods/Env.pod Doc for Env.pm +pod/modpods/Exporter.pod Doc for Exporter.pm +pod/modpods/Fcntl.pod Doc for Fcntl.pm +pod/modpods/FileHandle.pod Doc for FileHandle.pm +pod/modpods/Find.pod Doc for Find.pm +pod/modpods/Finddepth.pod Doc for Finddepth.pm +pod/modpods/GetOptions.pod Doc for GetOptions.pm +pod/modpods/Getopt.pod Doc for Getopt.pm +pod/modpods/MakeMaker.pod Doc for MakeMaker.pm +pod/modpods/Open2.pod Doc for Open2.pm +pod/modpods/Open3.pod Doc for Open3.pm +pod/modpods/POSIX.pod Doc for POSIX.pm +pod/modpods/Ping.pod Doc for Ping.pm +pod/modpods/Socket.pod Doc for Socket.pm +pod/modpods/integer.pod Doc for integer.pm +pod/modpods/less.pod Doc for less.pm +pod/modpods/sigtrap.pod Doc for sigtrap.pm +pod/modpods/strict.pod Doc for strict.pm +pod/modpods/subs.pod Doc for subs.pm +pod/perl.pod Top level perl man page +pod/perlapi.pod XS api info +pod/perlbook.pod Book info +pod/perlbot.pod Object-oriented Bag o' Tricks +pod/perlcall.pod Callback info +pod/perldata.pod Data structure info +pod/perldebug.pod Debugger info +pod/perldiag.pod Diagnostic info +pod/perlembed.pod Embedding info +pod/perlform.pod Format info +pod/perlfunc.pod Function info +pod/perlguts.pod Internals info +pod/perlipc.pod IPC info +pod/perlmod.pod Module info +pod/perlobj.pod Object info +pod/perlop.pod Operator info +pod/perlovl.pod Overloading info +pod/perlpod.pod Pod info +pod/perlre.pod Regular expression info +pod/perlref.pod References info +pod/perlrun.pod Execution info +pod/perlsec.pod Security info +pod/perlstyle.pod Style info +pod/perlsub.pod Subroutine info +pod/perlsyn.pod Syntax info +pod/perltrap.pod Trap info +pod/perlvar.pod Variable info +pod/pod2html Translator to turn pod into HTML +pod/pod2man Translator to turn pod into manpage +pod/splitman Splits perlfunc into multiple man pages +pp.c Push/Pop code +pp.h Push/Pop code defs +pp_ctl.c Push/Pop code for control flow +pp_hot.c Push/Pop code for heavily used opcodes +pp_sys.c Push/Pop code for system interaction +proto.h Prototypes +regcomp.c Regular expression compiler +regcomp.h Private declarations for above +regexec.c Regular expression evaluator +regexp.h Public declarations for the above +run.c The interpreter loop +scope.c Scope entry and exit code +scope.h Scope entry and exit header +sv.c Scalar value code +sv.h Scalar value header +t/README Instructions for regression tests +t/TEST The regression tester +t/base/cond.t See if conditionals work +t/base/if.t See if if works +t/base/lex.t See if lexical items work +t/base/pat.t See if pattern matching works +t/base/term.t See if various terms work +t/cmd/elsif.t See if else-if works +t/cmd/for.t See if for loops work +t/cmd/mod.t See if statement modifiers work +t/cmd/subval.t See if subroutine values work +t/cmd/switch.t See if switch optimizations work +t/cmd/while.t See if while loops work +t/comp/cmdopt.t See if command optimization works +t/comp/cpp.t See if C preprocessor works +t/comp/decl.t See if declarations work +t/comp/multiline.t See if multiline strings work +t/comp/package.t See if packages work +t/comp/script.t See if script invokation works +t/comp/term.t See if more terms work +t/io/argv.t See if ARGV stuff works +t/io/dup.t See if >& works right +t/io/fs.t See if directory manipulations work +t/io/inplace.t See if inplace editing works +t/io/pipe.t See if secure pipes work +t/io/print.t See if print commands work +t/io/tell.t See if file seeking works +t/lib/anydbm.t See if AnyDBM_File works +t/lib/bigint.t See if bigint.pl works +t/lib/db-btree.t See if DB_File works +t/lib/db-hash.t See if DB_File works +t/lib/db-recno.t See if DB_File works +t/lib/english.t See if English works +t/lib/gdbm.t See if GDBM_File works +t/lib/ndbm.t See if NDBM_File works +t/lib/odbm.t See if ODBM_File works +t/lib/posix.t See if POSIX works +t/lib/sdbm.t See if SDBM_File works +t/lib/soundex.t See if Soundex works +t/op/append.t See if . works +t/op/array.t See if array operations work +t/op/auto.t See if autoincrement et all work +t/op/chop.t See if chop works +t/op/cond.t See if conditional expressions work +t/op/delete.t See if delete works +t/op/do.t See if subroutines work +t/op/each.t See if associative iterators work +t/op/eval.t See if eval operator works +t/op/exec.t See if exec and system work +t/op/exp.t See if math functions work +t/op/flip.t See if range operator works +t/op/fork.t See if fork works +t/op/glob.t See if <*> works +t/op/goto.t See if goto works +t/op/groups.t See if $( works +t/op/index.t See if index works +t/op/int.t See if int works +t/op/join.t See if join works +t/op/list.t See if array lists work +t/op/local.t See if local works +t/op/magic.t See if magic variables work +t/op/misc.t See if miscellaneous bugs have been fixed +t/op/mkdir.t See if mkdir works +t/op/my.t See if lexical scoping works +t/op/oct.t See if oct and hex work +t/op/ord.t See if ord works +t/op/pack.t See if pack and unpack work +t/op/pat.t See if esoteric patterns work +t/op/push.t See if push and pop work +t/op/quotemeta.t See if quotemeta works +t/op/rand.t See if rand works +t/op/range.t See if .. works +t/op/re_tests Input file for op.regexp +t/op/read.t See if read() works +t/op/readdir.t See if readdir() works +t/op/ref.t See if refs and objects work +t/op/regexp.t See if regular expressions work +t/op/repeat.t See if x operator works +t/op/sleep.t See if sleep works +t/op/sort.t See if sort works +t/op/split.t See if split works +t/op/sprintf.t See if sprintf works +t/op/stat.t See if stat works +t/op/study.t See if study works +t/op/subst.t See if substitution works +t/op/substr.t See if substr works +t/op/time.t See if time functions work +t/op/undef.t See if undef works +t/op/unshift.t See if unshift works +t/op/vec.t See if vectors work +t/op/write.t See if write works +t/re_tests Regular expressions for regexp.t +taint.c Tainting code +toke.c The tokener +unixish.h Defines that are assumed on Unix +util.c Utility routines +util.h Public declarations for the above +vms/config.vms VMS port +vms/descrip.mms VMS port +vms/gen_shrfls.pl VMS port +vms/genconfig.pl VMS port +vms/genopt.com VMS port +vms/makefile. VMS port +vms/mms2make.pl VMS port +vms/perlshr.c VMS port +vms/perlvms.pod VMS port +vms/sockadapt.c VMS port +vms/sockadapt.h VMS port +vms/test.com VMS port +vms/vms.c VMS port +vms/vmsish.h VMS port +vms/writemain.pl VMS port +writemain.SH Generate perlmain.c from miniperlmain.c+extensions +x2p/EXTERN.h Same as above +x2p/INTERN.h Same as above +x2p/Makefile.SH Precursor to Makefile +x2p/a2p.c A byacc'ed a2p.y +x2p/a2p.h Global declarations +x2p/a2p.man Manual page for awk to perl translator +x2p/a2p.y A yacc grammer for awk +x2p/a2py.c Awk compiler, sort of +x2p/cflags.SH A script that emits C compilation flags per file +x2p/find2perl.SH A find to perl translator +x2p/handy.h Handy definitions +x2p/hash.c Associative arrays again +x2p/hash.h Public declarations for the above +x2p/s2p.SH Sed to perl translator +x2p/s2p.man Manual page for sed to perl translator +x2p/str.c String handling package +x2p/str.h Public declarations for the above +x2p/util.c Utility routines +x2p/util.h Public declarations for the above +x2p/walk.c Parse tree walker +xf A script to translate Perl 4 symbols to Perl 5 diff --git a/Makefile.SH b/Makefile.SH index 1144176ec8..b3e5e04cf1 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -22,16 +22,35 @@ case "$d_dosuid" in *) suidperl='';; esac +shrpenv="" +case "$d_shrplib" in +*define*) + patchlevel=`egrep '^#define[ ]+PATCHLEVEL' patchlevel.h \ + | awk '{print $3}'` + case "$patchlevel" in + *[0-9]) plibsuf=.$so.$patchlevel;; + *) plibsuf=.$so;; + esac + case "$shrpdir" in + /usr/lib) ;; + "") ;; + *) shrpenv="env LD_RUN_PATH=$shrpdir";; + esac + pldlflags="$cccdlflags";; +*) plibsuf=.a + pldlflags="";; +esac + : Configure sets byacc=byacc if byacc is not found. We reset it to '' case "$byacc" in -''|'byacc') byacc='';; +'byacc') byacc='';; esac : Prepare dependency lists for Makefile. dynamic_list=' ' for f in $dynamic_ext; do : the dependency named here will never exist - base=`echo "$f" | sed 's/.*\///'` + base=`echo "$f" | sed 's/.*\///'` dynamic_list="$dynamic_list ext/$f/$base.$dlext" done @@ -85,6 +104,9 @@ LDDLFLAGS = $lddlflags CCDLFLAGS = $ccdlflags CCCDLFLAGS = $cccdlflags DLSUFFIX = .$dlext +PLDLFLAGS = $pldlflags +PLIBSUF = $plibsuf +SHRPENV = $shrpenv dynamic_ext = $dynamic_list static_ext = $static_list @@ -125,13 +147,13 @@ h = $(h1) $(h2) $(h3) $(h4) c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c -c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c +c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c globals.c c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c obj1 = $(mallocobj) gv.o toke.o perly.o op.o regcomp.o dump.o util.o mg.o obj2 = hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o -obj3 = doop.o doio.o regexec.o taint.o deb.o +obj3 = doop.o doio.o regexec.o taint.o deb.o globals.o obj = $(obj1) $(obj2) $(obj3) @@ -144,7 +166,7 @@ obj = $(obj1) $(obj2) $(obj3) # Eventually some form of 'make-a-perl' script will automate this # together with linking a perl executable with any desired # static modules. -perllib = libperl.a +perllib = libperl$(PLIBSUF) lintflags = -hbvxac @@ -154,7 +176,7 @@ addedbyconf = UU SHELL = /bin/sh .c.o: - $(CCCMD) $*.c + $(CCCMD) $(PLDLFLAGS) $*.c all: makefile miniperl preplibrary $(public) $(dynamic_ext) @echo " "; echo " Making x2p stuff"; cd x2p; $(MAKE) all @@ -173,11 +195,15 @@ $spitshell >>Makefile <<'!NO!SUBS!' miniperl: $& miniperlmain.o $(perllib) $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain.o $(perllib) $(libs) +miniperlmain.o: miniperlmain.c + $(CCCMD) $(PLDLFLAGS) $*.c + perlmain.c: miniperlmain.c config.sh makefile $(static_ext_autoinit) sh writemain $(DYNALOADER) $(static_ext) > tmp sh mv-if-diff tmp perlmain.c perlmain.o: perlmain.c + $(CCCMD) $(PLDLFLAGS) $*.c # The file ext.libs is a list of libraries that must be linked in # for static extensions, e.g. -lm -lgdbm, etc. The individual @@ -186,7 +212,7 @@ ext.libs: $(static_ext) -@test -f ext.libs || touch ext.libs perl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs - $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) + $(SHRPENV) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) pureperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) @@ -195,8 +221,23 @@ quantperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) $(perllib): $& perl.o $(obj) +!NO!SUBS! + +case "$d_shrplib" in +*define*) +$spitshell >>Makefile <<'!NO!SUBS!' + ld $(LDDLFLAGS) -o $@ perl.o $(obj) +!NO!SUBS! +;; +*) +$spitshell >>Makefile <<'!NO!SUBS!' ar rcu $(perllib) perl.o $(obj) @$(ranlib) $(perllib) +!NO!SUBS! +;; +esac + +$spitshell >>Makefile <<'!NO!SUBS!' # This version, if specified in Configure, does ONLY those scripts which need # set-id emulation. Suidperl must be setuid root. It contains the "taint" @@ -219,7 +260,7 @@ embed.h: embed_h.sh global.sym interp.sym sh embed_h.sh preplibrary: miniperl lib/Config.pm - @test -d lib/auto || mkdir lib/auto + @./makedir lib/auto @echo " AutoSplitting perl library" @./miniperl -Ilib -e 'use AutoSplit; \ autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm @@ -234,9 +275,8 @@ install: all : Only print out the rules for running byacc if the user _has_ byacc. : Otherwise, comment them out. Users who really know what they are : doing can uncomment them and run yacc or bison or whatever. -: Configure sets byacc=byacc if byacc is not found. case "$byacc" in -''|'byacc') +'') comment1='#' comment2='' ;; *) comment1='' @@ -250,7 +290,7 @@ perly.h: perly.c touch perly.h # I now supply perly.c with the kits, so the following section is -# commented out if you don't have byacc. +# used only if you have byacc. ${comment1}perly.c: perly.y perly.c.diff ${comment1} @ echo 'Expect' 109 shift/reduce and 1 reduce/reduce conflict @@ -259,7 +299,7 @@ ${comment1} sh \$(shellflags) ./perly.fixer y.tab.c perly.c ${comment1} mv y.tab.h perly.h ${comment1} echo 'extern YYSTYPE yylval;' >>perly.h -# This version is used only if you do not have byacc. +# This version is used if you do not have byacc. ${comment2}perly.c: perly.y ${comment2} touch perly.c @@ -293,11 +333,10 @@ clean: @for x in $(dynamic_ext) $(static_ext) ; do \ sh ext/util/make_ext clean $$x ; \ done - rm -f perl suidperl miniperl + rm -f perl suidperl miniperl $(perllib) realclean: clean -cd x2p; $(MAKE) realclean - : could add: "-cd pod; $(MAKE) realclean" here and to pod/Makefile @for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \ sh ext/util/make_ext realclean $$x ; \ done @@ -305,12 +344,16 @@ realclean: clean rm -rf $(addedbyconf) rm -f Makefile cflags makedepend makedir writemain rm -f config.h makefile makefile.old - rm -f x2p/Makefile x2p/makefile x2p/makefile.old x2p/cflags rm -f lib/Config.pm rm -rf lib/auto rm -f h2ph h2ph.man c2ph pstruct rm -rf .config +clobber: realclean + rm -f config.sh cppstdin + +distclean: clobber + # The following lint has practically everything turned on. Unfortunately, # you have to wade through a lot of mumbo jumbo that can't be suppressed. # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message @@ -69,11 +69,13 @@ Installation config.sh, and Makefile. You may have to explicitly say sh Configure to ensure that Configure is run under sh. If you're a hotshot, run Configure -d to take all the defaults and - then edit config.sh to patch up any flaws. + then edit config.sh to patch up any flaws and run Configure -S. Configure supports a number of useful options. Run Configure -h to get a listing. To compile with gcc, for example, you can run - Configure -Dcc=gcc, or answer 'gcc' at the cc prompt. + Configure -Dcc=gcc, or answer 'gcc' at the cc prompt. If you + change compilers or make other significant changes, you should + probably _not_ re-use your old config.sh. By default, perl will be installed in /usr/local/{bin, lib, man}. You can specify a different prefix for the default installation @@ -148,6 +150,9 @@ Installation If you get duplicates upon linking for malloc et al, say -DHIDEMYMALLOC. If you get duplicate function definitions (a perl function has the same name as another function on your system) try -DEMBED. + If you get varags problems with gcc, be sure that gcc is installed + correctly. When using gcc, you should probably have i_stdarg='define' + and i_varags='undef' in config.sh. 5) make test @@ -22,6 +22,7 @@ echo "Extracting cflags (with variable substitutions)" : Protect any dollar signs and backticks that you do not want interpreted : by putting a backslash in front. You may delete these comments. $spitshell >cflags <<!GROK!THIS! +$startsh !GROK!THIS! : In the following dollars and backticks do not need the extra backslash. @@ -14,7 +14,7 @@ * $Id: Config_h.U,v 3.0.1.2 1993/08/24 12:13:20 ram Exp $ */ -/* Configuration time: Thu Oct 6 18:27:36 EDT 1994 +/* Configuration time: Mon Dec 19 13:04:26 EST 1994 * Configured by: andy * Target system: crystal crystal 3.2 2 i386 */ @@ -28,6 +28,17 @@ */ #define MEM_ALIGNBYTES 4 /**/ +/* ARCHLIB: + * This variable, if defined, holds the name of the directory in + * which the user wants to put architecture-dependent public + * library files for perl5. It is most often a local directory + * such as /usr/local/lib. Programs using this variable must be + * prepared to deal with filename expansion. If ARCHLIB is the + * same as PRIVLIB, it is not defined, since presumably the + * program already searches PRIVLIB. + */ +#define ARCHLIB "/usr/local/lib/perl5/i386-isc" /**/ + /* BIN: * This symbol holds the path of the bin directory where the package will * be installed. Program must be prepared to deal with ~name substitution. @@ -40,6 +51,36 @@ */ #define BYTEORDER 0x1234 /* large digits for MSB */ +/* CAT2: + * This macro catenates 2 tokens together. + */ +/* STRINGIFY: + * This macro surrounds its token with double quotes. + */ +#if 1 == 1 +#define CAT2(a,b)a/**/b +#define CAT3(a,b,c)a/**/b/**/c +#define CAT4(a,b,c,d)a/**/b/**/c/**/d +#define CAT5(a,b,c,d,e)a/**/b/**/c/**/d/**/e +#define STRINGIFY(a)"a" + /* If you can get stringification with catify, tell me how! */ +#endif +#if 1 == 42 +#define CAT2(a,b)a ## b +#define CAT3(a,b,c)a ## b ## c +#define CAT4(a,b,c,d)a ## b ## c ## d +#define CAT5(a,b,c,d,e)a ## b ## c ## d ## e +#define StGiFy(a)# a +#define STRINGIFY(a)StGiFy(a) +#define SCAT2(a,b)StGiFy(a) StGiFy(b) +#define SCAT3(a,b,c)StGiFy(a) StGiFy(b) StGiFy(c) +#define SCAT4(a,b,c,d)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) +#define SCAT5(a,b,c,d,e)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) StGiFy(e) +#endif +#ifndef CAT2 +#include "Bletch: How does this C preprocessor catenate tokens?" +#endif + /* CPPSTDIN: * This symbol contains the first part of the string which will invoke * the C preprocessor on the standard input and produce to standard @@ -52,7 +93,7 @@ * output. This symbol will have the value "-" if CPPSTDIN needs a minus * to specify standard input, otherwise the value is "". */ -#define CPPSTDIN "gcc -E" +#define CPPSTDIN "cc -E" #define CPPMINUS "-" /* HAS_ALARM: @@ -61,6 +102,15 @@ */ #define HAS_ALARM /**/ +/* HASATTRIBUTE: + * This symbol indicates the C compiler can check for function attributes, + * such as printf formats. This is normally only supported by GNU cc. + */ +/*#define HASATTRIBUTE /**/ +#ifndef HASATTRIBUTE +#define __attribute__(_arg_) +#endif + /* HAS_BCMP: * This symbol is defined if the bcmp() routine is available to * compare blocks of memory. @@ -96,16 +146,8 @@ * 1 = couldn't cast < 0 * 2 = couldn't cast >= 0x80000000 */ -#define CASTNEGFLOAT /**/ -#define CASTFLAGS 0 /**/ - -/* CHARSPRINTF: - * This symbol is defined if this system declares "char *sprintf()" in - * stdio.h. The trend seems to be to declare it as "int sprintf()". It - * is up to the package author to declare sprintf correctly based on the - * symbol. - */ -/*#define CHARSPRINTF /**/ +/*#define CASTNEGFLOAT /**/ +#define CASTFLAGS 3 /**/ /* HAS_CHOWN: * This symbol, if defined, indicates that the chown routine is @@ -123,7 +165,13 @@ * This symbol, if defined, indicates that the chsize routine is available * to truncate files. You might need a -lx to get this routine. */ -#define HAS_CHSIZE /**/ +/*#define HAS_CHSIZE /**/ + +/* VOID_CLOSEDIR: + * This symbol, if defined, indicates that the closedir() routine + * does not return a value. + */ +/*#define VOID_CLOSEDIR /**/ /* HASCONST: * This symbol, if defined, indicates that this C compiler knows about @@ -131,7 +179,7 @@ * within your programs. The mere use of the "const" keyword will * trigger the necessary tests. */ -#define HASCONST /**/ +/*#define HASCONST /**/ #ifndef HASCONST #define const #endif @@ -168,6 +216,41 @@ */ #define HAS_DIFFTIME /**/ +/* HAS_DLERROR: + * This symbol, if defined, indicates that the dlerror routine is + * available to return a string describing the last error that + * occurred from a call to dlopen(), dlclose() or dlsym(). + */ +/*#define HAS_DLERROR /**/ + +/* SETUID_SCRIPTS_ARE_SECURE_NOW: + * This symbol, if defined, indicates that the bug that prevents + * setuid scripts from being secure is not present in this kernel. + */ +/* DOSUID: + * This symbol, if defined, indicates that the C program should + * check the script that it is executing for setuid/setgid bits, and + * attempt to emulate setuid/setgid on systems that have disabled + * setuid #! scripts because the kernel can't do it securely. + * It is up to the package designer to make sure that this emulation + * is done securely. Among other things, it should do an fstat on + * the script it just opened to make sure it really is a setuid/setgid + * script, it should make sure the arguments passed correspond exactly + * to the argument on the #! line, and it should not trust any + * subprocesses to which it must pass the filename rather than the + * file descriptor of the script to be executed. + */ +/*#define SETUID_SCRIPTS_ARE_SECURE_NOW /**/ +/*#define DOSUID /**/ + +/* HAS_DREM: + * This symbol, if defined, indicates that the drem routine is + * available. This routine is roughly the same as fmod, i.e. it + * computes the remainder r=x-n*y, where n=rint(x/y), whereas fmod + * uses n=trunc(x/y). + */ +/*#define HAS_DREM /**/ + /* HAS_DUP2: * This symbol, if defined, indicates that the dup2 routine is * available to duplicate file descriptors. @@ -210,6 +293,12 @@ */ /*#define HAS_FLOCK /**/ +/* HAS_FMOD: + * This symbol, if defined, indicates that the fmod routine is + * available to compute the remainder r=x-n*y where n=trunc(x/y). + */ +#define HAS_FMOD /**/ + /* HAS_FORK: * This symbol, if defined, indicates that the fork routine is * available. @@ -222,6 +311,18 @@ */ /*#define HAS_FSETPOS /**/ +/* Gconvert: + * This preprocessor macro is defined to convert a floating point + * number to a string without a trailing decimal point. This + * emulates the behavior of sprintf("%g"), but is sometimes much more + * efficient. If gconvert() is not available, but gcvt() drops the + * trailing decimal point, then gcvt() is used. If all else fails, + * a macro using sprintf("%g") is used. Arguments for the Gconvert + * macro are: value, number of digits, whether trailing zeros should + * be retained, and the output buffer. + */ +#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) + /* HAS_GETGROUPS: * This symbol, if defined, indicates that the getgroups() routine is * available to get the list of process groups. If unavailable, multiple @@ -303,6 +404,12 @@ #define HAS_NTOHL /**/ #define HAS_NTOHS /**/ +/* HAS_ISASCII: + * This manifest constant lets the C program know that isascii + * is available. + */ +#define HAS_ISASCII /**/ + /* HAS_KILLPG: * This symbol, if defined, indicates that the killpg routine is available * to kill process groups. If unavailable, you probably should use kill @@ -316,6 +423,18 @@ */ #define HAS_LINK /**/ +/* USE_LINUX_STDIO: + * This symbol is defined if this system has a FILE structure declaring + * _IO_read_base, _IO_read_ptr, and _IO_read_end in stdio.h. + */ +/*#define USE_LINUX_STDIO /**/ + +/* HAS_LOCALECONV: + * This symbol, if defined, indicates that the localeconv routine is + * available for numeric and monetary formatting conventions. + */ +#define HAS_LOCALECONV /**/ + /* HAS_LOCKF: * This symbol, if defined, indicates that the lockf routine is * available to do file locking. @@ -379,6 +498,14 @@ */ #define HAS_MKDIR /**/ +/* HAS_MKFIFO: + * This symbol, if defined, indicates that the mkfifo routine is + * available to create FIFOs. Otherwise, mknod should be able to + * do it for you. However, if mkfifo is there, mknod might require + * super-user privileges which mkfifo will not. + */ +#define HAS_MKFIFO /**/ + /* HAS_MKTIME: * This symbol, if defined, indicates that the mktime routine is * available. @@ -409,6 +536,19 @@ */ /*#define HAS_PASSWD /**/ +/* HAS_PATHCONF: + * This symbol, if defined, indicates that pathconf() is available + * to determine file-system related limits and options associated + * with a given filename. + */ +/* HAS_FPATHCONF: + * This symbol, if defined, indicates that pathconf() is available + * to determine file-system related limits and options associated + * with a given open file descriptor. + */ +#define HAS_PATHCONF /**/ +#define HAS_FPATHCONF /**/ + /* HAS_PAUSE: * This symbol, if defined, indicates that the pause routine is * available to suspend a process until a signal is received. @@ -466,6 +606,22 @@ */ #define HAS_RMDIR /**/ +/* HAS_SAFE_BCOPY: + * This symbol, if defined, indicates that the bcopy routine is available + * to copy potentially overlapping memory blocks. Otherwise you should + * probably use memmove() or memcpy(). If neither is defined, roll your + * own version. + */ +#define HAS_SAFE_BCOPY /**/ + +/* HAS_SAFE_MEMCPY: + * This symbol, if defined, indicates that the memcpy routine is available + * to copy potentially overlapping memory blocks. Otherwise you should + * probably use memmove() or memcpy(). If neither is defined, roll your + * own version. + */ +#define HAS_SAFE_MEMCPY /**/ + /* HAS_SELECT: * This symbol, if defined, indicates that the select routine is * available to select active file descriptors. If the timeout field @@ -514,7 +670,13 @@ * This symbol, if defined, indicates that the setpgrp routine is * available to set the current process group. */ +/* USE_BSDPGRP: + * This symbol, if defined, indicates that the BSD notion of process + * group is to be used. For instance, you have to say setpgrp(pid, pgrp) + * instead of the USG setpgrp(). + */ #define HAS_SETPGRP /**/ +/*#define USE_BSDPGRP /**/ /* HAS_SETPGRP2: * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX) @@ -677,6 +839,12 @@ */ #define HAS_SYSCALL /**/ +/* HAS_SYSCONF: + * This symbol, if defined, indicates that sysconf() is available + * to determine system related limits and options. + */ +#define HAS_SYSCONF /**/ + /* HAS_SYSTEM: * This symbol, if defined, indicates that the system routine is * available to issue a shell command. @@ -695,6 +863,13 @@ */ #define HAS_TCSETPGRP /**/ +/* Time_t: + * This symbol holds the type returned by time(). It can be long, + * or time_t on BSD sites (in which case <sys/types.h> should be + * included). + */ +#define Time_t time_t /* Time type */ + /* HAS_TIMES: * This symbol, if defined, indicates that the times() routine exists. * Note that this became obsolete on some systems (SUNOS), which now @@ -731,13 +906,20 @@ * is up to the package author to declare things correctly based on the * symbol. */ +/* Signal_t: + * This symbol's value is either "void" or "int", corresponding to the + * appropriate return type of a signal handler. Thus, you can declare + * a signal handler using "Signal_t (*handler)()", and define the + * handler using "Signal_t handler(sig)". + */ #define VOIDSIG /**/ +#define Signal_t void /* Signal handler's return type */ /* HASVOLATILE: * This symbol, if defined, indicates that this C compiler knows about * the volatile declaration. */ -#define HASVOLATILE /**/ +/*#define HASVOLATILE /**/ #ifndef HASVOLATILE #define volatile #endif @@ -795,6 +977,18 @@ */ #define Gid_t gid_t /* Type for getgid(), etc... */ +/* Groups_t: + * This symbol holds the type used for the second argument to + * getgroups(). Usually, this is the same of gidtype, but + * sometimes it isn't. It can be int, ushort, uid_t, etc... + * It may be necessary to include <sys/types.h> to get any + * typedef'ed information. This is only required if you have + * getgroups(). + */ +#ifdef HAS_GETGROUPS +#define Groups_t gid_t /* Type for 2nd arg to getgroups() */ +#endif + /* I_DIRENT: * This symbol, if defined, indicates to the C program that it should * include <dirent.h>. Using this symbol also triggers the definition @@ -858,11 +1052,11 @@ */ /*#define I_MEMORY /**/ -/* I_NDBM: - * This symbol, if defined, indicates that ndbm.h exists and should - * be included. +/* I_NET_ERRNO: + * This symbol, if defined, indicates that <net/errno.h> exists and + * should be included. */ -#define I_NDBM /**/ +#define I_NET_ERRNO /**/ /* I_NETINET_IN: * This symbol, if defined, indicates to the C program that it should @@ -1022,8 +1216,8 @@ * This symbol, if defined, indicates to the C program that it should * include <varargs.h>. */ -#define I_STDARG /**/ -/*#define I_VARARGS /**/ +/*#define I_STDARG /**/ +#define I_VARARGS /**/ /* I_VFORK: * This symbol, if defined, indicates to the C program that it should @@ -1044,6 +1238,14 @@ */ #define Off_t off_t /* <offset> type */ +/* Mode_t: + * This symbol holds the type used to declare file modes + * for systems calls. It is usually mode_t, but may be + * int or unsigned short. It may be necessary to include <sys/types.h> + * to get any typedef'ed information. + */ +#define Mode_t mode_t /* file mode parameter for system calls */ + /* PRIVLIB: * This symbol contains the name of the private library for this package. * The library is private in the sense that it needn't be in anyone's @@ -1063,7 +1265,7 @@ * * int main _((int argc, char *argv[])); */ -#define CAN_PROTOTYPE /**/ +/*#define CAN_PROTOTYPE /**/ #ifdef CAN_PROTOTYPE #define _(args) args #else @@ -1110,6 +1312,16 @@ */ #define Size_t size_t /* length paramater for string functions */ +/* SSize_t: + * This symbol holds the type used by functions that return + * a count of bytes or an error condition. It must be a signed type. + * It is usually ssize_t, but may be long or int, etc. + * It may be necessary to include <sys/types.h> or <unistd.h> + * to get any typedef'ed information. + * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). + */ +#define SSize_t int /* signed count of bytes */ + /* STDCHAR: * This symbol is defined to be the type of char used in stdio.h. * It has the values "unsigned char" or "char". @@ -1167,62 +1379,6 @@ */ #define LOC_SED "/bin/sed" /**/ -/* ARCHLIB: - * This variable, if defined, holds the name of the directory in - * which the user wants to put architecture-dependent public - * library files for perl5. It is most often a local directory - * such as /usr/local/lib. Programs using this variable must be - * prepared to deal with filename expansion. If ARCHLIB is the - * same as PRIVLIB, it is not defined, since presumably the - * program already searches PRIVLIB. - */ -#define ARCHLIB "/usr/local/lib/perl5/isc" /**/ - -/* CAT2: - * This macro catenates 2 tokens together. - */ -#if 42 == 1 -#define CAT2(a,b)a/**/b -#define CAT3(a,b,c)a/**/b/**/c -#define CAT4(a,b,c,d)a/**/b/**/c/**/d -#define CAT5(a,b,c,d,e)a/**/b/**/c/**/d/**/e -#define STRINGIFY(a)"a" - /* If you can get stringification with catify, tell me how! */ -#endif -#if 42 == 42 -#define CAT2(a,b)a ## b -#define CAT3(a,b,c)a ## b ## c -#define CAT4(a,b,c,d)a ## b ## c ## d -#define CAT5(a,b,c,d,e)a ## b ## c ## d ## e -#define StGiFy(a)# a -#define STRINGIFY(a)StGiFy(a) -#define SCAT2(a,b)StGiFy(a) StGiFy(b) -#define SCAT3(a,b,c)StGiFy(a) StGiFy(b) StGiFy(c) -#define SCAT4(a,b,c,d)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) -#define SCAT5(a,b,c,d,e)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) StGiFy(e) -#endif -#ifndef CAT2 -#include "Bletch: How does this C preprocessor catenate tokens?" -#endif - -/* GNUC_ATTRIBUTE_CHECK: - * This symbol indicates the C compiler can check for function attributes, - * such as printf formats. - */ -#define GNUC_ATTRIBUTE_CHECK /* */ - -/* VOID_CLOSEDIR: - * This symbol, if defined, indicates that the closedir() routine - * does not return a value. - */ -/*#define VOID_CLOSEDIR /**/ - -/* HAS_DLERROR: - * This symbol, if defined, indicates that the dlerror routine is - * available. - */ -/*#define HAS_DLERROR /**/ - /* DLSYM_NEEDS_UNDERSCORE: * This symbol, if defined, indicates that we need to prepend an * underscore to the symbol name before calling dlsym(). This only @@ -1231,166 +1387,39 @@ */ /*#define DLSYM_NEEDS_UNDERSCORE /* */ -/* SETUID_SCRIPTS_ARE_SECURE_NOW: - * This symbol, if defined, indicates that the bug that prevents - * setuid scripts from being secure is not present in this kernel. - */ -/* DOSUID: - * This symbol, if defined, indicates that the C program should - * check the script that it is executing for setuid/setgid bits, and - * attempt to emulate setuid/setgid on systems that have disabled - * setuid #! scripts because the kernel can't do it securely. - * It is up to the package designer to make sure that this emulation - * is done securely. Among other things, it should do an fstat on - * the script it just opened to make sure it really is a setuid/setgid - * script, it should make sure the arguments passed correspond exactly - * to the argument on the #! line, and it should not trust any - * subprocesses to which it must pass the filename rather than the - * file descriptor of the script to be executed. - */ -/*#define SETUID_SCRIPTS_ARE_SECURE_NOW /**/ - -/*#define DOSUID /**/ - -/* HAS_DREM: - * This symbol, if defined, indicates that the drem routine is - * available. This is a Pyramid routine that is the same as - * fmod. - */ -/*#define HAS_DREM /**/ - -/* HAS_FMOD: - * This symbol, if defined, indicates that the fmod routine is - * available. - */ -#define HAS_FMOD /**/ - -/* Gconvert: - * This preprocessor macro is defined to convert a floating point - * number to a string without a trailing decimal point. This - * emulates the behavior of sprintf("%g"), but is sometimes much more - * efficient. If gconvert() is not available, but gcvt() drops the - * trailing decimal point, then gcvt() is used. If all else fails, - * a macro using sprintf("%g") is used. - */ -#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) - -/* HAS_ISASCII: - * This manifest constant lets the C program know that isascii - * is available. - */ -#define HAS_ISASCII /**/ - -/* USE_LINUX_STDIO: - * This symbol is defined if this system has a FILE structure declaring - * _IO_read_base, _IO_read_ptr, and _IO_read_end in stdio.h. - */ -/*#define USE_LINUX_STDIO /**/ - -/* HAS_LOCALECONV: - * This symbol, if defined, indicates that the localeconv routine is - * available for numeric and monetary formatting conventions. - */ -#define HAS_LOCALECONV /**/ - -/* HAS_MKFIFO: - * This symbol, if defined, indicates that the mkfifo routine is - * available. - */ -#define HAS_MKFIFO /**/ - -/* HAS_PATHCONF: - * This symbol, if defined, indicates that pathconf() is available - * to determine file-system related limits and options associated - * with a given filename. - */ -/* HAS_FPATHCONF: - * This symbol, if defined, indicates that pathconf() is available - * to determine file-system related limits and options associated - * with a given open file descriptor. - */ -#define HAS_PATHCONF /**/ -#define HAS_FPATHCONF /**/ - -/* HAS_SAFE_BCOPY: - * This symbol, if defined, indicates that the bcopy routine is available - * to copy potentially overlapping memory blocks. Otherwise you should - * probably use memmove() or memcpy(). If neither is defined, roll your - * own version. - */ -#define HAS_SAFE_BCOPY /**/ - -/* HAS_SAFE_MEMCPY: - * This symbol, if defined, indicates that the memcpy routine is available - * to copy potentially overlapping memory blocks. Otherwise you should - * probably use memmove() or memcpy(). If neither is defined, roll your - * own version. - */ -#define HAS_SAFE_MEMCPY /**/ - -/* HAS_SYSCONF: - * This symbol, if defined, indicates that sysconf() is available - * to determine system related limits and options. - */ -#define HAS_SYSCONF /**/ - -/* Time_t: - * This symbol holds the type returned by time(). It can be long, - * or time_t on BSD sites (in which case <sys/types.h> should be - * included). - */ -#define Time_t time_t /* Time type */ - /* USE_DYNAMIC_LOADING: * This symbol, if defined, indicates that dynamic loading of * some sort is available. */ /*#define USE_DYNAMIC_LOADING /**/ -/* Groups_t: - * This symbol holds the type used for the second argument to - * getgroups(). Usually, this is the same of gidtype, but - * sometimes it isn't. It can be int, ushort, uid_t, etc... - * It may be necessary to include <sys/types.h> to get any - * typedef'ed information. This is only required if you have - * getgroups(). +/* DB_Prefix_t: + * This symbol contains the type of the prefix structure element + * in the <db.h> header file. In older versions of DB, it was + * int, while in newer ones it is u_int32_t. */ -#ifdef HAS_GETGROUPS -#define Groups_t gid_t /* Type for 2nd arg to getgroups() */ -#endif +/* DB_Hash_t: + * This symbol contains the type of the prefix structure element + * in the <db.h> header file. In older versions of DB, it was + * int, while in newer ones it is size_t. + */ +#define DB_Hash_t "int" /**/ +#define DB_Prefix_t "int" /**/ -/* I_NET_ERRNO: - * This symbol, if defined, indicates that <net/errno.h> exists and - * should be included. +/* I_NDBM: + * This symbol, if defined, indicates that ndbm.h exists and should + * be included. */ -#define I_NET_ERRNO /**/ +#define I_NDBM /**/ /* Malloc_t: * This symbol is the type of pointer returned by malloc and realloc. */ -#define Malloc_t void * /**/ +#define Malloc_t char * /**/ /* MYMALLOC: * This symbol, if defined, indicates that we're using our own malloc. */ #define MYMALLOC /**/ -/* Mode_t: - * This symbol holds the type used to declare file modes - * for systems calls. It is usually mode_t, but may be - * int or unsigned short. It may be necessary to include <sys/types.h> - * to get any typedef'ed information. - */ -#define Mode_t mode_t /* file mode parameter for system calls*/ - -/* SSize_t: - * This symbol holds the type used by functions that return - * a count of bytes or an error condition. It must be a signed type. - * It is usually ssize_t, but may be long or int, etc. - * It may be necessary to include <sys/types.h> or <unistd.h> - * to get any typedef'ed information. - * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). - */ -#define SSize_t int /* signed count of bytes */ - #endif diff --git a/config_h.SH b/config_h.SH index 19304be0fb..d0801e4b9b 100755 --- a/config_h.SH +++ b/config_h.SH @@ -25,7 +25,7 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' * that running config.h.SH again will wipe out any changes you've made. * For a more permanent change edit config.sh and rerun config.h.SH. * - * Config_h.U + * \$Id: Config_h.U,v 3.0.1.2 1993/08/24 12:13:20 ram Exp $ */ /* Configuration time: $cf_time @@ -42,6 +42,17 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #define MEM_ALIGNBYTES $alignbytes /**/ +/* ARCHLIB: + * This variable, if defined, holds the name of the directory in + * which the user wants to put architecture-dependent public + * library files for $package. It is most often a local directory + * such as /usr/local/lib. Programs using this variable must be + * prepared to deal with filename expansion. If ARCHLIB is the + * same as PRIVLIB, it is not defined, since presumably the + * program already searches PRIVLIB. + */ +#$d_archlib ARCHLIB "$archlib" /**/ + /* BIN: * This symbol holds the path of the bin directory where the package will * be installed. Program must be prepared to deal with ~name substitution. @@ -54,6 +65,36 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #define BYTEORDER 0x$byteorder /* large digits for MSB */ +/* CAT2: + * This macro catenates 2 tokens together. + */ +/* STRINGIFY: + * This macro surrounds its token with double quotes. + */ +#if $cpp_stuff == 1 +#define CAT2(a,b)a/**/b +#define CAT3(a,b,c)a/**/b/**/c +#define CAT4(a,b,c,d)a/**/b/**/c/**/d +#define CAT5(a,b,c,d,e)a/**/b/**/c/**/d/**/e +#define STRINGIFY(a)"a" + /* If you can get stringification with catify, tell me how! */ +#endif +#if $cpp_stuff == 42 +#define CAT2(a,b)a ## b +#define CAT3(a,b,c)a ## b ## c +#define CAT4(a,b,c,d)a ## b ## c ## d +#define CAT5(a,b,c,d,e)a ## b ## c ## d ## e +#define StGiFy(a)# a +#define STRINGIFY(a)StGiFy(a) +#define SCAT2(a,b)StGiFy(a) StGiFy(b) +#define SCAT3(a,b,c)StGiFy(a) StGiFy(b) StGiFy(c) +#define SCAT4(a,b,c,d)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) +#define SCAT5(a,b,c,d,e)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) StGiFy(e) +#endif +#ifndef CAT2 +#include "Bletch: How does this C preprocessor catenate tokens?" +#endif + /* CPPSTDIN: * This symbol contains the first part of the string which will invoke * the C preprocessor on the standard input and produce to standard @@ -75,6 +116,15 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_alarm HAS_ALARM /**/ +/* HASATTRIBUTE: + * This symbol indicates the C compiler can check for function attributes, + * such as printf formats. This is normally only supported by GNU cc. + */ +#$d_attribut HASATTRIBUTE /**/ +#ifndef HASATTRIBUTE +#define __attribute__(_arg_) +#endif + /* HAS_BCMP: * This symbol is defined if the bcmp() routine is available to * compare blocks of memory. @@ -113,14 +163,6 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' #$d_castneg CASTNEGFLOAT /**/ #define CASTFLAGS $castflags /**/ -/* CHARSPRINTF: - * This symbol is defined if this system declares "char *sprintf()" in - * stdio.h. The trend seems to be to declare it as "int sprintf()". It - * is up to the package author to declare sprintf correctly based on the - * symbol. - */ -#$d_charsprf CHARSPRINTF /**/ - /* HAS_CHOWN: * This symbol, if defined, indicates that the chown routine is * available. @@ -139,6 +181,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_chsize HAS_CHSIZE /**/ +/* VOID_CLOSEDIR: + * This symbol, if defined, indicates that the closedir() routine + * does not return a value. + */ +#$d_void_closedir VOID_CLOSEDIR /**/ + /* HASCONST: * This symbol, if defined, indicates that this C compiler knows about * the const type. There is no need to actually test for that symbol @@ -182,6 +230,41 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_difftime HAS_DIFFTIME /**/ +/* HAS_DLERROR: + * This symbol, if defined, indicates that the dlerror routine is + * available to return a string describing the last error that + * occurred from a call to dlopen(), dlclose() or dlsym(). + */ +#$d_dlerror HAS_DLERROR /**/ + +/* SETUID_SCRIPTS_ARE_SECURE_NOW: + * This symbol, if defined, indicates that the bug that prevents + * setuid scripts from being secure is not present in this kernel. + */ +/* DOSUID: + * This symbol, if defined, indicates that the C program should + * check the script that it is executing for setuid/setgid bits, and + * attempt to emulate setuid/setgid on systems that have disabled + * setuid #! scripts because the kernel can't do it securely. + * It is up to the package designer to make sure that this emulation + * is done securely. Among other things, it should do an fstat on + * the script it just opened to make sure it really is a setuid/setgid + * script, it should make sure the arguments passed correspond exactly + * to the argument on the #! line, and it should not trust any + * subprocesses to which it must pass the filename rather than the + * file descriptor of the script to be executed. + */ +#$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW /**/ +#$d_dosuid DOSUID /**/ + +/* HAS_DREM: + * This symbol, if defined, indicates that the drem routine is + * available. This routine is roughly the same as fmod, i.e. it + * computes the remainder r=x-n*y, where n=rint(x/y), whereas fmod + * uses n=trunc(x/y). + */ +#$d_drem HAS_DREM /**/ + /* HAS_DUP2: * This symbol, if defined, indicates that the dup2 routine is * available to duplicate file descriptors. @@ -224,6 +307,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_flock HAS_FLOCK /**/ +/* HAS_FMOD: + * This symbol, if defined, indicates that the fmod routine is + * available to compute the remainder r=x-n*y where n=trunc(x/y). + */ +#$d_fmod HAS_FMOD /**/ + /* HAS_FORK: * This symbol, if defined, indicates that the fork routine is * available. @@ -236,6 +325,18 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_fsetpos HAS_FSETPOS /**/ +/* Gconvert: + * This preprocessor macro is defined to convert a floating point + * number to a string without a trailing decimal point. This + * emulates the behavior of sprintf("%g"), but is sometimes much more + * efficient. If gconvert() is not available, but gcvt() drops the + * trailing decimal point, then gcvt() is used. If all else fails, + * a macro using sprintf("%g") is used. Arguments for the Gconvert + * macro are: value, number of digits, whether trailing zeros should + * be retained, and the output buffer. + */ +#define Gconvert(x,n,t,b) $d_Gconvert + /* HAS_GETGROUPS: * This symbol, if defined, indicates that the getgroups() routine is * available to get the list of process groups. If unavailable, multiple @@ -317,6 +418,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' #$d_htonl HAS_NTOHL /**/ #$d_htonl HAS_NTOHS /**/ +/* HAS_ISASCII: + * This manifest constant lets the C program know that isascii + * is available. + */ +#$d_isascii HAS_ISASCII /**/ + /* HAS_KILLPG: * This symbol, if defined, indicates that the killpg routine is available * to kill process groups. If unavailable, you probably should use kill @@ -330,6 +437,18 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_link HAS_LINK /**/ +/* USE_LINUX_STDIO: + * This symbol is defined if this system has a FILE structure declaring + * _IO_read_base, _IO_read_ptr, and _IO_read_end in stdio.h. + */ +#$d_linuxstd USE_LINUX_STDIO /**/ + +/* HAS_LOCALECONV: + * This symbol, if defined, indicates that the localeconv routine is + * available for numeric and monetary formatting conventions. + */ +#$d_locconv HAS_LOCALECONV /**/ + /* HAS_LOCKF: * This symbol, if defined, indicates that the lockf routine is * available to do file locking. @@ -393,6 +512,14 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_mkdir HAS_MKDIR /**/ +/* HAS_MKFIFO: + * This symbol, if defined, indicates that the mkfifo routine is + * available to create FIFOs. Otherwise, mknod should be able to + * do it for you. However, if mkfifo is there, mknod might require + * super-user privileges which mkfifo will not. + */ +#$d_mkfifo HAS_MKFIFO /**/ + /* HAS_MKTIME: * This symbol, if defined, indicates that the mktime routine is * available. @@ -423,6 +550,19 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_passwd HAS_PASSWD /**/ +/* HAS_PATHCONF: + * This symbol, if defined, indicates that pathconf() is available + * to determine file-system related limits and options associated + * with a given filename. + */ +/* HAS_FPATHCONF: + * This symbol, if defined, indicates that pathconf() is available + * to determine file-system related limits and options associated + * with a given open file descriptor. + */ +#$d_pathconf HAS_PATHCONF /**/ +#$d_fpathconf HAS_FPATHCONF /**/ + /* HAS_PAUSE: * This symbol, if defined, indicates that the pause routine is * available to suspend a process until a signal is received. @@ -480,6 +620,22 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_rmdir HAS_RMDIR /**/ +/* HAS_SAFE_BCOPY: + * This symbol, if defined, indicates that the bcopy routine is available + * to copy potentially overlapping memory blocks. Otherwise you should + * probably use memmove() or memcpy(). If neither is defined, roll your + * own version. + */ +#$d_safebcpy HAS_SAFE_BCOPY /**/ + +/* HAS_SAFE_MEMCPY: + * This symbol, if defined, indicates that the memcpy routine is available + * to copy potentially overlapping memory blocks. Otherwise you should + * probably use memmove() or memcpy(). If neither is defined, roll your + * own version. + */ +#$d_safemcpy HAS_SAFE_MEMCPY /**/ + /* HAS_SELECT: * This symbol, if defined, indicates that the select routine is * available to select active file descriptors. If the timeout field @@ -524,6 +680,18 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_setpgid HAS_SETPGID /**/ +/* HAS_SETPGRP: + * This symbol, if defined, indicates that the setpgrp routine is + * available to set the current process group. + */ +/* USE_BSDPGRP: + * This symbol, if defined, indicates that the BSD notion of process + * group is to be used. For instance, you have to say setpgrp(pid, pgrp) + * instead of the USG setpgrp(). + */ +#$d_setpgrp HAS_SETPGRP /**/ +#$d_bsdpgrp USE_BSDPGRP /**/ + /* HAS_SETPGRP2: * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX) * routine is available to set the current process group. @@ -685,6 +853,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_syscall HAS_SYSCALL /**/ +/* HAS_SYSCONF: + * This symbol, if defined, indicates that sysconf() is available + * to determine system related limits and options. + */ +#$d_sysconf HAS_SYSCONF /**/ + /* HAS_SYSTEM: * This symbol, if defined, indicates that the system routine is * available to issue a shell command. @@ -703,6 +877,13 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_tcsetpgrp HAS_TCSETPGRP /**/ +/* Time_t: + * This symbol holds the type returned by time(). It can be long, + * or time_t on BSD sites (in which case <sys/types.h> should be + * included). + */ +#define Time_t $timetype /* Time type */ + /* HAS_TIMES: * This symbol, if defined, indicates that the times() routine exists. * Note that this became obsolete on some systems (SUNOS), which now @@ -739,7 +920,14 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' * is up to the package author to declare things correctly based on the * symbol. */ +/* Signal_t: + * This symbol's value is either "void" or "int", corresponding to the + * appropriate return type of a signal handler. Thus, you can declare + * a signal handler using "Signal_t (*handler)()", and define the + * handler using "Signal_t handler(sig)". + */ #$d_voidsig VOIDSIG /**/ +#define Signal_t $signal_t /* Signal handler's return type */ /* HASVOLATILE: * This symbol, if defined, indicates that this C compiler knows about @@ -803,6 +991,18 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #define Gid_t $gidtype /* Type for getgid(), etc... */ +/* Groups_t: + * This symbol holds the type used for the second argument to + * getgroups(). Usually, this is the same of gidtype, but + * sometimes it isn't. It can be int, ushort, uid_t, etc... + * It may be necessary to include <sys/types.h> to get any + * typedef'ed information. This is only required if you have + * getgroups(). + */ +#ifdef HAS_GETGROUPS +#define Groups_t $groupstype /* Type for 2nd arg to getgroups() */ +#endif + /* I_DIRENT: * This symbol, if defined, indicates to the C program that it should * include <dirent.h>. Using this symbol also triggers the definition @@ -866,11 +1066,11 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$i_memory I_MEMORY /**/ -/* I_NDBM: - * This symbol, if defined, indicates that ndbm.h exists and should - * be included. +/* I_NET_ERRNO: + * This symbol, if defined, indicates that <net/errno.h> exists and + * should be included. */ -#$i_ndbm I_NDBM /**/ +#$i_neterrno I_NET_ERRNO /**/ /* I_NETINET_IN: * This symbol, if defined, indicates to the C program that it should @@ -1052,6 +1252,14 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #define Off_t $lseektype /* <offset> type */ +/* Mode_t: + * This symbol holds the type used to declare file modes + * for systems calls. It is usually mode_t, but may be + * int or unsigned short. It may be necessary to include <sys/types.h> + * to get any typedef'ed information. + */ +#define Mode_t $modetype /* file mode parameter for system calls */ + /* PRIVLIB: * This symbol contains the name of the private library for this package. * The library is private in the sense that it needn't be in anyone's @@ -1118,6 +1326,16 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #define Size_t $sizetype /* length paramater for string functions */ +/* SSize_t: + * This symbol holds the type used by functions that return + * a count of bytes or an error condition. It must be a signed type. + * It is usually ssize_t, but may be long or int, etc. + * It may be necessary to include <sys/types.h> or <unistd.h> + * to get any typedef'ed information. + * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). + */ +#define SSize_t $ssizetype /* signed count of bytes */ + /* STDCHAR: * This symbol is defined to be the type of char used in stdio.h. * It has the values "unsigned char" or "char". @@ -1175,65 +1393,6 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #define LOC_SED "$sed" /**/ -/* ARCHLIB: - * This variable, if defined, holds the name of the directory in - * which the user wants to put architecture-dependent public - * library files for $package. It is most often a local directory - * such as /usr/local/lib. Programs using this variable must be - * prepared to deal with filename expansion. If ARCHLIB is the - * same as PRIVLIB, it is not defined, since presumably the - * program already searches PRIVLIB. - */ -#$d_archlib ARCHLIB "$archlib" /**/ - -/* CAT2: - * This macro catenates 2 tokens together. - */ -/* STRINGIFY: - * This macro surrounds its token with double quotes. - */ -#if $cpp_stuff == 1 -#define CAT2(a,b)a/**/b -#define CAT3(a,b,c)a/**/b/**/c -#define CAT4(a,b,c,d)a/**/b/**/c/**/d -#define CAT5(a,b,c,d,e)a/**/b/**/c/**/d/**/e -#define STRINGIFY(a)"a" - /* If you can get stringification with catify, tell me how! */ -#endif -#if $cpp_stuff == 42 -#define CAT2(a,b)a ## b -#define CAT3(a,b,c)a ## b ## c -#define CAT4(a,b,c,d)a ## b ## c ## d -#define CAT5(a,b,c,d,e)a ## b ## c ## d ## e -#define StGiFy(a)# a -#define STRINGIFY(a)StGiFy(a) -#define SCAT2(a,b)StGiFy(a) StGiFy(b) -#define SCAT3(a,b,c)StGiFy(a) StGiFy(b) StGiFy(c) -#define SCAT4(a,b,c,d)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) -#define SCAT5(a,b,c,d,e)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) StGiFy(e) -#endif -#ifndef CAT2 -#include "Bletch: How does this C preprocessor catenate tokens?" -#endif - -/* GNUC_ATTRIBUTE_CHECK: - * This symbol indicates the C compiler can check for function attributes, - * such as printf formats. - */ -#$d_attrib GNUC_ATTRIBUTE_CHECK /* */ - -/* VOID_CLOSEDIR: - * This symbol, if defined, indicates that the closedir() routine - * does not return a value. - */ -#$d_void_closedir VOID_CLOSEDIR /**/ - -/* HAS_DLERROR: - * This symbol, if defined, indicates that the dlerror routine is - * available. - */ -#$d_dlerror HAS_DLERROR /**/ - /* DLSYM_NEEDS_UNDERSCORE: * This symbol, if defined, indicates that we need to prepend an * underscore to the symbol name before calling dlsym(). This only @@ -1242,151 +1401,30 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_dlsymun DLSYM_NEEDS_UNDERSCORE /* */ -/* SETUID_SCRIPTS_ARE_SECURE_NOW: - * This symbol, if defined, indicates that the bug that prevents - * setuid scripts from being secure is not present in this kernel. - */ -/* DOSUID: - * This symbol, if defined, indicates that the C program should - * check the script that it is executing for setuid/setgid bits, and - * attempt to emulate setuid/setgid on systems that have disabled - * setuid #! scripts because the kernel can't do it securely. - * It is up to the package designer to make sure that this emulation - * is done securely. Among other things, it should do an fstat on - * the script it just opened to make sure it really is a setuid/setgid - * script, it should make sure the arguments passed correspond exactly - * to the argument on the #! line, and it should not trust any - * subprocesses to which it must pass the filename rather than the - * file descriptor of the script to be executed. - */ -#$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW /**/ - -#$d_dosuid DOSUID /**/ - -/* HAS_DREM: - * This symbol, if defined, indicates that the drem routine is - * available. This is a Pyramid routine that is the same as - * fmod. - */ -#$d_drem HAS_DREM /**/ - -/* HAS_FMOD: - * This symbol, if defined, indicates that the fmod routine is - * available. - */ -#$d_fmod HAS_FMOD /**/ - -/* Gconvert: - * This preprocessor macro is defined to convert a floating point - * number to a string without a trailing decimal point. This - * emulates the behavior of sprintf("%g"), but is sometimes much more - * efficient. If gconvert() is not available, but gcvt() drops the - * trailing decimal point, then gcvt() is used. If all else fails, - * a macro using sprintf("%g") is used. - */ -#define Gconvert(x,n,t,b) $d_Gconvert - -/* HAS_ISASCII: - * This manifest constant lets the C program know that isascii - * is available. - */ -#$d_isascii HAS_ISASCII /**/ - -/* USE_LINUX_STDIO: - * This symbol is defined if this system has a FILE structure declaring - * _IO_read_base, _IO_read_ptr, and _IO_read_end in stdio.h. - */ -#$d_linuxstd USE_LINUX_STDIO /**/ - -/* HAS_LOCALECONV: - * This symbol, if defined, indicates that the localeconv routine is - * available for numeric and monetary formatting conventions. - */ -#$d_locconv HAS_LOCALECONV /**/ - -/* HAS_MKFIFO: - * This symbol, if defined, indicates that the mkfifo routine is - * available. - */ -#$d_mkfifo HAS_MKFIFO /**/ - -/* HAS_PATHCONF: - * This symbol, if defined, indicates that pathconf() is available - * to determine file-system related limits and options associated - * with a given filename. - */ -/* HAS_FPATHCONF: - * This symbol, if defined, indicates that pathconf() is available - * to determine file-system related limits and options associated - * with a given open file descriptor. - */ -#$d_pathconf HAS_PATHCONF /**/ -#$d_fpathconf HAS_FPATHCONF /**/ - -/* HAS_SAFE_BCOPY: - * This symbol, if defined, indicates that the bcopy routine is available - * to copy potentially overlapping memory blocks. Otherwise you should - * probably use memmove() or memcpy(). If neither is defined, roll your - * own version. - */ -#$d_safebcpy HAS_SAFE_BCOPY /**/ - -/* HAS_SAFE_MEMCPY: - * This symbol, if defined, indicates that the memcpy routine is available - * to copy potentially overlapping memory blocks. Otherwise you should - * probably use memmove() or memcpy(). If neither is defined, roll your - * own version. - */ -#$d_safemcpy HAS_SAFE_MEMCPY /**/ - -/* HAS_SETPGRP: - * This symbol, if defined, indicates that the setpgrp routine is - * available to set the current process group. - */ -/* USE_BSDPGRP: - * This symbol, if defined, indicates that the BSD notion of process - * group is to be used. For instance, you have to say setpgrp(pid, pgrp) - * instead of the USG setpgrp(). - */ -#$d_setpgrp HAS_SETPGRP /**/ -#$d_bsdpgrp USE_BSDPGRP /**/ - -/* HAS_SYSCONF: - * This symbol, if defined, indicates that sysconf() is available - * to determine system related limits and options. - */ -#$d_sysconf HAS_SYSCONF /**/ - -/* Time_t: - * This symbol holds the type returned by time(). It can be long, - * or time_t on BSD sites (in which case <sys/types.h> should be - * included). - */ -#define Time_t $timetype /* Time type */ - /* USE_DYNAMIC_LOADING: * This symbol, if defined, indicates that dynamic loading of * some sort is available. */ #$usedl USE_DYNAMIC_LOADING /**/ -/* Groups_t: - * This symbol holds the type used for the second argument to - * getgroups(). Usually, this is the same of gidtype, but - * sometimes it isn't. It can be int, ushort, uid_t, etc... - * It may be necessary to include <sys/types.h> to get any - * typedef'ed information. This is only required if you have - * getgroups(). +/* DB_Prefix_t: + * This symbol contains the type of the prefix structure element + * in the <db.h> header file. In older versions of DB, it was + * int, while in newer ones it is u_int32_t. */ -#ifdef HAS_GETGROUPS -#define Groups_t $groupstype /* Type for 2nd arg to getgroups() */ -#endif +/* DB_Hash_t: + * This symbol contains the type of the prefix structure element + * in the <db.h> header file. In older versions of DB, it was + * int, while in newer ones it is size_t. + */ +#define DB_Hash_t "$db_hashtype" /**/ +#define DB_Prefix_t "$db_prefixtype" /**/ -/* I_NET_ERRNO: - * This symbol, if defined, indicates that <net/errno.h> exists and - * should be included. +/* I_NDBM: + * This symbol, if defined, indicates that ndbm.h exists and should + * be included. */ -#$i_neterrno I_NET_ERRNO /**/ +#$i_ndbm I_NDBM /**/ /* Malloc_t: * This symbol is the type of pointer returned by malloc and realloc. @@ -1398,23 +1436,5 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#define!' -e 's!^#un-def!#undef!' */ #$d_mymalloc MYMALLOC /**/ -/* Mode_t: - * This symbol holds the type used to declare file modes - * for systems calls. It is usually mode_t, but may be - * int or unsigned short. It may be necessary to include <sys/types.h> - * to get any typedef'ed information. - */ -#define Mode_t $modetype /* file mode parameter for system calls*/ - -/* SSize_t: - * This symbol holds the type used by functions that return - * a count of bytes or an error condition. It must be a signed type. - * It is usually ssize_t, but may be long or int, etc. - * It may be necessary to include <sys/types.h> or <unistd.h> - * to get any typedef'ed information. - * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). - */ -#define SSize_t $ssizetype /* signed count of bytes */ - #endif !GROK!THIS! @@ -40,7 +40,7 @@ deb(pat,a1,a2,a3,a4,a5,a6,a7,a8) #else /* !defined(I_STDARG) && !defined(I_VARARGS) */ -# ifdef STANDARD_C +# ifdef I_STDARG void deb(char *pat, ...) # else @@ -158,9 +158,9 @@ register SV **sarg; register char *t; register char *f; bool dolong; -#ifdef QUAD +#ifdef HAS_QUAD bool doquad; -#endif /* QUAD */ +#endif /* HAS_QUAD */ char ch; register char *send; register SV *arg; @@ -189,9 +189,9 @@ register SV **sarg; f = t; *buf = '\0'; xs = buf; -#ifdef QUAD +#ifdef HAS_QUAD doquad = -#endif /* QUAD */ +#endif /* HAS_QUAD */ dolong = FALSE; pre = post = 0; for (t++; t < send; t++) { @@ -208,7 +208,7 @@ register SV **sarg; case '.': case '#': case '-': case '+': case ' ': continue; case 'l': -#ifdef QUAD +#ifdef HAS_QUAD if (dolong) { dolong = FALSE; doquad = TRUE; @@ -236,9 +236,9 @@ register SV **sarg; case 'd': ch = *(++t); *t = '\0'; -#ifdef QUAD +#ifdef HAS_QUAD if (doquad) - (void)sprintf(buf,s,(quad)SvNV(arg)); + (void)sprintf(buf,s,(Quad_t)SvNV(arg)); else #endif if (dolong) @@ -254,9 +254,9 @@ register SV **sarg; ch = *(++t); *t = '\0'; value = SvNV(arg); -#ifdef QUAD +#ifdef HAS_QUAD if (doquad) - (void)sprintf(buf,s,(unsigned quad)value); + (void)sprintf(buf,s,(unsigned Quad_t)value); else #endif if (dolong) diff --git a/ext/DB_File/DB_File.xs b/ext/DB_File/DB_File.xs index c83f976d93..86c3b4937c 100644 --- a/ext/DB_File/DB_File.xs +++ b/ext/DB_File/DB_File.xs @@ -18,14 +18,6 @@ #include <fcntl.h> -#ifndef DBXS_HASH_TYPE -#define DBXS_HASH_TYPE u_int32_t -#endif - -#ifndef DBXS_PREFIX_TYPE -#define DBXS_PREFIX_TYPE size_t -#endif - typedef DB * DB_File; typedef DBT DBTKEY ; @@ -126,7 +118,7 @@ const DBT * key2 ; } -static DBXS_PREFIX_TYPE +static DB_Prefix_t btree_prefix(key1, key2) const DBT * key1 ; const DBT * key2 ; @@ -173,7 +165,7 @@ const DBT * key2 ; return (retval) ; } -static DBXS_HASH_TYPE +static DB_Hash_t hash_cb(data, size) const void * data ; size_t size ; diff --git a/ext/SDBM_File/sdbm/sdbm.h b/ext/SDBM_File/sdbm/sdbm.h index 927e2c2e30..6f54bd0502 100644 --- a/ext/SDBM_File/sdbm/sdbm.h +++ b/ext/SDBM_File/sdbm/sdbm.h @@ -216,7 +216,7 @@ extern long sdbm_hash proto((char *, int)); # endif #else # ifndef memcmp -# define memcmp(s1,s2,l) my_memcmp(s1,s2,l) +# define memcmp my_memcmp # endif #endif /* HAS_MEMCMP */ diff --git a/ext/util/make_ext b/ext/util/make_ext index dca9a8d8e9..f4a1b8884e 100644 --- a/ext/util/make_ext +++ b/ext/util/make_ext @@ -31,12 +31,17 @@ if test "X$extspec" = X; then exit 1; fi -# convert old style Name.a into ext/Name/Name.a format -case "$extspec" in -ext/*) ;; -*::*) extspec=`echo "$extspec" | sed -e 's!\(.*\)::\(.*\)!ext/\1/\2/\2.a!'` ;; -*) extspec=`echo "$extspec" | sed -e 's:\(.*\)\.\(.*\):ext/\1/\1.\2:'` ;; -esac +# canonise +extspec=`echo "$extspec" | sed -e 's:^ext/::' -e 's:\.[^\.]*$::'` +extspec="ext/$extspec" +tailext=`echo "$extspec" | sed -e 's:.*/\([^/]*\)$:\1:'"` +headext=`echo "$extspec" | sed -e 's:/[^/]*$::'"` +if test -d "$headext/$tailext"; then + extspec="$headext/$tailext" +fi +if test -f "$extspec/$tailext.xs"; then + extspec="$extspec/$tailext" +fi # get extension directory path, module name and depth pname=`echo "$extspec" | sed -e 's:^ext/::' -e 's:/[^/]*$::'` diff --git a/globals.c b/globals.c new file mode 100644 index 0000000000..0550a5ac41 --- /dev/null +++ b/globals.c @@ -0,0 +1,2 @@ +#include "INTERN.h" +#include "perl.h" diff --git a/hints/irix_6.sh b/hints/irix_6.sh index 79363bbc9f..5752c25e1c 100644 --- a/hints/irix_6.sh +++ b/hints/irix_6.sh @@ -11,27 +11,24 @@ i_time='define' cc="cc -32" ccflags="$ccflags -D_POSIX_SOURCE -ansiposix -D_BSD_TYPES -Olimit 3000" lddlflags="-32 -shared" -set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / -/'` +set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /'` shift libswanted="$*" - +# # The following might be of interest if you wish to try 64-bit mode: -# irix_6.sh +# irix_6_64bit.sh # Krishna Sethuraman, krishna@mit.edu -# This will build a 64-bit perl 5 executable under IRIX 6.x. -# I had to remove socket, sun, crypt, nsl, and dl from the -# link line because there are no 64-bit libraries with these -# names (as of IRIX 6.0.1). +# taken from irix_5.sh . Changes from irix_5.sh: +# Olimit and nested comments (warning 1009) no longer accepted +# -OPT:fold_arith_limit so POSIX module will optimize +# no 64bit versions of sun, crypt, nsl, socket, dl dso's available +# as of IRIX 6.0.1 so omit those from libswanted line via `sed'. -# I don't know if this will actually build a fully working perl because I -# can't tell if the symbols normally provided by these libraries -# are provided by other libraries which remain on the link line. -# In any case, perl does build with this file without unresolved -# symbol complaints. +# perl 5 built with this hints file passes most tests (`make test'). +# Fails on op/subst test only. (built and tested under IRIX 6.0.1). # i_time='define' -# ccflags="$ccflags -D_POSIX_SOURCE -ansiposix -D_BSD_TYPES -Olimit 3000" +# ccflags="$ccflags -D_POSIX_SOURCE -ansiposix -D_BSD_TYPES -woff 1009 -OPT:fold_arith_limit=1046" # lddlflags="-shared" # set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ sun / /' -e 's/ crypt / /' -e 's/ nsl / /' -e 's/ dl / /'` # shift diff --git a/hints/next_3_2.sh b/hints/next_3_2.sh index 1f86526626..71c9e1040f 100644 --- a/hints/next_3_2.sh +++ b/hints/next_3_2.sh @@ -14,3 +14,9 @@ d_setpgid='define' d_setsid='define' d_tcgetpgrp='define' d_tcsetpgrp='define' +# +# On some NeXT machines, the timestamp put by ranlib is not correct, and +# this may cause useless recompiles. Fix that by adding a sleep before +# running ranlib. The '5' is an empirical number that's "long enough." +# (Thanks to Andreas Koenig <k@franz.ww.tu-berlin.de>) +ranlib='sleep 5; /bin/ranlib' diff --git a/installperl b/installperl index fb4bb05242..73da720ece 100755 --- a/installperl +++ b/installperl @@ -29,15 +29,7 @@ while (<CONFIG>) { } close CONFIG; -open(PERL_C, "perl.c"); -while (<PERL_C>) { - last if /Revision:/; -} -close PERL_C; -s/.*Revision: //; -$major = $_ + 0; - -$ver = sprintf("%5.3f", $major + $PATCHLEVEL / 1000); +$ver = sprintf("%5.3f", $] + 0); $release = substr($ver,0,3); $patchlevel = substr($ver,3,2); @@ -56,6 +48,17 @@ if ($d_dosuid && $>) { die "You must run as root to install suidperl\n"; } -x 't/TEST' || warn "WARNING: You've never run 'make test'!!!", " (Installing anyway.)\n"; +if ($d_shrplib) { + if (!<libperl*.$so*>) { + warn "WARNING: Can't find libperl*.$so* to install into $shrpdir.", + " (Installing other things anyway.)\n"; + } else { + &makedir($shrpdir); + -w $shrpdir || die "$shrpdir is not writable by you\n"; + &cmd("cp libperl*.$so* $shrpdir"); + } +} + # First we install the version-numbered executables. &unlink("$installbin/perl$ver"); @@ -71,19 +74,13 @@ exit 0 if $versiononly; # Make links to ordinary names if installbin directory isn't current directory. -($bdev,$bino) = stat($installbin); -($ddev,$dino) = stat('.'); - -if ($bdev != $ddev || $bino != $dino) { +if (! &samepath($installbin, '.')) { &unlink("$installbin/perl", "$installbin/suidperl"); &link("$installbin/perl$ver", "$installbin/perl"); &link("$installbin/sperl$ver", "$installbin/suidperl") if $d_dosuid; } -($bdev,$bino) = stat($installbin); -($ddev,$dino) = stat('x2p'); - -if ($bdev != $ddev || $bino != $dino) { +if (! &samepath($installbin, 'x2p')) { &unlink("$installbin/a2p"); &cmd("cp x2p/a2p $installbin/a2p"); &chmod(0755, "$installbin/a2p"); @@ -105,8 +102,7 @@ for (@scripts) { if ($installmansrc ne '') { &makedir($installmansrc); - ($mdev,$mino) = stat($installmansrc); - if ($mdev != $ddev || $mino != $dino) { + if (! &samepath($installmansrc, '.')) { for (@manpages) { ($new = $_) =~ s/man$/$manext/; $new =~ s#.*/##; @@ -131,13 +127,8 @@ $do_installarchlib = $do_installprivlib = 0; &makedir($installprivlib); &makedir($installarchlib); if (chdir "lib") { - ($pdev,$pino) = stat($installarchlib); - ($ldev,$lino) = stat('.'); - $do_installarchlib = ($pdev != $ldev || $pino != $lino); - - ($pdev,$pino) = stat($installprivlib); - ($ldev,$lino) = stat('.'); - $do_installprivlib = ($pdev != $ldev || $pino != $lino); + $do_installarchlib = ! &samepath($installarchlib, '.'); + $do_installprivlib = ! &samepath($installprivlib, '.'); if ($do_installarchlib || $do_installprivlib) { find(\&installlib, '.'); @@ -156,24 +147,19 @@ foreach $file (<*.h libperl*.a>) { # Offer to install perl in a "standard" location -($udev,$uino) = stat($mainperldir); - $mainperl_is_instperl = 0; -if (-w _ && ($udev != $bdev || $uino != $bino) && !$nonono) { +if (-w $mainperldir && ! &samepath($mainperldir, $installbin) && !$nonono) { # First make sure $mainperldir/perl is not already the same as # the perl we just installed if (-x "$mainperldir/perl") { - # Use stat so we detect symbolic links transparently - ($mpdev, $mpino) = stat("$mainperldir/perl"); - ($ipdev, $ipino) = stat("$installbin/perl"); # Try to be clever about mainperl being a symbolic link # to binexp/perl if binexp and installbin are different. $mainperl_is_instperl = - (($mpdev == $ipdev && $mpino == $ipino) || + &samepath("$mainperldir/perl", "$installbin/perl") || (($binexp ne $installbin) && (-l "$mainperldir/perl") && - ((readlink "$mainperldir/perl") eq "$binexp/perl"))); + ((readlink "$mainperldir/perl") eq "$binexp/perl")); } if ((! $mainperl_is_instperl) && (&yn("Many scripts expect perl to be installed as " . diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm index 1631477ec5..e6b96ef562 100644 --- a/lib/ExtUtils/MakeMaker.pm +++ b/lib/ExtUtils/MakeMaker.pm @@ -1539,8 +1539,8 @@ sub new_extliblist { if (@fullname=<${thispth}/lib${thislib}.${so}.[0-9]*>){ $fullname=$fullname[-1]; #ATTN: 10 looses against 9! } elsif (-f ($fullname="$thispth/lib$thislib.$so")){ - } elsif (-f ($fullname="$thispth/lib${thislib}_s.a") - && ($thislib .= "_s") ){ # we must explicitly ask for _s version + } elsif (-f ($fullname="$thispth/lib${thislib}_s.a") + && ($thislib .= "_s") ){ # we must explicitly ask for _s version } elsif (-f ($fullname="$thispth/lib$thislib.a")){ } elsif (-f ($fullname="$thispth/Slib$thislib.a")){ } else { diff --git a/lib/Term/Cap.pm b/lib/Term/Cap.pm index 30389bb37c..e1476a3411 100644 --- a/lib/Term/Cap.pm +++ b/lib/Term/Cap.pm @@ -71,7 +71,7 @@ sub Tgetent { $entry = $1; $_ = $2; s/\\E/\033/g; - s/\\(\d\d\d)/pack('c',$1 & 0177)/eg; + s/\\(\d\d\d)/pack('c',oct($1) & 0177)/eg; s/\\n/\n/g; s/\\r/\r/g; s/\\t/\t/g; @@ -1195,7 +1195,7 @@ char *sig; return 0; } -VOIDRET +Signal_t sighandler(sig) int sig; { diff --git a/miniperlmain.c b/miniperlmain.c index 44c3d71874..a17eb7f07a 100644 --- a/miniperlmain.c +++ b/miniperlmain.c @@ -2,7 +2,7 @@ * "The Road goes ever on and on, down from the door where it began." */ -#include "INTERN.h" +#include "EXTERN.h" #include "perl.h" static void xs_init _((void)); @@ -2060,7 +2060,7 @@ EXT U32 opargs[] = { 0x0111111d, /* msgrcv */ 0x0001111d, /* semget */ 0x0011111d, /* semctl */ - 0x0001111d, /* semop */ + 0x0000111d, /* semop */ 0x000009c0, /* require */ 0x00000140, /* dofile */ 0x00000140, /* entereval */ @@ -564,7 +564,7 @@ msgrcv msgrcv ck_fun imst S S S S S semget semget ck_fun imst S S S semctl semctl ck_fun imst S S S S -semop semop ck_fun imst S S S +semop semop ck_fun imst S S # Eval. @@ -211,7 +211,7 @@ PerlInterpreter *sv_interp; return; Safefree(sv_interp); } -#ifndef STANDARD_C +#if !defined(STANDARD_C) && !defined(HAS_GETENV_PROTOTYPE) char *getenv _((char *)); /* Usually in <stdlib.h> */ #endif @@ -172,7 +172,7 @@ EXT char Error[1]; # endif #else # ifndef memcmp -# define memcmp(s1,s2,l) my_memcmp(s1,s2,l) +# define memcmp my_memcmp # endif #endif /* HAS_MEMCMP */ @@ -447,17 +447,17 @@ EXT char Error[1]; #endif #if defined(cray) || defined(convex) || defined (uts) || BYTEORDER > 0xffff -# define QUAD +# define HAS_QUAD #endif -#ifdef QUAD +#ifdef HAS_QUAD # ifdef cray -# define quad int +# define Quad_t int # else # if defined(convex) || defined (uts) -# define quad long long +# define Quad_t long long # else -# define quad long +# define Quad_t long # endif # endif #endif @@ -544,8 +544,8 @@ typedef FILE * (*cryptswitch_t) _((FILE *rfp)); #include "handy.h" -#ifdef QUAD -typedef quad IV; +#ifdef HAS_QUAD +typedef Quad_t IV; #else typedef long IV; #endif @@ -576,14 +576,6 @@ union any { # define I286 #endif -#ifndef STANDARD_C -# ifdef CHARSPRINTF - char *sprintf _((char *, const char *, ...)); -# else - int sprintf _((char *, const char *, ...)); -# endif -#endif - #if defined(htonl) && !defined(HAS_HTONL) #define HAS_HTONL #endif @@ -778,6 +770,9 @@ char *strcpy(), *strcat(); #if !defined(HAS_FMOD) && defined(HAS_DREM) #define fmod(x,y) drem((x),(y)) +#else +#define USE_MY_FMOD +#define fmod(x,y) my_fmod(x,y) #endif #ifndef __cplusplus @@ -882,7 +877,7 @@ EXT XPV * Xpv; EXT char buf[1024]; EXT char tokenbuf[256]; EXT struct stat statbuf; -#ifndef MSDOS +#ifdef HAS_TIMES EXT struct tms timesbuf; #endif EXT STRLEN na; /* for use in SvPV when length is Not Applicable */ diff --git a/pod/Makefile b/pod/Makefile index d96fd7da3e..077ecd19bb 100644 --- a/pod/Makefile +++ b/pod/Makefile @@ -104,3 +104,4 @@ html: $(HTML) clean: rm -f $(MAN) $(HTML) +realclean: clean @@ -2280,14 +2280,14 @@ PP(pp_unpack) I16 ashort; int aint; I32 along; -#ifdef QUAD - quad aquad; +#ifdef HAS_QUAD + Quad_t aquad; #endif U16 aushort; unsigned int auint; U32 aulong; -#ifdef QUAD - unsigned quad auquad; +#ifdef HAS_QUAD + unsigned Quad_t auquad; #endif char *aptr; float afloat; @@ -2726,15 +2726,15 @@ PP(pp_unpack) sv_setpvn(sv, aptr, len); PUSHs(sv_2mortal(sv)); break; -#ifdef QUAD +#ifdef HAS_QUAD case 'q': EXTEND(SP, len); while (len-- > 0) { - if (s + sizeof(quad) > strend) + if (s + sizeof(Quad_t) > strend) aquad = 0; else { - Copy(s, &aquad, 1, quad); - s += sizeof(quad); + Copy(s, &aquad, 1, Quad_t); + s += sizeof(Quad_t); } sv = NEWSV(42, 0); sv_setiv(sv, (IV)aquad); @@ -2744,11 +2744,11 @@ PP(pp_unpack) case 'Q': EXTEND(SP, len); while (len-- > 0) { - if (s + sizeof(unsigned quad) > strend) + if (s + sizeof(unsigned Quad_t) > strend) auquad = 0; else { - Copy(s, &auquad, 1, unsigned quad); - s += sizeof(unsigned quad); + Copy(s, &auquad, 1, unsigned Quad_t); + s += sizeof(unsigned Quad_t); } sv = NEWSV(43, 0); sv_setiv(sv, (IV)auquad); @@ -2929,9 +2929,9 @@ PP(pp_pack) unsigned int auint; I32 along; U32 aulong; -#ifdef QUAD - quad aquad; - unsigned quad auquad; +#ifdef HAS_QUAD + Quad_t aquad; + unsigned Quad_t auquad; #endif char *aptr; float afloat; @@ -3227,22 +3227,22 @@ PP(pp_pack) sv_catpvn(cat, (char*)&along, sizeof(I32)); } break; -#ifdef QUAD +#ifdef HAS_QUAD case 'Q': while (len-- > 0) { fromstr = NEXTFROM; - auquad = (unsigned quad)SvIV(fromstr); - sv_catpvn(cat, (char*)&auquad, sizeof(unsigned quad)); + auquad = (unsigned Quad_t)SvIV(fromstr); + sv_catpvn(cat, (char*)&auquad, sizeof(unsigned Quad_t)); } break; case 'q': while (len-- > 0) { fromstr = NEXTFROM; - aquad = (quad)SvIV(fromstr); - sv_catpvn(cat, (char*)&aquad, sizeof(quad)); + aquad = (Quad_t)SvIV(fromstr); + sv_catpvn(cat, (char*)&aquad, sizeof(Quad_t)); } break; -#endif /* QUAD */ +#endif /* HAS_QUAD */ case 'P': len = 1; /* assume SV is correct length */ /* FALL THROUGH */ @@ -880,7 +880,7 @@ I32 cxix; } } -#ifdef STANDARD_C +#ifdef I_STDARG OP * die(char* pat, ...) #else @@ -1531,14 +1531,15 @@ PP(pp_goto) SAVETMPS; if (CvXSUB(cv)) { if (CvOLDSTYLE(cv)) { + I32 (*fp3)_((int,int,int)); while (sp > mark) { sp[1] = sp[0]; sp--; } - items = (*(I32(*)_((int,int,int)))CvXSUB(cv))( - CvXSUBANY(cv).any_i32, - mark - stack_base + 1, - items); + fp3 = (I32(*)_((int,int,int)))CvXSUB(cv); + items = (*fp3)(CvXSUBANY(cv).any_i32, + mark - stack_base + 1, + items); sp = stack_base + items; } else { @@ -1592,6 +1592,7 @@ PP(pp_entersub) if (CvXSUB(cv)) { if (CvOLDSTYLE(cv)) { + I32 (*fp3)_((int,int,int)); dMARK; register I32 items = SP - MARK; while (sp > mark) { @@ -1599,8 +1600,10 @@ PP(pp_entersub) sp--; } stack_sp = mark + 1; - items = (*(I32(*)_((int,int,int)))CvXSUB(cv))(CvXSUBANY(cv).any_i32, - MARK - stack_base + 1, items); + fp3 = (I32(*)_((int,int,int)))CvXSUB(cv); + items = (*fp3)(CvXSUBANY(cv).any_i32, + MARK - stack_base + 1, + items); stack_sp = stack_base + items; } else { @@ -2616,8 +2616,8 @@ PP(pp_system) int childpid; int result; int status; - VOIDRET (*ihand)(); /* place to save signal during system() */ - VOIDRET (*qhand)(); /* place to save signal during system() */ + Signal_t (*ihand)(); /* place to save signal during system() */ + Signal_t (*qhand)(); /* place to save signal during system() */ #if defined(HAS_FORK) && !defined(VMS) if (SP - MARK == 1) { @@ -1,7 +1,7 @@ -#ifndef GNUC_ATTRIBUTE_CHECK /* disable GNUC attribute checking if not GNUC */ -#ifdef __attribute__ /* Avoid possible redefinition errors */ +#ifndef HASATTRIBUTE /* disable GNU-cc attribute checking? */ +#ifdef __attribute__ /* Avoid possible redefinition errors */ #undef __attribute__ -#endif +#endif #define __attribute__(attr) #endif #ifdef OVERLOAD @@ -207,6 +207,9 @@ char* my_bcopy _((char* from, char* to, I32 len)); char* my_bzero _((char* loc, I32 len)); #endif void my_exit _((I32 status)) __attribute__((noreturn)); +#ifdef USE_MY_FMOD +double my_fmod _((double x, double y)); +#endif I32 my_lstat _((void)); #ifndef HAS_MEMCMP I32 my_memcmp _((unsigned char* s1, unsigned char* s2, I32 len)); @@ -386,7 +389,7 @@ char* screaminstr _((SV* bigsv, SV* littlesv)); #ifndef VMS I32 setenv_getix _((char* nam)); #endif -VOIDRET sighandler _((int sig)); +Signal_t sighandler _((int sig)); SV** stack_grow _((SV** sp, SV**p, int n)); int start_subparse _((void)); bool sv_2bool _((SV* sv)); @@ -19,9 +19,11 @@ #include <signal.h> #endif +/* Omit this -- it causes too much grief on mixed systems. #ifdef I_UNISTD # include <unistd.h> #endif +*/ #ifdef I_VFORK # include <vfork.h> @@ -97,9 +99,9 @@ unsigned long size; #endif /* MSDOS */ { char *ptr; -#ifndef STANDARD_C +#if !defined(STANDARD_C) && !defined(HAS_REALLOC_PROTOTYPE) char *realloc(); -#endif /* ! STANDARD_C */ +#endif /* !defined(STANDARD_C) && !defined(HAS_REALLOC_PROTOTYPE) */ #ifdef MSDOS if (size > 0xffff) { @@ -832,7 +834,7 @@ mess(pat, args) return buf; } -#ifdef STANDARD_C +#ifdef I_STDARG void croak(char* pat, ...) #else @@ -866,7 +868,7 @@ croak(pat, va_alist) } void -#ifdef STANDARD_C +#ifdef I_STDARG warn(char* pat,...) #else /*VARARGS0*/ @@ -1342,11 +1344,7 @@ I32 my_pclose(ptr) FILE *ptr; { -#ifdef VOIDSIG - void (*hstat)(), (*istat)(), (*qstat)(); -#else - int (*hstat)(), (*istat)(), (*qstat)(); -#endif + Signal_t (*hstat)(), (*istat)(), (*qstat)(); int status; SV **svp; int pid; @@ -1606,3 +1604,28 @@ I32 *retlen; *retlen = s - start; return retval; } + +/* Amazingly enough, some systems (e.g. Dynix 3) don't have fmod. + This is a slow, stupid, but working emulation. (AD) +*/ +#ifdef USE_MY_FMOD +double +my_fmod(x, y) +double x, y; +{ + double i = 0.0; /* Can't use int because it can overflow */ + if ((x == 0) || (y == 0)) + return 0; + /* The sign of fmod is the same as the sign of x. */ + if ( (x < 0 && y > 0) || (x > 0 && y < 0) ) + y = -y; + if (x > 0) { + while (x - i*y > y) + i++; + } else { + while (x - i*y < y) + i++; + } + return x - i * y; +} +#endif |