Merge branch 'tools-report-unknown-parameters'
This commit is contained in:
@ -43,8 +43,13 @@ bool CommandLine::parse() {
|
||||
option::Descriptor desc = {0, 0, 0, 0, 0, 0};
|
||||
this->options.push_back(desc);
|
||||
|
||||
// Generate the options stats
|
||||
option::Stats stats(this->options.data(), argv.size(), argv.data());
|
||||
// Copy argv to preserve original argument order
|
||||
// (for proper re-parsing after adding more options)
|
||||
argv_reordered = argv;
|
||||
|
||||
// Generate the options stats (GNU mode)
|
||||
option::Stats stats(true, this->options.data(),
|
||||
argv_reordered.size(), argv_reordered.data());
|
||||
|
||||
if (parsed_options)
|
||||
delete[] parsed_options;
|
||||
@ -56,9 +61,9 @@ bool CommandLine::parse() {
|
||||
parsed_options = new option::Option[stats.options_max];
|
||||
parsed_buffer = new option::Option[stats.buffer_max];
|
||||
|
||||
m_parser = new option::Parser(this->options.data(), argv.size(), argv.data(),
|
||||
parsed_options, parsed_buffer);
|
||||
|
||||
m_parser = new option::Parser(true, this->options.data(),
|
||||
argv_reordered.size(), argv_reordered.data(),
|
||||
parsed_options, parsed_buffer);
|
||||
|
||||
// Pop the terminating entry
|
||||
this->options.pop_back();
|
||||
|
||||
@ -30,7 +30,7 @@ public:
|
||||
private:
|
||||
static CommandLine m_instance;
|
||||
|
||||
std::vector<const char *> argv;
|
||||
std::vector<const char *> argv, argv_reordered;
|
||||
std::vector<option::Descriptor> options;
|
||||
option::Option *parsed_options, *parsed_buffer;
|
||||
option::Parser *m_parser;
|
||||
|
||||
@ -40,7 +40,7 @@ int main(int argc, char *argv[])
|
||||
// Manually fill the command line option parser
|
||||
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 ALGORITHM =
|
||||
@ -99,7 +99,13 @@ int main(int argc, char *argv[])
|
||||
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();
|
||||
if (cmd[HELP]) {
|
||||
exit(0);
|
||||
|
||||
@ -17,7 +17,8 @@ static Logger LOG("convert-trace", true);
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
CommandLine &cmd = CommandLine::Inst();
|
||||
cmd.addOption("", "", Arg::None, "usage: convert-trace -f dump|gem5 -t tracefile.tc");
|
||||
CommandLine::option_handle UNKNOWN =
|
||||
cmd.addOption("", "", Arg::None, "usage: convert-trace -f dump|gem5 -t tracefile.tc");
|
||||
CommandLine::option_handle HELP =
|
||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||
CommandLine::option_handle FORMAT =
|
||||
@ -28,11 +29,17 @@ int main(int argc, char *argv[]) {
|
||||
cmd.add_args(argv[i]);
|
||||
}
|
||||
if (!cmd.parse()) {
|
||||
LOG << "Error parsing arguments." << endl;
|
||||
std::cerr << "Error parsing arguments." << endl;
|
||||
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();
|
||||
if (cmd[HELP]) {
|
||||
exit(0);
|
||||
|
||||
@ -49,7 +49,8 @@ int main(int argc, char *argv[])
|
||||
InjectionPointMessage ev;
|
||||
|
||||
CommandLine &cmd = CommandLine::Inst();
|
||||
cmd.addOption("", "", Arg::None, "usage: dump-hops [options] hopfile.hp");
|
||||
CommandLine::option_handle UNKNOWN =
|
||||
cmd.addOption("", "", Arg::None, "usage: dump-hops [options] hopfile.hp");
|
||||
CommandLine::option_handle HELP =
|
||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||
// CommandLine::option_handle STATS =
|
||||
@ -64,7 +65,13 @@ int main(int argc, char *argv[])
|
||||
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();
|
||||
if (cmd[HELP]) {
|
||||
exit(0);
|
||||
|
||||
@ -49,7 +49,8 @@ int main(int argc, char *argv[])
|
||||
Trace_Event ev;
|
||||
|
||||
CommandLine &cmd = CommandLine::Inst();
|
||||
cmd.addOption("", "", Arg::None, "usage: dump-trace [options] tracefile.tc");
|
||||
CommandLine::option_handle UNKNOWN =
|
||||
cmd.addOption("", "", Arg::None, "usage: dump-trace [options] tracefile.tc");
|
||||
CommandLine::option_handle HELP =
|
||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||
CommandLine::option_handle STATS =
|
||||
@ -67,7 +68,13 @@ int main(int argc, char *argv[])
|
||||
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();
|
||||
if (cmd[HELP]) {
|
||||
exit(0);
|
||||
|
||||
@ -85,7 +85,8 @@ int main(int argc, char *argv[]) {
|
||||
for (int i = 1; i < argc; ++i)
|
||||
cmd.add_args(argv[i]);
|
||||
|
||||
cmd.addOption("", "", Arg::None, "USAGE: import-trace [options]");
|
||||
CommandLine::option_handle UNKNOWN =
|
||||
cmd.addOption("", "", Arg::None, "USAGE: import-trace [options]");
|
||||
CommandLine::option_handle HELP =
|
||||
cmd.addOption("h", "help", Arg::None, "-h/--help \tPrint usage and exit");
|
||||
CommandLine::option_handle TRACE_FILE =
|
||||
@ -176,9 +177,15 @@ int main(int argc, char *argv[]) {
|
||||
// reparse all arguments.
|
||||
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();
|
||||
exit(0);
|
||||
exit(!cmd[HELP]);
|
||||
}
|
||||
|
||||
if (cmd[TRACE_FILE]) {
|
||||
|
||||
@ -35,7 +35,8 @@ int main(int argc, char *argv[]) {
|
||||
cmd.add_args(argv[i]);
|
||||
}
|
||||
|
||||
cmd.addOption("", "", Arg::None, "USAGE: prune-trace [options]");
|
||||
CommandLine::option_handle UNKNOWN =
|
||||
cmd.addOption("", "", Arg::None, "USAGE: prune-trace [options]");
|
||||
CommandLine::option_handle HELP = cmd.addOption("h", "help", Arg::None, "-h,--help \tPrint usage and exit");
|
||||
|
||||
Database::cmdline_setup();
|
||||
@ -92,9 +93,15 @@ int main(int argc, char *argv[]) {
|
||||
// reparse all arguments.
|
||||
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();
|
||||
exit(0);
|
||||
exit(!cmd[HELP]);
|
||||
}
|
||||
|
||||
Database *db = Database::cmdline_connect();
|
||||
|
||||
Reference in New Issue
Block a user