#include "../../include/all.h" #include "../common.h" #include #include #include int main(int argc, char *argv[]) { lm_ctx_update_list_t *list = NULL; int ret = EXIT_FAILURE; lm_pkg_t *new = NULL; lm_entry_t *old = NULL; lm_ctx_t ctx; if (argc != 3) { printf("usage: %s \n", argv[0]); return ret; } if (!lm_ctx_init(&ctx, ROOT_DIR, TEMP_DIR, DATA_DIR)) { printf("failed to init the ctx: %s (%d)\n", lm_strerror(), lm_error()); goto end; } lm_ctx_ping(&ctx, NULL, NULL); lm_ctx_sync(&ctx, true, NULL, NULL); if ((list = lm_ctx_update_list(&ctx)) == NULL) { printf("failed to get update list: %s (%d)", lm_strerror(), lm_error()); goto end; } if (list->count == 0) { printf("all packages are up-to-date\n"); goto end; } while ((old = lm_ctx_update_list_next(list)) != NULL) { printf("updating %s (%s)...\n", old->name, old->version); if ((new = lm_ctx_update(&ctx, old)) == NULL) { printf("failed to update package: %s\n", lm_strerror()); goto end; } if (!lm_ctx_download(&ctx, new, NULL, NULL)) { printf("failed to download new package: %s", lm_strerror()); goto end; } if (!lm_ctx_remove(&ctx, old, NULL, NULL)) { printf("failed to remove old package: %s", lm_strerror()); goto end; } if (!lm_ctx_install(&ctx, new, false, NULL, NULL)) { printf("failed to install new package: %s", lm_strerror()); goto end; } } ret = EXIT_SUCCESS; end: lm_ctx_update_list_free(list); lm_ctx_free(&ctx); return ret; }