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

Reply via email to