This function's style is a bit off:  it wraps the body in a subshell to
discard all stdout/err at once, but a still uses return inside it.

1. A command list (using {}) would be enough here as it groups like a
   subshell but avoids spawning another shell;
2. discarding stdout/err at the end of an if block works the same
   (effecting both condition and body) and saves one level of indent;
3. return inside a subshell inside a function does NOT return from the
   function but merely exits the subshell;  this is easily misread.

Saving a fork and indent and improving readability boils down to this
(cvs diff -wU1):

        |@@ -3320,3 +3317,2 @@ check_unattendedupgrade() {
        |       _d=${_d%% *}
        |-      (
        |               if [[ -n $_d ]]; then
        |@@ -3331,5 +3327,5 @@ check_unattendedupgrade() {
        |                       rm -f /dev/{r,}$_d?
        |-              fi
        |+      fi >/dev/null 2>&1
        |+
        |               return $_rc
        |-      ) > /dev/null 2>&1
        | }

Feedback? OK?


Index: install.sub
===================================================================
RCS file: /cvs/src/distrib/miniroot/install.sub,v
retrieving revision 1.1209
diff -u -p -r1.1209 install.sub
--- install.sub 4 Oct 2022 19:59:10 -0000       1.1209
+++ install.sub 4 Oct 2022 20:00:54 -0000
@@ -3315,20 +3315,19 @@ check_unattendedupgrade() {
        local _d=$(get_dkdevs_root) _rc=1
 
        _d=${_d%% *}
-       (
-               if [[ -n $_d ]]; then
-                       make_dev $_d
-                       if mount -t ffs -r /dev/${_d}a /mnt; then
-                               [[ -f /mnt/bsd.upgrade && -f 
/mnt/auto_upgrade.conf ]]
-                               _rc=$?
-                               ((_rc == 0)) && cp /mnt/auto_upgrade.conf /
-                               echo "Which disk is the root disk = ${_d}" >> 
/auto_upgrade.conf
-                               umount /mnt
-                       fi
-                       rm -f /dev/{r,}$_d?
+       if [[ -n $_d ]]; then
+               make_dev $_d
+               if mount -t ffs -r /dev/${_d}a /mnt; then
+                       [[ -f /mnt/bsd.upgrade && -f /mnt/auto_upgrade.conf ]]
+                       _rc=$?
+                       ((_rc == 0)) && cp /mnt/auto_upgrade.conf /
+                       echo "Which disk is the root disk = ${_d}" >> 
/auto_upgrade.conf
+                       umount /mnt
                fi
-               return $_rc
-       ) > /dev/null 2>&1
+               rm -f /dev/{r,}$_d?
+       fi >/dev/null 2>&1
+
+       return $_rc
 }
 
 WATCHDOG_PERIOD_SEC=$((30 * 60))

Reply via email to