diff options
author | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-07-19 13:24:55 +0000 |
---|---|---|
committer | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-07-19 13:24:55 +0000 |
commit | 9039f3fdae4fe3b4686e1e8635be51911d512d9a (patch) | |
tree | 3b24143bd484d1b79ed5da6d0ca2736654271b0d /gcc/prefix.c | |
parent | 9b44d6444a8522df2ea1d82d27915bde0f05c108 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc/prefix.c')
-rw-r--r-- | gcc/prefix.c | 16 |
1 files changed, 11 insertions, 5 deletions
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)) |