From da76c6efbe544fd0a65c233152d53bc723c0b779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 19 Jun 2023 15:38:37 +0800 Subject: [PATCH] Global: refactor strncmp to ffStrStartsWith --- src/detection/displayserver/linux/wayland.c | 5 +++-- src/detection/gamepad/gamepad_linux.c | 3 ++- src/detection/media/media_linux.c | 2 +- src/detection/opencl/opencl.c | 5 ++--- src/detection/os/os_apple.m | 5 ++--- src/detection/packages/packages_linux.c | 3 ++- src/detection/wifi/wifi_bsd.c | 3 ++- src/detection/wifi/wifi_linux.c | 5 +++-- src/logo/option.c | 5 +++-- 9 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/detection/displayserver/linux/wayland.c b/src/detection/displayserver/linux/wayland.c index b5df76656..e58815c69 100644 --- a/src/detection/displayserver/linux/wayland.c +++ b/src/detection/displayserver/linux/wayland.c @@ -1,4 +1,5 @@ #include "displayserver_linux.h" +#include "util/stringUtils.h" #include #include @@ -105,9 +106,9 @@ static void waylandOutputGeometryListener(void *data, static void waylandOutputNameListener(void *data, FF_MAYBE_UNUSED struct wl_output *output, const char *name) { WaylandDisplay* display = data; - if(strncmp(name, "eDP-", strlen("eDP-")) == 0) + if(ffStrStartsWith(name, "eDP-")) display->type = FF_DISPLAY_TYPE_BUILTIN; - else if(strncmp(name, "HDMI-", strlen("HDMI-")) == 0 || strncmp(name, "DP-", strlen("DP-")) == 0) + else if(ffStrStartsWith(name, "HDMI-") || ffStrStartsWith(name, "DP-")) display->type = FF_DISPLAY_TYPE_EXTERNAL; } #endif diff --git a/src/detection/gamepad/gamepad_linux.c b/src/detection/gamepad/gamepad_linux.c index 3da034044..8bbd53939 100644 --- a/src/detection/gamepad/gamepad_linux.c +++ b/src/detection/gamepad/gamepad_linux.c @@ -1,5 +1,6 @@ #include "gamepad.h" #include "common/io/io.h" +#include "util/stringUtils.h" #include #include @@ -16,7 +17,7 @@ const char* ffDetectGamepad(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* struct dirent* entry; while((entry = readdir(dirp)) != NULL) { - if(strncmp(entry->d_name, "js", 2) != 0) + if(!ffStrStartsWith(entry->d_name, "js")) continue; if(!isdigit(entry->d_name[2])) continue; diff --git a/src/detection/media/media_linux.c b/src/detection/media/media_linux.c index 9615ee1a1..7ca21d30a 100644 --- a/src/detection/media/media_linux.c +++ b/src/detection/media/media_linux.c @@ -139,7 +139,7 @@ static void getBestBus(FFDBusData* data, FFMediaResult* result) const char* busName; data->lib->ffdbus_message_iter_get_basic(&arrayIterator, &busName); - if(strncmp(busName, FF_DBUS_MPRIS_PREFIX, sizeof(FF_DBUS_MPRIS_PREFIX) - 1) != 0) + if(!ffStrStartsWith(busName, FF_DBUS_MPRIS_PREFIX)) FF_DBUS_ITER_CONTINUE(data, &arrayIterator) if(getBusProperties(data, busName, result)) diff --git a/src/detection/opencl/opencl.c b/src/detection/opencl/opencl.c index 6eb2791d8..2e5949af9 100644 --- a/src/detection/opencl/opencl.c +++ b/src/detection/opencl/opencl.c @@ -46,9 +46,8 @@ static const char* openCLHandleData(OpenCLData* data, FFOpenCLResult* result) return "clGetDeviceInfo returned NULL or empty string"; const char* versionPretty = version; - const char* prefix = "OpenCL "; - if(strncasecmp(version, prefix, sizeof(prefix) - 1) == 0) - versionPretty = version + sizeof(prefix) - 1; + if(ffStrStartsWithIgnCase(version, "OpenCL ")) + versionPretty = version + strlen("OpenCL "); ffStrbufSetS(&result->version, versionPretty); ffStrbufEnsureFree(&result->device, 128); diff --git a/src/detection/os/os_apple.m b/src/detection/os/os_apple.m index 0b537d718..190c1482b 100644 --- a/src/detection/os/os_apple.m +++ b/src/detection/os/os_apple.m @@ -78,12 +78,11 @@ static void parseOSXSoftwareLicense(FFOSResult* os) char* line = NULL; size_t len = 0; const char* searchStr = "\\f0\\b SOFTWARE LICENSE AGREEMENT FOR macOS "; - const size_t searchLen = strlen(searchStr); while(getline(&line, &len, rtf) != EOF) { - if (strncmp(line, searchStr, searchLen) == 0) + if (ffStrStartsWith(line, searchStr)) { - ffStrbufAppendS(&os->codename, line + searchLen); + ffStrbufAppendS(&os->codename, line + strlen(searchStr)); ffStrbufTrimRight(&os->codename, '\n'); ffStrbufTrimRight(&os->codename, '\\'); break; diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index 81c1be565..b20c9177f 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -5,6 +5,7 @@ #include "common/properties.h" #include "common/settings.h" #include "detection/os/os.h" +#include "util/stringUtils.h" #include @@ -170,7 +171,7 @@ static uint32_t getXBPSImpl(FFstrbuf* baseDir) struct dirent *entry; while((entry = readdir(dir)) != NULL) { - if(entry->d_type != DT_REG || strncasecmp(entry->d_name, "pkgdb-", 6) != 0) + if(entry->d_type != DT_REG || !ffStrStartsWithIgnCase(entry->d_name, "pkgdb-")) continue; ffStrbufAppendC(baseDir, '/'); diff --git a/src/detection/wifi/wifi_bsd.c b/src/detection/wifi/wifi_bsd.c index 85c5bb166..31ba488a2 100644 --- a/src/detection/wifi/wifi_bsd.c +++ b/src/detection/wifi/wifi_bsd.c @@ -1,6 +1,7 @@ #include "wifi.h" #include "common/processing.h" #include "common/properties.h" +#include "util/stringUtils.h" #include #include @@ -14,7 +15,7 @@ const char* ffDetectWifi(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* res for(struct if_nameindex* i = infs; !(i->if_index == 0 && i->if_name == NULL); ++i) { - if (strncmp(i->if_name, "wlan", strlen("wlan")) != 0) continue; + if (!ffStrStartsWith(i->if_name, "wlan")) continue; FF_STRBUF_AUTO_DESTROY ifconfig = ffStrbufCreate(); if (ffProcessAppendStdOut(&ifconfig, (char* const[]) { "ifconfig", diff --git a/src/detection/wifi/wifi_linux.c b/src/detection/wifi/wifi_linux.c index 191e4ad6b..871b9be50 100644 --- a/src/detection/wifi/wifi_linux.c +++ b/src/detection/wifi/wifi_linux.c @@ -1,4 +1,5 @@ #include "wifi.h" +#include "util/stringUtils.h" #include #include @@ -257,8 +258,8 @@ static const char* detectWifiWithIoctls(FF_MAYBE_UNUSED const FFinstance* instan if(ioctl(sock, SIOCGIWNAME, &iwr) >= 0) { - if(strncasecmp(iwr.u.name, "IEEE ", 5) == 0) - ffStrbufSetS(&item->conn.protocol, iwr.u.name + 5); + if(ffStrStartsWithIgnCase(iwr.u.name, "IEEE ")) + ffStrbufSetS(&item->conn.protocol, iwr.u.name + strlen("IEEE ")); else ffStrbufSetS(&item->conn.protocol, iwr.u.name); } diff --git a/src/logo/option.c b/src/logo/option.c index 51da4c332..7882ad669 100644 --- a/src/logo/option.c +++ b/src/logo/option.c @@ -1,6 +1,7 @@ #include "logo/logo.h" #include "common/jsonconfig.h" +#include "util/stringUtils.h" void ffInitLogoOptions(FFLogoOptions* options) { @@ -63,10 +64,10 @@ logoType: {}, }); } - else if(strncasecmp(subKey, "color-", strlen("color-")) && key[13] != '\0' && key[14] == '\0') // matches "--logo-color-*" + else if(ffStrStartsWithIgnCase(subKey, "color-") && subKey[6] != '\0' && subKey[7] == '\0') // matches "--logo-color-*" { //Map the number to an array index, so that '1' -> 0, '2' -> 1, etc. - int index = (int)key[13] - 49; + int index = (int)subKey[6] - '0' - 1; //Match only --logo-color-[1-9] if(index < 0 || index >= FASTFETCH_LOGO_MAX_COLORS)