Files
patches/net-tools/net-tools-2.10-posixify-configure.patch
T
2026-05-26 02:08:47 -05:00

203 lines
4.4 KiB
Diff

--- a/configure.sh
+++ b/configure.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
#
# configure.sh Generates interactively a config.h from config.in
#
@@ -25,20 +25,9 @@
# 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
MAKECONFIG=config.make
-
-[ -z "$BASH" ] && { echo "configure.sh requires bash" 1>&2; exit 1; }
-
cat <<EOF
######################################################
@@ -48,26 +37,24 @@
EOF
# Disable filename globbing once and for all.
-# Enable function cacheing.
-set -f -h
+set -f
# set up reading of config file
if [ "$#" != "1" ] || [ ! -f "$1" ]; then
echo "usage: $0 configfile" 1>&2
exit 1
fi
-exec 7<$1
-config_fd_redir='<&7'
+exec 7<"$1"
#
# readln reads a line into $ans.
#
# readln prompt default
#
-function readln()
+readln()
{
- echo -n "$1"
- IFS='@' read ans || exit 1
+ printf '%s' "$1"
+ IFS='@' read -r ans || exit 1
[ -z "$ans" ] && ans=$2
}
@@ -75,21 +62,21 @@
#
# bool tail
#
-function bool()
+bool()
{
- # Slimier hack to get bash to rescan a line.
+ # Re-scan the line so shell quoting from config.in is preserved.
eval "set -- $1"
ans=""
- while [ "$ans" != "y" -a "$ans" != "n" ]
+ while [ "$ans" != "y" ] && [ "$ans" != "n" ]
do
readln "$1 ($2) [$3] " "$3"
done
if [ "$ans" = "y" ]; then
- echo "#define $2 1" >>${CONFIG}
- echo "$2=1" >>${MAKECONFIG}
+ echo "#define $2 1" >>"${CONFIG}"
+ echo "$2=1" >>"${MAKECONFIG}"
else
- echo "#define $2 0" >>${CONFIG}
- echo "# $2=0" >> ${MAKECONFIG}
+ echo "#define $2 0" >>"${CONFIG}"
+ echo "# $2=0" >>"${MAKECONFIG}"
fi
raw_input_line="bool '$1' $2 $ans"
eval "$2=$ans"
@@ -99,16 +86,42 @@
#
# int tail
#
-function int()
+is_integer()
{
- # Slimier hack to get bash to rescan a line.
+ case $1 in
+ ''|*[!0123456789+-]*|*[-+]*[-+]*)
+ return 1
+ ;;
+ [+-])
+ return 1
+ ;;
+ esac
+
+ case $1 in
+ [+-]*)
+ set -- "${1#?}"
+ ;;
+ esac
+
+ case $1 in
+ ''|*[!0123456789]*)
+ return 1
+ ;;
+ esac
+
+ return 0
+}
+
+int()
+{
+ # Re-scan the line so shell quoting from config.in is preserved.
eval "set -- $1"
ans="x"
- while [ $[$ans+0] != "$ans" ];
+ while ! is_integer "$ans"
do
readln "$1 ($2) [$3] " "$3"
done
- echo "#define $2 ($ans)" >>${CONFIG}
+ echo "#define $2 ($ans)" >>"${CONFIG}"
raw_input_line="int '$1' $2 $ans"
eval "$2=$ans"
}
@@ -123,10 +136,10 @@
stack=''
branch='t'
- while IFS='@' eval read raw_input_line ${config_fd_redir}
+ while IFS='@' read -r raw_input_line <&7
do
- # Slimy hack to get bash to rescan a line.
- read cmd rest <<-END_OF_COMMAND
+ # Re-scan the line so shell quoting from config.in is preserved.
+ IFS=' ' read -r cmd rest <<-END_OF_COMMAND
$raw_input_line
END_OF_COMMAND
@@ -135,18 +148,18 @@
echo "$raw_input_line"
# echo "# $rest" >>$CONFIG
if [ "$prevcmd" != "*" ]; then
- echo >>${CONFIG}
- echo "/* $rest" >>${CONFIG}
+ echo >>"${CONFIG}"
+ echo "/* $rest" >>"${CONFIG}"
else
- echo " * $rest" >>${CONFIG}
+ echo " * $rest" >>"${CONFIG}"
fi
prevcmd="*"
fi
else
- [ "$prevcmd" = "*" ] && echo " */" >>${CONFIG}
+ [ "$prevcmd" = "*" ] && echo " */" >>"${CONFIG}"
prevcmd=""
case "$cmd" in
- =) [ "$branch" = "t" ] && echo "$rest" >>${CONFIG};;
+ =) [ "$branch" = "t" ] && echo "$rest" >>"${CONFIG}";;
:) [ "$branch" = "t" ] && echo "$raw_input_line" ;;
int) [ "$branch" = "t" ] && int "$rest" ;;
bool) [ "$branch" = "t" ] && bool "$rest" ;;
@@ -160,12 +173,12 @@
else) if [ "$branch" = "t" ]; then
branch=f
else
- read branch rest <<-END_OF_STACK
- $stack
- END_OF_STACK
- fi ;;
+ IFS=' ' read -r 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
+ IFS=' ' read -r branch stack <<-END_OF_STACK
$stack
END_OF_STACK
;;
@@ -173,7 +186,7 @@
fi
echo "$raw_input_line" >>config.new
done
- [ "$prevcmd" = "*" ] && echo " */" >>${CONFIG}
+ [ "$prevcmd" = "*" ] && echo " */" >>"${CONFIG}"
[ -z "$stack" ] || echo "Error! Unterminated if." 1>&2