/* FIXME should this be wrapped in an explicit transaction? */ static void do_dump_triplets() { DB *db; DBC *dbcp; int rc; DBT key = { 0 }, data = { 0 }; rc = get_db(&db, 1); if (rc) { fprintf(stderr, "DBD-%d: failed to open database\n", rc); return; } rc = db->cursor(db, 0, &dbcp, 0); if (rc) fprintf(stderr, "DBD-%d: db->cursor failed: %s\n", rc, db_strerror(rc)); else { while (! exit_requested && (rc = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) { const char *const start = key.data, *s = start; const struct triplet_data *t = data.data; printf("%d\t", t->crypted); printf("%s\t", db_key_ntop(s)); switch ((enum dbkey_type_enum)*s++) { case DBKEY_T_RAW: s += strlen(s) + 1; break; case DBKEY_T_IP4: s += IPV4_BITS / 8; break; case DBKEY_T_IP6: s += IPV6_BITS / 8; break; } printf("%s\t", s); s += strlen(s) + 1; fwrite(s, 1, key.size - (s - start), stdout); putchar('\t'); write_ctime(&t->create_time); putchar('\t'); write_ctime(&t->access_time); printf("\t%lu\t%lu\n", t->block_count, t->pass_count); } if (rc && rc != DB_NOTFOUND) fprintf(stderr, "DBD-%d: dbcp->c_get failed: %s\n", rc, db_strerror(rc)); rc = dbcp->c_close(dbcp); if (rc) fprintf(stderr, "DBD-%d: dbcp->c_close failed: %s\n", rc, db_strerror(rc)); } }
static void do_dump_triplets() { DBC *dbcp; int rc; DBT key = { 0 }, data = { 0 }; rc = db->cursor(db, 0, &dbcp, 0); if (rc) fprintf(stderr, "DBD-%d: db->cursor failed: %s\n", rc, db_strerror(rc)); else { while ((rc = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) { const char *s = key.data; const struct triplet_data *t = data.data; printf("%d\t", t->crypted); printf("%s\t", s); s += strlen(s) + 1; printf("%s\t", s); s += strlen(s) + 1; fwrite(s, 1, key.size - (s - (char *)key.data), stdout); putchar('\t'); write_ctime(&t->create_time); putchar('\t'); write_ctime(&t->access_time); printf("\t%lu\t%lu\n", t->block_count, t->pass_count); } if (rc != DB_NOTFOUND) fprintf(stderr, "DBD-%d: dbcp->c_get failed: %s\n", rc, db_strerror(rc)); rc = dbcp->c_close(dbcp); if (rc) fprintf(stderr, "DBD-%d: dbcp->c_close failed: %s\n", rc, db_strerror(rc)); } }