summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorNagy Gabor <ngaba@bibl.u-szeged.hu>2007-11-18 19:05:47 +0100
committerChantry Xavier <shiningxc@gmail.com>2008-02-06 08:46:15 +0100
commit05d56349588665da7ed01eaa3337be7ece35fd2f (patch)
tree543482dd5565b8d1dd882bec2fd5d47ef83938aa /lib
parente63366ae5e701d8e9ae33144f68e8786b092a468 (diff)
downloadpacman-05d56349588665da7ed01eaa3337be7ece35fd2f.tar.gz
pacman-05d56349588665da7ed01eaa3337be7ece35fd2f.tar.xz
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 <shiningxc@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/libalpm/package.c6
-rw-r--r--lib/libalpm/package.h1
-rw-r--r--lib/libalpm/remove.c6
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",