WIP on cache tools

This commit is contained in:
Joe Thornber
2013-09-11 11:40:46 +01:00
parent d3ce6b811b
commit 6615b25e4b
19 changed files with 560 additions and 54 deletions

View File

@@ -37,8 +37,8 @@ struct flags {
};
namespace {
int dump(string const &path, ostream *out, string const &format, struct flags &flags,
block_address metadata_snap = 0) {
int dump_(string const &path, ostream &out, string const &format, struct flags &flags,
block_address metadata_snap) {
try {
metadata::ptr md(new metadata(path, metadata_snap));
emitter::ptr e;
@@ -56,9 +56,9 @@ namespace {
}
if (format == "xml")
e = create_xml_emitter(*out);
e = create_xml_emitter(out);
else if (format == "human_readable")
e = create_human_readable_emitter(*out);
e = create_human_readable_emitter(out);
else {
cerr << "unknown format '" << format << "'" << endl;
exit(1);
@@ -74,6 +74,15 @@ namespace {
return 0;
}
int dump(string const &path, char const *output, string const &format, struct flags &flags,
block_address metadata_snap = 0) {
if (output) {
ofstream out(output);
return dump_(path, out, format, flags, metadata_snap);
} else
return dump_(path, cout, format, flags, metadata_snap);
}
void usage(ostream &out, string const &cmd) {
out << "Usage: " << cmd << " [options] {device|file}" << endl
<< "Options:" << endl
@@ -154,5 +163,5 @@ int main(int argc, char **argv)
return 1;
}
return dump(argv[optind], output ? new ofstream(output) : &cout, format, flags, metadata_snap);
return dump(argv[optind], output, format, flags, metadata_snap);
}