Chore: fix a lot code smell

This commit is contained in:
李通洲
2025-03-25 20:03:09 +08:00
parent bf17f2b4b9
commit 7562e05123
23 changed files with 83 additions and 45 deletions
+1 -1
View File
@@ -92,7 +92,7 @@ const char* ffDetectBattery(FF_MAYBE_UNUSED FFBatteryOptions* options, FFlist* r
else if (dischargeRate)
{
ffStrbufAppendS(&battery->status, "Discharging, ");
battery->timeRemaining = (int32_t)((double)curr / dischargeRate * 3600)
battery->timeRemaining = (int32_t)((double)curr / dischargeRate * 3600);
}
if (critical)
ffStrbufAppendS(&battery->status, "Critical, ");
+1 -1
View File
@@ -25,7 +25,7 @@ const char* ffDetectBios(FFBiosResult* result)
{
ffStrbufSetStatic(&result->type,
ffPathExists("/dev/efi" /*efidev*/, FF_PATHTYPE_FILE) ||
ffPathExists("/boot/efi/efi/" /*efi partition*/, FF_PATHTYPE_DIRECTORY)
ffPathExists("/boot/efi/efi/" /*efi partition. Note /boot/efi exists on BIOS system*/, FF_PATHTYPE_DIRECTORY)
? "UEFI" : "BIOS");
}
}
+1 -1
View File
@@ -4,7 +4,7 @@
#include <stdlib.h>
const char *ffDetectBios(FFBiosResult *bios)
const char* ffDetectBios(FFBiosResult* bios)
{
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/bios_date", "/sys/class/dmi/id/bios_date", &bios->date);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/bios_release", "/sys/class/dmi/id/bios_release", &bios->release);
+2 -5
View File
@@ -94,12 +94,9 @@ const char* ffDetectBios(FFBiosResult* bios)
default: break;
}
}
#elif __HAIKU__
// Currently SMBIOS detection is supported in legency BIOS only
#elif __HAIKU__ || __OpenBSD__
// Currently SMBIOS detection is supported in legancy BIOS only
ffStrbufSetStatic(&bios->type, "BIOS");
#elif __OpenBSD__
FF_AUTO_CLOSE_FD int fd = open("/dev/efi", O_RDONLY);
ffStrbufSetStatic(&bios->type, fd >= 0 ? "UEFI" : "BIOS");
#endif
return NULL;
+1 -1
View File
@@ -21,5 +21,5 @@ const char* ffDetectBluetooth(FF_MAYBE_UNUSED FFBluetoothOptions* options, FF_MA
if (bt_devenum((void*) enumDev, devices) < 0)
return "bt_devenum() failed";
return 0;
return NULL;
}
@@ -3,12 +3,12 @@
#import <IOBluetooth/IOBluetooth.h>
// For some reason the official declaration of IOBluetoothHostController don't include property `controllers`
// For some reason the official declaration of IOBluetoothHostController doesn't include property `controllers`
@interface IOBluetoothHostController()
+ (id)controllers;
@end
const char* ffDetectBluetoothRadio(FFlist* devices /* FFBluetoothResult */)
const char* ffDetectBluetoothRadio(FFlist* devices /* FFBluetoothRadioResult */)
{
NSArray<IOBluetoothHostController*>* ctrls = IOBluetoothHostController.controllers;
if(!ctrls)
@@ -83,7 +83,7 @@ const char* ffDetectBluetoothRadio(FFlist* devices /* FFBluetoothRadioResult */)
ffStrbufInitS(&device->name, blri.localInfo.name);
BLUETOOTH_ADDRESS_STRUCT addr = { .ullLong = blri.localInfo.address };
ffStrbufInitF(&device->address, "%02x:%02x:%02x:%02x:%02x:%02x",
ffStrbufInitF(&device->address, "%02X:%02X:%02X:%02X:%02X:%02X",
addr.rgBytes[5],
addr.rgBytes[4],
addr.rgBytes[3],
@@ -97,6 +97,8 @@ const char* ffDetectBluetoothRadio(FFlist* devices /* FFBluetoothRadioResult */)
device->enabled = true;
device->connectable = ffBluetoothIsConnectable(hRadio);
device->discoverable = ffBluetoothIsDiscoverable(hRadio);
CloseHandle(hRadio);
} while (ffBluetoothFindNextRadio(hFind, &hRadio));
ffBluetoothFindRadioClose(hFind);
+2 -1
View File
@@ -1,11 +1,12 @@
#include "bootmgr.h"
#include "efi_helper.h"
#include "common/io/io.h"
#include <windows.h>
const char* enablePrivilege(const wchar_t* privilege)
{
HANDLE token;
FF_AUTO_CLOSE_FD HANDLE token = NULL;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token))
return "OpenProcessToken() failed";
+24 -13
View File
@@ -8,24 +8,35 @@
const char* ffDetectBrightness(FF_MAYBE_UNUSED FFBrightnessOptions* options, FFlist* result)
{
FF_AUTO_CLOSE_FD int devfd = open("/dev/ttyC0", O_RDONLY);
char path[] = "/dev/ttyCX";
for (char i = '0'; i <= '9'; ++i) {
path[strlen("/dev/ttyC")] = i;
if (devfd < 0) return "open(dev/ttyC0, O_RDONLY) failed";
FF_AUTO_CLOSE_FD int devfd = open(path, O_RDONLY);
struct wsdisplay_param param = {
.param = WSDISPLAYIO_PARAM_BRIGHTNESS,
};
if (devfd < 0) {
if (errno == EACCES && i == '0')
return "Permission denied when opening tty device";
if (errno == ENOENT)
break;
continue;
}
if (ioctl(devfd, WSDISPLAYIO_GETPARAM, &param) < 0)
return "ioctl(WSDISPLAYIO_GETPARAM) failed";
struct wsdisplay_param param = {
.param = WSDISPLAYIO_PARAM_BRIGHTNESS,
};
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
ffStrbufInitStatic(&brightness->name, "wsdisplay");
if (ioctl(devfd, WSDISPLAYIO_GETPARAM, &param) < 0)
continue;
brightness->max = param.max;
brightness->min = param.min;
brightness->current = param.curval;
brightness->builtin = true;
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
ffStrbufInitF(&brightness->name, "ttyC%c", i);
brightness->max = param.max;
brightness->min = param.min;
brightness->current = param.curval;
brightness->builtin = true;
}
return NULL;
}
@@ -43,6 +43,7 @@ static const char* detectWithDdcci(const FFDisplayServerResult* displayServer, F
FF_LIBRARY_LOAD(dxva2, "dlopen dxva2" FF_LIBRARY_EXTENSION " failed", "dxva2" FF_LIBRARY_EXTENSION, 1)
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(dxva2, GetPhysicalMonitorsFromHMONITOR)
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(dxva2, GetMonitorBrightness)
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(dxva2, DestroyPhysicalMonitor)
FF_LIST_FOR_EACH(FFDisplayResult, display, displayServer->displays)
{
@@ -64,6 +65,8 @@ static const char* detectWithDdcci(const FFDisplayServerResult* displayServer, F
brightness->current = curr;
brightness->builtin = false;
}
ffDestroyPhysicalMonitor(physicalMonitor.hPhysicalMonitor);
}
}
return NULL;
+3
View File
@@ -12,7 +12,10 @@ static const char* enumerateDevices(FFBtrfsResult* item, int dfd, FFstrbuf* buff
FF_AUTO_CLOSE_DIR DIR* dirp = fdopendir(subfd);
if(dirp == NULL)
{
close(subfd);
return "fdopendir(\"/sys/fs/btrfs/UUID/devices\") == NULL";
}
struct dirent* entry;
while ((entry = readdir(dirp)) != NULL)
+1 -1
View File
@@ -37,7 +37,7 @@ const char* ffDetectCamera(FFlist* result)
{
case V4L2_COLORSPACE_SMPTE170M: ffStrbufInitStatic(&camera->colorspace, "SMPTE 170M"); break;
case V4L2_COLORSPACE_SMPTE240M: ffStrbufInitStatic(&camera->colorspace, "SMPTE 240M"); break;
case V4L2_COLORSPACE_BT878: ffStrbufInitStatic(&camera->colorspace, "BT.808"); break;
case V4L2_COLORSPACE_BT878: ffStrbufInitStatic(&camera->colorspace, "BT.878"); break;
case V4L2_COLORSPACE_470_SYSTEM_M: ffStrbufInitStatic(&camera->colorspace, "NTSC"); break;
case V4L2_COLORSPACE_470_SYSTEM_BG: ffStrbufInitStatic(&camera->colorspace, "EBU 3213"); break;
case V4L2_COLORSPACE_JPEG: ffStrbufInitStatic(&camera->colorspace, "JPEG"); break;
+5 -3
View File
@@ -48,7 +48,7 @@ const char* ffDetectCamera(FF_MAYBE_UNUSED FFlist* result)
for (uint32_t i = 0; i < count; i++)
{
IMFActivate* device = devices[i];
IMFActivate* FF_AUTO_RELEASE_COM_OBJECT device = devices[i];
wchar_t buffer[256];
uint32_t length = 0;
@@ -90,9 +90,11 @@ const char* ffDetectCamera(FF_MAYBE_UNUSED FFlist* result)
continue;
// Assume first type is the maximum resolution
IMFMediaType* FF_AUTO_RELEASE_COM_OBJECT type = NULL;
IMFMediaType* type = NULL;
for (DWORD idx = 0; SUCCEEDED(handler->GetMediaTypeByIndex(idx, &type)); ++idx)
{
on_scope_exit destroyType([=] { type->Release(); });
GUID majorType;
if (FAILED(type->GetMajorType(&majorType)) || majorType != MFMediaType_Video)
continue;
@@ -123,7 +125,7 @@ const char* ffDetectCamera(FF_MAYBE_UNUSED FFlist* result)
}
}
CoTaskMemFree(devices);
if (devices) CoTaskMemFree(devices);
return nullptr;
}
+1
View File
@@ -34,6 +34,7 @@ const char* ffChassisTypeToString(uint32_t type)
case 0x1A: return "Compact PCI";
case 0x1B: return "Advanced TCA";
case 0x1C: return "Blade";
case 0x1D: return "Mobile Workstation";
case 0x1E: return "Tablet";
case 0x1F: return "Convertible";
case 0x20: return "Detachable";
+3 -2
View File
@@ -17,10 +17,11 @@ const char* ffDetectChassis(FFChassisResult* result)
if (ffStrbufStartsWithS(&host.name, "MacBook "))
ffStrbufSetStatic(&result->type, "Laptop");
else if (ffStrbufStartsWithS(&host.name, "Mac mini "))
else if (ffStrbufStartsWithS(&host.name, "Mac mini ") ||
ffStrbufStartsWithS(&host.name, "Mac Studio "))
ffStrbufSetStatic(&result->type, "Mini PC");
else if (ffStrbufStartsWithS(&host.name, "iMac "))
ffStrbufSetStatic(&result->type, "All-in-One");
ffStrbufSetStatic(&result->type, "All in One");
else
ffStrbufSetStatic(&result->type, "Desktop");
-2
View File
@@ -430,7 +430,6 @@ FF_MAYBE_UNUSED static uint16_t getPackageCount(FFstrbuf* cpuinfo)
while ((p = memmem(p, cpuinfo->length - (uint32_t) (p - cpuinfo->chars), "\nphysical id\t:", strlen("\nphysical id\t:"))))
{
if (!p) break;
p += strlen("\nphysical id\t:");
char* pend;
unsigned long id = strtoul(p, &pend, 10);
@@ -586,7 +585,6 @@ FF_MAYBE_UNUSED static uint16_t getLoongarchPropCount(FFstrbuf* cpuinfo, const c
while ((p = memmem(p, cpuinfo->length - (uint32_t) (p - cpuinfo->chars), key, keylen)))
{
if (!p) break;
p += keylen;
char* pend;
unsigned long id = strtoul(p, &pend, 10);
+8 -1
View File
@@ -9,12 +9,19 @@
#include <unistd.h>
#include <fcntl.h>
static void freePropDict(prop_dictionary_t* pdict)
{
assert(pdict != NULL);
if (*pdict == NULL) return;
prop_object_release(*pdict);
}
static const char* detectCpuTemp(double* current)
{
FF_AUTO_CLOSE_FD int fd = open(_PATH_SYSMON, O_RDONLY);
if (fd < 0) return "open(_PATH_SYSMON, O_RDONLY) failed";
prop_dictionary_t root = NULL;
__attribute__((__cleanup__(freePropDict))) prop_dictionary_t root = NULL;
if (prop_dictionary_recv_ioctl(fd, ENVSYS_GETDICTIONARY, &root) < 0)
return "prop_dictionary_recv_ioctl(ENVSYS_GETDICTIONARY) failed";
+8 -6
View File
@@ -23,22 +23,24 @@ const char* ffDetectCPUImpl(FF_MAYBE_UNUSED const FFCPUOptions* options, FFCPURe
{
kstat_named_t* kn = kstat_data_lookup(ks, "brand");
ffStrbufSetNS(&cpu->name, KSTAT_NAMED_STR_BUFLEN(kn) - 1, KSTAT_NAMED_STR_PTR(kn));
if (kn) ffStrbufSetNS(&cpu->name, KSTAT_NAMED_STR_BUFLEN(kn) - 1, KSTAT_NAMED_STR_PTR(kn));
}
{
kstat_named_t* kn = kstat_data_lookup(ks, "vendor_id");
ffStrbufSetNS(&cpu->vendor, KSTAT_NAMED_STR_BUFLEN(kn) - 1, KSTAT_NAMED_STR_PTR(kn));
if (kn) ffStrbufSetNS(&cpu->vendor, KSTAT_NAMED_STR_BUFLEN(kn) - 1, KSTAT_NAMED_STR_PTR(kn));
}
ffCPUDetectSpeedByCpuid(cpu);
kstat_named_t* kn = kstat_data_lookup(ks, "clock_MHz");
if (kn->value.ui32 > cpu->frequencyBase)
cpu->frequencyBase = kn->value.ui32;
{
kstat_named_t* kn = kstat_data_lookup(ks, "clock_MHz");
if (kn && kn->value.ui32 > cpu->frequencyBase)
cpu->frequencyBase = kn->value.ui32;
}
ks = kstat_lookup(kc, "unix", -1, "system_misc");
if (ks && kstat_read(kc, ks, NULL) >= 0)
{
kstat_named_t* kn = kstat_data_lookup(ks, "ncpus");
cpu->coresLogical = cpu->coresPhysical = cpu->coresOnline = (uint16_t) kn->value.ui32;
if (kn) cpu->coresLogical = cpu->coresPhysical = cpu->coresOnline = (uint16_t) kn->value.ui32;
}
return NULL;
+7 -3
View File
@@ -128,9 +128,13 @@ static const char* detectByRegistry(FFCPUResult* cpu)
if (cpu->coresLogical == 0)
{
DWORD cores;
if (RegQueryInfoKeyW(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor", NULL, NULL, &cores, NULL, NULL, NULL, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
cpu->coresOnline = cpu->coresPhysical = cpu->coresLogical = (uint16_t) cores;
FF_HKEY_AUTO_DESTROY hProcsKey = NULL;
if (ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor", &hProcsKey, NULL))
{
uint32_t cores;
if (ffRegGetNSubKeys(hProcsKey, &cores, NULL))
cpu->coresOnline = cpu->coresPhysical = cpu->coresLogical = (uint16_t) cores;
}
}
uint32_t mhz;
+2
View File
@@ -26,6 +26,8 @@ const char* detectThermalTemp(double* current, double* critical)
else
*critical = 0.0/0.0;
}
return NULL;
}
return "No WMI result returned";
+1 -1
View File
@@ -31,7 +31,7 @@ const char* ffDetectCPUCache(FFCPUCacheResult* result)
case CacheInstruction: cacheType = FF_CPU_CACHE_TYPE_INSTRUCTION; break;
case CacheData: cacheType = FF_CPU_CACHE_TYPE_DATA; break;
case CacheTrace: cacheType = FF_CPU_CACHE_TYPE_TRACE; break;
default: __builtin_unreachable(); break;
default: break;
}
ffCPUCacheAddItem(result, ptr->Cache.Level, ptr->Cache.CacheSize, ptr->Cache.LineSize, cacheType);
}
+3
View File
@@ -3,6 +3,7 @@
#include <mach/processor_info.h>
#include <mach/mach_host.h>
#include <mach/vm_map.h>
const char* ffGetCpuUsageInfo(FFlist* cpuTimes)
{
@@ -28,5 +29,7 @@ const char* ffGetCpuUsageInfo(FFlist* cpuTimes)
.totalAll = (uint64_t)total,
};
}
vm_deallocate(mach_task_self(), (vm_address_t) cpuInfo, numCpuInfo * sizeof(integer_t));
return NULL;
}
+1
View File
@@ -16,6 +16,7 @@ const char* ffDetectWMPlugin(FFstrbuf* pluginName)
FF_AUTO_FREE struct kinfo_proc* processes = ffSysctlGetData(request, requestLength, &length);
if(processes == NULL)
return "sysctl(CTL_KERN, KERN_PROC, KERN_PROC_ALL) failed";
assert(length % sizeof(struct kinfo_proc) == 0);
for(size_t i = 0; i < length / sizeof(struct kinfo_proc); i++)
{