[pacman-dev] [PATCH 3/7] repo-add: only update database if entire command succeeded

Allan McRae allan at archlinux.org
Sun Mar 15 10:48:46 UTC 2015


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 <allan at archlinux.org>
---
 scripts/repo-add.sh.in | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

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


More information about the pacman-dev mailing list