version 1.3.2.1, 2012/08/06 11:08:08
|
version 1.3.2.2, 2012/08/06 11:26:23
|
Line 183 www_unescape(char * __restrict str)
|
Line 183 www_unescape(char * __restrict str)
|
* www_undot() - Undotted and clean WWW query filename |
* www_undot() - Undotted and clean WWW query filename |
* |
* |
* @fname = query filename |
* @fname = query filename |
* return: none | * @fnlen = filename length |
| * return: -1 error, 0 not valid filename or >0 validated filename length |
*/ |
*/ |
void | int |
www_undot(const char * __restrict fname) | www_undot(const char * __restrict fname, int fnlen) |
{ |
{ |
char *s, *s2; |
char *s, *s2; |
int l; |
int l; |
|
|
if (!fname) | if (!fname || !fnlen) |
return; | return -1; |
|
|
/* collapse / sequences */ |
/* collapse / sequences */ |
if ((s = strstr(fname, "//"))) { |
if ((s = strstr(fname, "//"))) { |
Line 225 www_undot(const char * __restrict fname)
|
Line 226 www_undot(const char * __restrict fname)
|
break; |
break; |
*s2 = 0; |
*s2 = 0; |
} |
} |
|
|
|
/* if filename is empry add current dir */ |
|
if (!*fname) |
|
strlcpy((char*) fname, "./", fnlen); |
|
|
|
/* check for valid filename */ |
|
if (*fname == '/' || (fname[0] == '.' && fname[1] == '.' && |
|
(!fname[2] || fname[2] == '/'))) |
|
return 0; |
|
|
|
return strlen(fname); |
} |
} |