]> wolfpit.net Git - tool/Arch-pacman/.git/commitdiff
makepkg: unify list of known hash algorithms
authorDave Reisner <dreisner@archlinux.org>
Mon, 2 Sep 2013 19:53:33 +0000 (15:53 -0400)
committerAllan McRae <allan@archlinux.org>
Tue, 3 Sep 2013 23:51:20 +0000 (09:51 +1000)
Unifying this list makes adding new algorithms easier. There's also
some menial cleanup in this patch to avoid use of eval and properly
treat lists of data as array instead of simple strings.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
scripts/makepkg.sh.in

index 025f756438d24b793eea39a85d291edc9958556d..3feb460ca1f1435672c0f194292a2dccc0843066 100644 (file)
@@ -54,6 +54,8 @@ splitpkg_overrides=('pkgver' 'pkgrel' 'epoch' 'pkgdesc' 'arch' 'url' 'license' \
                     'replaces' 'backup' 'options' 'install' 'changelog')
 readonly -a packaging_options other_options splitpkg_overrides
 
+known_hash_algos=('md5' 'sha1' 'sha256' 'sha384' 'sha512')
+
 # Options
 ASDEPS=0
 NEEDED=0
@@ -1107,10 +1109,10 @@ get_integlist() {
        local integ
        local integlist=()
 
-       for integ in md5 sha1 sha256 sha384 sha512; do
-               local integrity_sums=($(eval echo "\${${integ}sums[@]}"))
-               if [[ -n "$integrity_sums" ]]; then
-                       integlist=(${integlist[@]} $integ)
+       for integ in "${known_hash_algos[@]}"; do
+               local sumname="${integ}sums[@]"
+               if [[ -n ${!sumname} ]]; then
+                       integlist+=("$integ")
                fi
        done
 
@@ -1131,19 +1133,17 @@ generate_checksums() {
 
        local integlist
        if (( $# == 0 )); then
-               integlist=$(get_integlist)
+               IFS=$'\n' read -ra integlist < <(get_integlist)
        else
-               integlist=$@
+               integlist=("$@")
        fi
 
        local integ
-       for integ in ${integlist[@]}; do
-               case "$integ" in
-                       md5|sha1|sha256|sha384|sha512) : ;;
-                       *)
-                               error "$(gettext "Invalid integrity algorithm '%s' specified.")" "$integ"
-                               exit 1;; # $E_CONFIG_ERROR
-               esac
+       for integ in "${integlist[@]}"; do
+               if ! in_array "$integ" "${known_hash_algos[@]}"; then
+                       error "$(gettext "Invalid integrity algorithm '%s' specified.")" "$integ"
+                       exit 1 # $E_CONFIG_ERROR
+               fi
 
                local ct=0
                local numsrc=${#source[@]}
@@ -1192,8 +1192,9 @@ check_checksums() {
 
        local correlation=0
        local integ required
-       for integ in md5 sha1 sha256 sha384 sha512; do
-               local integrity_sums=($(eval echo "\${${integ}sums[@]}"))
+       for integ in "${known_hash_algos[@]}"; do
+               local sumname="${integ}sums[@]"
+               local integrity_sums=("${!sumname}")
                if (( ${#integrity_sums[@]} == ${#source[@]} )); then
                        msg "$(gettext "Validating source files with %s...")" "${integ}sums"
                        correlation=1