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 <d...@archlinux.org>
---
 lib/libalpm/alpm.h   |   26 +++++++++++++++++---------
 lib/libalpm/deps.c   |    6 +++---
 lib/libalpm/trans.c  |   23 ++++++++++-------------
 src/pacman/pacman.c  |    4 ++--
 src/pacman/remove.c  |    8 ++++----
 src/pacman/sync.c    |   10 +++++-----
 src/pacman/upgrade.c |   12 ++++++------
 src/pacman/util.c    |    6 +++---
 8 files changed, 50 insertions(+), 45 deletions(-)

diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 26ed1e5..d63b987 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 62e8702..3292289 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 59f6aec..f7fbd2b 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 9e283b5..db6b687 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 46c595f..b96687a 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 3876d92..6f8508e 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 21d9411..ddb8a2e 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 8d174e9..043b9d6 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;
-- 
1.7.5.2


Reply via email to