diff --git a/src/common/commandoption.c b/src/common/commandoption.c index e8a7e8001..7b0402b51 100644 --- a/src/common/commandoption.c +++ b/src/common/commandoption.c @@ -60,6 +60,9 @@ void ffPrepareCommandOption(FFdata* data) if(ffStrbufContainIgnCaseS(&data->structure, FF_CPUUSAGE_MODULE_NAME)) ffPrepareCPUUsage(); + if(ffStrbufContainIgnCaseS(&data->structure, FF_DISKIO_MODULE_NAME)) + ffPrepareDiskIO(&instance.config.diskIo); + if(ffStrbufContainIgnCaseS(&data->structure, FF_NETIO_MODULE_NAME)) ffPrepareNetIO(&instance.config.netIo); diff --git a/src/common/init.c b/src/common/init.c index 15b4391e8..eab996eaa 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -93,7 +93,7 @@ static void defaultConfig(void) ffInitDEOptions(&instance.config.de); ffInitDateTimeOptions(&instance.config.dateTime); ffInitDiskOptions(&instance.config.disk); - ffInitDiskIOOptions(&instance.config.diskio); + ffInitDiskIOOptions(&instance.config.diskIo); ffInitDisplayOptions(&instance.config.display); ffInitFontOptions(&instance.config.font); ffInitGPUOptions(&instance.config.gpu); @@ -308,7 +308,7 @@ static void destroyConfig(void) ffDestroyDEOptions(&instance.config.de); ffDestroyDateTimeOptions(&instance.config.dateTime); ffDestroyDiskOptions(&instance.config.disk); - ffDestroyDiskIOOptions(&instance.config.diskio); + ffDestroyDiskIOOptions(&instance.config.diskIo); ffDestroyDisplayOptions(&instance.config.display); ffDestroyFontOptions(&instance.config.font); ffDestroyGPUOptions(&instance.config.gpu); diff --git a/src/common/jsonconfig.c b/src/common/jsonconfig.c index 6d8fee329..26dd884d6 100644 --- a/src/common/jsonconfig.c +++ b/src/common/jsonconfig.c @@ -112,6 +112,14 @@ static void prepareModuleJsonObject(const char* type, yyjson_val* module) ffPrepareCPUUsage(); break; } + case 'd': case 'D': { + if (ffStrEqualsIgnCase(type, FF_DISKIO_MODULE_NAME)) + { + if (module) ffParseDiskIOJsonObject(&cfg->diskIo, module); + ffPrepareDiskIO(&cfg->diskIo); + } + break; + } case 'n': case 'N': { if (ffStrEqualsIgnCase(type, FF_NETIO_MODULE_NAME)) { diff --git a/src/common/modules.c b/src/common/modules.c index 3d0cf284a..216470144 100644 --- a/src/common/modules.c +++ b/src/common/modules.c @@ -30,7 +30,7 @@ static FFModuleBaseInfo* D[] = { (void*) &instance.config.de, (void*) &instance.config.display, (void*) &instance.config.disk, - (void*) &instance.config.diskio, + (void*) &instance.config.diskIo, NULL, }; diff --git a/src/detection/diskio/diskio_apple.c b/src/detection/diskio/diskio_apple.c index 0bdd7a515..89f8ed3cf 100644 --- a/src/detection/diskio/diskio_apple.c +++ b/src/detection/diskio/diskio_apple.c @@ -30,6 +30,9 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options) if (IORegistryEntryGetName(registryEntry, deviceName) != KERN_SUCCESS) continue; + if (options->namePrefix.length && strncmp(deviceName, options->namePrefix.chars, options->namePrefix.length) != 0) + continue; + FF_IOOBJECT_AUTO_RELEASE io_registry_entry_t entryDriver = 0; if (IORegistryEntryGetParentEntry(entryPartition, kIOServicePlane, &entryDriver) != KERN_SUCCESS) continue; diff --git a/src/detection/diskio/diskio_linux.c b/src/detection/diskio/diskio_linux.c index 18db09453..fdd73c8f7 100644 --- a/src/detection/diskio/diskio_linux.c +++ b/src/detection/diskio/diskio_linux.c @@ -82,6 +82,14 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options) } ffStrbufReplaceAllC(&device->name, '_', ' '); + if (options->namePrefix.length && !ffStrbufStartsWith(&device->name, &options->namePrefix)) + { + ffStrbufDestroy(&device->name); + ffStrbufDestroy(&device->type); + result->length--; + continue; + } + ffStrbufInitS(&device->devPath, pathDev1); device->bytesRead = sectorRead * 512; device->bytesWritten = sectorWritten * 512; diff --git a/src/detection/diskio/diskio_windows.c b/src/detection/diskio/diskio_windows.c index 2a894b4d4..b535e8299 100644 --- a/src/detection/diskio/diskio_windows.c +++ b/src/detection/diskio/diskio_windows.c @@ -45,6 +45,14 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options) else ffStrbufSetWS(&device->name, szDevice); + if (options->namePrefix.length && !ffStrbufStartsWith(&device->name, &options->namePrefix)) + { + ffStrbufDestroy(&device->name); + ffStrbufDestroy(&device->type); + result->length--; + continue; + } + ffStrbufInitWS(&device->devPath, szDevice); device->bytesRead = (uint64_t) diskPerformance.BytesRead.QuadPart; device->readCount = (uint64_t) diskPerformance.ReadCount; diff --git a/src/fastfetch.h b/src/fastfetch.h index 04d19970e..cbb307a15 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -99,7 +99,7 @@ typedef struct FFconfig FFDEOptions de; FFDateTimeOptions dateTime; FFDiskOptions disk; - FFDiskIOOptions diskio; + FFDiskIOOptions diskIo; FFDisplayOptions display; FFFontOptions font; FFGPUOptions gpu;