int trans_init(alpm_transflag_t flags, int check_valid) { int ret; check_syncdbs(0, check_valid); ret = alpm_trans_init(config->handle, flags); if(ret == -1) { trans_init_error(); return -1; } return 0; }
/* * Return: 0 for success. */ int ipacman_sync_packages(alpm_list_t *targets) { int ret = 0; alpm_list_t *i; alpm_list_t *sync_dbs = alpm_get_syncdbs(handle); if(sync_dbs == NULL) { printf("no usable package repositories configured.\n"); return 1; } /* ensure all known dbs are valid */ for(i = sync_dbs; i; i = alpm_list_next(i)) { alpm_db_t *db = i->data; if(alpm_db_get_valid(db)) { printf("database '%s' is not valid (%s)\n", alpm_db_get_name(db), alpm_strerror(alpm_errno(handle))); ret = 1; } } if (ret) return ret; /* Step 1: create a new transaction... */ ret = alpm_trans_init(handle, ALPM_TRANS_FLAG_FORCE); if(ret == -1) { trans_init_error(handle); return 1; } /* process targets */ for(i = targets; i; i = alpm_list_next(i)) { const char *targ = i->data; if(process_target(targ, ret) == 1) { ret = 1; } } if(ret) { if(alpm_trans_release(handle) == -1) { printf("failed to release transaction (%s)\n", alpm_strerror(alpm_errno(handle))); } return ret; } return sync_prepare_execute(); }
int ipacman_refresh_databases(void) { alpm_list_t *sync_dbs = NULL; alpm_list_t *i; unsigned int success = 0; sync_dbs = alpm_get_syncdbs(handle); if(sync_dbs == NULL) { printf("no usable package repositories configured.\n"); return -1; } printf("Synchronizing package databases...\n"); alpm_logaction(handle, PACMAN_CALLER_PREFIX, "synchronizing package lists\n"); for(i = sync_dbs; i; i = alpm_list_next(i)) { alpm_db_t *db = i->data; int ret = alpm_db_update(1, db); if(ret < 0) { printf("failed to update %s (%s)\n", alpm_db_get_name(db), alpm_strerror(alpm_errno(handle))); } else if(ret == 1) { printf(" %s is up to date\n", alpm_db_get_name(db)); success++; } else { success++; } } /* We should always succeed if at least one DB was upgraded - we may possibly * fail later with unresolved deps, but that should be rare, and would be * expected */ if(!success) { printf("failed to synchronize any databases\n"); trans_init_error(handle); return success; } return 0; }