From 6aef45ee1aaf27dba21265fbdd65139061a91123 Mon Sep 17 00:00:00 2001 From: Allan McRae Date: Sun, 15 Mar 2015 16:40:11 +1000 Subject: repo-add: check early for xdelta if it is needed The check for xdelta3 was done as needed (and not in all cases). Do this check early so that repo-add does not abort part way through. Signed-off-by: Allan McRae --- scripts/repo-add.sh.in | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'scripts/repo-add.sh.in') diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index d4963543..c16295be 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -212,6 +212,28 @@ check_gpg() { fi } +check_xdelta() { + local need_xdelta=0 + + if (( DELTA )); then + need_xdelta=1 + else + if [[ $cmd == "repo-add" ]]; + for f in ${args[@]:1}; do + case $f in + *.delta) need_xdelta=1 ;; + *) ;; + done + fi + + if (( need_xdelta )); then + if ! type xdelta3 &>/dev/null; then + error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")" + exit 1 + fi + fi +} + # sign the package database once repackaged create_signature() { (( ! SIGN )) && return @@ -525,10 +547,6 @@ add() { if [[ ${1##*.} == "delta" ]]; then deltafile=$1 msg "$(gettext "Adding delta '%s'")" "$deltafile" - if ! type xdelta3 &>/dev/null; then - error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")" - exit 1 - fi if db_write_delta "$deltafile"; then return 0 else @@ -736,6 +754,8 @@ if (( SIGN || KEY || VERIFY )); then check_gpg fi +check_xdelta + fail=0 for arg in "${args[@]:1}"; do case $cmd in -- cgit v1.2.3-54-g00ecf