#include #include #include #include #include #include void usage() { printf("\nUsage:\ngdbm_convertor -f \n"); } void read_db(char *filename) { GDBM_FILE db; datum key, nextkey, content; db = gdbm_open(filename, 0, GDBM_READER, 0, 0); if (db == NULL) { printf("Unable to open db %s beacsue of %s (%d) -- %s (%d)\n",filename, gdbm_strerror(gdbm_errno),gdbm_errno,strerror(errno),errno); return; } key = gdbm_firstkey(db); while ( key.dptr ) { content = gdbm_fetch(db, key); fwrite(key.dptr, key.dsize, sizeof(char), stdout); printf(" -> "); fwrite(content.dptr, content.dsize, sizeof(char), stdout); printf("\n"); free(content.dptr); nextkey = gdbm_nextkey(db, key); free(key.dptr); key = nextkey; } } int main(int argc, char **argv) { int c; char *filename=NULL; while (1) { c = getopt(argc,argv,"f:"); if (c == -1) break; switch (c) { case 'f': filename = optarg; } } if (filename == NULL) { usage(); return 1; } read_db(filename); return 0; }