関数 | |
static void | print_data (TDB_DATA d) |
static int | traverse_fn (TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state) |
static int | dump_tdb (const char *fname, const char *keyname) |
static void | usage (void) |
int | main (int argc, char *argv[]) |
static void print_data | ( | TDB_DATA | d | ) | [static] |
参照先 TDB_DATA::dptr・TDB_DATA::dsize・len・printf().
参照元 dump_tdb()・print_arec()・print_hexkey()・traverse_fn().
00036 { 00037 unsigned char *p = (unsigned char *)d.dptr; 00038 int len = d.dsize; 00039 while (len--) { 00040 if (isprint(*p) && !strchr("\"\\", *p)) { 00041 fputc(*p, stdout); 00042 } else { 00043 printf("\\%02X", *p); 00044 } 00045 p++; 00046 } 00047 }
static int traverse_fn | ( | TDB_CONTEXT * | tdb, | |
TDB_DATA | key, | |||
TDB_DATA | dbuf, | |||
void * | state | |||
) | [static] |
参照先 TDB_DATA::dsize・print_data()・printf().
00050 { 00051 printf("{\n"); 00052 printf("key(%d) = \"", (int)key.dsize); 00053 print_data(key); 00054 printf("\"\n"); 00055 printf("data(%d) = \"", (int)dbuf.dsize); 00056 print_data(dbuf); 00057 printf("\"\n"); 00058 printf("}\n"); 00059 return 0; 00060 }
static int dump_tdb | ( | const char * | fname, | |
const char * | keyname | |||
) | [static] |
参照先 TDB_DATA::dptr・TDB_DATA::dsize・print_data()・printf()・tdb・tdb_fetch()・tdb_open()・tdb_traverse()・traverse_fn().
参照元 main().
00063 { 00064 TDB_CONTEXT *tdb; 00065 TDB_DATA key, value; 00066 00067 tdb = tdb_open(fname, 0, 0, O_RDONLY, 0); 00068 if (!tdb) { 00069 printf("Failed to open %s\n", fname); 00070 return 1; 00071 } 00072 00073 if (!keyname) { 00074 tdb_traverse(tdb, traverse_fn, NULL); 00075 } else { 00076 key.dptr = (char *)keyname; 00077 key.dsize = strlen( keyname); 00078 value = tdb_fetch(tdb, key); 00079 if (!value.dptr) { 00080 return 1; 00081 } else { 00082 print_data(value); 00083 free(value.dptr); 00084 } 00085 } 00086 00087 return 0; 00088 }
static void usage | ( | void | ) | [static] |
int main | ( | int | argc, | |
char * | argv[] | |||
) |
参照先 c・dump_tdb()・optarg・optind・printf()・usage().
00098 { 00099 char *fname, *keyname=NULL; 00100 int c; 00101 00102 if (argc < 2) { 00103 printf("Usage: tdbdump <fname>\n"); 00104 exit(1); 00105 } 00106 00107 while ((c = getopt( argc, argv, "hk:")) != -1) { 00108 switch (c) { 00109 case 'h': 00110 usage(); 00111 exit( 0); 00112 case 'k': 00113 keyname = optarg; 00114 break; 00115 default: 00116 usage(); 00117 exit( 1); 00118 } 00119 } 00120 00121 fname = argv[optind]; 00122 00123 return dump_tdb(fname, keyname); 00124 }