summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2011-09-04 04:24:27 +0200
committerDan McGee <dan@archlinux.org>2011-09-06 18:46:01 +0200
commit0e79802c0ac8453376d8c0f99629f5a3b499f571 (patch)
tree2d9869e8787ce301caf5c007b186f11ce905e40b /scripts
parent8d0ff3d7dc4ea925a1fd94ae022a16a14945aa3f (diff)
downloadpacman-0e79802c0ac8453376d8c0f99629f5a3b499f571.tar.gz
pacman-0e79802c0ac8453376d8c0f99629f5a3b499f571.tar.xz
makepkg: use globs in place of regex
We seem to enjoy using bash regex capabilities, but never referencing the result with BASH_REMATCH. Replace almost all regexes with equivalent globs which are faster and functionally equivalent in these cases. This enables the extglob shopt. Signed-off-by: Dave Reisner <dreisner@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/makepkg.sh.in16
1 files changed, 9 insertions, 7 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 3174b0c7..726e7dd6 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -81,6 +81,8 @@ FORCE_VER=""
PACMAN_OPTS=
+shopt -s extglob
+
### SUBROUTINES ###
plain() {
@@ -341,7 +343,7 @@ in_array() {
source_has_signatures(){
local file
for file in "${source[@]}"; do
- if [[ $file =~ \.(sig|asc)$ ]]; then
+ if [[ $file = *.@(sig|asc) ]]; then
return 0
fi
done
@@ -420,7 +422,7 @@ download_file() {
run_pacman() {
local cmd
printf -v cmd "%q " "$PACMAN" $PACMAN_OPTS "$@"
- if (( ! ASROOT )) && [[ ! $1 =~ ^-(T|Qq)$ ]]; then
+ if (( ! ASROOT )) && [[ ! $1 = -@(T|Qq) ]]; then
if type -p sudo >/dev/null; then
cmd="sudo $cmd"
else
@@ -709,7 +711,7 @@ check_pgpsigs() {
for file in "${source[@]}"; do
file="$(get_filename "$file")"
- if [[ ! $file =~ \.(sig|asc)$ ]]; then
+ if [[ ! $file = *.@(sig|asc) ]]; then
continue
fi
@@ -1449,7 +1451,7 @@ check_sanity() {
awk -F'=' '/^[[:space:]]*pkgver=/ { $1=""; print $0 }' "$BUILDFILE" |
while read -r i; do
eval i=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "$i")\"
- if [[ $i =~ [[:space:]:-] ]]; then
+ if [[ $i = *[[:space:]:-]* ]]; then
error "$(gettext "%s is not allowed to contain colons, hyphens or whitespace.")" "pkgver"
return 1
fi
@@ -1458,7 +1460,7 @@ check_sanity() {
awk -F'=' '/^[[:space:]]*pkgrel=/ { $1=""; print $0 }' "$BUILDFILE" |
while read -r i; do
eval i=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "$i")\"
- if [[ $i =~ [[:space:]-] ]]; then
+ if [[ $i = *[[:space:]-]* ]]; then
error "$(gettext "%s is not allowed to contain hyphens or whitespace.")" "pkgrel"
return 1
fi
@@ -1467,7 +1469,7 @@ check_sanity() {
awk -F'=' '/^[[:space:]]*epoch=/ { $1=""; print $0 }' "$BUILDFILE" |
while read -r i; do
eval i=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "$i")\"
- if [[ ! $i =~ ^[0-9]*$ ]]; then
+ if [[ $i != *([[:digit:]]) ]]; then
error "$(gettext "%s must be an integer.")" "epoch"
return 1
fi
@@ -1524,7 +1526,7 @@ check_sanity() {
sed -e "s/optdepends=/optdepends_list+=/" -e "s/#.*//" -e 's/\\$//')
for i in "${optdepends_list[@]}"; do
local pkg=${i%%:*}
- if [[ ! $pkg =~ ^[[:alnum:]\>\<\=\.\+\_\-]+$ ]]; then
+ if [[ $pkg != +([[:alnum:]><=.+_-]) ]]; then
error "$(gettext "Invalid syntax for %s : '%s'")" "optdepend" "$i"
ret=1
fi