summaryrefslogtreecommitdiffstats
path: root/src/history.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/history.c')
-rw-r--r--src/history.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/history.c b/src/history.c
new file mode 100644
index 0000000..f8fbe63
--- /dev/null
+++ b/src/history.c
@@ -0,0 +1,48 @@
+#include <assert.h>
+#include <string.h>
+#include <time.h>
+
+#include "history.h"
+#include "dbstruct.h"
+
+int history(struct syrep_db_context *c) {
+ int r = -1, ret;
+ DBC *cursor = NULL;
+ DBT key, data;
+
+ assert(c && c->db_version_timestamp);
+
+ if ((ret = c->db_version_timestamp->cursor(c->db_version_timestamp, NULL, &cursor, 0)) != 0) {
+ c->db_version_timestamp->err(c->db_version_timestamp, ret, "version_timestamp::cursor()");
+ goto finish;
+ }
+
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+
+ while ((ret = cursor->c_get(cursor, &key, &data, DB_NEXT)) == 0) {
+ struct syrep_version *version;
+ struct syrep_timestamp *timestamp;
+
+ version = key.data;
+ timestamp = data.data;
+
+ assert(version && timestamp);
+
+ fprintf(stderr, "%4u %10u %s", version->v, timestamp->t, ctime((time_t*) (&timestamp->t)));
+ }
+
+ if (ret != DB_NOTFOUND) {
+ c->db_version_timestamp->err(c->db_version_timestamp, ret, "version_timestamp::c_get()");
+ goto finish;
+ }
+
+ r = 0;
+
+finish:
+
+ if (cursor)
+ cursor->c_close(cursor);
+
+ return r;
+}