/* app_update.c - Alpine Package Keeper (APK) * * Copyright (C) 2005-2008 Natanael Copa * Copyright (C) 2008-2011 Timo Teräs * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-only */ #include #include "apk_defines.h" #include "apk_applet.h" #include "apk_database.h" #include "apk_version.h" #include "apk_print.h" static int update_main(void *ctx, struct apk_ctx *ac, struct apk_string_array *args) { struct apk_out *out = &ac->out; struct apk_database *db = ac->db; struct apk_repository *repo; struct apk_url_print urlp; int i; char buf[32] = "OK:"; if (apk_out_verbosity(out) < 1) return db->repo_update_errors; for (i = 0; i < db->num_repos; i++) { repo = &db->repos[i]; if (APK_BLOB_IS_NULL(repo->description)) continue; apk_url_parse(&urlp, db->repos[i].url); apk_msg(out, BLOB_FMT " [" URL_FMT "]", BLOB_PRINTF(repo->description), URL_PRINTF(urlp)); } if (db->repo_update_errors != 0) snprintf(buf, sizeof(buf), "%d errors;", db->repo_update_errors); apk_msg(out, "%s %d distinct packages available", buf, db->available.packages.num_items); return db->repo_update_errors; } static struct apk_applet apk_update = { .name = "update", .open_flags = APK_OPENF_WRITE, .forced_force = APK_FORCE_REFRESH, .main = update_main, }; APK_DEFINE_APPLET(apk_update);