summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-19 13:24:55 +0000
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-19 13:24:55 +0000
commit9039f3fdae4fe3b4686e1e8635be51911d512d9a (patch)
tree3b24143bd484d1b79ed5da6d0ca2736654271b0d
parent9b44d6444a8522df2ea1d82d27915bde0f05c108 (diff)
downloadgcc-9039f3fdae4fe3b4686e1e8635be51911d512d9a.tar.gz
* prefix.c (update_path): Don't zap single `.' path components
unless followed by another `.' and fix typo last patch. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55586 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/prefix.c16
2 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bf1171f90b4..7e943e4affe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-07-19 Alan Modra <amodra@bigpond.net.au>
+
+ * prefix.c (update_path): Don't zap single `.' path components
+ unless followed by another `.' and fix typo last patch.
+
2002-07-18 Neil Booth <neil@daikokuya.co.uk>
* cppexp.c (cpp_num_mul): Remove unused parameter.
diff --git a/gcc/prefix.c b/gcc/prefix.c
index c8f0b98feb4..18f79987a34 100644
--- a/gcc/prefix.c
+++ b/gcc/prefix.c
@@ -284,7 +284,8 @@ update_path (path, key)
p = strchr (p, '.');
if (p == NULL)
break;
- /* Get rid of a leading `./' and replace `/./' with `/'. */
+ /* Get rid of a leading `./' and replace `/./' with `/', when
+ such components are followed with another `.'. */
if (IS_DIR_SEPARATOR (p[1])
&& (p == result || IS_DIR_SEPARATOR (p[-1])))
{
@@ -292,9 +293,14 @@ update_path (path, key)
/* Be careful about .//foo */
while (IS_DIR_SEPARATOR (*src))
++src;
- dest = p;
- while ((*dest++ = *src++) != 0)
- ;
+ if (*src == '.')
+ {
+ dest = p;
+ while ((*dest++ = *src++) != 0)
+ ;
+ }
+ else
+ ++p;
}
/* Look for `/../' */
else if (p[1] == '.'
@@ -316,7 +322,7 @@ update_path (path, key)
dest = p - 1;
while (dest != result && IS_DIR_SEPARATOR (*dest))
--dest;
- while (dest != result && IS_DIR_SEPARATOR (dest[-1]))
+ while (dest != result && !IS_DIR_SEPARATOR (dest[-1]))
--dest;
/* Don't strip leading `/'. */
while (IS_DIR_SEPARATOR (*dest))