61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
|
#include "../../include/all.h"
|
||
|
#include "./common.h"
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
int main(int argc, char *argv[]) {
|
||
|
lm_ctx_update_list_t *list = NULL;
|
||
|
int ret = EXIT_FAILURE;
|
||
|
lm_pkg_t pkg, *cur = NULL;
|
||
|
lm_ctx_t ctx;
|
||
|
|
||
|
if (!mkdir_ifnot(ROOT_DIR)) {
|
||
|
printf("failed to create root dir: %s\n", ROOT_DIR);
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
lm_ctx_init(&ctx);
|
||
|
|
||
|
if (!lm_ctx_set_data(&ctx, DATA_DIR)) {
|
||
|
printf("failed to set data dir: %s (%d)\n", lm_strerror(), lm_error());
|
||
|
goto end;
|
||
|
}
|
||
|
|
||
|
if (!lm_ctx_set_temp(&ctx, TEMP_DIR)) {
|
||
|
printf("failed to set temp dir: %s (%d)\n", lm_strerror(), lm_error());
|
||
|
goto end;
|
||
|
}
|
||
|
|
||
|
if (!lm_ctx_set_root(&ctx, ROOT_DIR)) {
|
||
|
printf("failed to set root dir: %s (%d)\n", lm_strerror(), lm_error());
|
||
|
goto end;
|
||
|
}
|
||
|
|
||
|
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 ((cur = lm_ctx_update_list_next(list)) != NULL) {
|
||
|
printf("updating %s (%s)...\n", cur->name, cur->version);
|
||
|
if (!lm_ctx_update(&ctx, cur, NULL, NULL)) {
|
||
|
printf("failed to update package: %s\n", lm_strerror());
|
||
|
goto end;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ret = EXIT_SUCCESS;
|
||
|
|
||
|
end:
|
||
|
lm_ctx_update_list_free(list);
|
||
|
lm_ctx_free(&ctx);
|
||
|
return ret;
|
||
|
}
|