This commit is contained in:
2023-12-26 16:40:53 -05:00
commit ab64084f63
93 changed files with 40857 additions and 0 deletions

694
Config Executable file
View File

@@ -0,0 +1,694 @@
#!/bin/sh
#
# (C) 1993, 1994 By Darren Reed, avalon@coombs.anu.edu.au
# You may distribute this file without changes freely providing this notice
# remains intact. This file may not be redistributed or made available for
# distribution without the author's prior consent.
#
trap "" 13 14 15
MV=/bin/mv
RM=/bin/rm
SETUP=include/setup.h
#
STDLIBH=undef
STDDEFH=undef
SYSSYSLOGH=undef
MALLOCH=undef
PARAMH=undef
UNISTDH=undef
STRINGH=undef
STRINGSH=undef
NOINDEX=undef
NSTRERROR=undef
NSTRTOKEN=undef
NSTRTOK=undef
NINETADDR=undef
NINETNTOA=undef
NINETNETOF=undef
GETTIMEOFDAY=undef
LRAND48=undef
CCPATH=''
SIGNAL=''
BLOCKING=''
TMP=/tmp/.Configtmp$$.c
EXEC=/tmp/.Configtmp$$
PLATE=/tmp/.ConPlate$$
c=''
n=''
#
2>/dev/null
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
c='\c'
else
n='-n'
fi
#if [ ! -f Makefile.bak ] ; then
# mv Makefile Makefile.bak
# cp Makefile.bak Makefile
# chmod ugo-xw Makefile Makefile.bak
# chmod u+w Makefile
#fi
echo " "
echo " Welcome to autoconfigure for the IRC server."
echo "Before running this script and expecting it to work, please fix the"
echo "Makefile in this directory (I can only do so much without your help!)"
echo "and I'll look into it for help and to checkup on your compiler"
echo "preferences, etc"
echo " "
echo "Enter \"none\" at any prompt to effect a null entry."
echo " "
FOO=`egrep "^CC=" Makefile 2>/dev/null | sed -e 's/^[^=]*[ ]*=\(.*\)/\1/'`
while [ -z "$CCPATH" ] ; do
MYP=`echo "$PATH" | sed -e 's/:/ /g'`
echo "Which compiler do you use, gcc or cc or...?"
echo $n "[$FOO] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$FOO
CCPATH=$FOO
elif [ -f $cc ] ; then
CCPATH=$cc
else
for i in $MYP; do
if [ -f $i/$cc -a -z "$CCPATH" ] ; then
CCPATH=$i/$cc
fi
done
fi
done
if [ "$FOO" != "$cc" ] ; then
MYP=`echo "$CCPATH" | sed -e 's@/@ @g'`
set $MYP
if [ $2 ] ; then
while [ $2 ] ; do
shift
done
fi
if [ $1 = "gcc" ] ; then
CCPATH="$CCPATH -traditional"
fi
fi
echo "Compiler selected: $CCPATH"
echo " "
# Check it out
cat > $TMP <<_EOF_
main() {}
_EOF_
$CCPATH $TMP -o $EXEC >/dev/null 2>&1
if [ ! -f $EXEC ] ; then
echo "You don't have $CCPATH or it's broken!"
exit 1
fi
# Fix Makefile
#
#$RM -f $TMP
#sed -e "s@^CC=\(.*\)@CC=$CCPATH@" Makefile > $TMP
#cp $TMP Makefile
#$RM -f $TMP
#
echo "Enter additional flags to give to $CCPATH"
FOO=`egrep "^CFLAGS=" Makefile 2>/dev/null | sed -e 's/^[^=]*=[ ]*\(.*\)/\1/'`
INC=`egrep "^INCLUDEDIR=" Makefile 2>/dev/null | sed -e 's/^[^=]*=\(.*\)/\1/'`
FOO=`echo "$FOO" | sed -e "s@\\$(INCLUDEDIR)@$INC@"`
echo $n "[$FOO] -> $c"
read cc
if [ "$cc" = "none" ] ; then
cc=''
elif [ -z "$cc" ] ; then
cc=$FOO
fi
CFLAGS=$cc
# Fix Makefile
#
#$RM -f $TMP
#sed -e "s@^CFLAGS=\(.*\)@CFLAGS=$CFLAGS@" Makefile > $TMP
#cp $TMP Makefile
#$RM -f $TMP
#
echo " "
echo "If you need to use any extra libraries when compiling the server,"
echo "please tell me now (might need to look at the Makefiles) and please"
echo "include all the -l and -L flags (I'm lame)."
LIBS=`egrep "^IRCDLIBS=" Makefile 2>/dev/null | sed -e 's/^[^=]*=\(.*\)/\1/' | tr -d "\012"`
echo $n "[$LIBS] -> $c"
read cc;
if [ "$cc" = "none" ] ; then
cc=''
elif [ -z "$cc" ] ; then
cc=$LIBS
fi
LIBS=$cc
# Fix Makefile
#
#$RM -f $TMP
#sed -e "s@^IRCDLIBS=\(.*\)@IRCDLIBS=$LIBS@" Makefile > $TMP
#cp $TMP Makefile
#$RM -f $TMP
#
COMP="$CCPATH $CFLAGS $TMP -o $EXEC $LIBS"
#
#
echo 'Checking out /usr/include'
echo $n "...Looking for /usr/include/stdlib.h...$c"
if [ -r /usr/include/stdlib.h ] ; then
STDLIBH=define
echo 'found!'
else
echo 'not found :('
fi
# gcc has its own stddef.h
FOO=''
if [ ! -z "`echo $CCPATH | grep gcc`" ] ; then
FOO=`$CCPATH -v 2>&1 | head -1 | \
sed -e 's/Reading specs from //' -e 's/specs$/include/'`
fi
echo $n "...Looking for stddef.h...$c"
if [ -r $FOO/stddef.h ] ; then
STDDEFH=define
echo "found in $FOO!"
elif [ -r /usr/include/stddef.h ] ; then
STDDEFH=define
echo 'found!'
else
echo 'not found :('
fi
echo $n "...Looking for /usr/include/sys/syslog.h...$c"
if [ -r /usr/include/sys/syslog.h ] ; then
SYSSYSLOGH=define
echo 'found!'
else
echo 'not found :('
fi
echo $n "...Looking for malloc.h...$c"
if [ -r /usr/include/malloc.h ] ; then
MALLOCH=malloc.h
echo 'found!'
elif [ -r /usr/include/sys/malloc.h ] ; then
MALLOCH=sys/malloc.h
echo 'found!'
else
echo 'not found :('
MALLOCH=undef
fi
echo $n "...Looking for /usr/include/sys/param.h...$c"
if [ -r /usr/include/sys/param.h ] ; then
PARAMH=define
echo 'found!'
else
echo 'not found :('
fi
echo $n "...Looking for /usr/include/unistd.h...$c"
if [ -r /usr/include/unistd.h ] ; then
UNISTDH=define
echo 'found!'
else
echo 'not found :('
fi
echo $n "...Looking for /usr/include/string.h...$c"
if [ -r /usr/include/string.h ] ; then
STRINGH=define
echo 'found!'
else
echo 'not found :('
fi
echo $n "...Looking for /usr/include/strings.h...$c"
if [ -r /usr/include/strings.h ] ; then
STRINGSH=define
echo 'found!'
else
echo 'not found :('
fi
#
# to b or not to b
#
echo " "
echo $n "To be or not to be...$c"
cat > $TMP <<_EOF_
main()
{
char a[3], b[3];
bzero(b,3);
bcopy(a,b,3);
(void)bcmp(a,b,3);
exit(0);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "and so it shall be! bcopy/bzero/bcmp are about!"
BZERO=bzero
else
echo "and it wasn't. No bcopy/bzero/bcmp...hmpf"
BZERO=memset
fi
echo " "
echo $n "Which one, gettimeofday, or lrand48..$c"
cat > $TMP <<_EOF_
#include <stdio.h>
#include <sys/time.h>
main()
{
struct timeval tv;
(void) gettimeofday(&tv, NULL);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "We have a winner! gettimeofday found."
GETTIMEOFDAY=define
else
echo "No gettimeofday. Lets try lrand48."
cat > $TMP <<_EOF_
main()
{
int a;
a=lrand48();
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "Bingo! lrand48!"
LRAND48=define
fi
fi
#
# check for non-blocking fd style available..
#
echo " "
echo 'Checking for POSIX/BSD/SYSV non-blocking stuff'
if [ -f $TMP -o -d $TMP ] ; then
$RM -f $TMP
fi
cat > $PLATE <<_EOF_
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed()
{
exit(1);
}
main()
{
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, BLOCKING))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, x, &l);
alarm(0);
exit(0);
}
exit(1);
}
_EOF_
sed -e 's/BLOCKING/O_NONBLOCK/' $PLATE > $TMP
$COMP >/dev/null 2>&1
if [ 0 -eq $? ] ; then
$EXEC
fi
if [ 0 -eq $? ] ; then
BLOCK=O_NONBLOCK
else
echo 'O_NONBLOCK not present/working in fcntl.h or sys/ioctl.h'
if [ -f $TMP -o -d $TMP ] ; then
$RM -f $TMP $EXEC;
fi
sed -e 's/BLOCKING/O_NDELAY/' $PLATE > $TMP
$COMP >/dev/null 2>&1
if [ 0 -eq $? ] ; then
$EXEC
fi
if [ 0 -eq $? ] ; then
BLOCK=O_NDELAY
else
echo 'O_NDELAY not present/working in fcntl.h or sys/ioctl.h'
if [ -f $TMP -o -d $TMP ] ; then
$RM -f $TMP $EXEC;
fi
sed -e 's/BLOCKING/FIONBIO/' $PLATE > $TMP
$COMP >/dev/null 2>&1
if [ 0 -eq $? ] ; then
echo 'FIONBIO not found! No option found!'
BLOCK=none
else
BLOCK=FIONBIO
fi
fi
fi
$RM -f $TMP $PLATE $EXEC
echo "Blocking selected: $BLOCK";
#
# reliable signals ?
#
echo 'Looking for reliable signals...'
echo "Hmmm...wonder if you have 'action from POSIX..."
cat > $TMP <<_EOF_
#include <signal.h>
main()
{ /* poor replacement for NULL but who cares here ? */
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "Ooooh, you are a lucky one! 'action from POSIX!"
SIGNAL=posix
else
$RM -f $EXEC $TMP
cat > $TMP <<_EOF_
#include <signal.h>
int calls = 0;
void handler()
{
if (calls)
return;
calls++;
kill(getpid(), SIGTERM);
sleep(1);
}
main()
{
signal(SIGTERM, handler);
kill(getpid(), SIGTERM);
exit (0);
}
_EOF_
echo $n "Nope, but you have...$c"
$COMP >/dev/null 2>&1
$EXEC
if [ $? -eq 0 ] ; then
echo 'reliable signals! Cheers BSD!'
SIGNAL=bsd
else
echo "yucky, unreliable SYSV!"
SIGNAL=sysv
fi
fi
$RM -f $EXEC $TMP
#
echo 'Now those strings libraries...hmm...which one is it...'
cat > $TMP <<_EOF_
#$STRINGH STRINGH
#$STRINGSH STRINGSH
#ifdef STRINGH
#include <string.h>
#endif
#ifdef STRINGSH
#include <strings.h>
#endif
main()
{
char *s = index("foo", 'o');
exit(0);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "Cool...you have index()!"
else
NOINDEX=define
echo "Grmpf...I guess there is a strchr() out there somewhere..."
fi
$RM -f $EXEC $TMP
#
# getrusage or times ?
#
echo $n "One for debugging, mainly, getrusage(2) or times(2)...$c"
cat > $TMP <<_EOF_
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
main()
{
struct rusage rus;
(void)getrusage(RUSAGE_SELF, &rus);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -eq 0 ] ; then
TIMES=getrusage
echo "getrusage()"
else
$RM -f $EXEC $TMP
cat > $TMP <<_EOF_
#include <sys/types.h>
#include <sys/time.h>
#include <sys/times.h>
main()
{
struct tms tmsbuf;
(void)times(&tmsbuf);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -eq 0 ] ; then
TIMES=times
echo "times()"
else
echo "couldn't get either ?!"
TIMES=none
fi
fi
#
# what do we need that isn't here already ?
#
echo "What else do I need that you don't have..."
echo $n "Lets see...$c"
cat > $TMP <<_EOF_
main()
{
char *s = strerror(0);
exit(0);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo $n " strerror$c"
NSTRERROR=define
fi
$RM -f $EXEC $TMP
cat > $TMP <<_EOF_
#$STRINGH STRINGH
#$STRINGSH STRINGSH
#ifdef STRINGH
#include <string.h>
#endif
#ifdef STRINGSH
#include <strings.h>
#endif
main()
{
char *t = "a", **p = NULL, *s = strtoken(&p, t, ",");
if (!strcmp(t, s))
exit(0);
exit(1);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo $n " strtoken$c"
NSTRTOKEN=define
else
$EXEC
if [ $? -ne 0 ] ; then
echo $n " strtoken$c"
NSTRTOKEN=define
fi
fi
$RM -f $EXEC $TMP
cat > $TMP <<_EOF_
#$STRINGH STRINGH
#$STRINGSH STRINGSH
#ifdef STRINGH
#include <string.h>
#endif
#ifdef STRINGSH
#include <strings.h>
#endif
main()
{
char *t = "a", *s = strtok(t, ",");
if (!strcmp(t, s))
exit(0);
exit(1);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo $n " strtok$c"
NSTRTOK=define
else
$EXEC
if [ $? -ne 0 ] ; then
echo $n " strtok$c"
NSTRTOK=define
fi
fi
$RM -f $EXEC $TMP
cat > $TMP << _EOF_
#include <sys/types.h>
#include <netinet/in.h>
main()
{
struct in_addr in;
(void)inet_addr("1.2.3.4");
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo $n " inet_addr$c"
NINETADDR=define
fi
$RM -f $EXEC $TMP
cat > $TMP << _EOF_
#include <sys/types.h>
#include <netinet/in.h>
main()
{
struct in_addr in;
in.s_addr = 0x12345678;
(void)inet_ntoa(in);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo $n " inet_ntoa$c"
fi
$RM -f $EXEC $TMP
cat > $TMP << _EOF_
#include <sys/types.h>
#include <netinet/in.h>
main()
{
struct in_addr in;
in.s_addr = 0x87654321;
(void)inet_netof(in);
}
_EOF_
$COMP >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo $n " inet_netof$c"
NINETNETOF=define
fi
$RM -f $EXEC $TMP
echo " "
#
#
#
echo " "
echo "Ok, here's your chance...I think you should use $BLOCK, you want"
echo "which of these ? O_NONBLOCK (POSIX) O_NDELAY (BSD) FIONBIO (SYSV)"
echo $n "[$BLOCK] -> $c"
read cc
if [ "$cc" = "none" ] ; then
cc=''
elif [ -z "$cc" ] ; then
cc=$BLOCK
fi
BLOCK=$cc
echo "I found $SIGNAL signals."
if [ "$cc" = "none" ] ; then
cc=''
elif [ "$SIGNAL" = "posix" ] ; then
echo "Hmmm...I'm not sure if signal() is reliable or not either..."
fi
echo "You can choose between posix, bsd and sysv. What'll it be ?"
echo $n "[$SIGNAL] -> $c"
read cc
if [ "$cc" = "none" ] ; then
cc=''
elif [ -z "$cc" ] ; then
cc=$SIGNAL
fi
SIGNAL=$cc
if [ "$TIMES" = "none" ] ; then
echo "I didn't find either getrusage or times earlier...If you do have"
echo "either of these, please tell me now."
else
echo "I found $TIMES, out of getrusage and times. getrusage is"
echo "more informative. If you wish to swap your choice, please"
echo "do so now."
fi
echo $n "[$TIMES] -> $c"
read cc
if [ "$cc" = "none" ] ; then
cc=''
elif [ -z "$cc" ] ; then
cc=$TIMES
fi
TIMES=$cc
$RM -f $EXEC $TMP $PLATE
$MV -f $SETUP $SETUP.bak 2>/dev/null
cat > $SETUP <<_EOF_
#ifndef __setup_include__
#define __setup_include__
#$PARAMH PARAMH
#$UNISTDH UNISTDH
#$STRINGH STRINGH
#$STRINGSH STRINGSH
#$STDLIBH STDLIBH
#$STDDEFH STDDEFH
#$SYSSYSLOGH SYSSYSLOGH
#$NOINDEX NOINDEX
#$NSTRERROR NEED_STRERROR
#$NSTRTOKEN NEED_STRTOKEN
#$NSTRTOK NEED_STRTOK
#$NINETADDR NEED_INET_ADDR
#$NINETNTOA NEED_INET_NTOA
#$NINETNETOF NEED_INET_NETOF
#$GETTIMEOFDAY GETTIMEOFDAY
#$LRAND48 LRAND48
_EOF_
if [ "$MALLOCH" = "undef" ] ; then
echo "#undef MALLOCH" >> $SETUP
else
echo "#define MALLOCH <$MALLOCH>" >> $SETUP
fi
if [ "$BZERO" = "memset" ] ; then
cat >> $SETUP <<_EOF_
#define bzero(a,b) memset(a,0,b)
#define bcopy(a,b,c) memcpy(b,a,c)
#define bcmp memcmp
_EOF_
fi
if [ "$BLOCK" = "O_NONBLOCK" ] ; then
echo "#define NBLOCK_POSIX" >> $SETUP
elif [ "$BLOCK" = "O_NDELAY" ] ; then
echo "#define NBLOCK_BSD" >> $SETUP
else
echo "#define NBLOCK_SYSV" >> $SETUP
fi
if [ "$SIGNAL" = "posix" ] ; then
echo "#define POSIX_SIGNALS" >> $SETUP
elif [ "$SIGNAL" = "bsd" ] ; then
echo "#define BSD_RELIABLE_SIGNALS" >> $SETUP
else
echo "#define SYSV_UNRELIABLE_SIGNALS" >> $SETUP
fi
if [ "$TIMES" = "times" ] ; then
echo "#define TIMES_2" >> $SETUP
echo "#undef GETRUSAGE_2" >> $SETUP
elif [ "$TIMES" = "getrusage" ] ; then
echo "#undef TIMES_2" >> $SETUP
echo "#define GETRUSAGE_2" >> $SETUP
else
echo "#undef TIMES_2" >> $SETUP
echo "#undef GETRUSAGE_2" >> $SETUP
fi
echo "#endif" >> $SETUP
touch include/config.h
echo " "
echo "If you would like to issue any shell commands before proceeding, do so"
echo "now. My findings are in include/setup.h if you wish to change them."
echo $n "--> $c"
read cc
if [ ! -z "$cc" ] ; then
$cc
fi
exit 0