Support server paths in various path functions
This commit is contained in:
parent
bfcf22b1e1
commit
7089044a4c
@ -34,6 +34,9 @@ void do_getabsolute(char* result, const char* value, const char* relative_to)
|
||||
result[0] = '\0';
|
||||
if (buffer[0] == '/') {
|
||||
strcat(result, "/");
|
||||
if (buffer[1] == '/') {
|
||||
strcat(result, "/");
|
||||
}
|
||||
}
|
||||
|
||||
prev = NULL;
|
||||
|
@ -67,6 +67,14 @@ int path_getrelative(lua_State* L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Relative paths within a server can't climb outside the server root.
|
||||
* If the paths don't share server name, return the absolute path. */
|
||||
if (src[0] == '/' && src[1] == '/' && last == 1) {
|
||||
dst[strlen(dst) - 1] = '\0';
|
||||
lua_pushstring(L, dst);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* count remaining levels in src */
|
||||
count = 0;
|
||||
for (i = last + 1; src[i] != '\0'; ++i) {
|
||||
|
@ -70,8 +70,8 @@ static void* normalize_substring(const char* str, const char* endPtr, char* writ
|
||||
}
|
||||
}
|
||||
|
||||
/* add to the result, filtering out duplicate slashes */
|
||||
if (ch != '/' || last != '/') {
|
||||
/* add to the result, filtering out duplicate slashes, except when they are leading slashes */
|
||||
if (str == &source[1] || (ch != '/' || last != '/')) {
|
||||
*(writePtr++) = ch;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user