summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Prus <vladimir@codesourcery.com>2006-11-08 17:45:23 +0000
committerVladimir Prus <vladimir@codesourcery.com>2006-11-08 17:45:23 +0000
commitd6e2d48c28a2dcb65a33d29e7035e1135f06856b (patch)
tree2123662f623f4661143fb63a5d5336fd982129b0
parentc3145c9908a1ed0fd9313a96ddc81e3c04405d8a (diff)
downloadbinutils-redhat-binutils-csl-sourcerygxx-4_1-27.tar.gz
2006-11-08 Vladimir Prus <vladimir@codesourcery.com>binutils-csl-sourcerygxx-4_1-27binutils-csl-arm-2006q3-27
* 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.
-rw-r--r--ChangeLog.csl7
-rw-r--r--libiberty/pex-win32.c15
2 files changed, 15 insertions, 7 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index bee1202175..b25d2133bf 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -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 Vladimir Prus <vladimir@codesourcery.com>
* testsuite/ld-elf/symbol2w.s: Use "%" instead
diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c
index 45725457b6..59a99eae65 100644
--- a/libiberty/pex-win32.c
+++ b/libiberty/pex-win32.c
@@ -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 = xmalloc (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';