aboutsummaryrefslogtreecommitdiff
path: root/gcc/prefix.c
diff options
context:
space:
mode:
authorThomas Quinot <quinot@act-europe.fr>2004-05-15 17:14:40 +0200
committerRoger Sayle <sayle@gcc.gnu.org>2004-05-15 15:14:40 +0000
commit428d4d7660cb092c281734b56d62dce45d7b599a (patch)
tree7e1e2e9b6472c30bab3e9a5af0ef5196e8276ba4 /gcc/prefix.c
parent61f0ccffa36f96fc1a1f20fd8d4ec2bfb911140d (diff)
downloadgcc-428d4d7660cb092c281734b56d62dce45d7b599a.zip
gcc-428d4d7660cb092c281734b56d62dce45d7b599a.tar.gz
gcc-428d4d7660cb092c281734b56d62dce45d7b599a.tar.bz2
prefix.c (update_path): Replace PREFIX with KEY only when it matches a full directory name in PATH.
2004-05-15 Thomas Quinot <quinot@act-europe.fr> * prefix.c (update_path): Replace PREFIX with KEY only when it matches a full directory name in PATH. From-SVN: r81883
Diffstat (limited to 'gcc/prefix.c')
-rw-r--r--gcc/prefix.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/prefix.c b/gcc/prefix.c
index df556aa..373707f 100644
--- a/gcc/prefix.c
+++ b/gcc/prefix.c
@@ -238,16 +238,20 @@ tr (char *string, int c1, int c2)
while (*string++);
}
-/* Update PATH using KEY if PATH starts with PREFIX. The returned
- string is always malloc-ed, and the caller is responsible for
- freeing it. */
+/* Update PATH using KEY if PATH starts with PREFIX as a directory.
+ The returned string is always malloc-ed, and the caller is
+ responsible for freeing it. */
char *
update_path (const char *path, const char *key)
{
char *result, *p;
+ const int len = strlen (std_prefix);
- if (! strncmp (path, std_prefix, strlen (std_prefix)) && key != 0)
+ if (! strncmp (path, std_prefix, len)
+ && (IS_DIR_SEPARATOR(path[len])
+ || path[len] == '\0')
+ && key != 0)
{
bool free_key = false;
@@ -257,7 +261,7 @@ update_path (const char *path, const char *key)
free_key = true;
}
- result = concat (key, &path[strlen (std_prefix)], NULL);
+ result = concat (key, &path[len], NULL);
if (free_key)
free ((char *) key);
result = translate_name (result);