summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2026-09-17 01:35:30 +0100
committerLeah Rowe <leah@libreboot.org>2026-09-17 01:53:56 +0100
commit856551a36d61b05fc78dc1ae742e6a0ec0a1303d (patch)
treed05c49f9090aebfb7263cca5e90b0364d688c5bf /mk
parent7c025e10362bcb7033f12631afc338e852cef99a (diff)
mk: add forx function for shorthand loops
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'mk')
-rwxr-xr-xmk30
1 files changed, 23 insertions, 7 deletions
diff --git a/mk b/mk
index d6ced957..b5dbd431 100755
--- a/mk
+++ b/mk
@@ -9,15 +9,27 @@
set -u -e
-eval "`printf "LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE \
- LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE \
- LC_MEASUREMENT LC_IDENTIFICATION LC_ALL\n" | \
- awk '{ for (i=1; i<=NF; i++) $i = "export " $i "=C.UTF-8;"; print }'`"
-
findpath()
{
- eval "$(printf '%s\n' "$@" | awk '{printf "readlink -f \"%s\" \
- 2>/dev/null || realpath \"%s\" 2>/dev/null || return 1;",$0,$0}')"
+ forx 'readlink -f \"%s\" 2>/dev/null || \
+ x_ realpath \"%s\" 2>/dev/null' "$@"
+}
+
+# WARNING: relies on -o option in grep.
+# gnu, busybox, openbsd, netbsd and freebsd all have it
+forx()
+{
+
+ awkarg="{printf \"${1-};\""
+ shift 1 2>/dev/null || :
+
+ scount="$(printf "%s\n" "$awkarg" | grep -o "%s" | wc -l)"
+ while [ $scount -gt 0 ]; do
+ awkarg="$awkarg,\$0"
+ scount="$(expr $scount - 1 || :)"
+ done
+
+ eval "$(printf '%s\n' "$@" | awk "$awkarg}")"
}
x_()
@@ -33,6 +45,10 @@ err()
exit 1
}
+forx 'export %s=\"C.UTF-8\"' LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \
+ LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS \
+ LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION LC_ALL
+
(
mk="$0"
[ "${mk##*/}" != "$mk" ] || \