Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e00f8241ab2cf5232852475b6aafdb651b48e268
commit e00f8241ab2cf5232852475b6aafdb651b48e268 Author: Michel Hermier <[email protected]> Date: Mon Nov 11 11:08:23 2013 +0100 libpacman: Add _pacman_syncdb_pkg_new. diff --git a/lib/libpacman/be_files.c b/lib/libpacman/be_files.c index 651cbec..2c8d54b 100644 --- a/lib/libpacman/be_files.c +++ b/lib/libpacman/be_files.c @@ -99,13 +99,29 @@ pmpkg_t *_pacman_localdb_readpkg(pmdb_t *db, unsigned int inforeq) return NULL; } -pmpkg_t *_pacman_syncdb_readpkg(pmdb_t *db, unsigned int inforeq) +static +pmpkg_t *_pacman_syncdb_pkg_new(pmdb_t *db, const struct archive_entry *entry, unsigned int inforeq) { pmpkg_t *pkg; - struct archive_entry *entry = NULL; const char *dname; ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); + ASSERT(entry != NULL, return NULL); + + dname = archive_entry_pathname(entry); + if((pkg = _pacman_pkg_new_from_filename(dname, 0)) == NULL || + _pacman_db_read(db, inforeq, pkg) == -1) { + _pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname); + FREEPKG(pkg); + } + return pkg; +} + +pmpkg_t *_pacman_syncdb_readpkg(pmdb_t *db, unsigned int inforeq) +{ + struct archive_entry *entry = NULL; + + ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); if(!db->handle) { _pacman_db_rewind(db); @@ -121,16 +137,10 @@ pmpkg_t *_pacman_syncdb_readpkg(pmdb_t *db, unsigned int inforeq) // make sure it's a directory const char *pathname = archive_entry_pathname(entry); if (pathname[strlen(pathname)-1] == '/') { - break; + return _pacman_syncdb_pkg_new(db, entry, inforeq); } } - dname = archive_entry_pathname(entry); - if((pkg = _pacman_pkg_new_from_filename(dname, 0)) == NULL || - _pacman_db_read(db, inforeq, pkg) == -1) { - _pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname); - FREEPKG(pkg); - } - return pkg; + return NULL; } pmpkg_t *_pacman_db_readpkg(pmdb_t *db, unsigned int inforeq) _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
