aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Blundell <philb@gnu.org>1998-01-08 09:54:43 +0000
committerPhil Blundell <philb@gnu.org>1998-01-08 09:54:43 +0000
commit1ef3bd3bd1a104a99567cfa90485c89f7edcb812 (patch)
treef28676e85584644332eb204068cada3fd05a0ac3 /configure.sh
downloadnet-tools-1ef3bd3bd1a104a99567cfa90485c89f7edcb812.tar.gz
net-tools-1ef3bd3bd1a104a99567cfa90485c89f7edcb812.tar.bz2
net-tools-1ef3bd3bd1a104a99567cfa90485c89f7edcb812.zip
Initial revision
Diffstat (limited to 'configure.sh')
-rwxr-xr-xconfigure.sh161
1 files changed, 161 insertions, 0 deletions
diff --git a/configure.sh b/configure.sh
new file mode 100755
index 0000000..cba50e0
--- /dev/null
+++ b/configure.sh
@@ -0,0 +1,161 @@
+#!/bin/bash
+#
+# Configure.sh Generates interactively a config.h from config.in
+#
+# net-tools A collection of programs that form the base set of the
+# NET-3 Networking Distribution for the LINUX operating
+# system.
+#
+# Usage: Install.sh [--nobackup] [--test]
+#
+# Version: Install.sh 1.65 (1996-01-12)
+#
+# Authors: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Johannes Grosen, <grosen@argv.cs.ndsu.nodak.edu>
+# Copyright 1988-1993 MicroWalt Corporation
+#
+# Modified:
+# {1.65} Bernd eckes Eckenfels <net-tools@lina.inka.de>
+# some layout cleanups, slattach/plipconfig removed.
+# --test for testinstallations added.
+#
+# 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 2 of the License, or (at
+# your option) any later version.
+#
+#
+# Make sure we're really running bash.
+#
+# I would really have preferred to write this script in a language with
+# better string handling, but alas, bash is the only scripting language
+# that I can be reasonable sure everybody has on their Linux machine.
+#
+
+CONFIG=config.h
+
+
+[ -z "$BASH" ] && { echo "Configure requires bash" 1>&2; exit 1; }
+
+# Disable filename globbing once and for all.
+# Enable function cacheing.
+set -f -h
+
+#
+# readln reads a line into $ans.
+#
+# readln prompt default
+#
+function readln()
+{
+ echo -n "$1"
+ IFS='@' read ans </dev/tty || exit 1
+ [ -z "$ans" ] && ans=$2
+}
+
+# bool processes a boolean argument
+#
+# bool tail
+#
+function bool()
+{
+ # Slimier hack to get bash to rescan a line.
+ eval "set -- $1"
+ ans=""
+ while [ "$ans" != "y" -a "$ans" != "n" ]
+ do
+ readln "$1 ($2) [$3] " "$3"
+ done
+ if [ "$ans" = "y" ]; then
+ echo "#define $2 1" >>${CONFIG}
+ else
+ echo "#define $2 0" >>${CONFIG}
+ fi
+ raw_input_line="bool '$1' $2 $ans"
+ eval "$2=$ans"
+}
+
+# int processes an integer argument
+#
+# int tail
+#
+function int()
+{
+ # Slimier hack to get bash to rescan a line.
+ eval "set -- $1"
+ ans="x"
+ while [ $[$ans+0] != "$ans" ];
+ do
+ readln "$1 ($2) [$3] " "$3"
+ done
+ echo "#define $2 ($ans)" >>${CONFIG}
+ raw_input_line="int '$1' $2 $ans"
+ eval "$2=$ans"
+}
+
+ #
+ # Make sure we start out with a clean slate.
+ #
+ > config.new
+ > ${CONFIG}
+
+ stack=''
+ branch='t'
+
+ while IFS='@' read raw_input_line
+ do
+ # Slimy hack to get bash to rescan a line.
+ read cmd rest <<-END_OF_COMMAND
+ $raw_input_line
+ END_OF_COMMAND
+
+ if [ "$cmd" = "*" ]; then
+ if [ "$branch" = "t" ]; then
+ echo "$raw_input_line"
+ # echo "# $rest" >>$CONFIG
+ if [ "$prevcmd" != "*" ]; then
+ echo >>${CONFIG}
+ echo "/* $rest" >>${CONFIG}
+ else
+ echo " * $rest" >>${CONFIG}
+ fi
+ prevcmd="*"
+ fi
+ else
+ [ "$prevcmd" = "*" ] && echo " */" >>${CONFIG}
+ prevcmd=""
+ case "$cmd" in
+ =) [ "$branch" = "t" ] && echo "$rest" >>${CONFIG};;
+ :) [ "$branch" = "t" ] && echo "$raw_input_line" ;;
+ int) [ "$branch" = "t" ] && int "$rest" ;;
+ bool) [ "$branch" = "t" ] && bool "$rest" ;;
+ exec) [ "$branch" = "t" ] && ( sh -c "$rest" ) ;;
+ if) stack="$branch $stack"
+ if [ "$branch" = "t" ] && eval "$rest"; then
+ branch=t
+ else
+ branch=f
+ fi ;;
+ else) if [ "$branch" = "t" ]; then
+ branch=f
+ else
+ read branch rest <<-END_OF_STACK
+ $stack
+ END_OF_STACK
+ fi ;;
+ fi) [ -z "$stack" ] && echo "Error! Extra fi." 1>&2
+ read branch stack <<-END_OF_STACK
+ $stack
+ END_OF_STACK
+ ;;
+ esac
+ fi
+ echo "$raw_input_line" >>config.new
+ done
+ [ "$prevcmd" = "*" ] && echo " */" >>${CONFIG}
+
+ [ -z "$stack" ] || echo "Error! Untermiated if." 1>&2
+
+ mv config.new config.status
+ exit 0