diff --git a/src/modules/cpu.c b/src/modules/cpu.c index 987023246..6afb0ab8a 100644 --- a/src/modules/cpu.c +++ b/src/modules/cpu.c @@ -97,9 +97,15 @@ void ffPrintCPU(FFinstance* instance) FFstrbuf namePretty; ffStrbufInitA(&namePretty, 64); ffStrbufAppendS(&namePretty, name); - ffStrbufRemoveStrings(&namePretty, 11, - "(R)", "(r)", "(TM)", "(tm)", " CPU", " FPU", " Processor", " Dual-Core", " Quad-Core", " Six-Core", " Eight-Core" - ); + + const char* removeStrings[] = { + "(R)", "(r)", "(TM)", "(tm)", + " CPU", " FPU", " Processor", + " Dual-Core", " Quad-Core", " Six-Core", " Eight-Core", " Ten-Core", + " 2-Core", " 4-Core", " 6-Core", " 8-Core", " 10-Core", " 12-Core", " 14-Core", " 16-Core" + }; + + ffStrbufRemoveStringsA(&namePretty, sizeof(removeStrings) / sizeof(removeStrings[0]), removeStrings); ffStrbufSubstrBeforeFirstC(&namePretty, '@'); //Cut the speed output in the name as we append our own ffStrbufTrimRight(&namePretty, ' '); //If we removed the @ in previous step there was most likely a space before it diff --git a/src/util/FFstrbuf.c b/src/util/FFstrbuf.c index 1746067c7..b22bddb8a 100644 --- a/src/util/FFstrbuf.c +++ b/src/util/FFstrbuf.c @@ -313,18 +313,8 @@ static bool strbufRemoveTest(FFstrbuf* strbuf, uint32_t i, const char* substr) return true; } -void ffStrbufRemoveStrings(FFstrbuf* strbuf, uint32_t numStrings, ...) +void ffStrbufRemoveStringsA(FFstrbuf* strbuf, uint32_t numStrings, const char* strings[]) { - const char* strings[numStrings]; - - va_list argp; - va_start(argp, numStrings); - - for(uint32_t i = 0; i < numStrings; i++) - strings[i] = va_arg(argp, const char*); - - va_end(argp); - for(uint32_t i = 0; i < strbuf->length; i++) { for(uint32_t k = 0; k < numStrings; k++) @@ -332,6 +322,23 @@ void ffStrbufRemoveStrings(FFstrbuf* strbuf, uint32_t numStrings, ...) } } +void ffStrbufRemoveStringsV(FFstrbuf* strbuf, uint32_t numStrings, va_list arguments) +{ + const char* strings[numStrings]; + for(uint32_t i = 0; i < numStrings; i++) + strings[i] = va_arg(arguments, const char*); + + ffStrbufRemoveStringsA(strbuf, numStrings, strings); +} + +void ffStrbufRemoveStrings(FFstrbuf* strbuf, uint32_t numStrings, ...) +{ + va_list argp; + va_start(argp, numStrings); + ffStrbufRemoveStringsV(strbuf, numStrings, argp); + va_end(argp); +} + uint32_t ffStrbufFirstIndexAfterC(FFstrbuf* strbuf, uint32_t start, const char c) { for(uint32_t i = start; i < strbuf->length; i++) diff --git a/src/util/FFstrbuf.h b/src/util/FFstrbuf.h index f45c5c02d..554d915ed 100644 --- a/src/util/FFstrbuf.h +++ b/src/util/FFstrbuf.h @@ -66,6 +66,8 @@ void ffStrbufTrimLeft(FFstrbuf* strbuf, char c); void ffStrbufTrimRight(FFstrbuf* strbuf, char c); void ffStrbufTrim(FFstrbuf* strbuf, char c); +void ffStrbufRemoveStringsA(FFstrbuf* strbuf, uint32_t numStrings, const char* strings[]); +void ffStrbufRemoveStringsV(FFstrbuf* strbuf, uint32_t numStrings, va_list arguments); void ffStrbufRemoveStrings(FFstrbuf* strbuf, uint32_t numStrings, ...); uint32_t ffStrbufFirstIndexAfterC(FFstrbuf* strbuf, uint32_t start, const char c);