setup.c: Prepare for Windows directory separators.
This turns two switch/case statements into an if-else-if cascade because we later do not want to have case '/': #ifdef __MINGW32__ case '\\': #endif but use a predicate is_dir_sep(foo) in order to check for the directory separator. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>maint
parent
80ba074f41
commit
4cd148d83f
13
setup.c
13
setup.c
|
@ -26,24 +26,21 @@ static int sanitary_path_copy(char *dst, const char *src)
|
||||||
* (4) "../" -- strip one, eat slash and continue.
|
* (4) "../" -- strip one, eat slash and continue.
|
||||||
*/
|
*/
|
||||||
if (c == '.') {
|
if (c == '.') {
|
||||||
switch (src[1]) {
|
if (!src[1]) {
|
||||||
case '\0':
|
|
||||||
/* (1) */
|
/* (1) */
|
||||||
src++;
|
src++;
|
||||||
break;
|
} else if (src[1] == '/') {
|
||||||
case '/':
|
|
||||||
/* (2) */
|
/* (2) */
|
||||||
src += 2;
|
src += 2;
|
||||||
while (*src == '/')
|
while (*src == '/')
|
||||||
src++;
|
src++;
|
||||||
continue;
|
continue;
|
||||||
case '.':
|
} else if (src[1] == '.') {
|
||||||
switch (src[2]) {
|
if (!src[2]) {
|
||||||
case '\0':
|
|
||||||
/* (3) */
|
/* (3) */
|
||||||
src += 2;
|
src += 2;
|
||||||
goto up_one;
|
goto up_one;
|
||||||
case '/':
|
} else if (src[2] == '/') {
|
||||||
/* (4) */
|
/* (4) */
|
||||||
src += 3;
|
src += 3;
|
||||||
while (*src == '/')
|
while (*src == '/')
|
||||||
|
|
Loading…
Reference in New Issue