[pacman-dev] [PATCH 03/10] Add handle attribute to pmdb_t struct

Dan McGee dan at archlinux.org
Fri Jun 3 14:21:41 EDT 2011


This is the first step in a long process to remove our dependence on the
global handle variable we currently share in libalpm, with the goal to
make things a bit more thread-safe and re-entrant.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 lib/libalpm/alpm.h     |    1 +
 lib/libalpm/be_local.c |    1 +
 lib/libalpm/be_sync.c  |    1 +
 lib/libalpm/db.h       |    1 +
 lib/libalpm/handle.h   |    4 ++--
 5 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 5af843c..bc06cc0 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -74,6 +74,7 @@ typedef enum _pgp_verify_t {
  * Structures
  */
 
+typedef struct __pmhandle_t pmhandle_t;
 typedef struct __pmdb_t pmdb_t;
 typedef struct __pmpkg_t pmpkg_t;
 typedef struct __pmdelta_t pmdelta_t;
diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
index fc138e3..c470cba 100644
--- a/lib/libalpm/be_local.c
+++ b/lib/libalpm/be_local.c
@@ -952,6 +952,7 @@ pmdb_t *_alpm_db_register_local(void)
 		RET_ERR(PM_ERR_DB_CREATE, NULL);
 	}
 	db->ops = &local_db_ops;
+	db->handle = handle;
 
 	handle->db_local = db;
 	return db;
diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
index 77c9207..1d63398 100644
--- a/lib/libalpm/be_sync.c
+++ b/lib/libalpm/be_sync.c
@@ -513,6 +513,7 @@ pmdb_t *_alpm_db_register_sync(const char *treename)
 		RET_ERR(PM_ERR_DB_CREATE, NULL);
 	}
 	db->ops = &sync_db_ops;
+	db->handle = handle;
 
 	handle->dbs_sync = alpm_list_add(handle->dbs_sync, db);
 	return db;
diff --git a/lib/libalpm/db.h b/lib/libalpm/db.h
index 399e2d5..8d92bd2 100644
--- a/lib/libalpm/db.h
+++ b/lib/libalpm/db.h
@@ -53,6 +53,7 @@ struct db_operations {
 
 /* Database */
 struct __pmdb_t {
+	pmhandle_t *handle;
 	char *treename;
 	/* do not access directly, use _alpm_db_path(db) for lazy access */
 	char *_path;
diff --git a/lib/libalpm/handle.h b/lib/libalpm/handle.h
index aa00b6f..08dbe73 100644
--- a/lib/libalpm/handle.h
+++ b/lib/libalpm/handle.h
@@ -33,7 +33,7 @@
 #include <curl/curl.h>
 #endif
 
-typedef struct _pmhandle_t {
+struct __pmhandle_t {
 	/* internal usage */
 	pmdb_t *db_local;       /* local db pointer */
 	alpm_list_t *dbs_sync;  /* List of (pmdb_t *) */
@@ -73,7 +73,7 @@ typedef struct _pmhandle_t {
 	int usedelta;            /* Download deltas if possible */
 	int checkspace;          /* Check disk space before installing */
 	pgp_verify_t sigverify;  /* Default signature verification level */
-} pmhandle_t;
+};
 
 /* global handle variable */
 extern pmhandle_t *handle;
-- 
1.7.5.2



More information about the pacman-dev mailing list