Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b0febc767ba62929600734bb1c4346372892d25e
commit b0febc767ba62929600734bb1c4346372892d25e Author: Michel Hermier <herm...@frugalware.org> Date: Wed Nov 13 19:38:39 2013 +0100 libpacman: Use time_t instead of struct tm, first is an absolute time, while the other is a represented time. diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c index 63e6d70..a313cbf 100644 --- a/lib/libpacman/db.c +++ b/lib/libpacman/db.c @@ -48,6 +48,7 @@ #include "db/syncdb.h" #include "util/list.h" #include "util/log.h" +#include "util/time.h" #include "util.h" #include "error.h" #include "server.h" @@ -184,7 +185,7 @@ int _pacman_db_close(pmdb_t *db) return db->ops->close(db); } -int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp) +int _pacman_db_gettimestamp(pmdb_t *db, time_t *timestamp) { ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); ASSERT(timestamp != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1)); @@ -192,24 +193,29 @@ int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp) if(db->ops->gettimestamp) { return db->ops->gettimestamp(db, timestamp); } else { - int ret; char buffer[16]; - if((ret = _pacman_db_getlastupdate(db, buffer)) == 0) { - memset(timestamp, 0, sizeof(struct tm)); - strptime(buffer, "%Y%m%d%H%M%S", timestamp); + if(_pacman_db_getlastupdate(db, buffer) == 0) { + struct tm ptimestamp = { 0 }; + + if(strptime(buffer, "%Y%m%d%H%M%S", &ptimestamp) != NULL) { + *timestamp = mktime(&ptimestamp); + return 0; + } } - return ret; + return -1; } } -int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp) +/* A NULL timestamp means now per _pacman_localtime definition. + */ +int _pacman_db_settimestamp(pmdb_t *db, const time_t *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); + strftime(buffer, sizeof(buffer), "%Y%m%d%H%M%S", _pacman_localtime(timestamp)); return _pacman_db_setlastupdate(db, buffer); } diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 3ec6407..397a6f3 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -40,10 +40,10 @@ typedef struct __pmdb_ops_t pmdb_ops_t; struct __pmdb_ops_t { pmlist_t *(*test)(pmdb_t *db); - int (*open)(pmdb_t *db, int flags, struct tm *timestamp); + int (*open)(pmdb_t *db, int flags, time_t *timestamp); int (*close)(pmdb_t *db); - int (*gettimestamp)(pmdb_t *db, struct tm *timestamp); + int (*gettimestamp)(pmdb_t *db, time_t *timestamp); /* Package iterator */ int (*rewind)(pmdb_t *db); @@ -61,7 +61,7 @@ struct __pmdb_t { char *path; char treename[PATH_MAX]; void *handle; - struct tm cache_timestamp; + time_t cache_timestamp; pmlist_t *pkgcache; pmlist_t *grpcache; pmlist_t *servers; @@ -77,8 +77,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 flags); 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_gettimestamp(pmdb_t *db, time_t *timestamp); +int _pacman_db_settimestamp(pmdb_t *db, const time_t *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); diff --git a/lib/libpacman/db/localdb.c b/lib/libpacman/db/localdb.c index 608b1eb..86e2602 100644 --- a/lib/libpacman/db/localdb.c +++ b/lib/libpacman/db/localdb.c @@ -107,7 +107,7 @@ pmlist_t *_pacman_localdb_test(pmdb_t *db) } static -int _pacman_localdb_open(pmdb_t *db, int flags, struct tm *timestamp) +int _pacman_localdb_open(pmdb_t *db, int flags, time_t *timestamp) { db->handle = opendir(db->path); ASSERT(db->handle != NULL, RET_ERR(PM_ERR_DB_OPEN, -1)); diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c index 75567c4..7208ffd 100644 --- a/lib/libpacman/db/syncdb.c +++ b/lib/libpacman/db/syncdb.c @@ -142,7 +142,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force) } static -int _pacman_syncdb_open(pmdb_t *db, int flags, struct tm *timestamp) +int _pacman_syncdb_open(pmdb_t *db, int flags, time_t *timestamp) { struct stat buf; char dbpath[PATH_MAX]; diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c index bb122fa..1599f94 100644 --- a/lib/libpacman/pacman.c +++ b/lib/libpacman/pacman.c @@ -40,6 +40,7 @@ /* pacman-g2 */ #include "pacman.h" +#include "db/syncdb.h" #include "hash/md5.h" #include "hash/sha1.h" #include "util/list.h" @@ -748,7 +749,6 @@ int pacman_trans_commit(pmlist_t **data) int pacman_trans_release() { pmtrans_t *trans; - time_t t; /* Sanity checks */ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1)); @@ -771,8 +771,7 @@ int pacman_trans_release() FREETRANS(handle->trans); - t = time(NULL); - _pacman_db_settimestamp(handle->db_local, localtime(&t)); + _pacman_db_settimestamp(handle->db_local, NULL); if(_pacman_handle_unlock(handle) != 0) { return -1; diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c index 7e44932..4efe654 100644 --- a/lib/libpacman/sync.c +++ b/lib/libpacman/sync.c @@ -229,7 +229,7 @@ static int pkg_cmp(const void *p1, const void *p2) static int check_olddelay(void) { pmlist_t *i; - struct tm tm; + time_t tm; if(!handle->olddelay) { return(0); @@ -240,7 +240,7 @@ static int check_olddelay(void) if(_pacman_db_gettimestamp(db, &tm) == -1) { continue; } - if(difftime(time(NULL), mktime(&tm)) > handle->olddelay) { + if(difftime(time(NULL), tm) > handle->olddelay) { _pacman_log(PM_LOG_WARNING, _("local copy of '%s' repo is too old"), db->treename); } } diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c index 015d91f..6cb40a5 100644 --- a/lib/libpacman/trans.c +++ b/lib/libpacman/trans.c @@ -49,12 +49,12 @@ static int check_oldcache(void) { pmdb_t *db = handle->db_local; - struct tm timestamp; + time_t timestamp; if(_pacman_db_gettimestamp(db, ×tamp) == -1) { return(-1); } - if(difftime(mktime(×tamp), mktime(&db->cache_timestamp)) != 0) { + if(difftime(timestamp, db->cache_timestamp) != 0) { _pacman_log(PM_LOG_DEBUG, _("cache for '%s' repo is too old"), db->treename); _pacman_db_free_pkgcache(db); } else { _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git