Merge async and sync code paths some more
[deliverable/binutils-gdb.git] / gdb / mi / mi-getopt.c
index 3a7c6a300d258f24ee9b1071762214c0aa6bfb78..0a07a39e0a6e1033f295d198de9739fb3119e9af 100644 (file)
@@ -1,5 +1,5 @@
 /* MI Command Set - MI Option Parser.
-   Copyright (C) 2000-2001, 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2015 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
 
 #include "defs.h"
 #include "mi-getopt.h"
-#include "gdb_string.h"
+/* See comments about mi_getopt and mi_getopt_silent in mi-getopt.h.
+   When there is an unknown option, if ERROR_ON_UNKNOWN is true,
+   throw an error, otherwise return -1.  */
 
-int
-mi_getopt (const char *prefix,
-          int argc, char **argv,
-          const struct mi_opt *opts,
-          int *oind, char **oarg)
+static int
+mi_getopt_1 (const char *prefix, int argc, char **argv,
+            const struct mi_opt *opts, int *oind, char **oarg,
+            int error_on_unknown)
 {
   char *arg;
   const struct mi_opt *opt;
@@ -71,7 +72,27 @@ mi_getopt (const char *prefix,
          return opt->index;
        }
     }
-  error (_("%s: Unknown option ``%s''"), prefix, arg + 1);
+
+  if (error_on_unknown)
+    error (_("%s: Unknown option ``%s''"), prefix, arg + 1);
+  else
+    return -1;
+}
+
+int
+mi_getopt (const char *prefix,
+          int argc, char **argv,
+          const struct mi_opt *opts,
+          int *oind, char **oarg)
+{
+  return mi_getopt_1 (prefix, argc, argv, opts, oind, oarg, 1);
+}
+
+int
+mi_getopt_allow_unknown (const char *prefix, int argc, char **argv,
+                        const struct mi_opt *opts, int *oind, char **oarg)
+{
+  return mi_getopt_1 (prefix, argc, argv, opts, oind, oarg, 0);
 }
 
 int 
This page took 0.024123 seconds and 4 git commands to generate.