On Mon, Feb 18, 2008 at 12:15:37AM -0600, Dan McGee wrote:
diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 27218d6..bb2a8bb 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -202,6 +202,17 @@ static int sync_synctree(int level, alpm_list_t *syncs) alpm_list_t *i; int success = 0, ret;
+ if(alpm_trans_init(PM_TRANS_TYPE_SYNC, 0, cb_trans_evt, + cb_trans_conv, cb_trans_progress) == -1) { + fprintf(stderr, _("error: failed to init transaction (%s)\n"), + alpm_strerrorlast()); + if(pm_errno == PM_ERR_HANDLE_LOCK) { + printf(_(" if you're sure a package manager is not already\n" + " running, you can remove %s.\n"), alpm_option_get_lockfile()); + } + return(0); + } +
Don't we have this same code in a few different places now? Can we refactor this somehow?
I will see what I can do.
for(i = syncs; i; i = alpm_list_next(i)) { pmdb_t *db = alpm_list_getdata(i);
@@ -229,10 +240,18 @@ static int sync_synctree(int level, alpm_list_t *syncs) } }
+ if(alpm_trans_release() == -1) { + fprintf(stderr, _("error: failed to release transaction (%s)\n"), + alpm_strerrorlast()); + return(0); + } /* 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 */
What is this comment even referring to? I'm confused here. And you had code changes on either side of it.
+ if(!success) { + fprintf(stderr, _("error: failed to synchronize any databases\n")); + } return(success > 0); }
Well, it simply refers to that last part. If at least one DB was upgraded (success > 0), we return 1. Otherwise (success = 0), we print an error and return 0.