示例#1
0
/* 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));
    }
}
示例#2
0
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));
    }
}