From 81d233b79345d05d5bf17a4b2844085e14f9ee36 Mon Sep 17 00:00:00 2001 From: Allan McRae Date: Sun, 15 Mar 2015 16:32:56 +1000 Subject: repo-add: only update database if entire command succeeded It is not hard to think of situations where the repo database should not be updated unless the whole operation succeeds. Error out before a partial database update occurs. Signed-off-by: Allan McRae --- scripts/repo-add.sh.in | 8 ++++---- 1 file changed, 4 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 2d9b2628..d4963543 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -688,7 +688,6 @@ trap 'trap_exit "$(gettext "Aborted by user! Exiting...")"' INT trap 'trap_exit "$(gettext "An unknown error has occurred. Exiting...")"' ERR declare -a args -success=0 # parse arguments while (( $# )); do case $1 in @@ -737,15 +736,16 @@ if (( SIGN || KEY || VERIFY )); then check_gpg fi +fail=0 for arg in "${args[@]:1}"; do case $cmd in repo-add) add "$arg" ;; repo-remove) remove "$arg" ;; - esac && success=1 + esac || fail=1 done -# if at least one operation was a success, re-zip database -if (( success )); then +# if the whole operation was a success, re-zip and rotate database +if (( !fail )); then msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE" create_db rotate_db -- cgit v1.2.3-54-g00ecf