X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=cli%2Fcli_main.cpp;h=040adcf82928c56f8a35b76617ddeb72b11e1689;hb=47209604a9dad6d134274dcc33556374aef0f0f1;hp=fd4dbbb53db2f07d3b59db1787a458dbce8b2b9f;hpb=3c167fe5060d5fcd49422ef47c9602f6aedd978c;p=apitrace diff --git a/cli/cli_main.cpp b/cli/cli_main.cpp index fd4dbbb..040adcf 100644 --- a/cli/cli_main.cpp +++ b/cli/cli_main.cpp @@ -27,7 +27,7 @@ /* - * Top-level application for accessing almost of apitrace + * Top-level application for accessing almost all of apitrace * functionality. */ @@ -56,18 +56,27 @@ help_usage() } static int -help_command(int argc, char *argv[], int first_command_arg); +do_help_command(int argc, char *argv[]); -const Command help = { +const Command help_command = { "help", help_synopsis, help_usage, - help_command + do_help_command }; static const Command * commands[] = { - &dump, - &help, + &diff_command, + &diff_state_command, + &diff_images_command, + &dump_command, + &dump_images_command, + &pickle_command, + &repack_command, + &retrace_command, + &trace_command, + &trim_command, + &help_command }; static void @@ -110,17 +119,17 @@ list_commands(void) { static int -help_command(int argc, char *argv[], int first_arg_command) +do_help_command(int argc, char *argv[]) { const Command *command; int i; - if (first_arg_command == argc) { + if (argc != 2) { help_usage(); return 0; } - char *command_name = argv[first_arg_command]; + char *command_name = argv[1]; for (i = 0; i < ARRAY_SIZE(commands); i++) { command = commands[i]; @@ -140,14 +149,9 @@ help_command(int argc, char *argv[], int first_arg_command) int main(int argc, char **argv) { - const char *command_name = "trace"; + const char *command_name; const Command *command; - int i, first_command_arg; - - if (argc == 1) { - usage(); - return 1; - } + int i; for (i = 1; i < argc; ++i) { const char *arg = argv[i]; @@ -157,29 +161,33 @@ main(int argc, char **argv) } if (strcmp(arg, "--help") == 0) { - return help_command (0, NULL, 0); + return do_help_command(0, NULL); } else { std::cerr << "Error: unknown option " << arg << "\n"; usage(); return 1; } } - first_command_arg = i; - if (first_command_arg < argc) { - command_name = argv[first_command_arg]; - first_command_arg++; + if (i == argc) { + usage(); + return 1; } + command_name = argv[i]; + + argc -= i; + argv = &argv[i]; + for (i = 0; i < ARRAY_SIZE(commands); i++) { command = commands[i]; if (strcmp(command_name, command->name) == 0) - return (command->function) (argc, argv, first_command_arg); + return (command->function) (argc, argv); } std::cerr << "Error: unknown command " << command_name << " (see \"apitrace help\").\n"; - return 1; + return 1; }