=================================================================== RCS file: /cvs/openbsd/fw_update/fw_install.sh,v retrieving revision 1.123 retrieving revision 1.125 diff -u -r1.123 -r1.125 --- openbsd/fw_update/fw_install.sh 2021/12/24 17:57:54 1.123 +++ openbsd/fw_update/fw_install.sh 2021/12/25 00:27:56 1.125 @@ -1,5 +1,5 @@ #!/bin/ksh -# $OpenBSD: fw_install.sh,v 1.123 2021/12/24 17:57:54 afresh1 Exp $ +# $OpenBSD: fw_install.sh,v 1.125 2021/12/25 00:27:56 afresh1 Exp $ # # Copyright (c) 2021 Andrew Hewus Fresh # @@ -117,7 +117,7 @@ fi } -devices_needing_firmware() { +firmware_in_dmesg() { local _d _m _line _dmesgtail _last='' _nl=$( echo ) # When we're not in the installer, the dmesg.boot can @@ -168,6 +168,24 @@ done } +detect_firmware() { + local _devices _last='' _d + + set -sA _devices -- $( + firmware_in_dmesg + for _d in $( installed_firmware '*' '-firmware-' '*' ); do + echo "$( firmware_devicename "$_d" )" + done + ) + + [ "${_devices[*]:-}" ] || return 0 + for _d in "${_devices[@]}"; do + [[ $_last = $_d ]] && continue + echo $_d + _last="$_d" + done +} + add_firmware () { local _f="${1##*/}" _pkgname local _tmpdir="$( tmpdir "${DESTDIR}/var/db/pkg/.firmware" )" @@ -285,10 +303,6 @@ LOCALSRC="${LOCALSRC:-.}" fi -[ "$LOCALSRC" ] || LOCALSRC="$( tmpdir "${DESTDIR}/tmp/${0##*/}" )" - -CFILE="$LOCALSRC/$CFILE" - if [ -x /usr/bin/id ] && [ "$(/usr/bin/id -u)" != 0 ]; then echo "need root privileges" >&2 exit 1 @@ -336,11 +350,17 @@ exit fi +if [ ! "$LOCALSRC" ]; then + LOCALSRC="$( tmpdir "${DESTDIR}/tmp/${0##*/}" )" +fi + +CFILE="$LOCALSRC/$CFILE" + if [ "${devices[*]:-}" ]; then "$ALL" && usage 22 else "$VERBOSE" && echo -n "Detecting firmware ..." - set -sA devices -- $( devices_needing_firmware ) + set -sA devices -- $( detect_firmware ) "$VERBOSE" && { [ "${devices[*]:-}" ] && echo " found." || echo " done." ; } fi