--- /dev/null
+#!/bin/sh
+#
+# IRC - Internet Relay Chat, tools/transition
+# Copyright (C) 2001 Kevin L. Mitchell <klmitch@mit.edu>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 1, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Id: transition,v 1.1 2001-06-21 23:28:53 kev Exp $
+
+# Better than having evals all over the place
+setvar () {
+ eval $1=\$2
+}
+getvar () {
+ eval echo \$$1
+}
+
+# Set up an echo that doesn't newline-terminate
+if test x`echo -n` = x-n; then
+ echo_n () {
+ echo "$@"'\c'
+ }
+else
+ echo_n () {
+ echo -n "$@"
+ }
+fi
+
+# Debugging notices, enabled only if $DEBUG has something in it
+if test x"$DEBUG" = x; then
+ deb () {
+ :
+ }
+ deb_n () {
+ :
+ }
+else
+ deb () {
+ echo "$@"
+ }
+ deb_n () {
+ echo_n "$@"
+ }
+fi
+
+# Get base directory; first step, how were we called?
+case $0 in
+*/*)
+ basedir=`echo $0 | sed -e 's@/[^/]*@@g'`
+ ;;
+
+*)
+ basedir=`pwd`
+ ;;
+esac
+
+# Now locate the ircd subdirectory
+if test -d $basedir/ircd; then
+ :
+elif test -d $basedir/../ircd; then
+ basedir=$basedir/..
+elif test -d ./ircd; then
+ basedir=`pwd`
+else
+ echo "Cannot find base ircd directory!" >&2
+ exit 1
+fi
+
+# Finally, canonicalize it
+cwd=`pwd`
+cd $basedir
+basedir=`pwd`
+cd $cwd
+
+deb "Base directory: $basedir"
+
+# This is where our ./configure-parsable results will go
+cache_file=$basedir/config.cache
+
+# Now locate .config and config.cache
+config_in=
+config_cache_in=
+
+# If the config subdirectory isn't there anymore, don't bother checking there
+if test -d $basedir/config; then
+ if test -r $basedir/config/.config; then
+ config_in=$basedir/config/.config
+ fi
+
+ if test -r $basedir/config/config.cache; then
+ config_cache_in=$basedir/config/config.cache
+ fi
+fi
+
+# Last ditch effort...try ../.config
+if test x"$config_in" = x; then
+ if test -r $basedir/../.config; then
+ config_in=$basedir/../.config
+ else
+ echo "Cannot find original .config file!" >&2
+ exit 2
+ fi
+fi
+
+# Last ditch effort...try ../.config.cache
+if test x"$config_cache_in" = x; then
+ if test -r $basedir/../.config.cache; then
+ config_cache_in=$basedir/../.config.cache
+ else
+ echo "Cannot find original config.cache file!" >&2
+ exit 3
+ fi
+fi
+
+# Now load the two data files
+echo "Loading old config.cache file $config_cache_in"
+. $config_cache_in
+echo "Loading old .config file $config_in"
+. $config_in
+
+# Now we have to track down the defaults so we will know what to generate
+# F-lines for
+if test ! -r $basedir/ircd/ircd_features.c; then
+ echo "Cannot find default features!" >&2
+ exit 4
+fi
+
+echo_n "Loading feature default values; please be patient... "
+deb ""
+features=
+exec 4<$basedir/ircd/ircd_features.c
+while read line <&4; do
+ # if a line has '(' but not ')', then we hang them until we find the
+ # matching ')'; this is not robust!
+ if test x"$hangline" != x; then
+ line="$hangline $line"
+ hangline=
+ fi
+
+ if test x"`echo "$line" | grep '(' 2>/dev/null`" != x -a \
+ x"`echo "$line" | grep ')' 2>/dev/null`" = x; then
+ hangline=$line
+ continue
+ fi
+
+ # Now we process the line we read...
+ case $line in
+ \#*) # We want to ignore the #define, since it's a false positive
+ ;;
+
+ F_[NIBS]*) # Found one of the feature define macros
+ type=`echo "$line" | sed -e 's/^F_\([NIBS]\).*$/\1/g'`
+ arglist=`echo "$line" | sed -e 's/^F_[NIBS](\(.*\)),.*/\1/g' \
+ -e 's/ | /|/g'`
+
+ # Now we must parse the arguments
+ tIFS=$IFS
+ IFS=,$IFS
+ name=
+ value=
+ argnum=0
+ for arg in $arglist; do
+ case $type$argnum in
+ [NIBS]0) # First argument is always the name of the feature
+ name=$arg
+ ;;
+
+ I2) # Second argument of F_I() is the numerical value
+ value=$arg
+ ;;
+
+ B2) # Second argument of F_B() is a numerical value
+ # We must convert this numerical value to "y" or "n"
+ if test x"$arg" = x0; then
+ value=n
+ else
+ value=y
+ fi
+ ;;
+
+ [ST]2) # Second argument of F_S() is a string value; must
+ # take into account unquoted possibilities, though
+ dequote=`echo "$arg" | sed -e 's/^"\(.*\)"$/\1/g'`
+ if test x"$dequote" = x"$arg"; then
+ type=T
+ value=$arg
+ else
+ value=$dequote
+ fi
+ ;;
+ esac
+
+ # Next time through, we'll be testing the next argument
+ argnum=`expr $argnum + 1`
+ done
+ IFS=$tIFS
+
+ deb "Loaded feature \"$name\" of type \"$type\"; default: \"$value\""
+
+ # Store the information we extracted
+ setvar type_$name $type
+ setvar def_$name "$value"
+
+ # Keep a list of features we've checked
+ features="$features $name"
+ ;;
+ esac
+done
+exec 4<&-
+echo "done"
+
+echo "Converting some options that are still compile-time"
+
+unet_cv_prefix=`echo $SPATH | sed -e 's@/bin/ircd@@g'`
+deb "Installation directory (derived from SPATH)... $unet_cv_prefix"
+
+deb_n "Enable debugging (DEBUGMODE)... "
+if test x"$DEBUGMODE" = xy; then
+ unet_cv_enable_debug=yes
+else
+ unet_cv_enable_debug=no
+fi
+deb "$unet_cv_enable_debug"
+
+deb_n "Enable assertion checking (CONFIG_NDEBUG)... "
+if test x"$CONFIG_NDEBUG" = xy; then
+ unet_cv_enable_asserts=yes
+else
+ unet_cv_enable_asserts=no
+fi
+deb "$unet_cv_enable_asserts"
+
+deb_n "Force inlining of some critical functions (FORCEINLINE)... "
+if test x"$FORCEINLINE" = xy; then
+ unet_cv_enable_inlines=yes
+else
+ unet_cv_enable_inlines=no
+fi
+deb "$unet_cv_enable_inlines"
+
+unet_cv_with_symlink=$SYMLINK
+deb "Symlink name (SYMLINK)... $unet_cv_with_symlink"
+
+unet_cv_with_mode=$IRCDMODE
+deb "Binary permissions (IRCDMODE)... $unet_cv_with_mode"
+
+unet_cv_with_owner=$IRCDOWN
+deb "Binary owner (IRCDOWN)... $unet_cv_with_owner"
+
+unet_cv_with_group=$IRCDGRP
+deb "Binary group owner (IRCDGRP)... $unet_cv_with_group"
+
+unet_cv_with_domain=$DOMAINNAME
+deb "Local domain name (DOMAINNAME)... $unet_cv_with_domain"
+
+deb_n "Enable CHROOT operation (CHROOTDIR)... "
+if test x"$CHROOTDIR" = xy; then
+ deb_n "yes, path "
+ unet_cv_with_chroot=$DPATH
+else
+ unet_cv_with_chroot=no
+fi
+deb "$unet_cv_with_chroot"
+
+unet_cv_with_dpath=$DPATH
+deb "Data path (DPATH)... $unet_cv_with_dpath"
+
+unet_cv_with_cpath=$CPATH
+deb "Configuration file (CPATH)... $unet_cv_with_cpath"
+
+# LPATH may not be set; if it's not, we'll just ignore it here and let
+# ./configure fill it in appropriately
+if test x"$LPATH" != x; then
+ unet_cv_with_lpath=$LPATH
+ deb "Debug log file (LPATH)... $unet_cv_with_lpath"
+fi
+
+unet_cv_with_maxcon=$MAXCONNECTIONS
+deb "Maximum number of connections (MAXCONNECTIONS)... $unet_cv_with_maxcon"
+
+# Shouldn't run ./configure before the transition script, but we can deal
+if test -r "$cache_file"; then
+ echo "WARNING: Destroying new config.cache file $cache_file" >&2
+ rm $cache_file
+fi
+
+# Create the cache file...
+echo "Creating new config.cache file $cache_file"
+> $cache_file
+
+# This section is copied from a GNU autoconf-generated configure script
+###############################################################################
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+###############################################################################
+
+# If they ran ./configure before, there'll be a config.status hanging around;
+# if so, we can run that to integrate the config.cache we just generated.
+if test -x $basedir/config.status; then
+ echo "Running $basedir/config.status to update configuration"
+ cwd=`pwd`
+ cd $basedir
+ # Have to run it twice to get the Makefile recreated
+ ./config.status --recheck
+ ./config.status
+ cd $cwd
+fi
+
+# Now we need to track down ircd.conf so we can add the F-lines.
+echo_n "Locating IRCD configuration file... "
+case $unet_cv_with_cpath in
+/*) # CPATH is absolute
+ conf_file=$unet_cv_with_cpath
+ ;;
+
+*) # CPATH is relative to DPATH
+ conf_file=$unet_cv_with_dpath/$unet_cv_with_cpath
+ ;;
+esac
+# suppress duplicate '/'
+conf_file=`echo "$conf_file" | sed -e 's@//*@/@g'`
+echo "$conf_file"
+
+# if we can't find the .conf, use "flines.conf" in the base directory (so
+# they'll be easy to find).
+if test ! -r $conf_file; then
+ fline_conf=yes
+ conf_file=$basedir/flines.conf
+ if test ! -r $conf_file; then
+ > $conf_file
+ fi
+ echo "WARNING: Unable to read ircd.conf; you will need to add the" >&2
+ echo " F-lines manually. For your convenience, they will be" >&2
+ echo " placed in $conf_file." >&2
+fi
+
+# here's where we take the old .config and compare it to the feature defaults
+echo_n "Building feature table... "
+for feature in $features; do
+ defval=`getvar def_$feature`
+ value=`getvar $feature`
+
+ if test x"$value" = x -o x"$value" = x"$defval"; then
+ setvar FEAT_$feature $defval
+ else
+ setvar FEAT_$feature $value
+ fi
+done
+
+# We won't add an F-line for DOMAINNAME, since (hopefully) the right one is
+# already compiled in
+FEAT_DOMAINNAME=DOMAINNAME
+
+# Have to make sure we have a RANDOM_SEED to enhance randomness...
+FEAT_RANDOM_SEED=$RANDOM_SEED
+
+# This feature changed names to be consistent...
+FEAT_OPER_LBADCHAN=$LOCAL_BADCHAN
+
+# DEFAULT_LIST_PARAM is perhaps the most complicated to transition, but
+# this'll do the trick...
+if test x"$CONFIG_LIST" = xy; then
+ FEAT_DEFAULT_LIST_PARAM=$DEFAULT_LIST_PARAM
+else
+ FEAT_DEFAULT_LIST_PARAM=0
+fi
+
+echo "done"
+
+# Now we just generate the F-lines
+echo_n "Generating F-lines... "
+exec 4>>$conf_file
+
+# The various log files are set up first--these are all that were defined
+# in u2.10.10.pl15
+if test x"$CONFIG_LOG_WHOX" = xy; then
+ echo "F:LOG:WHO:FILE:$WPATH" >&4
+fi
+if test x"$CONFIG_LOG_GLINES" = xy; then
+ echo "F:LOG:GLINE:FILE:$GPATH" >&4
+fi
+if test x"$CONFIG_LOG_USERS" = xy; then
+ echo "F:LOG:USER:FILE:$FNAME_USERLOG" >&4
+fi
+if test x"$CONFIG_LOG_OPERS" = xy; then
+ echo "F:LOG:OPER:FILE:$FNAME_OPERLOG" >&4
+fi
+
+# Now we traverse the entire feature table and compare values with their
+# defaults
+for feature in $features; do
+ type=`getvar type_$feature`
+ defval=`getvar def_$feature`
+ value=`getvar FEAT_$feature`
+
+ if test x"$defval" != x"$value"; then
+ if test x"$type" = xB; then
+ # Must map booleans yet again; I prefer TRUE/FALSE
+ if test x"$value" = xy; then
+ value=TRUE
+ else
+ value=FALSE
+ fi
+ fi
+
+ # Write the F-line
+ echo "F:$feature:$value" >&4
+ fi
+done
+exec 4>&-
+echo "done"
+
+echo_n "Transition is complete."
+if test ! -r $basedir/config.status; then
+ echo_n " You should now run ./configure."
+fi
+
+echo ""
+
+if test x"$fline_conf" = xyes; then
+ echo "Don't forget to add the F-lines to your ircd.conf. They can be"
+ echo "found in $conf_file."
+else
+ echo "Don't forget to verify the F-lines in your ircd.conf!"
+fi