[pacman-dev] [PATCH 04/10] Add handle attribute to pmpkg_t struct

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


Similar to what we just did for the database; this will make it easy to
always know what handle a given package originated from.

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

diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
index c470cba..738bdfe 100644
--- a/lib/libalpm/be_local.c
+++ b/lib/libalpm/be_local.c
@@ -415,6 +415,7 @@ static int local_db_populate(pmdb_t *db)
 		pkg->origin = PKG_FROM_LOCALDB;
 		pkg->origin_data.db = db;
 		pkg->ops = &local_pkg_ops;
+		pkg->handle = handle;
 
 		/* explicitly read with only 'BASE' data, accessors will handle the rest */
 		if(_alpm_local_db_read(db, pkg, INFRQ_BASE) == -1) {
diff --git a/lib/libalpm/be_package.c b/lib/libalpm/be_package.c
index 8da317f..a3d5304 100644
--- a/lib/libalpm/be_package.c
+++ b/lib/libalpm/be_package.c
@@ -32,6 +32,7 @@
 #include "alpm_list.h"
 #include "util.h"
 #include "log.h"
+#include "handle.h"
 #include "package.h"
 #include "deps.h" /* _alpm_splitdep */
 
@@ -350,6 +351,7 @@ pmpkg_t *_alpm_pkg_load_internal(const char *pkgfile, int full,
 	newpkg->origin = PKG_FROM_FILE;
 	newpkg->origin_data.file = strdup(pkgfile);
 	newpkg->ops = get_file_pkg_ops();
+	newpkg->handle = handle;
 
 	if(full) {
 		/* "checking for conflicts" requires a sorted list, ensure that here */
diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
index 1d63398..ab0001e 100644
--- a/lib/libalpm/be_sync.c
+++ b/lib/libalpm/be_sync.c
@@ -306,8 +306,9 @@ static int sync_db_populate(pmdb_t *db)
 			}
 
 			pkg->origin = PKG_FROM_SYNCDB;
-			pkg->ops = &default_pkg_ops;
 			pkg->origin_data.db = db;
+			pkg->ops = &default_pkg_ops;
+			pkg->handle = handle;
 
 			/* add to the collection */
 			_alpm_log(PM_LOG_FUNCTION, "adding '%s' to package cache for db '%s'\n",
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index 205bc10..d19549d 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -408,14 +408,15 @@ pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg)
 	newpkg->deltas     = alpm_list_copy_data(pkg->deltas, sizeof(pmdelta_t));
 
 	/* internal */
+	newpkg->infolevel = pkg->infolevel;
 	newpkg->origin = pkg->origin;
-	newpkg->ops = pkg->ops;
 	if(newpkg->origin == PKG_FROM_FILE) {
 		newpkg->origin_data.file = strdup(pkg->origin_data.file);
 	} else {
 		newpkg->origin_data.db = pkg->origin_data.db;
 	}
-	newpkg->infolevel = pkg->infolevel;
+	newpkg->ops = pkg->ops;
+	newpkg->handle = handle;
 
 	return newpkg;
 }
diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h
index debb239..4e2dcf3 100644
--- a/lib/libalpm/package.h
+++ b/lib/libalpm/package.h
@@ -110,6 +110,7 @@ struct __pmpkg_t {
 	int scriptlet;
 
 	pmpkgreason_t reason;
+	pmdbinfrq_t infolevel;
 	pmpkgfrom_t origin;
 	/* origin == PKG_FROM_FILE, use pkg->origin_data.file
 	 * origin == PKG_FROM_*DB, use pkg->origin_data.db */
@@ -117,7 +118,7 @@ struct __pmpkg_t {
 		pmdb_t *db;
 		char *file;
 	} origin_data;
-	pmdbinfrq_t infolevel;
+	pmhandle_t *handle;
 
 	alpm_list_t *licenses;
 	alpm_list_t *replaces;
-- 
1.7.5.2



More information about the pacman-dev mailing list