NameFilter: Freaking unicode.

This commit is contained in:
BotoX 2017-02-12 19:00:58 +01:00
parent 0f98bf718e
commit caa37dc3fc

View File

@ -190,7 +190,7 @@ void LoadConfig()
char sError[256];
RegexError iError;
g_FilterExpr = CompileRegex(sBuffer, 0, sError, sizeof(sError), iError);
g_FilterExpr = CompileRegex(sBuffer, PCRE_UTF8, sError, sizeof(sError), iError);
if(iError != REGEX_ERROR_NONE)
{
delete Config;
@ -206,7 +206,7 @@ void LoadConfig()
{
Config.GetString(NULL_STRING, sBuffer, sizeof(sBuffer));
Handle hRegex = CompileRegex(sBuffer, 0, sError, sizeof(sError), iError);
Handle hRegex = CompileRegex(sBuffer, PCRE_UTF8, sError, sizeof(sError), iError);
if(iError != REGEX_ERROR_NONE)
LogError("Error parsing banned filter: %s", sError);
else
@ -295,23 +295,26 @@ bool FilterName(int client, char[] sName, int Length = MAX_NAME_LENGTH)
}
}
if(!bChanged)
bChanged = TerminateNameUTF8(sName);
if(bChanged)
{
TerminateNameUTF8(sName);
if(strlen(sName) < 2)
{
int RandomName = client % g_ReplacementNames.Length;
g_ReplacementNames.GetString(RandomName, sName, Length);
return true;
}
TerminateNameUTF8(sName);
}
return bChanged;
}
// ensures that utf8 names are properly terminated
stock void TerminateNameUTF8(char[] name)
stock bool TerminateNameUTF8(char[] name)
{
int len = strlen(name);
for(int i = 0; i < len; i++)
@ -322,10 +325,11 @@ stock void TerminateNameUTF8(char[] name)
if(len - i < bytes)
{
name[i] = '\0';
return;
return true;
}
i += bytes - 1;
}
}
return false;
}