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

Reply via email to