]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
pexecute.c: Updates from gcc.
authorJeffrey A Law <law@cygnus.com>
Sat, 5 Sep 1998 02:26:35 +0000 (02:26 +0000)
committerJeff Law <law@gcc.gnu.org>
Sat, 5 Sep 1998 02:26:35 +0000 (20:26 -0600)
        * pexecute.c: Updates from gcc.  Copy in gcc has been removed.  This
        is the canonical copy.  Define ISSPACE if !IN_GCC.

From-SVN: r22243

libiberty/ChangeLog
libiberty/pexecute.c

index f5fc1405c6b40dc59e7f77e15c1be22520defdfb..06e474adbb75d51e21da5f1cbd0ded074478c116 100644 (file)
@@ -1,3 +1,8 @@
+Sat Sep  5 03:24:49 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * pexecute.c: Updates from gcc.  Copy in gcc has been removed.  This
+       is the canonical copy.  Define ISSPACE if !IN_GCC.
+
 Wed Aug 19 14:05:01 1998  Mumit Khan  <khan@xraylith.wisc.edu>
 
        * cplus-dem.c (work_stuff): Add dllimported.
index fbbea409147cb386d0cbabcbbd6370c5e4a5e101..1b0a374aa012138e720f8587c1649f9fa708feed 100644 (file)
@@ -1,6 +1,6 @@
 /* Utilities to execute a program in a subprocess (possibly linked by pipes
    with other subprocesses), and wait for it.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
 
 This file is part of the libiberty library.
 Libiberty is free software; you can redistribute it and/or
@@ -25,10 +25,12 @@ Boston, MA 02111-1307, USA.  */
 
 #ifdef IN_GCC
 #include "config.h"
-#endif
-
+#include "system.h"
+#else
 #include <stdio.h>
 #include <errno.h>
+#define ISSPACE (x) isspace(x)
+#endif
 
 #ifdef IN_GCC
 #include "gansidecl.h"
@@ -166,7 +168,7 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
       char *cp;
       for (cp = argv[i]; *cp; cp++)
        {
-         if (*cp == '"' || *cp == '\'' || *cp == '\\' || isspace (*cp))
+         if (*cp == '"' || *cp == '\'' || *cp == '\\' || ISSPACE (*cp))
            fputc ('\\', argfile);
          fputc (*cp, argfile);
        }
@@ -509,7 +511,7 @@ static int first_time = 1;
 int
 pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
      const char *program;
-     char **argv;
+     char * const *argv;
      const char *this_pname;
      const char *temp_base;
      char **errmsg_fmt, **errmsg_arg;
@@ -538,14 +540,18 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
       fputc (' ', stdout);
       for (i=1; argv[i]; i++)
        {
-         /* We have to quote every arg, so that when the echo is
-            executed, the quotes are stripped and the original arg
-            is left. */
          fputc ('\'', stdout);
+         /* See if we have an argument that needs fixing.  */
+         if (strchr(argv[i], '/'))
+           {
+             tmpname = (char *) xmalloc (256);
+             mpwify_filename (argv[i], tmpname);
+             argv[i] = tmpname;
+           }
          for (cp = argv[i]; *cp; cp++)
            {
-             /* Write an Option-d esc char in front of special chars.  */
-             if (strchr ("\"'+", *cp))
+             /* Write an Option-d escape char in front of special chars.  */
+             if (strchr("'+", *cp))
                fputc ('\266', stdout);
              fputc (*cp, stdout);
            }
@@ -560,15 +566,20 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
 
   for (i=1; argv[i]; i++)
     {
+      /* See if we have an argument that needs fixing.  */
+      if (strchr(argv[i], '/'))
+       {
+         tmpname = (char *) xmalloc (256);
+         mpwify_filename (argv[i], tmpname);
+         argv[i] = tmpname;
+       }
       if (strchr (argv[i], ' '))
        fputc ('\'', stdout);
       for (cp = argv[i]; *cp; cp++)
        {
-         /* Write an Option-d esc char in front of special chars.  */
-         if (strchr ("\"'+", *cp))
-           {
-             fputc ('\266', stdout);
-           }
+         /* Write an Option-d escape char in front of special chars.  */
+         if (strchr("'+", *cp))
+           fputc ('\266', stdout);
          fputc (*cp, stdout);
        }
       if (strchr (argv[i], ' '))
@@ -628,6 +639,9 @@ pfinish ()
 
 extern int execv ();
 extern int execvp ();
+#ifdef IN_GCC
+extern char * my_strerror                      PROTO ((int));
+#endif
 
 int
 pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)