/* * Determine whether a file is a diskdump creation, and if TRUE, * initialize the diskdump_data structure based upon the contents * of the diskdump header data. */ int is_diskdump(char *file) { int sz, i; if (!open_dump_file(file) || !read_dump_header(file)) return FALSE; sz = dd->block_size * (DISKDUMP_CACHED_PAGES); if ((dd->page_cache_buf = malloc(sz)) == NULL) error(FATAL, "%s: cannot malloc compressed page_cache_buf\n", DISKDUMP_VALID() ? "diskdump" : "compressed kdump"); for (i = 0; i < DISKDUMP_CACHED_PAGES; i++) dd->page_cache_hdr[i].pg_bufptr = &dd->page_cache_buf[i * dd->block_size]; if ((dd->compressed_page = (char *)malloc(dd->block_size)) == NULL) error(FATAL, "%s: cannot malloc compressed page space\n", DISKDUMP_VALID() ? "diskdump" : "compressed kdump"); if (CRASHDEBUG(1)) __diskdump_memory_dump(fp); if (pc->flags2 & GET_OSRELEASE) diskdump_get_osrelease(); #ifdef LZO if (lzo_init() == LZO_E_OK) dd->flags |= LZO_SUPPORTED; #endif return TRUE; }
int main(int argc, char *argv[]) { int bIterate = 0, ignore; char *line; char *tok; TDB_DATA iterate_kbuf; if (argv[1]) { static char tmp[1024]; sprintf(tmp, "open %s", argv[1]); tok=strtok(tmp," "); open_tdb(); } while ((line = tdb_getline("tdb> "))) { /* Shell command */ if (line[0] == '!') { ignore = system(line + 1); continue; } if ((tok = strtok(line," "))==NULL) { if (bIterate) next_record(tdb, &iterate_kbuf); continue; } if (strcmp(tok,"create") == 0) { bIterate = 0; create_tdb(); continue; } else if (strcmp(tok,"open") == 0) { open_tdb(); continue; } else if ((strcmp(tok, "q") == 0) || (strcmp(tok, "quit") == 0)) { break; } /* all the rest require a open database */ if (!tdb) { bIterate = 0; terror("database not open"); help(); continue; } if (strcmp(tok,"insert") == 0) { bIterate = 0; insert_tdb(); } else if (strcmp(tok,"store") == 0) { bIterate = 0; store_tdb(); } else if (strcmp(tok,"show") == 0) { bIterate = 0; show_tdb(); } else if (strcmp(tok,"erase") == 0) { bIterate = 0; tdb_traverse(tdb, do_delete_fn, NULL); } else if (strcmp(tok,"delete") == 0) { bIterate = 0; delete_tdb(); } else if (strcmp(tok,"dump") == 0) { bIterate = 0; if(open_dump_file() == 0) { /* open file */ tdb_traverse(tdb, print_rec, NULL); close_dump_file(); /* close file */ } pDumpFile = stdout; } else if (strcmp(tok,"list") == 0) { tdb_dump_all(tdb); } else if (strcmp(tok, "free") == 0) { tdb_printfreelist(tdb); } else if (strcmp(tok,"info") == 0) { info_tdb(); } else if ( (strcmp(tok, "1") == 0) || (strcmp(tok, "first") == 0)) { bIterate = 1; first_record(tdb, &iterate_kbuf); } else if ((strcmp(tok, "n") == 0) || (strcmp(tok, "next") == 0)) { next_record(tdb, &iterate_kbuf); } else if ((strcmp(tok, "keys") == 0)) { bIterate = 0; tdb_traverse(tdb, print_key, NULL); } else { help(); } } if (tdb) tdb_close(tdb); return 0; }