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 */
|
||||
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
|
||||
|
||||
|
@ -565,7 +565,7 @@ custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags)
|
||||
p = lpath;
|
||||
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;
|
||||
while (*(++s) == PATH_SEP);
|
||||
@ -650,8 +650,17 @@ custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags)
|
||||
|
||||
/* search for the previous token */
|
||||
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++;
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user