From 05d56349588665da7ed01eaa3337be7ece35fd2f Mon Sep 17 00:00:00 2001 From: Nagy Gabor Date: Sun, 18 Nov 2007 19:05:47 +0100 Subject: libalpm/package.c : add _alpm_pkgname_pkg_cmp function. _alpm_pkgname_pkg_cmp(pkgname, pkg) returns true iff pkg's name is pkgname. This is useful if you want to remove a package from pmpkg_t* list, and you want to search for package name. This allows cleaning the -Ru code a bit, by removing the need of a dummy pkg. Signed-off-by: Chantry Xavier --- lib/libalpm/package.c | 6 ++++++ lib/libalpm/package.h | 1 + lib/libalpm/remove.c | 6 ++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 2bcf7453..b66fd85c 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -895,6 +895,12 @@ int _alpm_pkg_cmp(const void *p1, const void *p2) return(strcmp(alpm_pkg_get_name(pk1), alpm_pkg_get_name(pk2))); } +int _alpm_pkgname_pkg_cmp(const void *pkgname, const void *package) +{ + return(strcmp(alpm_pkg_get_name((pmpkg_t *) package), (char *) pkgname)); +} + + /* Parses the package description file for the current package * TODO: this should ALL be in a backend interface (be_files), we should * be dealing with the abstracted concepts only in this file diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h index ef2a9335..f3de05d6 100644 --- a/lib/libalpm/package.h +++ b/lib/libalpm/package.h @@ -77,6 +77,7 @@ pmpkg_t* _alpm_pkg_new(const char *name, const char *version); pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg); void _alpm_pkg_free(pmpkg_t *pkg); int _alpm_pkg_cmp(const void *p1, const void *p2); +int _alpm_pkgname_pkg_cmp(const void *pkgname, const void *package); int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg); pmpkg_t *_alpm_pkg_load(const char *pkgfile, unsigned short full); pmpkg_t *_alpm_pkg_find(const char *needle, alpm_list_t *haystack); diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index a0c308fb..44d305f2 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -132,10 +132,8 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data) pmdepmissing_t *miss = (pmdepmissing_t *)i->data; void *vpkg; pmpkg_t *pkg; - pmpkg_t *dummy = _alpm_pkg_new(miss->causingpkg, NULL); - trans->packages = alpm_list_remove(trans->packages, dummy, - _alpm_pkg_cmp, &vpkg); - _alpm_pkg_free(dummy); + trans->packages = alpm_list_remove(trans->packages, miss->causingpkg, + _alpm_pkgname_pkg_cmp, &vpkg); pkg = vpkg; if(pkg) { _alpm_log(PM_LOG_WARNING, "removing %s from the target-list\n", -- cgit v1.2.3-70-g09d2