From 2ae565ba93a84add3dd891e31e894d61cd4be42b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 05:54:36 +0100 Subject: init.sh: move setvars/err_ to lib.sh these functions make more sense in lib.sh i made mk link lib.sh first, so that the functions on init.sh can still use them. Signed-off-by: Leah Rowe --- include/lib.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 7a5f2621..853ad654 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -115,3 +115,24 @@ check_defconfig() [ -f "$x" ] && printf "%s\n" "$x" && return 1 done; : } + +setvars() +{ + _setvars="" + if [ $# -lt 2 ]; then + printf "\$err \"setvars: too few args\\n\"" + return 0 + fi + val="$1" + shift 1 + for var in "$@"; do + _setvars="$var=\"$val\"; $_setvars" + done + printf "%s\n" "${_setvars% }" +} + +err_() +{ + printf "ERROR %s: %s\n" "$0" "$1" 1>&2 + exit 1 +} -- cgit v1.2.1 From 6c4d88f2686558ef910bed2ebcc024d0347076fd Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 07:24:11 +0100 Subject: move x_() to lib.sh Signed-off-by: Leah Rowe --- include/lib.sh | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 853ad654..f5007c7d 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -131,6 +131,11 @@ setvars() printf "%s\n" "${_setvars% }" } +x_() +{ + [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : +} + err_() { printf "ERROR %s: %s\n" "$0" "$1" 1>&2 -- cgit v1.2.1 From f3ae3dbbbe4f9c0ef6a1d68ed1faf7e9ca19f391 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 07:26:17 +0100 Subject: lib.sh: simplify remkdir() Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index f5007c7d..59676150 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -9,8 +9,8 @@ rmodtool="elf/cbfstool/default/rmodtool" remkdir() { - rm -Rf "$1" || $err "remkdir: !rm -Rf \"$1\"" - mkdir -p "$1" || $err "remkdir: !mkdir -p \"$1\"" + x_ rm -Rf "$1" + x_ mkdir -p "$1" } mkrom_tarball() -- cgit v1.2.1 From 15b76bc202f91156b3cc8234ffac1d3901763309 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 07:26:39 +0100 Subject: lib.sh: support multiple arguments in remkdir() Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 59676150..87061f2b 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -9,8 +9,8 @@ rmodtool="elf/cbfstool/default/rmodtool" remkdir() { - x_ rm -Rf "$1" - x_ mkdir -p "$1" + x_ rm -Rf "$@" + x_ mkdir -p "$@" } mkrom_tarball() -- cgit v1.2.1 From acb0ea202f2629c13edc278126f09b043037c8bc Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 10:52:38 +0100 Subject: lib.sh: Simplify rmgit() Signed-off-by: Leah Rowe --- include/lib.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 87061f2b..bef2a16f 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -39,11 +39,8 @@ mksha512sum() rmgit() { - ( - cd "$1" || $err "!cd gitrepo $1" - find . -name ".git" -exec rm -Rf {} + || $err "!rm .git $1" - find . -name ".gitmodules" -exec rm -Rf {} + || $err "!rm .gitmod $1" - ) || $err "Cannot remove .git/.gitmodules in $1" + x_ find "$1" -name ".git" -exec rm -Rf {} + + x_ find "$1" -name ".gitmodules" -exec rm -Rf {} + } # can grab from the internet, or copy locally. -- cgit v1.2.1 From d18d1c2cae2c1c43c56d5c10adb469266d1eb08b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 04:16:10 +0100 Subject: lbmk: unified execution on find commands We have a lot of places in lbmk where the output of find is used, and then some function is executed on the result. This is messy, and bloats several of these functions. Now this is unified, into a new function: fx_ What fx_ does is execute a given function, for each result found, with the arguments for a find command appended. For example: find -name ".git" If you wanted to do: foo "$arg" Where "arg" is a search result from find, and you wanted to execute "foo" on each one, you would do: fx_ foo -name ".git" The find utility does have an -exec feature, but I've found that it only works for executables, not functions. fx_ does not return errors, so "foo" in this example would have to do its own error handling. Signed-off-by: Leah Rowe --- include/lib.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index bef2a16f..507a37c1 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -128,6 +128,17 @@ setvars() printf "%s\n" "${_setvars% }" } +fx_() +{ + fd="`mktemp`" + xx="$1" && shift 1 + find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" + while read -r fx; do + "$xx" "$fx" || break; : + done < "$fd" + x_ rm -f "$fd" +} + x_() { [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : -- cgit v1.2.1 From 47762c84ad0f5e2a6fbe5ceec0bff623239e1e9a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 05:25:11 +0100 Subject: lib.sh: add fe_ which is fx_ but err on find In the mk script, we need fx_ to not return errors on the find command, since it's searching a bunch of directories where some of them may not exist. All other instances where fx_ is used, must return an error if the directory being searched doesn't exist. For this, fe_() is introduced, which does the same as fx_ but with this much stricter check. Signed-off-by: Leah Rowe --- include/lib.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 507a37c1..3f5e5d37 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -128,11 +128,22 @@ setvars() printf "%s\n" "${_setvars% }" } +fe_() +{ + find_ex "x_" "$@" +} + fx_() { + find_ex "" "$@" +} + +find_ex() +{ + errx="$1" && shift 1 fd="`mktemp`" xx="$1" && shift 1 - find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" + $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do "$xx" "$fx" || break; : done < "$fd" -- cgit v1.2.1 From a17875c34593cf966e61aacb9285f324723bb245 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 05:57:39 +0100 Subject: lib.sh find_ex: explicitly create the tmp file Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 3f5e5d37..8bad16ce 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -141,7 +141,7 @@ fx_() find_ex() { errx="$1" && shift 1 - fd="`mktemp`" + fd="`mktemp`" && x_ rm -f "$fd" && x_ touch rm -f "$fd" xx="$1" && shift 1 $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do -- cgit v1.2.1 From 7fadb17fd9ed7e916f62849132d73648ea9a099d Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:36:43 +0100 Subject: lib.sh: Fix bad touch command Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 8bad16ce..3c603bae 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -141,7 +141,7 @@ fx_() find_ex() { errx="$1" && shift 1 - fd="`mktemp`" && x_ rm -f "$fd" && x_ touch rm -f "$fd" + fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do -- cgit v1.2.1 From 0f7b3691abafdbb46ea8e7bc95332da9d4be80d2 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 06:41:20 +0100 Subject: lib.sh: redirect find errors to /dev/null this silences confusing error messages that the user sees on the screen, that are actually benign, and it will thus reduce the number of people who ask questions on #libreboot irc Signed-off-by: Leah Rowe --- include/lib.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 3c603bae..d58716c3 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -143,7 +143,8 @@ find_ex() errx="$1" && shift 1 fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 - $errx find "$@" | sort > "$fd" || $err "!find $(echo "$@") > \"$fd\"" + $errx find "$@" 2>/dev/null | sort > "$fd" || \ + $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do "$xx" "$fx" || break; : done < "$fd" -- cgit v1.2.1 From aa4083443b14335c8ada088034434b584aacc789 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 3 May 2025 18:30:37 +0100 Subject: mk: Allow use of x_ on prefix functions Use this for the sha512sum command, on the main mk script at the function check_project_hashes(). Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index d58716c3..50813352 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -146,7 +146,7 @@ find_ex() $errx find "$@" 2>/dev/null | sort > "$fd" || \ $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do - "$xx" "$fx" || break; : + $xx "$fx" || break; : done < "$fd" x_ rm -f "$fd" } -- cgit v1.2.1 From 7392f6fc8ecbff10661be6ae66306afd89f1a3e3 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 08:33:17 +0100 Subject: init.sh: move non-init functions to lib.sh these were missed in a previous cleanup Signed-off-by: Leah Rowe --- include/lib.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 50813352..93680cee 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -128,6 +128,22 @@ setvars() printf "%s\n" "${_setvars% }" } +setcfg() +{ + [ $# -gt 1 ] && printf "e \"%s\" f missing && return %s;\n" "$1" "$2" + [ $# -gt 1 ] || \ + printf "e \"%s\" f not && %s \"Missing config\";\n" "$1" "$err" + printf ". \"%s\" || %s \"Could not read config\";\n" "$1" "$err" +} + +chkvars() +{ + for var in "$@"; do + eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\"" + eval "[ -n \"\$$var\" ] || \$err \"$var unset\"" + done; : +} + fe_() { find_ex "x_" "$@" -- cgit v1.2.1 From 91bb6cbede0405f764c3f2a686fbba5c7aa9f2fb Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:10:24 +0100 Subject: lib.sh: Make err_ always exit no matter what Always certainly redundant, since if -u -e isn't set, it'll continue to exit anyway. However, we want to be pedantic about this, since the safety of lbmk relies entirely on this function NOT misbehaving. Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 93680cee..c5790bf7 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -174,6 +174,6 @@ x_() err_() { - printf "ERROR %s: %s\n" "$0" "$1" 1>&2 + [ $# -lt 1 ] || printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || : exit 1 } -- cgit v1.2.1 From 59c94664e3e3382375e79ee478fc68d3802d794a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:14:09 +0100 Subject: lib.sh: Make x_ err if first arg is empty Signed-off-by: Leah Rowe --- include/lib.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index c5790bf7..abf4de3b 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -169,6 +169,7 @@ find_ex() x_() { + [ $# -lt 1 ] || [ -n "$1" ] || $err "Empty first arg: x_ $(echo "$@")" [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : } -- cgit v1.2.1 From 3f7dc2a55f5b2273e73e17e4cec75faffe65740f Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:17:23 +0100 Subject: lib.sh: rename errx to xmsg Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index abf4de3b..b2888fb6 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -156,10 +156,10 @@ fx_() find_ex() { - errx="$1" && shift 1 + xmsg="$1" && shift 1 fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 - $errx find "$@" 2>/dev/null | sort > "$fd" || \ + $xmsg find "$@" 2>/dev/null | sort > "$fd" || \ $err "!find $(echo "$@") > \"$fd\"" while read -r fx; do $xx "$fx" || break; : -- cgit v1.2.1 From 54291ebb7209c314bb52f507bc6a1ecf2a28fbc9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 09:56:21 +0100 Subject: lbmk: MUCH safer err function Don't directly call a variable. Call a function that checks the variable instead. The new err function also checks whether an exit was actually done, and exits 1 if not. If an exit was done by the given function, but the exit was zero, this is also corrected to perform an exit 1. This fixes a longstanding design flaw of lbmk. Signed-off-by: Leah Rowe --- include/lib.sh | 63 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 18 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index b2888fb6..eb4cddca 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -15,8 +15,8 @@ remkdir() mkrom_tarball() { - printf "%s\n" "$version" > "$1/.version" || $err "$1 !version" - printf "%s\n" "$versiondate" > "$1/.versiondate" || $err "$1 !vdate" + printf "%s\n" "$version" > "$1/.version" || err "$1 !version" + printf "%s\n" "$versiondate" > "$1/.versiondate" || err "$1 !vdate" mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz" x_ rm -Rf "$1" @@ -26,15 +26,15 @@ mktarball() { printf "Creating tar archive '%s' from directory '%s'\n" "$2" "$1" [ "${2%/*}" = "$2" ] || x_ mkdir -p "${2%/*}" - x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || $err "mktarball2, $1" + x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || err "mktarball2, $1" } mksha512sum() { ( [ "${1%/*}" != "$1" ] && x_ cd "${1%/*}" - sha512sum ./"${1##*/}" >> "$2" || $err "!sha512sum \"$1\" > \"$2\"" - ) || $err "failed to create tarball checksum" + sha512sum ./"${1##*/}" >> "$2" || err "!sha512sum \"$1\" > \"$2\"" + ) || err "failed to create tarball checksum" } rmgit() @@ -58,7 +58,7 @@ xbmkget() for url in "$1" "$2"; do [ "$dl_fail" = "n" ] && break [ -z "$url" ] && continue - rm -f "$cached" || $err "!rm -f '$cached'" + rm -f "$cached" || err "!rm -f '$cached'" if [ "$_dlop" = "curl" ]; then curl --location --retry 3 -A "$_ua" "$url" \ -o "$cached" || wget --tries 3 -U "$_ua" "$url" \ @@ -72,11 +72,11 @@ xbmkget() "$1" "$2" "$3" "$4" "$url" 1>&2 && continue cp "$url" "$cached" || continue else - $err "$1 $2 $3 $4: Unsupported dlop type: '$_dlop'" + err "$1 $2 $3 $4: Unsupported dlop type: '$_dlop'" fi bad_checksum "$4" "$cached" || dl_fail="n" done - [ "$dl_fail" = "y" ] && $err "$1 $2 $3 $4: not downloaded" + [ "$dl_fail" = "y" ] && err "$1 $2 $3 $4: not downloaded" [ "$cached" = "$3" ] || x_ cp "$cached" "$3"; : } @@ -99,7 +99,7 @@ e() mk() { - mk_flag="$1" || $err "No argument given" + mk_flag="$1" || err "No argument given" shift 1 && for mk_arg in "$@"; do x_ ./mk $mk_flag $mk_arg done; : @@ -107,7 +107,7 @@ mk() check_defconfig() { - [ -d "$1" ] || $err "Target '$1' not defined." + [ -d "$1" ] || err "Target '$1' not defined." for x in "$1"/config/*; do [ -f "$x" ] && printf "%s\n" "$x" && return 1 done; : @@ -117,7 +117,7 @@ setvars() { _setvars="" if [ $# -lt 2 ]; then - printf "\$err \"setvars: too few args\\n\"" + printf "err \"setvars: too few args\\n\"" return 0 fi val="$1" @@ -132,15 +132,15 @@ setcfg() { [ $# -gt 1 ] && printf "e \"%s\" f missing && return %s;\n" "$1" "$2" [ $# -gt 1 ] || \ - printf "e \"%s\" f not && %s \"Missing config\";\n" "$1" "$err" - printf ". \"%s\" || %s \"Could not read config\";\n" "$1" "$err" + printf "e \"%s\" f not && err \"Missing config\";\n" "$1" + printf ". \"%s\" || err \"Could not read config\";\n" "$1" } chkvars() { for var in "$@"; do - eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\"" - eval "[ -n \"\$$var\" ] || \$err \"$var unset\"" + eval "[ -n \"\${$var+x}\" ] || err \"$var unset\"" + eval "[ -n \"\$$var\" ] || err \"$var unset\"" done; : } @@ -160,7 +160,7 @@ find_ex() fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd" xx="$1" && shift 1 $xmsg find "$@" 2>/dev/null | sort > "$fd" || \ - $err "!find $(echo "$@") > \"$fd\"" + err "!find $(echo "$@") > \"$fd\"" while read -r fx; do $xx "$fx" || break; : done < "$fd" @@ -169,8 +169,35 @@ find_ex() x_() { - [ $# -lt 1 ] || [ -n "$1" ] || $err "Empty first arg: x_ $(echo "$@")" - [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : + [ $# -lt 1 ] || [ -n "$1" ] || err "Empty first arg: x_ $(echo "$@")" + [ $# -lt 1 ] || "$@" || err "Unhandled error for: $(echo "$@")"; : +} + +err() +{ + xbmk_err_val=0 + + real_err="$xbmk_err" + if [ -z "$xbmk_err" ]; then + printf "WARNING: err not set. Args: %s\n" "$(echo "$@")" 1>&2 + printf "REMARK: Setting err to default 'err_' value\n" 1>&2 + real_err="err_" + fi + + ( + $real_err "$@" || printf \ + "WARNING: Err function '%s' *returned* 1. Will exit 1 anyway\n" \ + "$real_err" + printf "WARNING: Err function '%s' didn't exit. Will exit 1 anyway\n" \ + "$real_err" 1>&2 + exit 1 + ) || xbmk_err_val=1 # otherwise, it wrongly did exit 0, not exit 1 + + [ $xbmk_err_val -eq 0 ] && printf \ + "WARNING: Err function '%s' did exit 0. Will exit 1 anyway.\n" \ + "$real_err" 1>&2 + + exit 1 } err_() -- cgit v1.2.1 From 37ca0c90e1cc8dc3f85b9cdd96c9cd6faea0862a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 10:18:33 +0100 Subject: lib.sh err: add missing redirect to stderr Signed-off-by: Leah Rowe --- include/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index eb4cddca..1bfe2060 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -187,7 +187,7 @@ err() ( $real_err "$@" || printf \ "WARNING: Err function '%s' *returned* 1. Will exit 1 anyway\n" \ - "$real_err" + "$real_err" 1>&2 printf "WARNING: Err function '%s' didn't exit. Will exit 1 anyway\n" \ "$real_err" 1>&2 exit 1 -- cgit v1.2.1 From 4020fb432805cfc7ebd243b0873574f25182ba40 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:23:11 +0100 Subject: lib.sh: simplify err() Rely once again on err_, but still explicitly add an exit just below, in case I made a mistake one day. err() is essentially a trap that triggers in case I mess up an error function, so that it doesn't reliably exit. So, the idea is that everything calls err(), and err() is almost never modified, or modified very carefully. If error exits were ever broken, the result could be quite unpredictable, so lbmk has very strict error handling, and great care is taken to ensure that it does reliably exit. Signed-off-by: Leah Rowe --- include/lib.sh | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 1bfe2060..e7b5bd3d 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -185,19 +185,13 @@ err() fi ( - $real_err "$@" || printf \ - "WARNING: Err function '%s' *returned* 1. Will exit 1 anyway\n" \ - "$real_err" 1>&2 - printf "WARNING: Err function '%s' didn't exit. Will exit 1 anyway\n" \ - "$real_err" 1>&2 - exit 1 + $real_err "$@" || err_ "Error function '$real_err' *returned* 1" + err_ "Error function '$real_err' didn't exit" + exit 1 # just in case! ) || xbmk_err_val=1 # otherwise, it wrongly did exit 0, not exit 1 - [ $xbmk_err_val -eq 0 ] && printf \ - "WARNING: Err function '%s' did exit 0. Will exit 1 anyway.\n" \ - "$real_err" 1>&2 - - exit 1 + [ $xbmk_err_val -eq 0 ] && err_ "Error function '$real_err' did exit 0" + exit 1 # just in case! } err_() -- cgit v1.2.1 From 61e5fd1a0b2791b2819a5d0e58fa76208a4e8774 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:28:22 +0100 Subject: lib.sh: Add warning if x_ is called without args Signed-off-by: Leah Rowe --- include/lib.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index e7b5bd3d..fbbb92da 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -169,6 +169,7 @@ find_ex() x_() { + [ $# -lt 1 ] && printf "WARNING: x_ called without arguments\n" 1>&2 [ $# -lt 1 ] || [ -n "$1" ] || err "Empty first arg: x_ $(echo "$@")" [ $# -lt 1 ] || "$@" || err "Unhandled error for: $(echo "$@")"; : } -- cgit v1.2.1 From 51b2a1159d0d915c080565ba8d2f41203cef6f80 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:30:45 +0100 Subject: lib.sh: simplify err-not-set handling Signed-off-by: Leah Rowe --- include/lib.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index fbbb92da..e54fd6b4 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -180,8 +180,7 @@ err() real_err="$xbmk_err" if [ -z "$xbmk_err" ]; then - printf "WARNING: err not set. Args: %s\n" "$(echo "$@")" 1>&2 - printf "REMARK: Setting err to default 'err_' value\n" 1>&2 + printf "WARNING: err not set. Defaulting to 'err_'\n" 1>&2 real_err="err_" fi -- cgit v1.2.1 From a3b5626f53db69ed22dc395221ba515d3f74b728 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:32:03 +0100 Subject: lib.sh: stricter xbmk_err check in err() Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index e54fd6b4..c9be740a 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -177,9 +177,9 @@ x_() err() { xbmk_err_val=0 + real_err="" && [ -n "${xbmk_err+x}" ] && real_err="$xbmk_err" - real_err="$xbmk_err" - if [ -z "$xbmk_err" ]; then + if [ -z "$real_err" ]; then printf "WARNING: err not set. Defaulting to 'err_'\n" 1>&2 real_err="err_" fi -- cgit v1.2.1 From 20c873085874c277ce0e10ec7792bbee94d1c63f Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 4 May 2025 16:53:02 +0100 Subject: lib.sh: Provide error message where none is given Signed-off-by: Leah Rowe --- include/lib.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index c9be740a..71183874 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -196,6 +196,7 @@ err() err_() { + [ $# -lt 1 ] && printf "ERROR (but no error message provided)\n" 1>&2 [ $# -lt 1 ] || printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || : exit 1 } -- cgit v1.2.1 From 428c46ca2b1fee04625d37bec65c30f0baf87530 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 5 May 2025 05:20:47 +0100 Subject: lib.sh: set -u -e in err() Some parts of lbmk set +u +e, to be reset later on under normal conditions upon exit. We must ensure such level of integrity in err() as well. Signed-off-by: Leah Rowe --- include/lib.sh | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/lib.sh') diff --git a/include/lib.sh b/include/lib.sh index 71183874..43b1a318 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -176,6 +176,8 @@ x_() err() { + set -u -e + xbmk_err_val=0 real_err="" && [ -n "${xbmk_err+x}" ] && real_err="$xbmk_err" -- cgit v1.2.1