Re: [PATCH v4 01/11] common/rc: Add _min() and _max() helpers

From: David Laight
Date: Wed Aug 13 2025 - 08:21:26 EST


On Sun, 10 Aug 2025 19:11:52 +0530
Ojaswin Mujoo <ojaswin@xxxxxxxxxxxxx> wrote:

> Many programs open code these functionalities so add it as a generic helper
> in common/rc
>
> Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>
> Signed-off-by: Ojaswin Mujoo <ojaswin@xxxxxxxxxxxxx>
> ---
> common/rc | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/common/rc b/common/rc
> index 96578d15..3858ddce 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -5873,6 +5873,28 @@ _require_program() {
> _have_program "$1" || _notrun "$tag required"
> }
>
> +_min() {
> + local ret
> +
> + for arg in "$@"; do
> + if [ -z "$ret" ] || (( $arg < $ret )); then
> + ret="$arg"
> + fi
> + done
> + echo $ret
> +}

Perhaps:
local ret="$1"
shift
for arg in "$@"; do
ret=$(((arg) < (ret) ? (arg) : (ret)))
done;
echo "$ret"
that should work for 'min 10 "2 + 3"' (with bash, but not dash).

David

> +
> +_max() {
> + local ret
> +
> + for arg in "$@"; do
> + if [ -z "$ret" ] || (( $arg > $ret )); then
> + ret="$arg"
> + fi
> + done
> + echo $ret
> +}
> +
> ################################################################################
> # make sure this script returns success
> /bin/true