Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=15001c2fe7c697f1605115ef1254319b73a67bfa
commit 15001c2fe7c697f1605115ef1254319b73a67bfa Author: Michel Hermier <[email protected]> Date: Thu Oct 31 13:24:49 2013 +0100 libpacman: Extract _pacman_localdb_rewind and _pacman_syncdb_rewind of _pacman_db_rewind. diff --git a/lib/libpacman/be_files.c b/lib/libpacman/be_files.c index 8e08a65..b90fefb 100644 --- a/lib/libpacman/be_files.c +++ b/lib/libpacman/be_files.c @@ -112,6 +112,16 @@ void _pacman_localdb_close(pmdb_t *db) } static +void _pacman_localdb_rewind(pmdb_t *db) +{ + if(db->handle == NULL) { + return; + } + + rewinddir(db->handle); +} + +static pmlist_t *_pacman_syncdb_test(pmdb_t *db) { /* testing sync dbs is not supported */ @@ -127,6 +137,23 @@ void _pacman_syncdb_close(pmdb_t *db) } } +static +void _pacman_syncdb_rewind(pmdb_t *db) +{ + char dbpath[PATH_MAX]; + + snprintf(dbpath, PATH_MAX, "%s" PM_EXT_DB, db->path); + if (db->handle) + archive_read_finish(db->handle); + db->handle = archive_read_new(); + archive_read_support_compression_all(db->handle); + archive_read_support_format_all(db->handle); + if (archive_read_open_filename(db->handle, dbpath, PM_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) { + archive_read_finish(db->handle); + db->handle = NULL; + } +} + pmlist_t *_pacman_db_test(pmdb_t *db) { ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); @@ -187,25 +214,14 @@ void _pacman_db_close(pmdb_t *db) void _pacman_db_rewind(pmdb_t *db) { - if(db == NULL || (islocal(db) && db->handle == NULL)) { + if(db == NULL) { return; } - if (islocal(db)) { - rewinddir(db->handle); - } else { - char dbpath[PATH_MAX]; - snprintf(dbpath, PATH_MAX, "%s" PM_EXT_DB, db->path); - if (db->handle) - archive_read_finish(db->handle); - db->handle = archive_read_new(); - archive_read_support_compression_all(db->handle); - archive_read_support_format_all(db->handle); - if (archive_read_open_filename(db->handle, dbpath, PM_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) { - archive_read_finish(db->handle); - db->handle = NULL; - } - } + if (islocal(db)) + _pacman_localdb_rewind(db); + else + _pacman_syncdb_rewind(db); } pmpkg_t *_pacman_db_scan(pmdb_t *db, const char *target, unsigned int inforeq) _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
