# 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!!!!!
cat <<'EOM'
(Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
EOM
+ unset ENV
exec /bin/ksh $0 "$@"
fi
else
known_extensions=''
static_ext=''
useposix=''
+d_bsd=''
d_eunice=''
d_xenix=''
eunicefix=''
chgrp=''
chmod=''
chown=''
+comm=''
compress=''
cp=''
cpio=''
archname=''
d_archlib=''
installarchlib=''
+baserev=''
bin=''
binexp=''
installbin=''
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=''
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=''
ranlib=''
package=''
spackage=''
+patchlevel=''
prefix=''
installprivlib=''
privlib=''
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
: 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++) {
error=''
silent=''
extractsh=''
+override=''
optdef='optdef.sh'
+rm -f $optdef
: option parsing
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
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
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;;
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.
-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'
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)
echo "Fetching answers from $config_sh..."
cd ..
. $config
+ test "$override" && . ./$optdef
echo " "
. ./UU/extract
rm -rf UU
: 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
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 " "
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
: 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
;;
*)
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
loclist="
awk
cat
+comm
cp
echo
expr
"
trylist="
Mcc
-bison
byacc
cpp
csh
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
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`"
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
$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
[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
*.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
esac
;;
netbsd*) osname=netbsd
- osvers="$3"
- ;;
+ osvers="$3"
+ ;;
bsd386) osname=bsd386
osvers=`$uname -r`
;;
solaris) osname=solaris
case "$3" in
5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
+ *) osvers="$3" ;;
esac
;;
sunos) osname=sunos
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
: 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
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
: 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
esac
;;
*)
- dflt=`echo $hintfile | sed 's/\.sh$//'`
+ dflt=`echo $hintfile | $sed 's/\.sh$//'`
;;
esac
*)
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
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" ;;
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`
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
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..."
echo exit 0 >venix
else
echo " "
- if xenix; then
+ if ./xenix; then
: null
else
echo "Nor is it Venix..."
: see if we need a special compiler
echo " "
-if usg; then
+if ./usg; then
case "$cc" in
'') case "$Mcc" in
/*) dflt='Mcc';;
. ./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
*) 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
. ./myread
case "$ans" in
y*) d_portable="$define"
- for file in $loclist $trylist; do
- eval $file="\$file"
- done
;;
*) d_portable="$undef" ;;
esac
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 : '\(.*\):.*'`
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=''
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";;
ans="$value"
rp="$orig_rp"
dflt="$orig_dflt"
+rm -f getfile.ok
EOSC
: What should the include directory be ?
: flags used in final linking phase
case "$ldflags" in
-'') if venix; then
+'') if ./venix; then
dflt='-i -z'
else
dflt=''
: 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
;;
*) 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
: 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
$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
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
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))"
;;
*)
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".
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
: 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
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"
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*
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
val="$define";;
esac
else
- if usg; then
+ if ./usg; then
xxx="USG one, i.e. you use setpgrp()."
val="$undef"
else
intsize="$ans"
$rm -f try.c try
-: check for ability to cast large floats to 32-bit ints.
+: see if signal is declared as pointer to function returning int or void
echo " "
-echo 'Checking whether your C compiler can cast large floats to int32.' >&4
-if $test "$intsize" -eq 4; then
- xxx=int
+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
- xxx=long
-fi
-$cat >try.c <<EOCP
-#include <sys/types.h>
-#include <signal.h>
-blech() { exit(3); }
-main()
+ 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
+if $test "$intsize" -eq 4; then
+ xxx=int
+else
+ xxx=long
+fi
+$cat >try.c <<EOCP
+#include <sys/types.h>
+#include <signal.h>
+$signal_t blech() { exit(3); }
+main()
{
$xxx i32;
double f;
: 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;
./try
castflags=$?
else
+ echo "(I can't seem to compile the test program--assuming it can't)"
castflags=3
fi
case "$castflags" in
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
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";
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'
: 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
fi
set d_dirnamlen
eval $setvar
+$rm -f try.c
: see if dlerror exists
set dlerror d_dlerror
*)
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
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?"
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
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='' ;;
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
;;
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
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.
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
"$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?'
$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
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 ;;
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
eval "$var=$def";
fi;
$rm -f temp.?;;
-*) eval "$var=$val";;
+*) eval "$var=$varval";;
esac'
: see if this is a sys/times.h system
*) 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
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
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
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
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
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!"
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'
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
$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
. ./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
$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
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"
: 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"
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
. ./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
: get C preprocessor symbols handy
echo " "
+$echo $n "Hmm... $c"
echo $al | $tr ' ' '\012' >Cppsym.know
$cat <<EOSS >Cppsym
$startsh
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"
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"
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"
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
# 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'
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'
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'
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'
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'
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'
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
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
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
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/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
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
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
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
--- /dev/null
+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
*) 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
CCDLFLAGS = $ccdlflags
CCCDLFLAGS = $cccdlflags
DLSUFFIX = .$dlext
+PLDLFLAGS = $pldlflags
+PLIBSUF = $plibsuf
+SHRPENV = $shrpenv
dynamic_ext = $dynamic_list
static_ext = $static_list
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)
# 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
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
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
-@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)
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"
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
: 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=''
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
${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
@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
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
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
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
: 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.
* $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
*/
*/
#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.
*/
#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
* 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:
*/
#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.
* 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
* 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
* within your programs. The mere use of the "const" keyword will
* trigger the necessary tests.
*/
-#define HASCONST /**/
+/*#define HASCONST /**/
#ifndef HASCONST
#define const
#endif
*/
#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.
*/
/*#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.
*/
/*#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
#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
*/
#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.
*/
#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.
*/
/*#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.
*/
#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
* 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)
*/
#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.
*/
#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
* 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
*/
#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
*/
/*#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
* 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
*/
#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
*
* int main _((int argc, char *argv[]));
*/
-#define CAN_PROTOTYPE /**/
+/*#define CAN_PROTOTYPE /**/
#ifdef CAN_PROTOTYPE
#define _(args) args
#else
*/
#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".
*/
#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
*/
/*#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
* 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
*/
#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.
*/
#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
*/
#$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.
#$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.
*/
#$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
*/
#$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.
*/
#$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.
*/
#$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
#$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
*/
#$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.
*/
#$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.
*/
#$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.
*/
#$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
*/
#$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.
*/
#$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.
*/
#$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
* 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
*/
#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
*/
#$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
*/
#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
*/
#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".
*/
#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
*/
#$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.
*/
#$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!
#else /* !defined(I_STDARG) && !defined(I_VARARGS) */
-# ifdef STANDARD_C
+# ifdef I_STDARG
void
deb(char *pat, ...)
# else
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;
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++) {
case '.': case '#': case '-': case '+': case ' ':
continue;
case 'l':
-#ifdef QUAD
+#ifdef HAS_QUAD
if (dolong) {
dolong = FALSE;
doquad = TRUE;
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)
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)
#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 ;
}
-static DBXS_PREFIX_TYPE
+static DB_Prefix_t
btree_prefix(key1, key2)
const DBT * key1 ;
const DBT * key2 ;
return (retval) ;
}
-static DBXS_HASH_TYPE
+static DB_Hash_t
hash_cb(data, size)
const void * data ;
size_t size ;
# endif
#else
# ifndef memcmp
-# define memcmp(s1,s2,l) my_memcmp(s1,s2,l)
+# define memcmp my_memcmp
# endif
#endif /* HAS_MEMCMP */
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:/[^/]*$::'`
--- /dev/null
+#include "INTERN.h"
+#include "perl.h"
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
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'
}
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);
-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");
# 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");
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#.*/##;
&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, '.');
# 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 " .
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 {
$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;
return 0;
}
-VOIDRET
+Signal_t
sighandler(sig)
int sig;
{
* "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));
0x0111111d, /* msgrcv */
0x0001111d, /* semget */
0x0011111d, /* semctl */
- 0x0001111d, /* semop */
+ 0x0000111d, /* semop */
0x000009c0, /* require */
0x00000140, /* dofile */
0x00000140, /* entereval */
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.
return;
Safefree(sv_interp);
}
-#ifndef STANDARD_C
+#if !defined(STANDARD_C) && !defined(HAS_GETENV_PROTOTYPE)
char *getenv _((char *)); /* Usually in <stdlib.h> */
#endif
# endif
#else
# ifndef memcmp
-# define memcmp(s1,s2,l) my_memcmp(s1,s2,l)
+# define memcmp my_memcmp
# endif
#endif /* HAS_MEMCMP */
#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
#include "handy.h"
-#ifdef QUAD
-typedef quad IV;
+#ifdef HAS_QUAD
+typedef Quad_t IV;
#else
typedef long IV;
#endif
# 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
#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
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 */
clean:
rm -f $(MAN) $(HTML)
+realclean: clean
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;
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);
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);
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;
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 */
}
}
-#ifdef STANDARD_C
+#ifdef I_STDARG
OP *
die(char* pat, ...)
#else
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 {
if (CvXSUB(cv)) {
if (CvOLDSTYLE(cv)) {
+ I32 (*fp3)_((int,int,int));
dMARK;
register I32 items = SP - MARK;
while (sp > mark) {
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 {
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) {
-#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
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));
#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));
#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>
#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) {
return buf;
}
-#ifdef STANDARD_C
+#ifdef I_STDARG
void
croak(char* pat, ...)
#else
}
void
-#ifdef STANDARD_C
+#ifdef I_STDARG
warn(char* pat,...)
#else
/*VARARGS0*/
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;
*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