summaryrefslogtreecommitdiff
path: root/include/lib.sh
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2025-05-08 09:14:19 +0100
committerLeah Rowe <leah@libreboot.org>2025-05-08 09:14:19 +0100
commitd9e8923ff4e58ecd182dbb3b8eb6b6fe657e6eb5 (patch)
tree18d51b90ebcdaa90f0b9cfcc0137f52f38d24ab1 /include/lib.sh
parent0a93c8238847fc3f595d7431c8a2e12f0603a6ef (diff)
parent2cea8517f3b6c7f72cdecbcd3e6745db29284852 (diff)
Merge branch 'master' into 25.04_branch
Diffstat (limited to 'include/lib.sh')
-rw-r--r--include/lib.sh28
1 files changed, 14 insertions, 14 deletions
diff --git a/include/lib.sh b/include/lib.sh
index 572fcf68..99e59a1a 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -140,34 +140,35 @@ chkvars()
# e.g. coreboot is multi-tree, so 1
singletree()
{
- ( fx_ "exit 1" "config/$1/"*/ -type f -name "target.cfg" ) || return 1
+ ( fx_ "exit 1" find "config/$1/"*/ -type f -name "target.cfg" ) || \
+ return 1
}
-fe_()
+findpath()
{
- find_ex "x_" "$@"
+ [ $# -gt 0 ] || err "findpath: No arguments provided"
+ while [ $# -gt 0 ]; do
+ found="`readlink -f "$1" 2>/dev/null`" || return 1; :
+ [ -n "$found" ] || found="`realpath "$1" 2>/dev/null`" || \
+ return 1; :
+ printf "%s\n" "$found"
+ shift 1
+ done
}
fx_()
{
- find_ex "" "$@"
-}
-
-find_ex()
-{
- xmsg="$1" && shift 1
fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd"
xx="$1" && shift 1
- $xmsg find "$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || \
- err "!find $(echo "$@") > \"$fd\""
- dx_ "$xx" "$fd"
+ "$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || err "FATAL: !sort fx_"
+ dx_ "$xx" "$fd" || break
x_ rm -f "$fd"
}
dx_()
{
[ -f "$2" ] && while read -r fx; do
- $1 "$fx"
+ $1 "$fx" || return 1
done < "$2"; :
}
@@ -179,7 +180,6 @@ x_()
err()
{
- set -u -e
[ $# -lt 1 ] || printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || :
exit 1
}