[pacman-dev] [PATCH 2/2] libalpm: Add accessors for the base field
Allan McRae
allan at archlinux.org
Mon Dec 22 05:53:26 UTC 2014
On 21/12/14 02:25, Johannes Löthberg wrote:
> 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 at kyriasis.com>
> ---
> lib/libalpm/alpm.h | 6 ++++++
> lib/libalpm/be_local.c | 7 +++++++
> lib/libalpm/package.c | 9 +++++++++
> lib/libalpm/package.h | 1 +
> 4 files changed, 23 insertions(+)
Are we expecting a third patch to actually do something with this?
Maybe something like:
$ pacman -Si gcc-libs
Repository : core
Name : gcc-libs (gcc)
Version : 4.9.2-1
>
> diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
> index e6ef3ae..91b9461 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);
> +
OK - see my new rule about adding this change to README. Give that was
posted after you submitted this, I can handle it.
> /** 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 54d3099..dbdfc99 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;
> +}
> +
OK
> 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,
OK
> diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
> index e2997f6..92fcb2a 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; }
OK
> 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,
OK
> .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);
> +}
> +
OK.
> 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 98c1e6d..5ab9b20 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 *);
OK.
> const char *(*get_desc) (alpm_pkg_t *);
> const char *(*get_url) (alpm_pkg_t *);
> alpm_time_t (*get_builddate) (alpm_pkg_t *);
>
More information about the pacman-dev
mailing list