prefix.c (update_path): Replace PREFIX with KEY only when it matches a full directory...
authorThomas Quinot <quinot@act-europe.fr>
Sat, 15 May 2004 15:14:40 +0000 (17:14 +0200)
committerRoger Sayle <sayle@gcc.gnu.org>
Sat, 15 May 2004 15:14:40 +0000 (15:14 +0000)
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

gcc/ChangeLog
gcc/prefix.c

index dfd84927c0070407b040a3cce0d4e36d855dd4b3..abf444b834e0fc469dd8aa8d8342bea6e27b524d 100644 (file)
@@ -1,3 +1,8 @@
+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.
+
 2004-05-15  Richard Earnshaw  <reanrsha@arm.com>
 
        * arm.h (TARGET_APCS_32): Delete.
index df556aaa30c0f9ab4bedf648ffc91259884a954c..373707fc595316500acc83d31892aa1ca03ab7e8 100644 (file)
@@ -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);