diff options
author | Johannes Löthberg <johannes@kyriasis.com> | 2014-12-22 15:11:39 +0100 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2014-12-24 11:19:30 +1000 |
commit | 1f1e53c208cfa0e284511470acb679fe10c4d80c (patch) | |
tree | cfb91aa4ac252813f46e2b5db821a41e523c6c7d | |
parent | 9f527d2de453b542293e24d85ee894fa6452259a (diff) | |
download | pacman-1f1e53c208cfa0e284511470acb679fe10c4d80c.tar.xz |
libalpm: Add accessors for the base field
This commit adds the necessary accessor functions to get the PKGBASE of
a package, forcing the desc file to be parsed.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r-- | lib/libalpm/alpm.h | 6 | ||||
-rw-r--r-- | lib/libalpm/be_local.c | 7 | ||||
-rw-r--r-- | lib/libalpm/package.c | 9 | ||||
-rw-r--r-- | lib/libalpm/package.h | 1 |
4 files changed, 23 insertions, 0 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index e6ef3ae3..91b94615 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -1101,6 +1101,12 @@ int alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg); */ const char *alpm_pkg_get_filename(alpm_pkg_t *pkg); +/** Returns the package base name. + * @param pkg a pointer to package + * @return a reference to an internal string + */ +const char *alpm_pkg_get_base(alpm_pkg_t *pkg); + /** Returns the package name. * @param pkg a pointer to package * @return a reference to an internal string diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index 852baa4c..0771aaf1 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -63,6 +63,12 @@ static int local_db_read(alpm_pkg_t *info, alpm_dbinfrq_t inforeq); * initialized. */ +static const char *_cache_get_base(alpm_pkg_t *pkg) +{ + LAZY_LOAD(INFRQ_DESC, NULL); + return pkg->base; +} + static const char *_cache_get_desc(alpm_pkg_t *pkg) { LAZY_LOAD(INFRQ_DESC, NULL); @@ -297,6 +303,7 @@ static int _cache_force_load(alpm_pkg_t *pkg) * logic. */ static struct pkg_operations local_pkg_ops = { + .get_base = _cache_get_base, .get_desc = _cache_get_desc, .get_url = _cache_get_url, .get_builddate = _cache_get_builddate, diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 3be5e74e..ce6b0a21 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -83,6 +83,7 @@ int SYMEXPORT alpm_pkg_checkmd5sum(alpm_pkg_t *pkg) * backend logic that needs lazy access, such as the local database through * a lazy-load cache. However, the defaults will work just fine for fully- * populated package structures. */ +static const char *_pkg_get_base(alpm_pkg_t *pkg) { return pkg->base; } static const char *_pkg_get_desc(alpm_pkg_t *pkg) { return pkg->desc; } static const char *_pkg_get_url(alpm_pkg_t *pkg) { return pkg->url; } static alpm_time_t _pkg_get_builddate(alpm_pkg_t *pkg) { return pkg->builddate; } @@ -144,6 +145,7 @@ static int _pkg_force_load(alpm_pkg_t UNUSED *pkg) { return 0; } * struct itself with no abstraction layer or any type of lazy loading. */ struct pkg_operations default_pkg_ops = { + .get_base = _pkg_get_base, .get_desc = _pkg_get_desc, .get_url = _pkg_get_url, .get_builddate = _pkg_get_builddate, @@ -186,6 +188,13 @@ const char SYMEXPORT *alpm_pkg_get_filename(alpm_pkg_t *pkg) return pkg->filename; } +const char SYMEXPORT *alpm_pkg_get_base(alpm_pkg_t *pkg) +{ + ASSERT(pkg != NULL, return NULL); + pkg->handle->pm_errno = 0; + return pkg->ops->get_base(pkg); +} + const char SYMEXPORT *alpm_pkg_get_name(alpm_pkg_t *pkg) { ASSERT(pkg != NULL, return NULL); diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h index 98c1e6d6..5ab9b207 100644 --- a/lib/libalpm/package.h +++ b/lib/libalpm/package.h @@ -43,6 +43,7 @@ * defined default_pkg_ops struct to work just fine for their needs. */ struct pkg_operations { + const char *(*get_base) (alpm_pkg_t *); const char *(*get_desc) (alpm_pkg_t *); const char *(*get_url) (alpm_pkg_t *); alpm_time_t (*get_builddate) (alpm_pkg_t *); |