]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- improved error messages
authorArvin Schnell <aschnell@suse.de>
Wed, 9 Feb 2011 09:16:03 +0000 (10:16 +0100)
committerArvin Schnell <aschnell@suse.de>
Wed, 9 Feb 2011 09:16:03 +0000 (10:16 +0100)
tools/snapper.cc
tools/utils/GetOpts.cc
tools/utils/GetOpts.h

index 11889d89e0984a3c1bbac8c6920ae3d6281a4daa..34ee70e0843192423ea12d48a06905807b5e24bf 100644 (file)
@@ -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;
index 9bef660b1a68dbb01b6027e8af6beab5febb220c..97a6c81b166ee4180111d9752059b7d6f72df7cf 100644 (file)
@@ -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
 {
index a316ec3e7fc8d8ae3d20928111977cc974da1b40..4725fe26dbf9c6ef6470ed981cdce3d2727fc1ec 100644 (file)
@@ -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; }