summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-06-09 16:00:55 -0500
committerDan McGee <dan@archlinux.org>2011-06-13 19:32:59 -0500
commitfb3ad7f8823dd3300528b44427d40e17594b1400 (patch)
tree8932518e67553383a178d23fcdd07beb24dc801e
parent01ad3faee934aa805237bf5405e7c74dc1482a17 (diff)
Add handle argument to alpm_(add|remove)_pkg()
This makes these functions consistent with the rest of the transaction related API calls. We do an additional assert to ensure the handle attached to the package is the same as the handle passed in. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/add.c13
-rw-r--r--lib/libalpm/alpm.h6
-rw-r--r--lib/libalpm/remove.c6
-rw-r--r--src/pacman/remove.c4
-rw-r--r--src/pacman/sync.c2
-rw-r--r--src/pacman/upgrade.c2
6 files changed, 19 insertions, 14 deletions
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index 6edceca1..008144b9 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -48,19 +48,20 @@
#include "handle.h"
/** Add a package to the transaction. */
-int SYMEXPORT alpm_add_pkg(pmpkg_t *pkg)
+int SYMEXPORT alpm_add_pkg(pmhandle_t *handle, pmpkg_t *pkg)
{
const char *pkgname, *pkgver;
pmtrans_t *trans;
- pmdb_t *db_local;
pmpkg_t *local;
/* Sanity checks */
+ ASSERT(handle != NULL, return -1);
ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- trans = pkg->handle->trans;
+ ASSERT(handle == pkg->handle, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+ trans = handle->trans;
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
- db_local = pkg->handle->db_local;
+ ASSERT(trans->state == STATE_INITIALIZED,
+ RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
pkgname = pkg->name;
pkgver = pkg->version;
@@ -71,7 +72,7 @@ int SYMEXPORT alpm_add_pkg(pmpkg_t *pkg)
RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
}
- local = _alpm_db_get_pkgfromcache(db_local, pkgname);
+ local = _alpm_db_get_pkgfromcache(handle->db_local, pkgname);
if(local) {
const char *localpkgname = alpm_pkg_get_name(local);
const char *localpkgver = alpm_pkg_get_version(local);
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 21444017..8742eacd 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -867,16 +867,18 @@ int alpm_sync_sysupgrade(pmhandle_t *handle, int enable_downgrade);
/** Add a package to the transaction.
* If the package was loaded by alpm_pkg_load(), it will be freed upon
* alpm_trans_release() invocation.
+ * @param handle the context handle
* @param pkg the package to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int alpm_add_pkg(pmpkg_t *pkg);
+int alpm_add_pkg(pmhandle_t *handle, pmpkg_t *pkg);
/** Add a package removal action to the transaction.
+ * @param handle the context handle
* @param pkg the package to uninstall
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int alpm_remove_pkg(pmpkg_t *pkg);
+int alpm_remove_pkg(pmhandle_t *handle, pmpkg_t *pkg);
/** @} */
diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c
index f32e77d8..fedc7faa 100644
--- a/lib/libalpm/remove.c
+++ b/lib/libalpm/remove.c
@@ -44,14 +44,16 @@
#include "deps.h"
#include "handle.h"
-int SYMEXPORT alpm_remove_pkg(pmpkg_t *pkg)
+int SYMEXPORT alpm_remove_pkg(pmhandle_t *handle, pmpkg_t *pkg)
{
pmtrans_t *trans;
const char *pkgname;
/* Sanity checks */
+ ASSERT(handle != NULL, return -1);
ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- trans = pkg->handle->trans;
+ ASSERT(handle == pkg->handle, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+ trans = handle->trans;
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state == STATE_INITIALIZED,
RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index b96687ae..6da3b044 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -38,7 +38,7 @@ static int remove_target(const char *target)
alpm_list_t *p;
if((info = alpm_db_get_pkg(db_local, target)) != NULL) {
- if(alpm_remove_pkg(info) == -1) {
+ if(alpm_remove_pkg(config->handle, info) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, "'%s': %s\n", target, alpm_strerrorlast());
return -1;
}
@@ -53,7 +53,7 @@ static int remove_target(const char *target)
}
for(p = alpm_grp_get_pkgs(grp); p; p = alpm_list_next(p)) {
pmpkg_t *pkg = alpm_list_getdata(p);
- if(alpm_remove_pkg(pkg) == -1) {
+ if(alpm_remove_pkg(config->handle, pkg) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, "'%s': %s\n", target, alpm_strerrorlast());
return -1;
}
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 4cd8d212..57fec4bc 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -620,7 +620,7 @@ static pmdb_t *get_db(const char *dbname)
static int process_pkg(pmpkg_t *pkg)
{
- int ret = alpm_add_pkg(pkg);
+ int ret = alpm_add_pkg(config->handle, pkg);
if(ret == -1) {
if(pm_errno == PM_ERR_TRANS_DUP_TARGET
diff --git a/src/pacman/upgrade.c b/src/pacman/upgrade.c
index ddb8a2e8..fe49d882 100644
--- a/src/pacman/upgrade.c
+++ b/src/pacman/upgrade.c
@@ -82,7 +82,7 @@ int pacman_upgrade(alpm_list_t *targets)
trans_release();
return 1;
}
- if(alpm_add_pkg(pkg) == -1) {
+ if(alpm_add_pkg(config->handle, pkg) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, "'%s': %s\n",
targ, alpm_strerrorlast());
alpm_pkg_free(pkg);