diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index eeadadad..e108213b 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -1289,6 +1289,12 @@ int alpm_unregister_all_syncdbs(alpm_handle_t *handle); */ int alpm_db_unregister(alpm_db_t *db); +/** Get the handle of a package database. + * @param db pointer to the package database + * @return the alpm handle that the package database belongs to + */ +alpm_handle_t *alpm_db_get_handle(alpm_db_t *db); + /** Get the name of a package database. * @param db pointer to the package database * @return the name of the package database, NULL on error @@ -2430,6 +2436,12 @@ int alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg); * @{ */ +/** Gets the handle of a package + * @param pkg a pointer to package + * @return the alpm handle that the package belongs to + */ +alpm_handle_t *alpm_pkg_get_handle(alpm_pkg_t *pkg); + /** Gets the name of the file from which the package was loaded. * @param pkg a pointer to package * @return a reference to an internal string diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c index 41814abb..7fd1c03d 100644 --- a/lib/libalpm/db.c +++ b/lib/libalpm/db.c @@ -212,6 +212,12 @@ int SYMEXPORT alpm_db_remove_server(alpm_db_t *db, const char *url) return ret; } +alpm_handle_t SYMEXPORT *alpm_db_get_handle(alpm_db_t *db) +{ + ASSERT(db != NULL, return NULL); + return db->handle; +} + const char SYMEXPORT *alpm_db_get_name(const alpm_db_t *db) { ASSERT(db != NULL, return NULL); diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 9f6f478e..f53e139a 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -194,6 +194,13 @@ const char SYMEXPORT *alpm_pkg_get_base(alpm_pkg_t *pkg) return pkg->ops->get_base(pkg); } +alpm_handle_t SYMEXPORT *alpm_pkg_get_handle(alpm_pkg_t *pkg) +{ + ASSERT(pkg != NULL, return NULL); + pkg->handle->pm_errno = ALPM_ERR_OK; + return pkg->handle; +} + const char SYMEXPORT *alpm_pkg_get_name(alpm_pkg_t *pkg) { ASSERT(pkg != NULL, return NULL);