handle forbidden dir exclusions properly now
This commit is contained in:
parent
636baaba0f
commit
db1787bbfa
|
|
@ -316,10 +316,17 @@ void InitDirectory(const char* directory, ArchiveModules& archiveModules)
|
||||||
|
|
||||||
for(j = 0; j < g_numForbiddenDirs; ++j)
|
for(j = 0; j < g_numForbiddenDirs; ++j)
|
||||||
{
|
{
|
||||||
const char *p = strrchr(directory, '/');
|
char* dbuf = g_strdup(directory);
|
||||||
p = (p ? (p+1) : directory);
|
if(*dbuf && dbuf[strlen(dbuf)-1] == '/')
|
||||||
|
dbuf[strlen(dbuf)-1] = 0;
|
||||||
|
const char *p = strrchr(dbuf, '/');
|
||||||
|
p = (p ? (p+1) : dbuf);
|
||||||
if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
|
if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
|
||||||
|
{
|
||||||
|
g_free(dbuf);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
g_free(dbuf);
|
||||||
}
|
}
|
||||||
if(j < g_numForbiddenDirs)
|
if(j < g_numForbiddenDirs)
|
||||||
{
|
{
|
||||||
|
|
@ -382,9 +389,13 @@ void InitDirectory(const char* directory, ArchiveModules& archiveModules)
|
||||||
if(name == 0)
|
if(name == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
for(j = 0; j < g_numForbiddenDirs; ++j)
|
for(j = 0; j < g_numForbiddenDirs; ++j)
|
||||||
if(!string_compare_nocase_upper(name, g_strForbiddenDirs[j]))
|
{
|
||||||
break;
|
const char *p = strrchr(name, '/');
|
||||||
|
p = (p ? (p+1) : name);
|
||||||
|
if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(j < g_numForbiddenDirs)
|
if(j < g_numForbiddenDirs)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -161,10 +161,17 @@ void vfsInitDirectory (const char *path)
|
||||||
|
|
||||||
for(j = 0; j < g_numForbiddenDirs; ++j)
|
for(j = 0; j < g_numForbiddenDirs; ++j)
|
||||||
{
|
{
|
||||||
const char *p = strrchr(path, '/');
|
char* dbuf = g_strdup(path);
|
||||||
p = (p ? (p+1) : path);
|
if(*dbuf && dbuf[strlen(dbuf)-1] == '/')
|
||||||
|
dbuf[strlen(dbuf)-1] = 0;
|
||||||
|
const char *p = strrchr(dbuf, '/');
|
||||||
|
p = (p ? (p+1) : dbuf);
|
||||||
if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
|
if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
|
||||||
|
{
|
||||||
|
g_free(dbuf);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
g_free(dbuf);
|
||||||
}
|
}
|
||||||
if(j < g_numForbiddenDirs)
|
if(j < g_numForbiddenDirs)
|
||||||
return;
|
return;
|
||||||
|
|
@ -193,8 +200,12 @@ void vfsInitDirectory (const char *path)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
for(j = 0; j < g_numForbiddenDirs; ++j)
|
for(j = 0; j < g_numForbiddenDirs; ++j)
|
||||||
if(!Q_stricmp(name, g_strForbiddenDirs[j]))
|
{
|
||||||
|
const char *p = strrchr(name, '/');
|
||||||
|
p = (p ? (p+1) : name);
|
||||||
|
if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
if(j < g_numForbiddenDirs)
|
if(j < g_numForbiddenDirs)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user