From: Arvin Schnell Date: Wed, 9 Feb 2011 09:16:03 +0000 (+0100) Subject: - improved error messages X-Git-Tag: v0.1.3~502 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=97b917fe79f30aa5831f68053b09bf76432aacbb;p=thirdparty%2Fsnapper.git - improved error messages --- diff --git a/tools/snapper.cc b/tools/snapper.cc index 11889d89..34ee70e0 100644 --- a/tools/snapper.cc +++ b/tools/snapper.cc @@ -51,7 +51,7 @@ readNum(const string& str) void showHelp() { - getopts.parse(GetOpts::no_options); + getopts.parse("help", GetOpts::no_options); if (getopts.hasArgs()) { cerr << _("Command 'help' does not take arguments") << endl; @@ -77,7 +77,7 @@ showHelp() void listSnap() { - getopts.parse(GetOpts::no_options); + getopts.parse("list", GetOpts::no_options); if (getopts.hasArgs()) { cerr << _("Command 'list' does not take arguments") << endl; @@ -121,7 +121,7 @@ createSnap() { 0, 0, 0, 0 } }; - GetOpts::parsed_opts opts = getopts.parse(options); + GetOpts::parsed_opts opts = getopts.parse("create", options); if (getopts.hasArgs()) { cerr << _("Command 'create' does not take arguments") << endl; @@ -174,7 +174,7 @@ createSnap() void deleteSnap() { - getopts.parse(GetOpts::no_options); + getopts.parse("delete", GetOpts::no_options); if (!getopts.hasArgs()) { cerr << _("Command 'delete' needs at least one argument") << endl; @@ -192,7 +192,7 @@ deleteSnap() void showDifference() { - getopts.parse(GetOpts::no_options); + getopts.parse("diff", GetOpts::no_options); if (getopts.numArgs() != 2) { cerr << _("Command 'diff' needs two arguments") << endl; @@ -213,7 +213,7 @@ showDifference() void doRollback() { - getopts.parse(GetOpts::no_options); + getopts.parse("rollback", GetOpts::no_options); if (getopts.numArgs() != 2) { cerr << _("Command 'rollback' needs two arguments") << endl; diff --git a/tools/utils/GetOpts.cc b/tools/utils/GetOpts.cc index 9bef660b..97a6c81b 100644 --- a/tools/utils/GetOpts.cc +++ b/tools/utils/GetOpts.cc @@ -31,6 +31,13 @@ GetOpts::init(int new_argc, char** new_argv) GetOpts::parsed_opts GetOpts::parse(const struct option* longopts) +{ + return parse(NULL, longopts); +} + + +GetOpts::parsed_opts +GetOpts::parse(const char* command, const struct option* longopts) { parsed_opts result; opterr = 0; // we report errors on our own @@ -49,11 +56,17 @@ GetOpts::parse(const struct option* longopts) return result; case '?': - cerr << sformat(_("Unknown option '%s'"), argv[optind - 1]) << endl; + if (!command) + cerr << sformat(_("Unknown global option '%s'"), argv[optind - 1]) << endl; + else + cerr << sformat(_("Unknown option '%s' for command '%s'"), argv[optind - 1], command) << endl; exit(EXIT_FAILURE); case ':': - cerr << sformat(_("Missing argument for option '%s'"), argv[optind - 1]) << endl; + if (!command) + cerr << sformat(_("Missing argument for global option '%s'"), argv[optind - 1]) << endl; + else + cerr << sformat(_("Missing argument for command option '%s'"), argv[optind - 1]) << endl; exit(EXIT_FAILURE); default: @@ -64,6 +77,7 @@ GetOpts::parse(const struct option* longopts) } } + string GetOpts::make_optstring(const struct option* longopts) const { diff --git a/tools/utils/GetOpts.h b/tools/utils/GetOpts.h index a316ec3e..4725fe26 100644 --- a/tools/utils/GetOpts.h +++ b/tools/utils/GetOpts.h @@ -16,6 +16,7 @@ public: // longopts.flag must be NULL parsed_opts parse(const struct option* longopts); + parsed_opts parse(const char* command, const struct option* longopts); bool hasArgs() const { return argc - optind > 0; }