[PATCH] Fix non-POSIX:isms in base-config
Several of the shell-scripts contain non-POSIXisms (such as XPIisms and
BASHisms); this simple patch fixes them.
(Manual) substitutions done:
-a and -o => expressions that uses && and || instead
type => which
trap: use signal-names instead of signal-numbers
tail +<num> => tail -n+<num>
egrep => grep -E
If I've missed anything, feel free to complain. As soon as time
permits, I will finish my audit of the rest of the /bin/sh-scripts in
base, and submit patches for these as well.
Regards: David Weinehall
--
/) David Weinehall <tao@acc.umu.se> /) Northern lights wander (\
// Maintainer of the v2.0 kernel // Dance across the winter sky //
\) http://www.acc.umu.se/~tao/ (/ Full colour fire (/
diff -ur base-config-2.26/apt-setup base-config-2.26-patched/apt-setup
--- base-config-2.26/apt-setup 2004-05-30 01:31:45.000000000 +0200
+++ base-config-2.26-patched/apt-setup 2004-06-11 07:09:29.000000000 +0200
@@ -257,7 +257,7 @@
fi
fi
-if [ "$CDPROBE" -a "$CDDEV" ]; then
+if [ "$CDPROBE" ] && [ "$CDDEV" ]; then
umount /cdrom 2>/dev/null || true
# Try mounting the detected cd rom.
if mount $CDDEV /cdrom -o ro -t iso9660 2>/dev/null && scan_cd; then
@@ -285,7 +285,7 @@
# If they chose to use CD, there is little point in asking
# these questions, since the CD's they insert will answer them for us.
# Same goes if they are entering manually.
- if [ "$URI" != "cdrom" -a "$URI" != "edit sources list by hand" ]; then
+ if [ "$URI" != "cdrom" ] && [ "$URI" != "edit sources list by hand" ]; then
db_beginblock
db_fset mirror/suite seen false
db_input low mirror/suite || true
@@ -379,7 +379,7 @@
fi
# Ask about a proxy if no proxy is yet defined.
- if [ "$URI" = "http" -a -z "$http_proxy" ]; then
+ if [ "$URI" = "http" ] && [ -z "$http_proxy" ]; then
if [ ! -e "$APTETC/apt.conf" ] || \
! grep -iq 'Acquire::http::Proxy' $APTETC/apt.conf; then
db_fset mirror/http/proxy seen false
@@ -409,7 +409,7 @@
# Make /dev/cdrom link now, with device
# they entered. This is for later use by
# apt.
- if [ "$CDDEV" -a "$CDDEV" != '/dev/cdrom' ]; then
+ if [ "$CDDEV" ] && [ "$CDDEV" != '/dev/cdrom' ]; then
ln -sf $CDDEV /dev/cdrom
fi
fi
@@ -527,7 +527,7 @@
else
CONTRIB=""
fi
- if [ "$URI" = ftp -o "$URI" = http ]; then
+ if [ "$URI" = ftp ] || [ "$URI" = http ]; then
SEP=//
else
SEP=""
diff -ur base-config-2.26/base-config base-config-2.26-patched/base-config
--- base-config-2.26/base-config 2004-05-30 01:31:50.000000000 +0200
+++ base-config-2.26-patched/base-config 2004-06-11 07:02:56.000000000 +0200
@@ -11,12 +11,12 @@
export TEXTDOMAIN
# Get the parameter past the script invocation.
-if [ -z "$NEW" -a "$1" = new ]; then
+if [ -z "$NEW" ] && [ "$1" = new ]; then
NEW=$1
fi
export NEW
-if [ -x /usr/bin/script -a -z "$BASE_CONFIG_IN_SCRIPT" ]; then
+if [ -x /usr/bin/script ] && [ -z "$BASE_CONFIG_IN_SCRIPT" ]; then
# We want this program to run inside script. So if it's not already
# running, run script.
export BASE_CONFIG_IN_SCRIPT=1
@@ -59,7 +59,7 @@
if [ "$NEW" ]; then
# Trap most signals because a ctrl-c killing base-config
# in the middle of the second stage install would be bad.
- trap "" 1 2 3 15
+ trap "" HUP INT QUIT TERM
if [ "$KEEP_DEBS" != yes ]; then
# Free up some disk space used by the debs that debootstrap
@@ -70,7 +70,7 @@
else
# Running again on an existing install. Just trap ctrl-c, and
# cleanly exit.
- trap cleanup 2
+ trap cleanup INT
fi
ORIG_PRIORITY=$(get_priority)
diff -ur base-config-2.26/lib/menu/hostname base-config-2.26-patched/lib/menu/hostname
--- base-config-2.26/lib/menu/hostname 2004-05-30 01:31:49.000000000 +0200
+++ base-config-2.26-patched/lib/menu/hostname 2004-06-11 07:32:03.000000000 +0200
@@ -23,7 +23,7 @@
# The interface testing work best if the loopback device is skipped.
# Sorted order to test eth1 before eth0, so that the setting in eth0
# is the one that take effect
- interfaces=`netstat -i | tail +3 | awk '{print $1}' | grep -v '^lo$' | sort -r`
+ interfaces=`netstat -i | tail -n+3 | awk '{print $1}' | grep -v '^lo$' | sort -r`
for interface in $interfaces; do
ip=`/sbin/ifconfig $interface 2>&1 | grep 'inet addr:' | tr a-zA-Z: " " | awk '{print $1}'`
if [ "$ip" ]; then
@@ -53,7 +53,7 @@
if [ 2 -gt "$length" ] || [ "$length" -ge 63 ]; then
return 0
fi
- if echo -n "$part" | egrep -q "^-|-$"; then
+ if echo -n "$part" | grep -E -q "^-|-$"; then
return 0
fi
done
diff -ur base-config-2.26/lib/menu/pon.tst base-config-2.26-patched/lib/menu/pon.tst
--- base-config-2.26/lib/menu/pon.tst 2004-05-30 01:31:49.000000000 +0200
+++ base-config-2.26-patched/lib/menu/pon.tst 2004-06-11 07:33:52.000000000 +0200
@@ -7,7 +7,7 @@
exit 1
fi
-if [ -x /usr/bin/pon ] && [ -e /etc/ppp/peers/provider -o -x /usr/sbin/pppconfig ]; then
+if [ -x /usr/bin/pon ] && ( [ -e /etc/ppp/peers/provider ] || [ -x /usr/sbin/pppconfig ] ); then
if ! route -n | grep -q '^0\.0\.0\.0'; then
exit 0
else
diff -ur base-config-2.26/termwrap base-config-2.26-patched/termwrap
--- base-config-2.26/termwrap 2004-05-30 01:31:50.000000000 +0200
+++ base-config-2.26-patched/termwrap 2004-06-11 06:58:54.000000000 +0200
@@ -130,7 +130,7 @@
if ! validlocale $LANG_INST > /dev/null 2>&1; then
# Hm, should we install the 'locales' package if it is missing?
- if [ "$localegen" -a -x $localegen ]; then
+ if [ "$localegen" ] && [ -x $localegen ]; then
if grep -q "^$locale " /usr/share/i18n/SUPPORTED && \
! grep -q "^$locale $charset$" $localeconf 2>/dev/null; then
echo "$locale $charset" >> $localeconf
@@ -170,7 +170,7 @@
case `/usr/bin/tty` in
/dev/console)
# Use fgconsole to detect if it is a serial console.
- if type fgconsole >/dev/null && [ serial = "$(fgconsole)" ] ; then
+ if which fgconsole >/dev/null && [ serial = "$(fgconsole)" ] ; then
TERMINAL=serial
else
TERMINAL=console
@@ -208,7 +208,7 @@
# If the default linux kernel TERM setting is used for serial consoles, change
# it to vt100. This assume serial consoles understand vt100. Almost
# all terminal programs can handle vt100.
-if [ serial = "$TERMINAL" -a linux = "$TERM" ] ; then
+if [ serial = "$TERMINAL" ] && [ linux = "$TERM" ] ; then
TERM=vt100
fi
@@ -283,7 +283,7 @@
WRAPPER_OPTION="-e"
;;
console)
- if [ "$SUBARCH" != pc9800 -a "$TERMINAL" = console ]; then
+ if [ "$SUBARCH" != pc9800 ] && [ "$TERMINAL" = console ]; then
# Any platform except PC9800 require jfbterm
# to display japanese fonts on console.
try_load_fb
@@ -341,7 +341,7 @@
######################################################################
## Execute Wrapper.
######################################################################
-if [ ! -z "$WRAPPER" -a -x "$WRAPPER" ]; then
+if [ ! -z "$WRAPPER" ] && [ -x "$WRAPPER" ]; then
$WRAPPER $WRAPPER_OPTION /bin/true && exec $WRAPPER $WRAPPER_OPTION $@
# Fallback to C
diff -ur base-config-2.26/tzsetup base-config-2.26-patched/tzsetup
--- base-config-2.26/tzsetup 2004-05-30 01:31:50.000000000 +0200
+++ base-config-2.26-patched/tzsetup 2004-06-11 06:44:43.000000000 +0200
@@ -154,7 +154,7 @@
3)
# Jump to end if the user doesn't want the time zone changed.
db_get tzconfig/change_timezone
- if [ "$RET" = false -a ! "$CHANGE" ]; then
+ if [ "$RET" = false ] && [ ! "$CHANGE" ]; then
STATE=$(($LASTSTATE - 2))
elif [ -n "$COUNTRY" ]; then
# See if there is a special question for this
@@ -272,7 +272,7 @@
# Set time zone.
db_get tzconfig/change_timezone
- if [ "$RET" = true -o "$CHANGE" ]; then
+ if [ "$RET" = true ] || [ "$CHANGE" ]; then
echo $timezone > /etc/timezone
rm -f /etc/localtime && \
ln -sf /usr/share/zoneinfo/$timezone /etc/localtime
@@ -283,11 +283,11 @@
# changed. This must only be done after the time zone
# file is set up.
db_get tzconfig/gmt
- if [ "$RET" = true -a "$UTC" != yes ]; then
+ if [ "$RET" = true ] && [ "$UTC" != yes ]; then
sed -e 's:^UTC="no":UTC="yes":' -e 's:^UTC=no:UTC=yes:' \
/etc/default/rcS > /etc/default/rcS.new
CHANGEUTC=1
- elif [ "$RET" = false -a "$UTC" != no ]; then
+ elif [ "$RET" = false ] && [ "$UTC" != no ]; then
sed -e 's:^UTC="yes":UTC="no":' -e 's:^UTC=yes:UTC=no:' \
/etc/default/rcS > /etc/default/rcS.new
CHANGEUTC=1
@@ -299,7 +299,7 @@
fi
db_get tzconfig/change_timezone
- if [ "$RET" = true -o "$CHANGE" ]; then
+ if [ "$RET" = true ] || [ "$CHANGE" ]; then
# Display a final message giving the selected zone
# and showing the time in that zone (and UTC for
# comparison) and asking if it looks ok.
@@ -315,7 +315,7 @@
;;
7)
db_get tzconfig/change_timezone
- if [ "$RET" = true -o "$CHANGE" ]; then
+ if [ "$RET" = true ] || [ "$CHANGE" ]; then
# Get the result of that last question, and if it
# is false, loop back to start.
db_get tzconfig/verify_choices
Reply to: