I pulled some fixes out of the verbose patch so hopefully I can get them in while folks are trying out the more complex patch.
Plus one change to usage from jmc@. His other option was to move the [-F | -d] into the man page, but we can just complain more specifically if they try to use incompatible arguments and keep the documentation simpler. Comments, OK? --- usr.sbin/fw_update/fw_update.sh.orig Mon Jan 10 19:25:52 2022 +++ usr.sbin/fw_update/fw_update.sh Mon Jan 10 19:51:05 2022 @@ -95,7 +95,7 @@ SECONDS=0 sleep 1 else - kill -INT -"$FTPPID" + kill -INT -"$FTPPID" 2>/dev/null _error=" (timed out)" fi else @@ -201,14 +201,14 @@ set -sA _devices -- $( firmware_in_dmesg for _d in $( installed_firmware '*' '-firmware-' '*' ); do - echo "$( firmware_devicename "$_d" )" + firmware_devicename "$_d" done ) [ "${_devices[*]:-}" ] || return 0 for _d in "${_devices[@]}"; do - [[ $_last = $_d ]] && continue - echo $_d + [ "$_last" = "$_d" ] && continue + echo "$_d" _last="$_d" done } @@ -286,7 +286,7 @@ } usage() { - echo "usage: ${0##*/} [-d | -F] [-av] [-p path] [driver | file ...]" + echo "usage: ${0##*/} [-adFnv] [-p path] [driver | file ...]" exit 2 } @@ -352,11 +352,11 @@ set -sA devices -- "$@" if "$DELETE"; then - [ "$OPT_F" ] && usage 22 + [ "$OPT_F" ] && echo "Cannot use -F and -d" >&2 && usage 22 set -A installed if [ "${devices[*]:-}" ]; then - "$ALL" && usage 22 + "$ALL" && echo "Cannot use -a and devices/files" >&2 && usage 22 set -A installed -- $( for d in "${devices[@]}"; do @@ -389,7 +389,7 @@ done fi - deleted="${deleted:+${deleted#,}}" + deleted="${deleted#,}" echo "${0:##*/}: deleted ${deleted:-none}"; exit @@ -403,7 +403,7 @@ CFILE="$LOCALSRC/$CFILE" if [ "${devices[*]:-}" ]; then - "$ALL" && usage 22 + "$ALL" && echo "Cannot use -a and devices/files" >&2 && usage 22 else "$VERBOSE" && echo -n "Detecting firmware ..." set -sA devices -- $( detect_firmware )