exit if missing required option argument
authorJán Kupec <jkupec@suse.cz>
Wed, 3 Feb 2010 12:29:04 +0000 (13:29 +0100)
committerJán Kupec <jkupec@suse.cz>
Wed, 3 Feb 2010 12:29:04 +0000 (13:29 +0100)
src/Zypper.cc
src/utils/getopt.cc

index aff053a..b8891ca 100644 (file)
@@ -345,7 +345,7 @@ void Zypper::processGlobalOptions()
 
   // parse global options
   parsed_opts gopts = parse_options (_argc, _argv, global_options);
-  if (gopts.count("_unknown"))
+  if (gopts.count("_unknown") || gopts.count("_missing_arg"))
   {
     setExitCode(ZYPPER_EXIT_ERR_SYNTAX);
     return;
@@ -2397,10 +2397,10 @@ void Zypper::processCommandOptions()
 
   // parse command options
   ::copts = _copts = parse_options (argc(), argv(), specific_options);
-  if (copts.count("_unknown"))
+  if (copts.count("_unknown") || gopts.count("_missing_arg"))
   {
     setExitCode(ZYPPER_EXIT_ERR_SYNTAX);
-    ERR << "Unknown option, returning." << endl;
+    ERR << "Unknown option or missing argument, returning." << endl;
     return;
   }
 
index 9944767..33f0cef 100644 (file)
@@ -82,11 +82,12 @@ parsed_opts parse_options (int argc, char **argv,
 
       cerr << "'" << endl;
 
-      // tell the caller there have been uknown options encountered
+      // tell the caller there have been unknown options encountered
       result["_unknown"].push_back("");
       break;
     case ':':
       cerr << _("Missing argument for ") << argv[optind - 1] << endl;
+      result["_missing_arg"].push_back("");
       break;
     default:
       const char *mapidx = optc? short2long[optc] : longopts[option_index].name;