Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/src/lib/archroot.sh
diff options
context:
space:
mode:
authorLevente Polyak <anthraxx@archlinux.org>2023-05-20 00:20:41 +0200
committerLevente Polyak <anthraxx@archlinux.org>2023-05-20 00:20:41 +0200
commit41d4624879d01b1269d6af9c1440592a15ad7784 (patch)
tree51dddceb749e2cb8c8bfbe9138cc58fb604b0d94 /src/lib/archroot.sh
parent4d3ab0b489f05565cec0a741564f8ba6ec57a9d6 (diff)
fix(archroot): pass along the real command and argv by the caller
Before modularizing the repo layout, we used m4_include to assemble together sources into a single file. Now, we properly use a library layout without assembling multiple files, which means we cannot anymore rely on BASH_SOURCE inside the library file. Hence, pass along the actual command and argv from the check_root caller. Fixes: src: modularize repo layout into a library Signed-off-by: Morten Linderud <foxboron@archlinux.org> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
Diffstat (limited to 'src/lib/archroot.sh')
-rw-r--r--src/lib/archroot.sh5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/archroot.sh b/src/lib/archroot.sh
index d7917da..3f48dc1 100644
--- a/src/lib/archroot.sh
+++ b/src/lib/archroot.sh
@@ -9,13 +9,14 @@ CHROOT_VERSION='v4'
##
# usage : check_root $keepenv
##
-orig_argv=("${BASH_SOURCE[0]}" "$@")
check_root() {
local keepenv=$1
+ shift
+ local orig_argv=("$@")
(( EUID == 0 )) && return
if type -P sudo >/dev/null; then
- exec sudo --preserve-env=$keepenv -- "${orig_argv[@]}"
+ exec sudo --preserve-env="${keepenv}" -- "${orig_argv[@]}"
else
exec su root -c "$(printf ' %q' "${orig_argv[@]}")"
fi