Changed custom_canonicalize_pathname() function for handle URL:// style
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Этот коммит содержится в:
родитель
d931785fd3
Коммит
c442e5e75f
@ -72,6 +72,15 @@ START_TEST (test_canonicalize_path)
|
|||||||
/* Collapse "/.." with the previous part of path */
|
/* Collapse "/.." with the previous part of path */
|
||||||
check_canonicalize ("/some_server/ww/some_server/../ww/../some_server/..//ww/some_server/ww", "/some_server/ww/ww/some_server/ww");
|
check_canonicalize ("/some_server/ww/some_server/../ww/../some_server/..//ww/some_server/ww", "/some_server/ww/ww/some_server/ww");
|
||||||
|
|
||||||
|
/* URI style */
|
||||||
|
check_canonicalize ("/some_server/ww/ftp://user:pass@host.net/path/", "/some_server/ww/ftp://user:pass@host.net/path");
|
||||||
|
|
||||||
|
check_canonicalize ("/some_server/ww/ftp://user:pass@host.net/path/../../", "/some_server/ww");
|
||||||
|
|
||||||
|
check_canonicalize ("ftp://user:pass@host.net/path/../../", ".");
|
||||||
|
|
||||||
|
check_canonicalize ("ftp://user/../../", "..");
|
||||||
|
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
@ -565,7 +565,7 @@ custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags)
|
|||||||
p = lpath;
|
p = lpath;
|
||||||
while (*p)
|
while (*p)
|
||||||
{
|
{
|
||||||
if (p[0] == PATH_SEP && p[1] == PATH_SEP)
|
if (p[0] == PATH_SEP && p[1] == PATH_SEP && (p == lpath || *(p - 1) != ':'))
|
||||||
{
|
{
|
||||||
s = p + 1;
|
s = p + 1;
|
||||||
while (*(++s) == PATH_SEP);
|
while (*(++s) == PATH_SEP);
|
||||||
@ -650,8 +650,17 @@ custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags)
|
|||||||
|
|
||||||
/* search for the previous token */
|
/* search for the previous token */
|
||||||
s = p - 1;
|
s = p - 1;
|
||||||
while (s >= lpath && *s != PATH_SEP)
|
while (s >= lpath)
|
||||||
|
{
|
||||||
|
if (s >= lpath + 2 && strncmp (s - 2, "://", 3) == 0)
|
||||||
|
{
|
||||||
|
s -= 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (*s == PATH_SEP)
|
||||||
|
break;
|
||||||
s--;
|
s--;
|
||||||
|
}
|
||||||
|
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user