diff options
author | Dave Reisner <dreisner@archlinux.org> | 2011-09-04 04:24:27 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-09-06 18:46:01 +0200 |
commit | 0e79802c0ac8453376d8c0f99629f5a3b499f571 (patch) | |
tree | 2d9869e8787ce301caf5c007b186f11ce905e40b | |
parent | 8d0ff3d7dc4ea925a1fd94ae022a16a14945aa3f (diff) | |
download | pacman-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>
-rw-r--r-- | scripts/makepkg.sh.in | 16 |
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 |