diff options
author | Xavier Chantry <shiningxc@gmail.com> | 2008-05-28 22:55:03 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-06-04 23:25:31 +0200 |
commit | d030d12542dabfe0b6c648f48d2ff08b4feb4d41 (patch) | |
tree | d660e45f69329b76f3483dee3018d80199ed4918 /src | |
parent | 0966c33a72ce172526762ac988ee6edbbba07b52 (diff) | |
download | pacman-d030d12542dabfe0b6c648f48d2ff08b4feb4d41.tar.gz pacman-d030d12542dabfe0b6c648f48d2ff08b4feb4d41.tar.xz |
src/pacman/sync.c : cleanup of pacman_sync
By putting the search / group / info / list operations just after the -Sy
op, we can simplify several checks :
1) the check for "missing targets". Since we took care of the above
operations, we now have less cases to consider :
* -Syu or -Su : we can proceed
* -Sy : we can end now (this is actually a bugfix)
* -S : this op requires targets, so exit with an error
2) the check to see if a transaction is needed. If we arrive at the end of
the function, it is either because we have -Su or -S <targets> so we already
know a transaction is needed there.
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/pacman/sync.c | 76 |
1 files changed, 37 insertions, 39 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c index ba41b9e9..923394cf 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -796,15 +796,6 @@ int pacman_sync(alpm_list_t *targets) return(1); } - if(targets == NULL && !(config->op_s_sync || config->op_s_upgrade - || config->op_s_search || config->group - || config->op_s_info || config->op_q_list)) { - /* don't proceed here unless we have an operation that doesn't require - * a target list */ - pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for help)\n")); - return(1); - } - if(config->op_s_sync) { /* grab a fresh package list */ printf(_(":: Synchronizing package databases...\n")); @@ -812,35 +803,6 @@ int pacman_sync(alpm_list_t *targets) if(!sync_synctree(config->op_s_sync, sync_dbs)) { return(1); } - config->op_s_sync = 0; - } - - if(needs_transaction()) { - alpm_list_t *targs = alpm_list_strdup(targets); - if(!(config->flags & (PM_TRANS_FLAG_DOWNLOADONLY | PM_TRANS_FLAG_PRINTURIS))) { - /* check for newer versions of packages to be upgraded first */ - alpm_list_t *packages = syncfirst(); - if(packages) { - printf(_(":: The following packages should be upgraded first :\n")); - list_display(" ", packages); - if(yesno(1, _(":: Do you want to cancel the current operation\n" - ":: and upgrade these packages now?"))) { - FREELIST(targs); - targs = packages; - config->flags = 0; - config->op_s_upgrade = 0; - } else { - FREELIST(packages); - } - printf("\n"); - } - } - - int ret = sync_trans(targs); - FREELIST(targs); - if(ret == 1) { - return(1); - } } /* search for a package */ @@ -863,7 +825,43 @@ int pacman_sync(alpm_list_t *targets) return(sync_list(sync_dbs, targets)); } - return(0); + if(targets == NULL) { + if(config->op_s_upgrade) { + /* proceed */ + } else if(config->op_s_sync) { + return(0); + } else { + /* don't proceed here unless we have an operation that doesn't require a + * target list */ + pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for help)\n")); + return(1); + } + } + + alpm_list_t *targs = alpm_list_strdup(targets); + if(!(config->flags & (PM_TRANS_FLAG_DOWNLOADONLY | PM_TRANS_FLAG_PRINTURIS))) { + /* check for newer versions of packages to be upgraded first */ + alpm_list_t *packages = syncfirst(); + if(packages) { + printf(_(":: The following packages should be upgraded first :\n")); + list_display(" ", packages); + if(yesno(1, _(":: Do you want to cancel the current operation\n" + ":: and upgrade these packages now?"))) { + FREELIST(targs); + targs = packages; + config->flags = 0; + config->op_s_upgrade = 0; + } else { + FREELIST(packages); + } + printf("\n"); + } + } + + int ret = sync_trans(targs); + FREELIST(targs); + + return(ret); } /* vim: set ts=2 sw=2 noet: */ |