tools: abort at unknown cmdline parameters
This change makes all C++-based tools in tools/ abort when they encounter an unknown commandline parameter (both option or non-option). This has already caused some confusion, as in some cases unexpected behaviour can be the result. For example, "prune-trace -t mytrace.tc -d database" up to now ignored the "-t" parameter, took "mytrace.tc" as the first non-option parameter (and ignored it); as no option parameter may follow the non-option parameters, all other options were ignored as well. Change-Id: Ia0812a518c4760fa28ed54979c81f43fa7aa096e
This commit is contained in:
@ -40,7 +40,7 @@ int main(int argc, char *argv[])
|
|||||||
// Manually fill the command line option parser
|
// Manually fill the command line option parser
|
||||||
CommandLine &cmd = CommandLine::Inst();
|
CommandLine &cmd = CommandLine::Inst();
|
||||||
|
|
||||||
cmd.addOption("", "", Arg::None, "USAGE: compute-hops [options]");
|
CommandLine::option_handle UNKNOWN = cmd.addOption("", "", Arg::None, "USAGE: compute-hops [options]");
|
||||||
CommandLine::option_handle HELP = cmd.addOption("h", "help", Arg::None, "-h,--help \tPrint usage and exit");
|
CommandLine::option_handle HELP = cmd.addOption("h", "help", Arg::None, "-h,--help \tPrint usage and exit");
|
||||||
|
|
||||||
CommandLine::option_handle ALGORITHM =
|
CommandLine::option_handle ALGORITHM =
|
||||||
@ -99,7 +99,13 @@ int main(int argc, char *argv[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd[HELP]) {
|
if (cmd[HELP] || cmd[UNKNOWN] || cmd.parser()->nonOptionsCount() > 0) {
|
||||||
|
for (option::Option* opt = cmd[UNKNOWN]; opt; opt = opt->next()) {
|
||||||
|
std::cerr << "Unknown option: " << opt->name << "\n";
|
||||||
|
}
|
||||||
|
for (int i = 0; i < cmd.parser()->nonOptionsCount(); ++i) {
|
||||||
|
std::cerr << "Unknown non-option: " << cmd.parser()->nonOption(i) << "\n";
|
||||||
|
}
|
||||||
cmd.printUsage();
|
cmd.printUsage();
|
||||||
if (cmd[HELP]) {
|
if (cmd[HELP]) {
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|||||||
@ -17,6 +17,7 @@ static Logger LOG("convert-trace", true);
|
|||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
CommandLine &cmd = CommandLine::Inst();
|
CommandLine &cmd = CommandLine::Inst();
|
||||||
|
CommandLine::option_handle UNKNOWN =
|
||||||
cmd.addOption("", "", Arg::None, "usage: convert-trace -f dump|gem5 -t tracefile.tc");
|
cmd.addOption("", "", Arg::None, "usage: convert-trace -f dump|gem5 -t tracefile.tc");
|
||||||
CommandLine::option_handle HELP =
|
CommandLine::option_handle HELP =
|
||||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||||
@ -28,11 +29,17 @@ int main(int argc, char *argv[]) {
|
|||||||
cmd.add_args(argv[i]);
|
cmd.add_args(argv[i]);
|
||||||
}
|
}
|
||||||
if (!cmd.parse()) {
|
if (!cmd.parse()) {
|
||||||
LOG << "Error parsing arguments." << endl;
|
std::cerr << "Error parsing arguments." << endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd[HELP] || !cmd[OUTFILE] || !cmd[FORMAT] || cmd.parser()->nonOptionsCount() != 0) {
|
if (cmd[HELP] || !cmd[OUTFILE] || !cmd[FORMAT] || cmd[UNKNOWN] || cmd.parser()->nonOptionsCount() != 0) {
|
||||||
|
for (option::Option* opt = cmd[UNKNOWN]; opt; opt = opt->next()) {
|
||||||
|
std::cerr << "Unknown option: " << opt->name << "\n";
|
||||||
|
}
|
||||||
|
for (int i = 0; i < cmd.parser()->nonOptionsCount(); ++i) {
|
||||||
|
std::cerr << "Unknown non-option: " << cmd.parser()->nonOption(i) << "\n";
|
||||||
|
}
|
||||||
cmd.printUsage();
|
cmd.printUsage();
|
||||||
if (cmd[HELP]) {
|
if (cmd[HELP]) {
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|||||||
@ -49,6 +49,7 @@ int main(int argc, char *argv[])
|
|||||||
InjectionPointMessage ev;
|
InjectionPointMessage ev;
|
||||||
|
|
||||||
CommandLine &cmd = CommandLine::Inst();
|
CommandLine &cmd = CommandLine::Inst();
|
||||||
|
CommandLine::option_handle UNKNOWN =
|
||||||
cmd.addOption("", "", Arg::None, "usage: dump-hops [options] hopfile.hp");
|
cmd.addOption("", "", Arg::None, "usage: dump-hops [options] hopfile.hp");
|
||||||
CommandLine::option_handle HELP =
|
CommandLine::option_handle HELP =
|
||||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||||
@ -64,7 +65,13 @@ int main(int argc, char *argv[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd[HELP] || cmd.parser()->nonOptionsCount() != 1) {
|
if (cmd[HELP] || cmd[UNKNOWN] || cmd.parser()->nonOptionsCount() != 1) {
|
||||||
|
for (option::Option* opt = cmd[UNKNOWN]; opt; opt = opt->next()) {
|
||||||
|
std::cerr << "Unknown option: " << opt->name << "\n";
|
||||||
|
}
|
||||||
|
for (int i = 1; i < cmd.parser()->nonOptionsCount(); ++i) {
|
||||||
|
std::cerr << "Unknown non-option: " << cmd.parser()->nonOption(i) << "\n";
|
||||||
|
}
|
||||||
cmd.printUsage();
|
cmd.printUsage();
|
||||||
if (cmd[HELP]) {
|
if (cmd[HELP]) {
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|||||||
@ -49,6 +49,7 @@ int main(int argc, char *argv[])
|
|||||||
Trace_Event ev;
|
Trace_Event ev;
|
||||||
|
|
||||||
CommandLine &cmd = CommandLine::Inst();
|
CommandLine &cmd = CommandLine::Inst();
|
||||||
|
CommandLine::option_handle UNKNOWN =
|
||||||
cmd.addOption("", "", Arg::None, "usage: dump-trace [options] tracefile.tc");
|
cmd.addOption("", "", Arg::None, "usage: dump-trace [options] tracefile.tc");
|
||||||
CommandLine::option_handle HELP =
|
CommandLine::option_handle HELP =
|
||||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||||
@ -67,7 +68,13 @@ int main(int argc, char *argv[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd[HELP] || cmd.parser()->nonOptionsCount() != 1) {
|
if (cmd[HELP] || cmd[UNKNOWN] || cmd.parser()->nonOptionsCount() != 1) {
|
||||||
|
for (option::Option* opt = cmd[UNKNOWN]; opt; opt = opt->next()) {
|
||||||
|
std::cerr << "Unknown option: " << opt->name << "\n";
|
||||||
|
}
|
||||||
|
for (int i = 1; i < cmd.parser()->nonOptionsCount(); ++i) {
|
||||||
|
std::cerr << "Unknown non-option: " << cmd.parser()->nonOption(i) << "\n";
|
||||||
|
}
|
||||||
cmd.printUsage();
|
cmd.printUsage();
|
||||||
if (cmd[HELP]) {
|
if (cmd[HELP]) {
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|||||||
@ -85,6 +85,7 @@ int main(int argc, char *argv[]) {
|
|||||||
for (int i = 1; i < argc; ++i)
|
for (int i = 1; i < argc; ++i)
|
||||||
cmd.add_args(argv[i]);
|
cmd.add_args(argv[i]);
|
||||||
|
|
||||||
|
CommandLine::option_handle UNKNOWN =
|
||||||
cmd.addOption("", "", Arg::None, "USAGE: import-trace [options]");
|
cmd.addOption("", "", Arg::None, "USAGE: import-trace [options]");
|
||||||
CommandLine::option_handle HELP =
|
CommandLine::option_handle HELP =
|
||||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||||
@ -176,9 +177,15 @@ int main(int argc, char *argv[]) {
|
|||||||
// reparse all arguments.
|
// reparse all arguments.
|
||||||
cmd.parse();
|
cmd.parse();
|
||||||
|
|
||||||
if (cmd[HELP]) {
|
if (cmd[HELP] || cmd[UNKNOWN] || cmd.parser()->nonOptionsCount() > 0) {
|
||||||
|
for (option::Option* opt = cmd[UNKNOWN]; opt; opt = opt->next()) {
|
||||||
|
std::cerr << "Unknown option: " << opt->name << "\n";
|
||||||
|
}
|
||||||
|
for (int i = 0; i < cmd.parser()->nonOptionsCount(); ++i) {
|
||||||
|
std::cerr << "Unknown non-option: " << cmd.parser()->nonOption(i) << "\n";
|
||||||
|
}
|
||||||
cmd.printUsage();
|
cmd.printUsage();
|
||||||
exit(0);
|
exit(!cmd[HELP]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd[TRACE_FILE]) {
|
if (cmd[TRACE_FILE]) {
|
||||||
|
|||||||
@ -35,6 +35,7 @@ int main(int argc, char *argv[]) {
|
|||||||
cmd.add_args(argv[i]);
|
cmd.add_args(argv[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CommandLine::option_handle UNKNOWN =
|
||||||
cmd.addOption("", "", Arg::None, "USAGE: prune-trace [options]");
|
cmd.addOption("", "", Arg::None, "USAGE: prune-trace [options]");
|
||||||
CommandLine::option_handle HELP = cmd.addOption("h", "help", Arg::None, "-h,--help \tPrint usage and exit");
|
CommandLine::option_handle HELP = cmd.addOption("h", "help", Arg::None, "-h,--help \tPrint usage and exit");
|
||||||
|
|
||||||
@ -112,9 +113,15 @@ int main(int argc, char *argv[]) {
|
|||||||
// reparse all arguments.
|
// reparse all arguments.
|
||||||
cmd.parse();
|
cmd.parse();
|
||||||
|
|
||||||
if (cmd[HELP]) {
|
if (cmd[HELP] || cmd[UNKNOWN] || cmd.parser()->nonOptionsCount() > 0) {
|
||||||
|
for (option::Option* opt = cmd[UNKNOWN]; opt; opt = opt->next()) {
|
||||||
|
std::cerr << "Unknown option: " << opt->name << "\n";
|
||||||
|
}
|
||||||
|
for (int i = 0; i < cmd.parser()->nonOptionsCount(); ++i) {
|
||||||
|
std::cerr << "Unknown non-option: " << cmd.parser()->nonOption(i) << "\n";
|
||||||
|
}
|
||||||
cmd.printUsage();
|
cmd.printUsage();
|
||||||
exit(0);
|
exit(!cmd[HELP]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Database *db = Database::cmdline_connect();
|
Database *db = Database::cmdline_connect();
|
||||||
|
|||||||
Reference in New Issue
Block a user