check.d/50.updates: Output the list of updates.
[rcheck] / check
diff --git a/check b/check
index 92965e3..0cde4f3 100755 (executable)
--- a/check
+++ b/check
@@ -4,17 +4,43 @@
 
 set -e
 
+fix () {
+  n=$1
+  while :; do
+    case $n in
+      0) break ;;
+      0*) n=${n#0} ;;
+      *) break ;;
+    esac
+  done
+  echo $n
+}
+min=$(fix ${1-0}) max=$(fix ${2-99})
+
+exec 4>&1
+rc=0
 for check in check.d/[!#]*[!~]; do
-  { { { set +e; "$check"; rc=$?; set -e
-       case $rc in 0) ;; *) echo >&2 "failed (rc = $rc)" ;; esac
-    } >&3; } 2>&1 |
-    sed 's/^/E: /'
-  } 3>&1 | {
-    if read line; then
-      echo "## ${check##*/}"
-      echo "$line"
-      cat
-      echo
-    fi
-  }
+  base=${check##*/}
+  seq=${base%%[!0-9]*}
+  if [ $min -gt $seq -o $seq -gt $max ]; then continue; fi
+
+  nrc=$(
+    exec 5>&1
+    { { { set +e; "$check"; rc=$?; set -e
+         echo $rc >&5
+         case $rc in 0) ;; *) echo >&2 "failed (rc = $rc)" ;; esac
+      } >&3; } 2>&1 |
+      sed 's/^/E: /'
+    } 3>&1 | {
+      if IFS= read -r line; then
+       echo "## ${check##*/}"
+       echo "$line"
+       cat
+       echo
+      fi
+    } >&4
+  )
+  if [ $nrc -gt $rc ]; then rc=$nrc; fi
 done
+
+exit $rc