summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLevente Polyak <anthraxx@archlinux.org>2022-08-31 23:49:01 +0200
committerLevente Polyak <anthraxx@archlinux.org>2022-09-01 23:40:21 +0200
commitfcaf3ecec0f835cc480fdeb653d33754b0de7624 (patch)
treebfa2e2bf75385cc041fc36233205ea6a9be35087 /lib
parent280ef10d37e88a9a60d1a4406fc511d09acc3fad (diff)
downloaddevtools-fcaf3ecec0f835cc480fdeb653d33754b0de7624.tar.xz
fix: do not set extglob globally to avoid side-effects
Instead only enable it for whatever operation requires them. Example sides effects: commitpkg can accidently execute PKGBUILD functions when sourcing the PKGBUILD that has function names like package_libsigc++() Fixes #87
Diffstat (limited to 'lib')
-rw-r--r--lib/common.sh10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/common.sh b/lib/common.sh
index 0996247..56e49e6 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -19,8 +19,6 @@ export LANG=C
export BUILDTOOL=devtools
export BUILDTOOLVER=m4_devtools_version
-shopt -s extglob
-
# check if messages are to be printed using color
if [[ -t 2 && "$TERM" != dumb ]]; then
colorize
@@ -142,12 +140,16 @@ pkgver_equal() {
find_cached_package() {
local searchdirs=("$PWD" "$PKGDEST") results=()
local targetname=$1 targetver=$2 targetarch=$3
- local dir pkg pkgbasename name ver rel arch r results
+ local dir pkg packages pkgbasename name ver rel arch r results
for dir in "${searchdirs[@]}"; do
[[ -d $dir ]] || continue
- for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do
+ shopt -s extglob nullglob
+ mapfile -t packages < <(printf "%s\n" "$dir"/*.pkg.tar?(.!(sig|*.*)))
+ shopt -u extglob nullglob
+
+ for pkg in "${packages[@]}"; do
[[ -f $pkg ]] || continue
# avoid adding duplicates of the same inode