[INTERPRETER]
* BUG: Fix File.IsHidden() method for paths having "." or ".." element inside. git-svn-id: svn://localhost/gambas/trunk@7418 867c0c6c-44f3-4631-809d-bfa615b0a4ec
This commit is contained in:
parent
657266cf4b
commit
9e5924c628
1 changed files with 23 additions and 3 deletions
|
@ -678,14 +678,34 @@ BEGIN_METHOD(File_IsHidden, GB_STRING path)
|
||||||
char *path = STRING(path);
|
char *path = STRING(path);
|
||||||
int len = LENGTH(path);
|
int len = LENGTH(path);
|
||||||
int i;
|
int i;
|
||||||
|
char c;
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
{
|
{
|
||||||
if (path[i] == '.' && (i == 0 || path[i - 1] == '/'))
|
if (path[i] != '.')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (i > 0 && path[i - 1] != '/')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (i == (len - 1))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
c = path[i + 1];
|
||||||
|
if (c == '/')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (c == '.')
|
||||||
{
|
{
|
||||||
GB_ReturnBoolean(TRUE);
|
if (i == (len - 2))
|
||||||
return;
|
continue;
|
||||||
|
|
||||||
|
if (path[i + 2] == '/')
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GB_ReturnBoolean(TRUE);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GB_ReturnBoolean(FALSE);
|
GB_ReturnBoolean(FALSE);
|
||||||
|
|
Loading…
Reference in a new issue