diff --git a/src/base/system.c b/src/base/system.c index ecc532a2f..c267130bd 100644 --- a/src/base/system.c +++ b/src/base/system.c @@ -2168,24 +2168,6 @@ int mem_comp(const void *a, const void *b, int size) return memcmp(a,b,size); } -const char *str_next_word(char *str, char delim, char *buf, int *cursor) -{ - int i; - - if(str[*cursor] == '\0') - return NULL; - - for(i = *cursor; ; ++i) - { - if(str[i] == delim || str[i] == '\0') - { - str_copy(buf, str + *cursor, i - *cursor); - *cursor = i + 1; - return buf; - } - } -} - const MEMSTATS *mem_stats() { return &memory_stats; diff --git a/src/base/system.h b/src/base/system.h index 0eeafb8cf..5e3c0084a 100644 --- a/src/base/system.h +++ b/src/base/system.h @@ -1030,8 +1030,6 @@ void str_hex(char *dst, int dst_size, const void *data, int data_size); void str_timestamp(char *buffer, int buffer_size); void str_timestamp_ex(time_t time, char *buffer, int buffer_size, const char *format); -const char *str_next_word(char *str, char delim, char *buf, int *cursor); - /* Group: Filesystem */ /* diff --git a/src/engine/client/serverbrowser.cpp b/src/engine/client/serverbrowser.cpp index e01d44e7b..f4cad201d 100644 --- a/src/engine/client/serverbrowser.cpp +++ b/src/engine/client/serverbrowser.cpp @@ -206,69 +206,58 @@ void CServerBrowser::Filter() if(!Filtered && g_Config.m_BrFilterString[0] != 0) { - int Cursor = 0; - char aBuf[sizeof(g_Config.m_BrFilterString)]; + int MatchFound = 0; + m_ppServerlist[i]->m_Info.m_QuickSearchHit = 0; - while(const char *pWord = str_next_word(g_Config.m_BrFilterString, ',', aBuf, &Cursor)) + // match against server name + if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aName, g_Config.m_BrFilterString)) { - int MatchFound = 0; - - // match against server name - if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aName, pWord)) - { - MatchFound = 1; - m_ppServerlist[i]->m_Info.m_QuickSearchHit |= IServerBrowser::QUICK_SERVERNAME; - } - - // match against players - for(p = 0; p < m_ppServerlist[i]->m_Info.m_NumClients; p++) - { - if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aClients[p].m_aName, pWord) || - str_find_nocase(m_ppServerlist[i]->m_Info.m_aClients[p].m_aClan, pWord)) - { - MatchFound = 1; - m_ppServerlist[i]->m_Info.m_QuickSearchHit |= IServerBrowser::QUICK_PLAYER; - break; - } - } - - // match against map - if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aMap, pWord)) - { - MatchFound = 1; - m_ppServerlist[i]->m_Info.m_QuickSearchHit |= IServerBrowser::QUICK_MAPNAME; - } - - if(!MatchFound) - Filtered = 1; + MatchFound = 1; + m_ppServerlist[i]->m_Info.m_QuickSearchHit |= IServerBrowser::QUICK_SERVERNAME; } + + // match against players + for(p = 0; p < m_ppServerlist[i]->m_Info.m_NumClients; p++) + { + if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aClients[p].m_aName, g_Config.m_BrFilterString) || + str_find_nocase(m_ppServerlist[i]->m_Info.m_aClients[p].m_aClan, g_Config.m_BrFilterString)) + { + MatchFound = 1; + m_ppServerlist[i]->m_Info.m_QuickSearchHit |= IServerBrowser::QUICK_PLAYER; + break; + } + } + + // match against map + if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aMap, g_Config.m_BrFilterString)) + { + MatchFound = 1; + m_ppServerlist[i]->m_Info.m_QuickSearchHit |= IServerBrowser::QUICK_MAPNAME; + } + + if(!MatchFound) + Filtered = 1; } if(!Filtered && g_Config.m_BrExcludeString[0] != 0) { - int Cursor = 0; - char aBuf[sizeof(g_Config.m_BrExcludeString)]; + int MatchFound = 0; - while(const char *pWord = str_next_word(g_Config.m_BrExcludeString, ',', aBuf, &Cursor)) + // match against server name + if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aName, g_Config.m_BrExcludeString)) { - int MatchFound = 0; - - // match against server name - if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aName, pWord)) - { - MatchFound = 1; - } - - // match against map - if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aMap, pWord)) - { - MatchFound = 1; - } - - if(MatchFound) - Filtered = 1; + MatchFound = 1; } + + // match against map + if(str_find_nocase(m_ppServerlist[i]->m_Info.m_aMap, g_Config.m_BrExcludeString)) + { + MatchFound = 1; + } + + if(MatchFound) + Filtered = 1; } } diff --git a/src/engine/shared/config_variables.h b/src/engine/shared/config_variables.h index c838a5062..d2c3b8324 100644 --- a/src/engine/shared/config_variables.h +++ b/src/engine/shared/config_variables.h @@ -39,8 +39,8 @@ MACRO_CONFIG_INT(InpGrab, inp_grab, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Use f MACRO_CONFIG_INT(InpGrab, inp_grab, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Use forceful input grabbing method") #endif -MACRO_CONFIG_STR(BrFilterString, br_filter_string, 80, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Server browser filtering string") -MACRO_CONFIG_STR(BrExcludeString, br_exclude_string, 80, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Server browser exclusion string") +MACRO_CONFIG_STR(BrFilterString, br_filter_string, 25, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Server browser filtering string") +MACRO_CONFIG_STR(BrExcludeString, br_exclude_string, 25, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Server browser exclusion string") MACRO_CONFIG_INT(BrFilterFull, br_filter_full, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out full server in browser") MACRO_CONFIG_INT(BrFilterEmpty, br_filter_empty, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out empty server in browser") MACRO_CONFIG_INT(BrFilterSpectators, br_filter_spectators, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out spectators from player numbers")