OSDN Git Service

* pexecute.c: Updates from gcc. Copy in gcc has been removed. This
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Sep 1998 02:26:35 +0000 (02:26 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Sep 1998 02:26:35 +0000 (02:26 +0000)
        is the canonical copy.  Define ISSPACE if !IN_GCC.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22243 138bc75d-0d04-0410-961f-82ee72b054a4

libiberty/ChangeLog
libiberty/pexecute.c

index f5fc140..06e474a 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 fbbea40..1b0a374 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)