gdb: Move construct_inferior_arguments to gdbsupport
[deliverable/binutils-gdb.git] / gdb / infcmd.c
index 32905a7b591e8d3d5b108d2e42a61e76d2433c0c..cf6e540e79587a41a98d1748e9dcad58e9c73884 100644 (file)
@@ -259,130 +259,6 @@ server's cwd if remote debugging.\n"));
                        "when starting the inferior is \"%s\".\n"), cwd);
 }
 
-\f
-/* Compute command-line string given argument vector.  This does the
-   same shell processing as fork_inferior.  */
-
-char *
-construct_inferior_arguments (int argc, char **argv)
-{
-  char *result;
-
-  /* ARGC should always be at least 1, but we double check this
-     here.  This is also needed to silence -Werror-stringop
-     warnings.  */
-  gdb_assert (argc > 0);
-
-  if (startup_with_shell)
-    {
-#ifdef __MINGW32__
-      /* This holds all the characters considered special to the
-        Windows shells.  */
-      static const char special[] = "\"!&*|[]{}<>?`~^=;, \t\n";
-      static const char quote = '"';
-#else
-      /* This holds all the characters considered special to the
-        typical Unix shells.  We include `^' because the SunOS
-        /bin/sh treats it as a synonym for `|'.  */
-      static const char special[] = "\"!#$&*()\\|[]{}<>?'`~^; \t\n";
-      static const char quote = '\'';
-#endif
-      int i;
-      int length = 0;
-      char *out, *cp;
-
-      /* We over-compute the size.  It shouldn't matter.  */
-      for (i = 0; i < argc; ++i)
-       length += 3 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
-
-      result = (char *) xmalloc (length);
-      out = result;
-
-      for (i = 0; i < argc; ++i)
-       {
-         if (i > 0)
-           *out++ = ' ';
-
-         /* Need to handle empty arguments specially.  */
-         if (argv[i][0] == '\0')
-           {
-             *out++ = quote;
-             *out++ = quote;
-           }
-         else
-           {
-#ifdef __MINGW32__
-             int quoted = 0;
-
-             if (strpbrk (argv[i], special))
-               {
-                 quoted = 1;
-                 *out++ = quote;
-               }
-#endif
-             for (cp = argv[i]; *cp; ++cp)
-               {
-                 if (*cp == '\n')
-                   {
-                     /* A newline cannot be quoted with a backslash (it
-                        just disappears), only by putting it inside
-                        quotes.  */
-                     *out++ = quote;
-                     *out++ = '\n';
-                     *out++ = quote;
-                   }
-                 else
-                   {
-#ifdef __MINGW32__
-                     if (*cp == quote)
-#else
-                     if (strchr (special, *cp) != NULL)
-#endif
-                       *out++ = '\\';
-                     *out++ = *cp;
-                   }
-               }
-#ifdef __MINGW32__
-             if (quoted)
-               *out++ = quote;
-#endif
-           }
-       }
-      *out = '\0';
-    }
-  else
-    {
-      /* In this case we can't handle arguments that contain spaces,
-        tabs, or newlines -- see breakup_args().  */
-      int i;
-      int length = 0;
-
-      for (i = 0; i < argc; ++i)
-       {
-         char *cp = strchr (argv[i], ' ');
-         if (cp == NULL)
-           cp = strchr (argv[i], '\t');
-         if (cp == NULL)
-           cp = strchr (argv[i], '\n');
-         if (cp != NULL)
-           error (_("can't handle command-line "
-                    "argument containing whitespace"));
-         length += strlen (argv[i]) + 1;
-       }
-
-      result = (char *) xmalloc (length);
-      result[0] = '\0';
-      for (i = 0; i < argc; ++i)
-       {
-         if (i > 0)
-           strcat (result, " ");
-         strcat (result, argv[i]);
-       }
-    }
-
-  return result;
-}
-\f
 
 /* This function strips the '&' character (indicating background
    execution) that is added as *the last* of the arguments ARGS of a
This page took 0.025023 seconds and 4 git commands to generate.