[pacman-dev] [PATCH] Allow access to package origin data
Dan McGee
dan at archlinux.org
Mon Aug 29 00:41:57 EDT 2011
Add new alpm_pkg_get_origin() method, use it in the front end now that
the enum constants are publicly available.
Signed-off-by: Dan McGee <dan at archlinux.org>
---
README | 2 +-
lib/libalpm/alpm.h | 5 +++++
lib/libalpm/package.c | 7 +++++++
src/pacman/package.c | 7 +++----
src/pacman/package.h | 2 +-
src/pacman/query.c | 4 ++--
src/pacman/sync.c | 4 ++--
7 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/README b/README
index fbd40d2..c14fd3c 100644
--- a/README
+++ b/README
@@ -429,7 +429,7 @@ API CHANGES BETWEEN 3.5 AND 4.0
alpm_option_get_default_siglevel(), alpm_option_set_default_siglevel(),
alpm_option_get_gpgdir(), alpm_option_set_gpgdir(), alpm_db_get_siglevel(),
alpm_sigresult_cleanup(), alpm_db_check_pgp_signature(), alpm_pkg_check_pgp_signature(),
- alpm_pkg_get_sha256sum(), alpm_pkg_get_base64_sig()
+ alpm_pkg_get_origin(), alpm_pkg_get_sha256sum(), alpm_pkg_get_base64_sig()
- list functions:
alpm_list_to_array(), alpm_list_previous()
- structs:
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 2f62565..42e6038 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -598,6 +598,11 @@ const char *alpm_pkg_get_name(alpm_pkg_t *pkg);
*/
const char *alpm_pkg_get_version(alpm_pkg_t *pkg);
+/** Returns the origin of the package.
+ * @return a #alpm_pkgfrom_t constant, -1 on error
+ */
+alpm_pkgfrom_t alpm_pkg_get_origin(alpm_pkg_t *pkg);
+
/** Returns the package description.
* @param pkg a pointer to package
* @return a reference to an internal string
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index 3d73a43..487b56d 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -185,6 +185,13 @@ const char SYMEXPORT *alpm_pkg_get_version(alpm_pkg_t *pkg)
return pkg->version;
}
+alpm_pkgfrom_t SYMEXPORT alpm_pkg_get_origin(alpm_pkg_t *pkg)
+{
+ ASSERT(pkg != NULL, return -1);
+ pkg->handle->pm_errno = 0;
+ return pkg->origin;
+}
+
const char SYMEXPORT *alpm_pkg_get_desc(alpm_pkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
diff --git a/src/pacman/package.c b/src/pacman/package.c
index f7065d5..5654944 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -61,7 +61,7 @@ static void deplist_display(const char *title,
* @param from the type of package we are dealing with
* @param extra should we show extra information
*/
-void dump_pkg_full(alpm_pkg_t *pkg, alpm_pkgfrom_t from, int extra)
+void dump_pkg_full(alpm_pkg_t *pkg, int extra)
{
const char *reason;
time_t bdate, idate;
@@ -69,10 +69,9 @@ void dump_pkg_full(alpm_pkg_t *pkg, alpm_pkgfrom_t from, int extra)
const char *label;
double size;
alpm_list_t *requiredby = NULL;
+ alpm_pkgfrom_t from;
- if(pkg == NULL) {
- return;
- }
+ from = alpm_pkg_get_origin(pkg);
/* set variables here, do all output below */
bdate = alpm_pkg_get_builddate(pkg);
diff --git a/src/pacman/package.h b/src/pacman/package.h
index 4bbc2ba..890b4fe 100644
--- a/src/pacman/package.h
+++ b/src/pacman/package.h
@@ -22,7 +22,7 @@
#include <alpm.h>
-void dump_pkg_full(alpm_pkg_t *pkg, alpm_pkgfrom_t from, int extra);
+void dump_pkg_full(alpm_pkg_t *pkg, int extra);
void dump_pkg_backups(alpm_pkg_t *pkg);
void dump_pkg_files(alpm_pkg_t *pkg, int quiet);
diff --git a/src/pacman/query.c b/src/pacman/query.c
index ec98c99..5f2b37e 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -460,9 +460,9 @@ static int display(alpm_pkg_t *pkg)
if(config->op_q_info) {
if(config->op_q_isfile) {
- dump_pkg_full(pkg, PKG_FROM_FILE, 0);
+ dump_pkg_full(pkg, 0);
} else {
- dump_pkg_full(pkg, PKG_FROM_LOCALDB, config->op_q_info > 1);
+ dump_pkg_full(pkg, config->op_q_info > 1);
}
}
if(config->op_q_list) {
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index a7fe5be..e97da37 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -469,7 +469,7 @@ static int sync_info(alpm_list_t *syncs, alpm_list_t *targets)
alpm_pkg_t *pkg = alpm_list_getdata(k);
if(strcmp(alpm_pkg_get_name(pkg), pkgstr) == 0) {
- dump_pkg_full(pkg, PKG_FROM_SYNCDB, config->op_s_info > 1);
+ dump_pkg_full(pkg, config->op_s_info > 1);
foundpkg = 1;
break;
}
@@ -494,7 +494,7 @@ static int sync_info(alpm_list_t *syncs, alpm_list_t *targets)
for(j = alpm_db_get_pkgcache(db); j; j = alpm_list_next(j)) {
alpm_pkg_t *pkg = alpm_list_getdata(j);
- dump_pkg_full(pkg, PKG_FROM_SYNCDB, config->op_s_info > 1);
+ dump_pkg_full(pkg, config->op_s_info > 1);
}
}
}
--
1.7.6
More information about the pacman-dev
mailing list