summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2013-09-02 21:53:33 +0200
committerAllan McRae <allan@archlinux.org>2013-09-04 01:51:20 +0200
commitb370f0ca427fe9d83a5d8e0951f30e9b6c9e03f8 (patch)
treefe1842b3dd41f891c8d8cf728abe788aeef60533 /scripts
parentaade18cf3b32ffb5352f21edd135056286c3658d (diff)
downloadpacman-b370f0ca427fe9d83a5d8e0951f30e9b6c9e03f8.tar.gz
pacman-b370f0ca427fe9d83a5d8e0951f30e9b6c9e03f8.tar.xz
makepkg: unify list of known hash algorithms
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>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/makepkg.sh.in31
1 files changed, 16 insertions, 15 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 025f7564..3feb460c 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -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