void
showHelp()
{
- getopts.parse(GetOpts::no_options);
+ getopts.parse("help", GetOpts::no_options);
if (getopts.hasArgs())
{
cerr << _("Command 'help' does not take arguments") << endl;
void
listSnap()
{
- getopts.parse(GetOpts::no_options);
+ getopts.parse("list", GetOpts::no_options);
if (getopts.hasArgs())
{
cerr << _("Command 'list' does not take arguments") << endl;
{ 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;
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;
void
showDifference()
{
- getopts.parse(GetOpts::no_options);
+ getopts.parse("diff", GetOpts::no_options);
if (getopts.numArgs() != 2)
{
cerr << _("Command 'diff' needs two arguments") << endl;
void
doRollback()
{
- getopts.parse(GetOpts::no_options);
+ getopts.parse("rollback", GetOpts::no_options);
if (getopts.numArgs() != 2)
{
cerr << _("Command 'rollback' needs two arguments") << endl;
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
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:
}
}
+
string
GetOpts::make_optstring(const struct option* longopts) const
{
// 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; }