| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // This command-line program dumps the contents of a set of cache files, either | |
| 6 // to stdout or to another set of cache files. | |
| 7 | |
| 8 #include <stdio.h> | |
| 9 #include <string> | |
| 10 | |
| 11 #include "base/at_exit.h" | |
| 12 #include "base/command_line.h" | |
| 13 #include "base/strings/string16.h" | |
| 14 #include "base/strings/string_util.h" | |
| 15 #include "base/strings/stringprintf.h" | |
| 16 #include "net/disk_cache/blockfile/disk_format.h" | |
| 17 #include "net/tools/dump_cache/dump_files.h" | |
| 18 #include "net/tools/dump_cache/simple_cache_dumper.h" | |
| 19 | |
| 20 enum Errors { | |
| 21 GENERIC = -1, | |
| 22 ALL_GOOD = 0, | |
| 23 INVALID_ARGUMENT = 1, | |
| 24 FILE_ACCESS_ERROR, | |
| 25 UNKNOWN_VERSION, | |
| 26 TOOL_NOT_FOUND, | |
| 27 }; | |
| 28 | |
| 29 // Folders to read and write cache files. | |
| 30 const char kInputPath[] = "input"; | |
| 31 const char kOutputPath[] = "output"; | |
| 32 | |
| 33 // Dumps the file headers to stdout. | |
| 34 const char kDumpHeaders[] = "dump-headers"; | |
| 35 | |
| 36 // Dumps all entries to stdout. | |
| 37 const char kDumpContents[] = "dump-contents"; | |
| 38 | |
| 39 // Convert the cache to files. | |
| 40 const char kDumpToFiles[] = "dump-to-files"; | |
| 41 | |
| 42 int Help() { | |
| 43 printf("warning: input files are modified by this tool\n"); | |
| 44 printf("dump_cache --input=path1 [--output=path2]\n"); | |
| 45 printf("--dump-headers: display file headers\n"); | |
| 46 printf("--dump-contents: display all entries\n"); | |
| 47 printf("--dump-to-files: write the contents of the cache to files\n"); | |
| 48 return INVALID_ARGUMENT; | |
| 49 } | |
| 50 | |
| 51 // ----------------------------------------------------------------------- | |
| 52 | |
| 53 int main(int argc, const char* argv[]) { | |
| 54 // Setup an AtExitManager so Singleton objects will be destroyed. | |
| 55 base::AtExitManager at_exit_manager; | |
| 56 | |
| 57 base::CommandLine::Init(argc, argv); | |
| 58 | |
| 59 const base::CommandLine& command_line = | |
| 60 *base::CommandLine::ForCurrentProcess(); | |
| 61 base::FilePath input_path = command_line.GetSwitchValuePath(kInputPath); | |
| 62 if (input_path.empty()) | |
| 63 return Help(); | |
| 64 | |
| 65 bool dump_to_files = command_line.HasSwitch(kDumpToFiles); | |
| 66 | |
| 67 base::FilePath output_path = command_line.GetSwitchValuePath(kOutputPath); | |
| 68 if (dump_to_files && output_path.empty()) | |
| 69 return Help(); | |
| 70 | |
| 71 int version = GetMajorVersion(input_path); | |
| 72 if (!version) | |
| 73 return FILE_ACCESS_ERROR; | |
| 74 | |
| 75 if (dump_to_files) { | |
| 76 net::SimpleCacheDumper dumper(input_path, output_path); | |
| 77 dumper.Run(); | |
| 78 return ALL_GOOD; | |
| 79 } | |
| 80 | |
| 81 if (command_line.HasSwitch(kDumpContents)) | |
| 82 return DumpContents(input_path); | |
| 83 | |
| 84 if (command_line.HasSwitch(kDumpHeaders)) | |
| 85 return DumpHeaders(input_path); | |
| 86 | |
| 87 return Help(); | |
| 88 } | |
| OLD | NEW |