X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=tracedump.cpp;h=c210a0c9dd097119076f38642398c2673087283b;hb=99f84fa0e278f4ca30577c22ede85c643c6017cc;hp=22f62e3692c5ce45857b86df235615dd99db9f49;hpb=e4688f2a2fa7bf93eb46ecf978c0bbfd2fe81a25;p=apitrace diff --git a/tracedump.cpp b/tracedump.cpp index 22f62e3..c210a0c 100644 --- a/tracedump.cpp +++ b/tracedump.cpp @@ -29,22 +29,62 @@ */ +#include + #include "trace_parser.hpp" +static bool color = true; + + +static void usage(void) { + std::cout << + "Usage: tracedump [OPTION] [TRACE...]\n" + "Dump TRACE to standard output.\n" + "\n" + " --no-color no colored syntax highlightint\n" + " --no-colour alias for --no-color\n" + ; +} + + int main(int argc, char **argv) { - for (int i = 1; i < argc; ++i) { + int i; + + for (i = 1; i < argc; ++i) { + const char *arg = argv[i]; + + if (arg[0] != '-') { + break; + } + + if (!strcmp(arg, "--")) { + break; + } else if (!strcmp(arg, "--no-color") || + !strcmp(arg, "--no-colour")) { + color = false; + } else { + std::cerr << "error: unknown option " << arg << "\n"; + usage(); + return 1; + } + } + + for (; i < argc; ++i) { Trace::Parser p; - if (p.open(argv[i])) { - Trace::Call *call; - call = p.parse_call(); - while (call) { - std::cout << *call; - delete call; - call = p.parse_call(); - } + + if (!p.open(argv[i])) { + std::cerr << "error: failed to open " << argv[i] << "\n"; + return 1; + } + + Trace::Call *call; + while ((call = p.parse_call())) { + call->dump(std::cout, color); + delete call; } } + return 0; }