[arch-projects] [devtools] [PATCH 1/4] save and reuse original argv when auto-elevating

Dave Reisner dreisner at archlinux.org
Thu Oct 23 20:02:16 UTC 2014


Fixes FS#42277.
---
 arch-nspawn.in   | 4 +++-
 archbuild.in     | 6 ++++--
 makechrootpkg.in | 6 ++++--
 mkarchroot.in    | 4 +++-
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/arch-nspawn.in b/arch-nspawn.in
index b85d360..19f1410 100644
--- a/arch-nspawn.in
+++ b/arch-nspawn.in
@@ -26,6 +26,8 @@ usage() {
 	exit 1
 }
 
+orig_argv=("$@")
+
 while getopts 'hC:M:c:' arg; do
 	case "$arg" in
 		C) pac_conf="$OPTARG" ;;
@@ -38,7 +40,7 @@ done
 shift $(($OPTIND - 1))
 
 (( $# < 1 )) && die 'You must specify a directory.'
-check_root "$0" "$@"
+check_root "$0" "${orig_argv[@]}"
 
 working_dir=$(readlink -f "$1")
 shift 1
diff --git a/archbuild.in b/archbuild.in
index dc45c7f..9c5d706 100644
--- a/archbuild.in
+++ b/archbuild.in
@@ -29,6 +29,8 @@ usage() {
 	exit 1
 }
 
+orig_argv=("$@")
+
 while getopts 'hcr:' arg; do
 	case "${arg}" in
 		c) clean_first=true ;;
@@ -37,11 +39,11 @@ while getopts 'hcr:' arg; do
 	esac
 done
 
+check_root "$0" "${orig_argv[@]}"
+
 # Pass all arguments after -- right to makepkg
 makechrootpkg_args+=("${@:$OPTIND}")
 
-check_root "$0" "$@"
-
 if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
 	msg "Creating chroot for [${repo}] (${arch})..."
 
diff --git a/makechrootpkg.in b/makechrootpkg.in
index a340116..8957974 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -66,6 +66,8 @@ usage() {
 	exit 1
 }
 
+orig_argv=("$@")
+
 while getopts 'hcur:I:l:nTD:d:' arg; do
 	case "$arg" in
 		h) usage ;;
@@ -81,10 +83,10 @@ while getopts 'hcur:I:l:nTD:d:' arg; do
 	esac
 done
 
-check_root "$0" "$@"
-
 [[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.'
 
+check_root "$0" "${orig_argv[@]}"
+
 # Canonicalize chrootdir, getting rid of trailing /
 chrootdir=$(readlink -e "$passeddir")
 [[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '%s'" "$passeddir"
diff --git a/mkarchroot.in b/mkarchroot.in
index 5f3d6fe..78384da 100644
--- a/mkarchroot.in
+++ b/mkarchroot.in
@@ -24,6 +24,8 @@ usage() {
 	exit 1
 }
 
+orig_argv=("$@")
+
 while getopts 'hC:M:c:' arg; do
 	case "$arg" in
 		C) pac_conf="$OPTARG" ;;
@@ -37,7 +39,7 @@ shift $(($OPTIND - 1))
 
 (( $# < 2 )) && die 'You must specify a directory and one or more packages.'
 
-check_root "$0" "$@"
+check_root "$0" "${orig_argv[@]}"
 
 working_dir="$(readlink -f $1)"
 shift 1
-- 
2.1.2


More information about the arch-projects mailing list