diff options
| author | Leah Rowe <leah@libreboot.org> | 2026-09-17 01:35:30 +0100 |
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2026-09-17 01:53:56 +0100 |
| commit | 856551a36d61b05fc78dc1ae742e6a0ec0a1303d (patch) | |
| tree | d05c49f9090aebfb7263cca5e90b0364d688c5bf /mk | |
| parent | 7c025e10362bcb7033f12631afc338e852cef99a (diff) | |
mk: add forx function for shorthand loops
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'mk')
| -rwxr-xr-x | mk | 30 |
1 files changed, 23 insertions, 7 deletions
@@ -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" ] || \ |
