diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2015-04-07 09:57:42 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2015-04-07 10:49:51 +0200 |
commit | 944eae4b27d039608dd72b1d7b3ed015c20bdcc0 (patch) | |
tree | 7bf60e2d41308feb8e7b5af73e35eaf464821680 | |
parent | 7e3f4c3d7996811a37393514d6f0eaacae7178e2 (diff) | |
download | apk-tools-944eae4b27d039608dd72b1d7b3ed015c20bdcc0.tar.gz apk-tools-944eae4b27d039608dd72b1d7b3ed015c20bdcc0.tar.bz2 apk-tools-944eae4b27d039608dd72b1d7b3ed015c20bdcc0.tar.xz apk-tools-944eae4b27d039608dd72b1d7b3ed015c20bdcc0.zip |
update: return failure if any mirror update failed
fixes #4040
-rw-r--r-- | src/apk_database.h | 1 | ||||
-rw-r--r-- | src/database.c | 4 | ||||
-rw-r--r-- | src/update.c | 8 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/apk_database.h b/src/apk_database.h index b2fa28e..315a429 100644 --- a/src/apk_database.h +++ b/src/apk_database.h @@ -148,6 +148,7 @@ struct apk_database { char *cache_remount_dir; apk_blob_t *arch; unsigned int local_repos, available_repos; + int repo_update_errors; unsigned int pending_triggers; int performing_self_update : 1; int permanent : 1; diff --git a/src/database.c b/src/database.c index 8619465..0828725 100644 --- a/src/database.c +++ b/src/database.c @@ -2017,8 +2017,10 @@ static int apk_repository_update(struct apk_database *db, struct apk_repository int r, verify = (apk_flags & APK_ALLOW_UNTRUSTED) ? APK_SIGN_NONE : APK_SIGN_VERIFY; r = apk_cache_download(db, repo, NULL, verify, NULL, NULL); - if (r != 0) + if (r != 0) { apk_error("%s: %s", repo->url, apk_error_str(r)); + db->repo_update_errors++; + } return r; } diff --git a/src/update.c b/src/update.c index ed721be..84833ec 100644 --- a/src/update.c +++ b/src/update.c @@ -20,6 +20,7 @@ static int update_main(void *ctx, struct apk_database *db, struct apk_string_arr { struct apk_repository *repo; int i; + char buf[32] = "OK:"; if (apk_verbosity < 1) return 0; @@ -35,10 +36,13 @@ static int update_main(void *ctx, struct apk_database *db, struct apk_string_arr db->repos[i].url); } - apk_message("OK: %d distinct packages available", + if (db->repo_update_errors != 0) + snprintf(buf, sizeof(buf), "%d errors;", + db->repo_update_errors); + apk_message("%s %d distinct packages available", buf, db->available.packages.num_items); - return 0; + return db->repo_update_errors; } static struct apk_applet apk_update = { |