2006-11-08 Vladimir Prus <vladimir@codesourcery.com>
authorVladimir Prus <vladimir@codesourcery.com>
Wed, 8 Nov 2006 16:18:58 +0000 (16:18 +0000)
committerVladimir Prus <vladimir@codesourcery.com>
Wed, 8 Nov 2006 16:18:58 +0000 (16:18 +0000)
        * pex-win32.c (no_suffixes): Remove.
        (std_suffixes): Add "" as first element.
        (find_executable): Remove detection of already-present
        extension. Try all suffixes in std_suffixes.

libiberty/ChangeLog
libiberty/pex-win32.c

index 671d0aa619ff68ba3a2a3a554e2555c7c606ea33..04688002f0783676c102b3e738b865d1cf662efa 100644 (file)
@@ -1,3 +1,10 @@
+2006-11-08  Vladimir Prus  <vladimir@codesourcery.com>
+
+       * pex-win32.c (no_suffixes): Remove.
+       (std_suffixes): Add "" as first element.
+       (find_executable): Remove detection of already-present
+       extension. Try all suffixes in std_suffixes.
+       
 2006-11-07  Julian Brown  <julian@codesourcery.com>
 
        * floatformat.c (get_field): Fix segfault with little-endian word
index 90a9ed1f95051f4510c3ef8156e9203766fadda9..ef9eb025caf63a8f3aa908423b6b73e75d06fff4 100644 (file)
@@ -382,16 +382,18 @@ argv_to_cmdline (char *const *argv)
   return cmdline;
 }
 
+/* We'll try the passed filename with all the known standard
+   extensions, and then without extension.  We try no extension
+   last so that we don't try to run some random extension-less
+   file that might be hanging around.  We try both extension
+   and no extension so that we don't need any fancy logic
+   to determine if a file has extension.  */
 static const char *const
 std_suffixes[] = {
   ".com",
   ".exe",
   ".bat",
   ".cmd",
-  0
-};
-static const char *const
-no_suffixes[] = {
   "",
   0
 };
@@ -409,7 +411,6 @@ find_executable (const char *program, BOOL search)
   const char *const *ext;
   const char *p, *q;
   size_t proglen = strlen (program);
-  int has_extension = !!strchr (program, '.');
   int has_slash = (strchr (program, '/') || strchr (program, '\\'));
   HANDLE h;
 
@@ -432,7 +433,7 @@ find_executable (const char *program, BOOL search)
       if (*q == ';')
        q++;
     }
-  fe_len = fe_len + 1 + proglen + (has_extension ? 1 : 5);
+  fe_len = fe_len + 1 + proglen + 5 /* space for extension */;
   full_executable = XNEWVEC (char, fe_len);
 
   p = path;
@@ -458,7 +459,7 @@ find_executable (const char *program, BOOL search)
 
       /* At this point, e points to the terminating NUL character for
          full_executable.  */
-      for (ext = has_extension ? no_suffixes : std_suffixes; *ext; ext++)
+      for (ext = std_suffixes; *ext; ext++)
        {
          /* Remove any current extension.  */
          *e = '\0';