Remove duplicate or commented-out #includes
[deliverable/binutils-gdb.git] / gdb / mi / mi-getopt.c
index 09fee9b25b8ac3de1e2cb686afe0467d7ebf10c7..7adb722e526b8cf9b9a879328e2ae404287578f3 100644 (file)
@@ -1,6 +1,5 @@
 /* MI Command Set - MI Option Parser.
-   Copyright (C) 2000, 2001, 2007, 2008, 2009, 2010, 2011
-   Free Software Foundation, Inc.
+   Copyright (C) 2000-2019 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;
 
-  /* We assume that argv/argc are ok. */
+  /* We assume that argv/argc are ok.  */
   if (*oind > argc || *oind < 0)
     internal_error (__FILE__, __LINE__,
                    _("mi_getopt_long: oind out of bounds"));
@@ -45,20 +45,20 @@ mi_getopt (const char *prefix,
       *oarg = NULL;
       return -1;
     }
-  /* End of option list. */
+  /* End of option list.  */
   if (arg[0] != '-')
     {
       *oarg = NULL;
       return -1;
     }
-  /* Look the option up. */
+  /* Look the option up.  */
   for (opt = opts; opt->name != NULL; opt++)
     {
       if (strcmp (opt->name, arg + 1) != 0)
        continue;
       if (opt->arg_p)
        {
-         /* A non-simple oarg option. */
+         /* A non-simple oarg option.  */
          if (argc < *oind + 2)
            error (_("%s: Option %s requires an argument"), prefix, arg);
          *oarg = argv[(*oind) + 1];
@@ -72,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 
@@ -81,9 +101,9 @@ mi_valid_noargs (const char *prefix, int argc, char **argv)
   int oind = 0;
   char *oarg;
   static const struct mi_opt opts[] =
-  {
-    { 0, 0, 0 }
-  };
+    {
+      { 0, 0, 0 }
+    };
 
   if (mi_getopt (prefix, argc, argv, opts, &oind, &oarg) == -1)
     return 1;
This page took 0.027949 seconds and 4 git commands to generate.