Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=dff8b68603fd85c6504c52bb3525f9bd35002c6f
commit dff8b68603fd85c6504c52bb3525f9bd35002c6f Author: Michel Hermier <[email protected]> Date: Tue Nov 12 14:02:51 2013 +0100 libpacman: Add _pacman_db_gettimestamp/_pacman_db_settimestamp and pmdb_ops_t::gettimestamp new API. diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c index 609d6a5..af881a1 100644 --- a/lib/libpacman/db.c +++ b/lib/libpacman/db.c @@ -183,6 +183,33 @@ int _pacman_db_close(pmdb_t *db) return db->ops->close(db); } +int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp) +{ + ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); + + if(db->ops->gettimestamp) { + return db->ops->gettimestamp(db, timestamp); + } else { + int ret; + char buffer[16]; + + if((ret = _pacman_db_getlastupdate(db, buffer)) == 0) { + strptime(buffer, "%Y%m%d%H%M%S", timestamp); + } + return ret; + } +} + +int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp) +{ + char buffer[16]; + + ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); + + strftime(buffer, sizeof(buffer), "%Y%m%d%H%M%S", timestamp); + return _pacman_db_setlastupdate(db, buffer); +} + int _pacman_db_rewind(pmdb_t *db) { ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 7b0b0c1..1a70f1a 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -24,6 +24,7 @@ #define _PACMAN_DB_H #include <limits.h> +#include <time.h> #include "pacman.h" @@ -44,6 +45,8 @@ struct __pmdb_ops_t { int (*open)(pmdb_t *db); int (*close)(pmdb_t *db); + int (*gettimestamp)(pmdb_t *db, struct tm *timestamp); + /* Package iterator */ int (*rewind)(pmdb_t *db); pmpkg_t *(*readpkg)(pmdb_t *db, unsigned int inforeq); @@ -60,6 +63,7 @@ struct __pmdb_t { char *path; char treename[PATH_MAX]; void *handle; + struct tm cache_timestamp; pmlist_t *pkgcache; pmlist_t *grpcache; pmlist_t *servers; @@ -75,6 +79,8 @@ pmlist_t *_pacman_db_search(pmdb_t *db, pmlist_t *needles); pmlist_t *_pacman_db_test(pmdb_t *db); int _pacman_db_open(pmdb_t *db); int _pacman_db_close(pmdb_t *db); +int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp); +int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp); int _pacman_db_rewind(pmdb_t *db); pmpkg_t *_pacman_db_readpkg(pmdb_t *db, unsigned int inforeq); 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
