summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-06-07 20:29:05 +0200
committerDan McGee <dan@archlinux.org>2011-06-09 21:24:45 +0200
commit24000b83c9a9ba2f25a46914d2919293dc865a2e (patch)
treeb3e2a30c19e52ea22a13508ba23a9eab6f9ba60b
parent17a6ac567502975d3a98a34ed58d79c05eb7b8d1 (diff)
downloadpacman-24000b83c9a9ba2f25a46914d2919293dc865a2e.tar.gz
pacman-24000b83c9a9ba2f25a46914d2919293dc865a2e.tar.xz
Require handle argument to all alpm_trans_*() methods
Begin enforcing the need to pass a handle. This allows us to remove one more extern handle declaration from the backend. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/alpm.h26
-rw-r--r--lib/libalpm/deps.c6
-rw-r--r--lib/libalpm/trans.c23
-rw-r--r--src/pacman/pacman.c4
-rw-r--r--src/pacman/remove.c8
-rw-r--r--src/pacman/sync.c10
-rw-r--r--src/pacman/upgrade.c12
-rw-r--r--src/pacman/util.c6
8 files changed, 50 insertions, 45 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 26ed1e5c..d63b9877 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -794,54 +794,62 @@ typedef void (*alpm_trans_cb_conv)(pmtransconv_t, void *, void *,
typedef void (*alpm_trans_cb_progress)(pmtransprog_t, const char *, int, size_t, size_t);
/** Returns the bitfield of flags for the current transaction.
- * @sa _pmtransflag_t
+ * @param handle the context handle
+ * @return the bitfield of transaction flags
*/
-int alpm_trans_get_flags(void);
+pmtransflag_t alpm_trans_get_flags(pmhandle_t *handle);
/** Returns a list of packages added by the transaction.
+ * @param handle the context handle
* @return a list of pmpkg_t structures
*/
-alpm_list_t * alpm_trans_get_add(void);
+alpm_list_t * alpm_trans_get_add(pmhandle_t *handle);
/** Returns the list of packages removed by the transaction.
+ * @param handle the context handle
* @return a list of pmpkg_t structures
*/
-alpm_list_t * alpm_trans_get_remove(void);
+alpm_list_t * alpm_trans_get_remove(pmhandle_t *handle);
/** Initialize the transaction.
+ * @param handle the context handle
* @param flags flags of the transaction (like nodeps, etc)
* @param event event callback function pointer
* @param conv question callback function pointer
* @param progress progress callback function pointer
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int alpm_trans_init(pmtransflag_t flags,
+int alpm_trans_init(pmhandle_t *handle, pmtransflag_t flags,
alpm_trans_cb_event cb_event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress cb_progress);
/** Prepare a transaction.
+ * @param handle the context handle
* @param data the address of an alpm_list where a list
* of pmdepmissing_t objects is dumped (conflicting packages)
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int alpm_trans_prepare(alpm_list_t **data);
+int alpm_trans_prepare(pmhandle_t *handle, alpm_list_t **data);
/** Commit a transaction.
+ * @param handle the context handle
* @param data the address of an alpm_list where detailed description
* of an error can be dumped (ie. list of conflicting files)
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int alpm_trans_commit(alpm_list_t **data);
+int alpm_trans_commit(pmhandle_t *handle, alpm_list_t **data);
/** Interrupt a transaction.
+ * @param handle the context handle
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int alpm_trans_interrupt(void);
+int alpm_trans_interrupt(pmhandle_t *handle);
/** Release a transaction.
+ * @param handle the context handle
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int alpm_trans_release(void);
+int alpm_trans_release(pmhandle_t *handle);
/** @} */
/** @name Common Transactions */
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c
index 62e8702c..32922892 100644
--- a/lib/libalpm/deps.c
+++ b/lib/libalpm/deps.c
@@ -204,9 +204,9 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int reverse)
return newtargs;
}
-static int no_dep_version(void)
+static int no_dep_version(pmhandle_t *handle)
{
- int flags = alpm_trans_get_flags();
+ int flags = alpm_trans_get_flags(handle);
return flags != -1 && (flags & PM_TRANS_FLAG_NODEPVERSION);
}
@@ -282,7 +282,7 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(alpm_list_t *pkglist, int reversedeps,
}
alpm_list_free(targets);
- nodepversion = no_dep_version();
+ nodepversion = no_dep_version(handle);
/* look for unsatisfied dependencies of the upgrade list */
for(i = upgrade; i; i = i->next) {
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index 59f6aeca..f7fbd2be 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -43,9 +43,6 @@
#include "sync.h"
#include "alpm.h"
-/* global handle variable */
-extern pmhandle_t *handle;
-
/** \addtogroup alpm_trans Transaction Functions
* @brief Functions to manipulate libalpm transactions
* @{
@@ -99,7 +96,7 @@ static int remove_lock(pmhandle_t *handle)
}
/** Initialize the transaction. */
-int SYMEXPORT alpm_trans_init(pmtransflag_t flags,
+int SYMEXPORT alpm_trans_init(pmhandle_t *handle, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress)
{
@@ -144,7 +141,7 @@ int SYMEXPORT alpm_trans_init(pmtransflag_t flags,
return 0;
}
-static alpm_list_t *check_arch(alpm_list_t *pkgs)
+static alpm_list_t *check_arch(pmhandle_t *handle, alpm_list_t *pkgs)
{
alpm_list_t *i;
alpm_list_t *invalid = NULL;
@@ -170,7 +167,7 @@ static alpm_list_t *check_arch(alpm_list_t *pkgs)
}
/** Prepare a transaction. */
-int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
+int SYMEXPORT alpm_trans_prepare(pmhandle_t *handle, alpm_list_t **data)
{
pmtrans_t *trans;
@@ -188,7 +185,7 @@ int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
return 0;
}
- alpm_list_t *invalid = check_arch(trans->add);
+ alpm_list_t *invalid = check_arch(handle, trans->add);
if(invalid) {
if(data) {
*data = invalid;
@@ -214,7 +211,7 @@ int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
}
/** Commit a transaction. */
-int SYMEXPORT alpm_trans_commit(alpm_list_t **data)
+int SYMEXPORT alpm_trans_commit(pmhandle_t *handle, alpm_list_t **data)
{
pmtrans_t *trans;
@@ -253,7 +250,7 @@ int SYMEXPORT alpm_trans_commit(alpm_list_t **data)
}
/** Interrupt a transaction. */
-int SYMEXPORT alpm_trans_interrupt(void)
+int SYMEXPORT alpm_trans_interrupt(pmhandle_t *handle)
{
pmtrans_t *trans;
@@ -271,7 +268,7 @@ int SYMEXPORT alpm_trans_interrupt(void)
}
/** Release a transaction. */
-int SYMEXPORT alpm_trans_release(void)
+int SYMEXPORT alpm_trans_release(pmhandle_t *handle)
{
pmtrans_t *trans;
@@ -428,7 +425,7 @@ cleanup:
return retval;
}
-int SYMEXPORT alpm_trans_get_flags()
+pmtransflag_t SYMEXPORT alpm_trans_get_flags(pmhandle_t *handle)
{
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
@@ -437,7 +434,7 @@ int SYMEXPORT alpm_trans_get_flags()
return handle->trans->flags;
}
-alpm_list_t SYMEXPORT * alpm_trans_get_add()
+alpm_list_t SYMEXPORT *alpm_trans_get_add(pmhandle_t *handle)
{
/* Sanity checks */
ASSERT(handle != NULL, return NULL);
@@ -446,7 +443,7 @@ alpm_list_t SYMEXPORT * alpm_trans_get_add()
return handle->trans->add;
}
-alpm_list_t SYMEXPORT * alpm_trans_get_remove()
+alpm_list_t SYMEXPORT *alpm_trans_get_remove(pmhandle_t *handle)
{
/* Sanity checks */
ASSERT(handle != NULL, return NULL);
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index c186ebed..afc79f6f 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -307,12 +307,12 @@ static void handler(int signum)
} else if(signum == SIGINT) {
const char *msg = "\nInterrupt signal received\n";
xwrite(err, msg, strlen(msg));
- if(alpm_trans_interrupt() == 0) {
+ if(alpm_trans_interrupt(config->handle) == 0) {
/* a transaction is being interrupted, don't exit pacman yet. */
return;
}
/* no commiting transaction, we can release it now and then exit pacman */
- alpm_trans_release();
+ alpm_trans_release(config->handle);
/* output a newline to be sure we clear any line we may be on */
xwrite(out, "\n", 1);
}
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index 46c595f9..b96687ae 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -99,7 +99,7 @@ int pacman_remove(alpm_list_t *targets)
}
/* Step 2: prepare the transaction based on its type, targets and flags */
- if(alpm_trans_prepare(&data) == -1) {
+ if(alpm_trans_prepare(config->handle, &data) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, _("failed to prepare transaction (%s)\n"),
alpm_strerrorlast());
switch(pm_errno) {
@@ -129,7 +129,7 @@ int pacman_remove(alpm_list_t *targets)
/* Search for holdpkg in target list */
int holdpkg = 0;
- for(i = alpm_trans_get_remove(); i; i = alpm_list_next(i)) {
+ for(i = alpm_trans_get_remove(config->handle); i; i = alpm_list_next(i)) {
pmpkg_t *pkg = alpm_list_getdata(i);
if(alpm_list_find_str(config->holdpkg, alpm_pkg_get_name(pkg))) {
pm_printf(PM_LOG_WARNING, _("%s is designated as a HoldPkg.\n"),
@@ -143,7 +143,7 @@ int pacman_remove(alpm_list_t *targets)
}
/* Step 3: actually perform the removal */
- alpm_list_t *pkglist = alpm_trans_get_remove();
+ alpm_list_t *pkglist = alpm_trans_get_remove(config->handle);
if(pkglist == NULL) {
printf(_(" there is nothing to do\n"));
goto cleanup; /* we are done */
@@ -162,7 +162,7 @@ int pacman_remove(alpm_list_t *targets)
goto cleanup;
}
- if(alpm_trans_commit(NULL) == -1) {
+ if(alpm_trans_commit(config->handle, NULL) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, _("failed to commit transaction (%s)\n"),
alpm_strerrorlast());
retval = 1;
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 3876d92c..6f8508ec 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -768,7 +768,7 @@ static int sync_trans(alpm_list_t *targets)
}
/* Step 2: "compute" the transaction based on targets and flags */
- if(alpm_trans_prepare(&data) == -1) {
+ if(alpm_trans_prepare(config->handle, &data) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, _("failed to prepare transaction (%s)\n"),
alpm_strerrorlast());
switch(pm_errno) {
@@ -810,7 +810,7 @@ static int sync_trans(alpm_list_t *targets)
goto cleanup;
}
- packages = alpm_trans_get_add();
+ packages = alpm_trans_get_add(config->handle);
if(packages == NULL) {
/* nothing to do: just exit without complaining */
printf(_(" there is nothing to do\n"));
@@ -823,8 +823,8 @@ static int sync_trans(alpm_list_t *targets)
goto cleanup;
}
- display_targets(alpm_trans_get_remove(), 0);
- display_targets(alpm_trans_get_add(), 1);
+ display_targets(alpm_trans_get_remove(config->handle), 0);
+ display_targets(alpm_trans_get_add(config->handle), 1);
printf("\n");
int confirm;
@@ -837,7 +837,7 @@ static int sync_trans(alpm_list_t *targets)
goto cleanup;
}
- if(alpm_trans_commit(&data) == -1) {
+ if(alpm_trans_commit(config->handle, &data) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, _("failed to commit transaction (%s)\n"),
alpm_strerrorlast());
switch(pm_errno) {
diff --git a/src/pacman/upgrade.c b/src/pacman/upgrade.c
index 21d9411e..ddb8a2e8 100644
--- a/src/pacman/upgrade.c
+++ b/src/pacman/upgrade.c
@@ -93,7 +93,7 @@ int pacman_upgrade(alpm_list_t *targets)
/* Step 2: "compute" the transaction based on targets and flags */
/* TODO: No, compute nothing. This is stupid. */
- if(alpm_trans_prepare(&data) == -1) {
+ if(alpm_trans_prepare(config->handle, &data) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, _("failed to prepare transaction (%s)\n"),
alpm_strerrorlast());
switch(pm_errno) {
@@ -142,20 +142,20 @@ int pacman_upgrade(alpm_list_t *targets)
/* Step 3: perform the installation */
if(config->print) {
- print_packages(alpm_trans_get_add());
+ print_packages(alpm_trans_get_add(config->handle));
trans_release();
return 0;
}
/* print targets and ask user confirmation */
- alpm_list_t *packages = alpm_trans_get_add();
+ alpm_list_t *packages = alpm_trans_get_add(config->handle);
if(packages == NULL) { /* we are done */
printf(_(" there is nothing to do\n"));
trans_release();
return retval;
}
- display_targets(alpm_trans_get_remove(), 0);
- display_targets(alpm_trans_get_add(), 1);
+ display_targets(alpm_trans_get_remove(config->handle), 0);
+ display_targets(alpm_trans_get_add(config->handle), 1);
printf("\n");
int confirm = yesno(_("Proceed with installation?"));
if(!confirm) {
@@ -163,7 +163,7 @@ int pacman_upgrade(alpm_list_t *targets)
return retval;
}
- if(alpm_trans_commit(&data) == -1) {
+ if(alpm_trans_commit(config->handle, &data) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, _("failed to commit transaction (%s)\n"),
alpm_strerrorlast());
switch(pm_errno) {
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 8d174e94..043b9d6f 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -53,9 +53,9 @@ int trans_init(pmtransflag_t flags)
{
int ret;
if(config->print) {
- ret = alpm_trans_init(flags, NULL, NULL, NULL);
+ ret = alpm_trans_init(config->handle, flags, NULL, NULL, NULL);
} else {
- ret = alpm_trans_init(flags, cb_trans_evt, cb_trans_conv,
+ ret = alpm_trans_init(config->handle, flags, cb_trans_evt, cb_trans_conv,
cb_trans_progress);
}
@@ -78,7 +78,7 @@ int trans_init(pmtransflag_t flags)
int trans_release(void)
{
- if(alpm_trans_release() == -1) {
+ if(alpm_trans_release(config->handle) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, _("failed to release transaction (%s)\n"),
alpm_strerrorlast());
return -1;