summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/sync.c38
1 files changed, 23 insertions, 15 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index 57097fd1..a8bb4733 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -248,29 +248,15 @@ static int sync_pkg(pmpkg_t *spkg, alpm_list_t *pkg_list)
return(0);
}
-static int sync_target(alpm_list_t *dbs_sync, char *target)
+static int sync_group(alpm_list_t *dbs_sync, const char *target)
{
alpm_list_t *i, *j;
alpm_list_t *known_pkgs = NULL;
- pmpkg_t *spkg;
- pmdepend_t *dep; /* provisions and dependencies are also allowed */
pmgrp_t *grp;
int found = 0;
ALPM_LOG_FUNC;
- /* Sanity checks */
- ASSERT(target != NULL && strlen(target) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-
- dep = _alpm_splitdep(target);
- spkg = _alpm_resolvedep(dep, dbs_sync, NULL, 1);
- _alpm_dep_free(dep);
-
- if(spkg != NULL) {
- return(sync_pkg(spkg, handle->trans->add));
- }
-
_alpm_log(PM_LOG_DEBUG, "%s package not found, searching for group...\n", target);
for(i = dbs_sync; i; i = i->next) {
pmdb_t *db = i->data;
@@ -305,6 +291,28 @@ static int sync_target(alpm_list_t *dbs_sync, char *target)
return(0);
}
+static int sync_target(alpm_list_t *dbs_sync, const char *target)
+{
+ pmpkg_t *spkg;
+ pmdepend_t *dep; /* provisions and dependencies are also allowed */
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(target != NULL && strlen(target) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+ dep = _alpm_splitdep(target);
+ spkg = _alpm_resolvedep(dep, dbs_sync, NULL, 1);
+ _alpm_dep_free(dep);
+
+ if(spkg != NULL) {
+ return(sync_pkg(spkg, handle->trans->add));
+ }
+
+ return(sync_group(dbs_sync, target));
+}
+
/** Add a sync target to the transaction.
* @param target the name of the sync target to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)