xbps-install: return 0 if pkg is already installed or uptodate.

Before this change xbps-install could return EEXIST
when the package is already installed, or already up-to-date.

Return 0 if such condition happens, and only return EEXIST
if there's a file conflict.

Close #51
This commit is contained in:
Juan RP 2019-06-21 11:06:45 +02:00
parent c44e1f958d
commit 288cff37f8
No known key found for this signature in database
GPG Key ID: AF19F6CB482F9368
2 changed files with 8 additions and 6 deletions

View File

@ -239,11 +239,11 @@ main(int argc, char **argv)
rv = dist_upgrade(&xh, maxcols, yes, drun);
} else if (update) {
/* Update target packages */
int npkgs = argc - optind;
for (i = optind; i < argc; i++) {
rv = update_pkg(&xh, argv[i]);
if (npkgs >= 2 && rv == EEXIST) {
;
if (rv == EEXIST) {
/* pkg already updated, ignore */
rv = 0;
} else if (rv != 0) {
xbps_end(&xh);
exit(rv);
@ -252,11 +252,11 @@ main(int argc, char **argv)
rv = exec_transaction(&xh, maxcols, yes, drun);
} else if (!update) {
/* Install target packages */
int npkgs = argc - optind;
for (i = optind; i < argc; i++) {
rv = install_new_pkg(&xh, argv[i], reinstall);
if (npkgs >= 2 && rv == EEXIST) {
;
if (rv == EEXIST) {
/* pkg already installed, ignore */
rv = 0;
} else if (rv != 0) {
xbps_end(&xh);
exit(rv);

View File

@ -389,6 +389,8 @@ exec_transaction(struct xbps_handle *xhp, int maxcols, bool yes, bool drun)
trans->dl_pkgcnt, trans->inst_pkgcnt,
trans->up_pkgcnt, trans->cf_pkgcnt + trans->inst_pkgcnt,
trans->rm_pkgcnt);
} else {
fprintf(stderr, "Transaction failed! see above for errors.\n");
}
out:
if (trans->iter)