Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=31ab97c94fcc8b2c3b062b452e024a2ec5cd2389
commit 31ab97c94fcc8b2c3b062b452e024a2ec5cd2389 Author: Michel Hermier <[email protected]> Date: Thu Nov 7 16:58:40 2013 +0100 libpacman: Call _pacman_db_get_pkgfromcache in _pacman_add_addtarget at one place to avoid multiple cache scanning. diff --git a/lib/libpacman/add.c b/lib/libpacman/add.c index f5b87e0..e0bb698 100644 --- a/lib/libpacman/add.c +++ b/lib/libpacman/add.c @@ -78,7 +78,6 @@ pmpkg_t *_pacman_filedb_load(pmdb_t *db, const char *name) int _pacman_add_addtarget(pmtrans_t *trans, const char *name) { pmpkg_t *info = NULL; - pmpkg_t *dummy; pmlist_t *i; pmpkg_t *local; pmdb_t *db_local = trans->handle->db_local; @@ -98,17 +97,17 @@ int _pacman_add_addtarget(pmtrans_t *trans, const char *name) goto error; } + local = _pacman_db_get_pkgfromcache(db_local, info->name); if(trans->type != PM_TRANS_TYPE_UPGRADE) { /* only install this package if it is not already installed */ - if(_pacman_db_get_pkgfromcache(db_local, _pacman_pkg_getinfo(info, PM_PKG_NAME))) { + if(local != NULL) { pm_errno = PM_ERR_PKG_INSTALLED; goto error; } } else { if(trans->flags & PM_TRANS_FLAG_FRESHEN) { /* only upgrade/install this package if it is already installed and at a lesser version */ - dummy = _pacman_db_get_pkgfromcache(db_local, _pacman_pkg_getinfo(info, PM_PKG_NAME)); - if(dummy == NULL || _pacman_versioncmp(dummy->version, info->version) >= 0) { + if(local == NULL || _pacman_versioncmp(local->version, info->version) >= 0) { pm_errno = PM_ERR_PKG_CANT_FRESH; goto error; } @@ -119,7 +118,7 @@ int _pacman_add_addtarget(pmtrans_t *trans, const char *name) * if so, replace it in the list */ for(i = trans->packages; i; i = i->next) { pmpkg_t *pkg = i->data; - if(strcmp(pkg->name, _pacman_pkg_getinfo(info, PM_PKG_NAME)) == 0) { + if(strcmp(pkg->name, info->name) == 0) { if(_pacman_versioncmp(pkg->version, info->version) < 0) { _pacman_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target list"), pkg->name, pkg->version, info->version); @@ -138,7 +137,6 @@ int _pacman_add_addtarget(pmtrans_t *trans, const char *name) } /* copy over the install reason */ - local = _pacman_db_get_pkgfromcache(db_local, info->name); if(local) { info->reason = (long)_pacman_pkg_getinfo(local, PM_PKG_REASON); } _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
