Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=04afe172d21d1690c21b10044aa1f88dc63b9d0a
commit 04afe172d21d1690c21b10044aa1f88dc63b9d0a Author: Michel Hermier <[email protected]> Date: Sat Jul 26 00:44:42 2014 +0200 libpacman: Vectorise _pacman_db_get_grpfromcache in _pacman_db_get_grpfromlist to allow simplification of _pacman_db_load_grpcache (avoiding multiple dummy iterations and assumption on Package::name layout). diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp index 34342ed..a9373a0 100644 --- a/lib/libpacman/cache.cpp +++ b/lib/libpacman/cache.cpp @@ -174,6 +174,26 @@ pmlist_t *_pacman_db_whatprovides(Database *db, char *package) return(pkgs); } +static +Group *_pacman_db_get_grpfromlist(pmlist_t *list, const char *target) +{ + pmlist_t *i; + + if(_pacman_strempty(target)) { + return(NULL); + } + + for(i = list; i; i = i->next) { + Group *info = i->data; + + if(strcmp(info->name, target) == 0) { + return(info); + } + } + + return(NULL); +} + /* Returns a new group cache from db. */ int _pacman_db_load_grpcache(Database *db) @@ -195,24 +215,16 @@ int _pacman_db_load_grpcache(Database *db) } for(i = pkg->groups(); i; i = i->next) { - if(!_pacman_list_is_strin(i->data, db->grpcache)) { - Group *grp = new Group(); + Group *grp = _pacman_db_get_grpfromlist(db->grpcache, i->data); + + if(grp == NULL) { + grp = new Group(); STRNCPY(grp->name, (char *)i->data, GRP_NAME_LEN); - grp->packages = _pacman_list_add_sorted(grp->packages, pkg->name(), strcmp); db->grpcache = _pacman_list_add_sorted(db->grpcache, grp, _pacman_grp_cmp); - } else { - pmlist_t *j; - - for(j = db->grpcache; j; j = j->next) { - Group *grp = j->data; - - if(strcmp(grp->name, i->data) == 0) { - if(!_pacman_list_is_strin(pkg->name(), grp->packages)) { - grp->packages = _pacman_list_add_sorted(grp->packages, pkg->name(), strcmp); - } - } - } + } + if(!_pacman_list_is_strin(pkg->name(), grp->packages)) { + grp->packages = _pacman_list_add_sorted(grp->packages, pkg->name(), strcmp); } } } @@ -247,22 +259,9 @@ pmlist_t *_pacman_db_get_grpcache(Database *db) Group *_pacman_db_get_grpfromcache(Database *db, const char *target) { - pmlist_t *i; - ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); - if(_pacman_strempty(target)) { - return(NULL); - } - for(i = _pacman_db_get_grpcache(db); i; i = i->next) { - Group *info = i->data; - - if(strcmp(info->name, target) == 0) { - return(info); - } - } - - return(NULL); + return _pacman_db_get_grpfromlist(_pacman_db_get_grpcache(db), target); } /* vim: set ts=2 sw=2 noet: */ _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
