diff options
-rw-r--r-- | distrib/miniroot/install.sh | 35 | ||||
-rw-r--r-- | distrib/miniroot/install.sub | 32 |
2 files changed, 32 insertions, 35 deletions
diff --git a/distrib/miniroot/install.sh b/distrib/miniroot/install.sh index 57a22686660..007d02468e8 100644 --- a/distrib/miniroot/install.sh +++ b/distrib/miniroot/install.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $OpenBSD: install.sh,v 1.96 2002/04/20 13:42:52 krw Exp $ +# $OpenBSD: install.sh,v 1.97 2002/04/26 02:14:23 krw Exp $ # $NetBSD: install.sh,v 1.5.2.8 1996/08/27 18:15:05 gwr Exp $ # # Copyright (c) 1997-2002 Todd Miller, Theo de Raadt, Ken Westerback @@ -137,26 +137,33 @@ __EOT # also allow a way to enter non-BSD partitions (but don't newfs!) # Get the list of BSD partitions and store sizes _npartitions=0 - for _p in `disklabel ${DISK} 2>&1 | grep '^ *[a-p]:.*BSD' | sed 's/^ *\([a-p]\): *\([0-9][0-9]*\) .*/\1\2/'`; do - _pp=`firstchar ${_p}` - if [ "${DISK}" = "${ROOTDISK}" -a "$_pp" = "a" ]; then - continue - fi - _ps=`echo ${_p} | sed 's/^.//'` - _partitions[${_npartitions}]=${_pp} - _psizes[${_npartitions}]=${_ps} + + # XXX - It would be nice to just pipe the output of sed to a + # 'while read _pp _ps' loop, but our 'sh' runs the last + # element of a pipeline in a subshell and the required side + # effects to _partitions, _npartitions, etc. would be lost. + for _p in $(disklabel ${DISK} 2>&1 | sed -ne '/^ *\([a-p]\): *\([0-9][0-9]*\).*BSD.*/s//\1\2/p'); do + # All characters after the initial [a-p] are the partition size + _ps=${_p#?} + # Removing the partition size leaves us with the partition name + _pp=${_p%${_ps}} + + [ "$DISK" = "$ROOTDISK" -a "$_pp" = "a" ] && continue + + _partitions[$_npartitions]=$_pp + _psizes[$_npartitions]=$_ps # If the user assigned a mount point, use it. - if [ -f /tmp/fstab.${DISK} ]; then - _mount_points[${_npartitions}]=`sed -n "s:^/dev/$DISK$_pp[ ]*\([^ ]*\).*:\1:p" < /tmp/fstab.${DISK}` + if [ -f /tmp/fstab.$DISK ]; then + _mount_points[$_npartitions]=`sed -n "s:^/dev/${DISK}${_pp}[ ]*\([^ ]*\).*:\1:p" < /tmp/fstab.${DISK}` fi - _npartitions=$(( ${_npartitions} + 1 )) + : $(( _npartitions += 1 )) done # Now prompt the user for the mount points. Loop until "done" echo _i=0 - resp=X - while [ $_npartitions -gt 0 -a X${resp} != X"done" ]; do + resp= + while [ $_npartitions -gt 0 -a "$resp" != "done" ]; do _pp=${_partitions[${_i}]} _ps=$(( ${_psizes[${_i}]} / 2 )) _mp=${_mount_points[${_i}]} diff --git a/distrib/miniroot/install.sub b/distrib/miniroot/install.sub index 063e9a6102f..13d10712f04 100644 --- a/distrib/miniroot/install.sub +++ b/distrib/miniroot/install.sub @@ -1,5 +1,5 @@ #!/bin/sh -# $OpenBSD: install.sub,v 1.206 2002/04/20 13:42:52 krw Exp $ +# $OpenBSD: install.sub,v 1.207 2002/04/26 02:14:23 krw Exp $ # $NetBSD: install.sub,v 1.5.2.8 1996/09/02 23:25:02 pk Exp $ # # Copyright (c) 1997-2002 Todd Miller, Theo de Raadt, Ken Westerback @@ -196,16 +196,6 @@ cutlast () { eval echo \$$# } -# return first character of argument -firstchar () { - local _a=$1 - - while [ ${#_a} != 1 ]; do - _a=${_a%?} - done - echo $_a -} - basename () { local _oifs @@ -418,7 +408,7 @@ __EOT # $1 - IP address # $2 - symbolic name addhostent() { - sed "/ $2\$/d" < /tmp/hosts > /tmp/hosts.new + sed "/ $2\$/d" /tmp/hosts > /tmp/hosts.new mv /tmp/hosts.new /tmp/hosts echo "$1 $2" >> /tmp/hosts @@ -1182,14 +1172,13 @@ __EOT -a ${resp:-0} -ge 1 \ -a -f /tmp/ftplist ] then - maxlines=`grep "^${_url_type}:" /tmp/ftplist | cat -n | - sed -n -e '$p' | cutword 1` + maxlines=`grep "^${_url_type}:" /tmp/ftplist | sed -ne '$='` if [ $maxlines -lt $resp ]; then echo "There is no ${resp}th line in the list." resp= continue fi - tline=`grep "^${_url_type}:" /tmp/ftplist | sed -n -e "${resp}p"` + tline=`grep "^${_url_type}:" /tmp/ftplist | sed -ne "${resp}p"` url=`echo $tline | sed -e "s/^${_url_type}:\/\///" | cutword -t' ' 1 | cutword -t' ' 1` host=`echo $url | cutword -t/ 1` @@ -2031,7 +2020,7 @@ get_fqdn() { # 1.2.3.4 hostname # to # 1.2.3.4 hostname.$FQDN hostname - sed "s/\\(.*\\)[[:space:]]\\(.*\\)\$/\\1 \\2.$FQDN \\2/" < $2 > $2.new + sed "s/\\(.*\\)[[:space:]]\\(.*\\)\$/\\1 \\2.$FQDN \\2/" $2 > $2.new mv $2.new $2 else echo -n "Enter DNS domain name (e.g. 'bar.com'): [$FQDN] " @@ -2101,9 +2090,11 @@ __EOT # override a user supplied (or previous DHCP supplied) FQDN. get_fqdn /tmp/resolv.conf /tmp/hosts - resp=`route -n show | - grep '^default' | - sed -e 's/^default *//' -e 's/ .*//'` + resp=`route -n show | sed -ne '/^default */{ + s/// + s/ .*// + p + }'` if [ -z "$resp" ] ; then resp=none if [ -f /tmp/mygate ]; then @@ -2125,8 +2116,7 @@ __EOT resp=none if [ -f /tmp/resolv.conf ]; then resp= - for n in `grep '^nameserver ' /tmp/resolv.conf | \ - sed -e 's/^nameserver //'` + for n in `sed -ne '/^nameserver /s///p' /tmp/resolv.conf` do if [ -z "$resp" ] ; then resp=$n |