=================================================================== RCS file: /cvs/openbsd/fw_update/fw_install.sh,v retrieving revision 1.88 retrieving revision 1.89 diff -u -r1.88 -r1.89 --- openbsd/fw_update/fw_install.sh 2021/12/19 02:02:02 1.88 +++ openbsd/fw_update/fw_install.sh 2021/12/19 04:05:25 1.89 @@ -1,5 +1,5 @@ #!/bin/ksh -# $OpenBSD: fw_install.sh,v 1.88 2021/12/19 02:02:02 afresh1 Exp $ +# $OpenBSD: fw_install.sh,v 1.89 2021/12/19 04:05:25 afresh1 Exp $ # # Copyright (c) 2021 Andrew Hewus Fresh # @@ -118,34 +118,23 @@ # When we're not in the installer, the dmesg.boot can # contain multiple boots, so only look in the last one - sed -n 'H;/^OpenBSD/h;${g;p;}' /var/run/dmesg.boot | - grep -e "^[a-z][a-z]*[0-9]" -e " not configured " | { \ - _m=0 - set -A _dmesgtail - while read -r _line; do - _dmesgtail[$_m]="$_line" - _m=$(( _m + 1 )) - done + _dmesgtail="$( echo ; sed -n 'H;/^OpenBSD/h;${g;p;}' /var/run/dmesg.boot | + grep -e "^[a-z][a-z]*[0-9]" -e " not configured " )" - grep -v '^[[:space:]]*#' "$FWPATTERNS" | - while read -r _d _m; do - [ "$_d" = "$_last" ] && continue - [ "$_m" ] || _m="^${_d}[0-9] at " + grep -v '^[[:space:]]*#' "$FWPATTERNS" | + while read -r _d _m; do + [ "$_d" = "$_last" ] && continue + [ "$_m" ] || _m="^${_d}[0-9] at " - if [ "$_m" = "${_m#^}" ]; then - _m="*$_m" - else - _m="${_m#^}" - fi + if [ "$_m" != "${_m#^}" ]; then + _m="$( echo -n "\n${_m#^}" )" + fi - for _line in "${_dmesgtail[@]}"; do - if [[ $_line = ${_m}* ]]; then - echo "$_d" - _last="$_d" - fi - done - done - } + if [[ $_dmesgtail = *$_m* ]]; then + echo "$_d" + _last="$_d" + fi + done } firmware_filename() {