From eea74b085bc0d226a846ca47a56c38ad949bdbd5 Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Fri, 7 May 2021 17:10:22 +0200 Subject: [PATCH] prettier GPU output --- src/fastfetch.c | 5 +++-- src/modules/gpu.c | 16 +++++++++++++--- src/util/FFstrbuf.c | 12 ++++++++++++ src/util/FFstrbuf.h | 2 ++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/fastfetch.c b/src/fastfetch.c index 774d83214..e3af4c776 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -407,10 +407,11 @@ static inline void printCommandHelp(const char* command) } else if(strcasecmp(command, "gpu-format") == 0) { - constructAndPrintCommandHelpFormat("gpu", "{2} {3}", 3, + constructAndPrintCommandHelpFormat("gpu", "{2} {4}", 4, "GPU vendor", "GPU vendor pretty", - "GPU name" + "GPU name", + "GPU name pretty" ); } else if(strcasecmp(command, "memory-format") == 0) diff --git a/src/modules/gpu.c b/src/modules/gpu.c index 5faf5e4f7..b1a087d0a 100644 --- a/src/modules/gpu.c +++ b/src/modules/gpu.c @@ -5,11 +5,12 @@ #include #define FF_GPU_MODULE_NAME "GPU" -#define FF_GPU_NUM_FORMAT_ARGS 3 +#define FF_GPU_NUM_FORMAT_ARGS 4 static void handleGPU(FFinstance* instance, struct pci_access* pacc, struct pci_dev* dev, FFcache* cache, uint8_t counter, char*(*ffpci_lookup_name)(struct pci_access*, char*, int, int, ...)) { char vendor[512]; + vendor[0] = '\0'; ffpci_lookup_name(pacc, vendor, sizeof(vendor), PCI_LOOKUP_VENDOR, dev->vendor_id, dev->device_id); const char* vendorPretty; @@ -23,20 +24,29 @@ static void handleGPU(FFinstance* instance, struct pci_access* pacc, struct pci_ vendorPretty = vendor; char name[512]; + name[0] = '\0'; ffpci_lookup_name(pacc, name, sizeof(name), PCI_LOOKUP_DEVICE, dev->vendor_id, dev->device_id); + FFstrbuf namePretty; + ffStrbufInitA(&namePretty, 512); + ffStrbufAppendS(&namePretty, name); + ffStrbufSubstrBeforeLastC(&namePretty, ']'); + ffStrbufSubstrAfterFirstC(&namePretty, '['); + FFstrbuf gpu; ffStrbufInitA(&gpu, 128); - ffStrbufSetF(&gpu, "%s %s", vendorPretty, name); + ffStrbufSetF(&gpu, "%s %s", vendorPretty, namePretty.chars); ffPrintAndAppendToCache(instance, FF_GPU_MODULE_NAME, counter, &instance->config.gpuKey, cache, &gpu, &instance->config.gpuFormat, FF_GPU_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, vendor}, {FF_FORMAT_ARG_TYPE_STRING, vendorPretty}, - {FF_FORMAT_ARG_TYPE_STRING, name} + {FF_FORMAT_ARG_TYPE_STRING, name}, + {FF_FORMAT_ARG_TYPE_STRBUF, &namePretty} }); ffStrbufDestroy(&gpu); + ffStrbufDestroy(&namePretty); } void ffPrintGPU(FFinstance* instance) diff --git a/src/util/FFstrbuf.c b/src/util/FFstrbuf.c index 6d7b2d13c..5512957c3 100644 --- a/src/util/FFstrbuf.c +++ b/src/util/FFstrbuf.c @@ -417,6 +417,11 @@ void ffStrbufSubstrBeforeFirstC(FFstrbuf* strbuf, const char c) ffStrbufSubstrBefore(strbuf, ffStrbufFirstIndexC(strbuf, c)); } +void ffStrbufSubstrBeforeLastC(FFstrbuf* strbuf, const char c) +{ + ffStrbufSubstrBefore(strbuf, ffStrbufLastIndexC(strbuf, c)); +} + void ffStrbufSubstrAfter(FFstrbuf* strbuf, uint32_t index) { if(index >= strbuf->length) @@ -430,6 +435,13 @@ void ffStrbufSubstrAfter(FFstrbuf* strbuf, uint32_t index) strbuf->chars[strbuf->length] = '\0'; } +void ffStrbufSubstrAfterFirstC(FFstrbuf* strbuf, const char c) +{ + uint32_t index = ffStrbufFirstIndexC(strbuf, c); + if(index < strbuf->length) + ffStrbufSubstrAfter(strbuf, index); +} + void ffStrbufSubstrAfterLastC(FFstrbuf* strbuf, const char c) { uint32_t index = ffStrbufLastIndexC(strbuf, c); diff --git a/src/util/FFstrbuf.h b/src/util/FFstrbuf.h index 5a8985427..6d197c218 100644 --- a/src/util/FFstrbuf.h +++ b/src/util/FFstrbuf.h @@ -78,7 +78,9 @@ uint32_t ffStrbufLastIndexC(const FFstrbuf* strbuf, const char c); void ffStrbufSubstrBefore(FFstrbuf* strbuf, uint32_t index); void ffStrbufSubstrBeforeFirstC(FFstrbuf* strbuf, const char c); +void ffStrbufSubstrBeforeLastC(FFstrbuf* strbuf, const char c); void ffStrbufSubstrAfter(FFstrbuf* strbuf, uint32_t index); +void ffStrbufSubstrAfterFirstC(FFstrbuf* strbuf, const char c); void ffStrbufSubstrAfterLastC(FFstrbuf* strbuf, const char c); bool ffStrbufStartsWith(const FFstrbuf* strbuf, const FFstrbuf* start);