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 <[email protected]>
---
 scripts/repo-add.sh.in | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index d496354..c16295b 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
-- 
2.3.3

Reply via email to