Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fastfetch for openSUSE:Factory 
checked in at 2024-02-13 22:42:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fastfetch (Old)
 and      /work/SRC/openSUSE:Factory/.fastfetch.new.1815 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fastfetch"

Tue Feb 13 22:42:49 2024 rev:15 rq:1146250 version:2.8.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/fastfetch/fastfetch.changes      2024-02-11 
15:45:23.854294098 +0100
+++ /work/SRC/openSUSE:Factory/.fastfetch.new.1815/fastfetch.changes    
2024-02-13 22:43:16.734208493 +0100
@@ -1,0 +2,7 @@
+Mon Feb 12 17:17:12 UTC 2024 - Gordon Leung <piratec...@protonmail.com>
+
+- update to version 2.8.3:
+  Bugfixes:
+    * Fix GPU name detection for AMD graphic cards (GPU, Linux / FreeBSD)
+
+-------------------------------------------------------------------

Old:
----
  fastfetch-2.8.0.tar.gz

New:
----
  fastfetch-2.8.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fastfetch.spec ++++++
--- /var/tmp/diff_new_pack.hBdx9G/_old  2024-02-13 22:43:17.146223322 +0100
+++ /var/tmp/diff_new_pack.hBdx9G/_new  2024-02-13 22:43:17.146223322 +0100
@@ -17,13 +17,13 @@
 
 
 Name:           fastfetch
-Version:        2.8.0
+Version:        2.8.3
 Release:        0
-Summary:        Neofetch-like tool written in C
+Summary:        Neofetch-like tool written mostly in C
 License:        MIT
 Group:          Productivity/Text/Utilities
-URL:            https://github.com/LinusDierheimer/fastfetch
-Source:         
https://github.com/LinusDierheimer/fastfetch/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
+URL:            https://github.com/fastfetch-cli/fastfetch
+Source:         
https://github.com/fastfetch-cli/fastfetch/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
 BuildRequires:  Mesa-devel
 BuildRequires:  cmake
 BuildRequires:  gcc
@@ -58,7 +58,7 @@
 
 %description
 Fastfetch is a neofetch-like tool for fetching system information and
-displaying them in a pretty way.  It is written in pure C, with performance and
+displaying them in a pretty way.  It is written mainly in C, with performance 
and
 customizability in mind. Currently Linux, Android, FreeBSD,
 MacOS and Windows 7+ are supported.
 

++++++ fastfetch-2.8.0.tar.gz -> fastfetch-2.8.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/.github/workflows/ci.yml 
new/fastfetch-2.8.3/.github/workflows/ci.yml
--- old/fastfetch-2.8.0/.github/workflows/ci.yml        2024-02-10 
05:02:58.000000000 +0100
+++ new/fastfetch-2.8.3/.github/workflows/ci.yml        2024-02-12 
03:59:30.000000000 +0100
@@ -371,16 +371,16 @@
         run: ctest
 
       - name: create zip archive
-        run: 7z a -tzip -mx9 -bd -y fastfetch-$(./fastfetch 
--version-raw)-windows-amd64.zip *.dll fastfetch.exe flashfetch.exe presets
+        run: 7z a -tzip -mx9 -bd -y fastfetch-windows-amd64.zip *.dll 
fastfetch.exe flashfetch.exe presets
 
       - name: create 7z archive
-        run: 7z a -t7z -mx9 -bd -y fastfetch-$(./fastfetch 
--version-raw)-windows-amd64.7z *.dll fastfetch.exe flashfetch.exe presets
+        run: 7z a -t7z -mx9 -bd -y fastfetch-windows-amd64.7z *.dll 
fastfetch.exe flashfetch.exe presets
 
       - name: upload artifacts
         uses: actions/upload-artifact@v4
         with:
           name: fastfetch-windows-amd64
-          path: ./fastfetch-*-windows-amd64.*
+          path: ./fastfetch-windows-amd64.*
 
   windows-i686:
     name: Windows-i686
@@ -438,16 +438,16 @@
         run: ctest
 
       - name: create zip archive
-        run: 7z a -tzip -mx9 -bd -y fastfetch-$(./fastfetch 
--version-raw)-windows-i686.zip *.dll fastfetch.exe flashfetch.exe presets
+        run: 7z a -tzip -mx9 -bd -y fastfetch-windows-i686.zip *.dll 
fastfetch.exe flashfetch.exe presets
 
       - name: create 7z archive
-        run: 7z a -t7z -mx9 -bd -y fastfetch-$(./fastfetch 
--version-raw)-windows-i686.7z *.dll fastfetch.exe flashfetch.exe presets
+        run: 7z a -t7z -mx9 -bd -y fastfetch-windows-i686.7z *.dll 
fastfetch.exe flashfetch.exe presets
 
       - name: upload artifacts
         uses: actions/upload-artifact@v4
         with:
           name: fastfetch-windows-i686
-          path: ./fastfetch-*-windows-i686.*
+          path: ./fastfetch-windows-i686.*
 
   release:
     if: github.event_name == 'push' && github.ref == 'refs/heads/master' && 
github.repository == 'fastfetch-cli/fastfetch'
@@ -473,6 +473,11 @@
         if: needs.linux-amd64.outputs.ffversion != 
steps.get_version_release.outputs.release
         uses: actions/download-artifact@v4
 
+      - name: rm old artifacts
+        if: needs.linux-amd64.outputs.ffversion != 
steps.get_version_release.outputs.release
+        run: |
+          rm -rf fastfetch-*-old-*
+
       - name: create release
         if: needs.linux-amd64.outputs.ffversion != 
steps.get_version_release.outputs.release
         uses: ncipollo/release-action@v1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/CHANGELOG.md 
new/fastfetch-2.8.3/CHANGELOG.md
--- old/fastfetch-2.8.0/CHANGELOG.md    2024-02-10 05:02:58.000000000 +0100
+++ new/fastfetch-2.8.3/CHANGELOG.md    2024-02-12 03:59:30.000000000 +0100
@@ -1,4 +1,9 @@
-# 2.8.0
+# 2.8.3
+
+Bugfixes:
+* Fix GPU name detection for AMD graphic cards (GPU, Linux / FreeBSD)
+
+# 2.8.2
 
 Changes:
 * The linux binaries are now built with glibc 2.35, which means they no longer 
support Debian 11 and Ubuntu 20.04. Users using these distros may download the 
artifacts `fastfetch-linux-old` from GitHub Actions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/CMakeLists.txt 
new/fastfetch-2.8.3/CMakeLists.txt
--- old/fastfetch-2.8.0/CMakeLists.txt  2024-02-10 05:02:58.000000000 +0100
+++ new/fastfetch-2.8.3/CMakeLists.txt  2024-02-12 03:59:30.000000000 +0100
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT 
libs & project homepage url
 
 project(fastfetch
-    VERSION 2.8.0
+    VERSION 2.8.3
     LANGUAGES C
     DESCRIPTION "Fast neofetch-like system information tool"
     HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch";
@@ -401,6 +401,7 @@
         src/detection/displayserver/linux/xlib.c
         src/detection/font/font_linux.c
         src/detection/gpu/gpu_linux.c
+        src/detection/gpu/gpu_pci.c
         src/detection/gtk_qt/gtk.c
         src/detection/host/host_linux.c
         src/detection/icons/icons_linux.c
@@ -518,6 +519,7 @@
         src/detection/displayserver/linux/xlib.c
         src/detection/font/font_linux.c
         src/detection/gpu/gpu_bsd.c
+        src/detection/gpu/gpu_pci.c
         src/detection/gtk_qt/gtk.c
         src/detection/host/host_bsd.c
         src/detection/lm/lm_linux.c
@@ -1107,6 +1109,11 @@
 ##################
 
 set(CPACK_GENERATOR "TGZ;ZIP")
+if(APPLE)
+    string(TOLOWER "${CMAKE_PROJECT_NAME}-macos-universal" 
CPACK_PACKAGE_FILE_NAME)
+else() # We don't use this in Windows
+    string(TOLOWER 
"${CMAKE_PROJECT_NAME}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" 
CPACK_PACKAGE_FILE_NAME)
+endif()
 
 if(LINUX)
     set(CPACK_GENERATOR "${CPACK_GENERATOR};DEB;RPM")
@@ -1123,7 +1130,7 @@
 set(CPACK_PACKAGE_CONTACT "Linus Dierheimer <li...@dierheimer.de>")
 set(CPACK_PACKAGE_DESCRIPTION "\
 fastfetch is a neofetch-like tool for fetching system information and 
displaying them in a pretty way. \
-It is written in c to achieve much better performance.\
+It is written mostly in C to achieve much better performance.\
 ")
 
 include(CPack)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/README.md 
new/fastfetch-2.8.3/README.md
--- old/fastfetch-2.8.0/README.md       2024-02-10 05:02:58.000000000 +0100
+++ new/fastfetch-2.8.3/README.md       2024-02-12 03:59:30.000000000 +0100
@@ -28,11 +28,13 @@
 ### Linux
 
 * Debian / Ubuntu: Download `fastfetch-<version>-Linux.deb` from [Github 
release page](https://github.com/fastfetch-cli/fastfetch/releases/latest) and 
`dpkg -i fastfetch-<version>-Linux.deb`
-* Arch Linux: `sudo pacman -S fastfetch`
+* Arch Linux: `sudo pacman -S fastfetch`. You can also find fastfetch [on the 
AUR](https://aur.archlinux.org/packages/fastfetch-git).
 * Fedora: `sudo dnf install fastfetch`
 * Gentoo: `sudo emerge --ask app-misc/fastfetch`
+* Alpine: `apk add --upgrade fastfetch`
 * NixOS: `sudo nix-shell -p fastfetch`
 * openSUSE: `sudo zypper install fastfetch`
+* ALT Linux: `sudo apt-get install fastfetch`
 
 Replace sudo with doas depending on what you use.
 
@@ -40,8 +42,14 @@
 
 ### macOS
 
+...via [HomeBrew](https://brew.sh):
+
 `brew install fastfetch`
 
+...via [MacPorts](https://www.macports.org):
+
+`sudo port install fastfetch`
+
 ### Windows
 
 `scoop install fastfetch`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/src/detection/gpu/gpu.c 
new/fastfetch-2.8.3/src/detection/gpu/gpu.c
--- old/fastfetch-2.8.0/src/detection/gpu/gpu.c 2024-02-10 05:02:58.000000000 
+0100
+++ new/fastfetch-2.8.3/src/detection/gpu/gpu.c 2024-02-12 03:59:30.000000000 
+0100
@@ -118,75 +118,3 @@
 
     return "GPU detection failed";
 }
-
-#ifndef _WIN32
-void ffGPUParsePciIds(FFstrbuf* content, uint8_t subclass, uint16_t vendor, 
uint16_t device, FFGPUResult* gpu)
-{
-    if (content->length)
-    {
-        char buffer[32];
-        uint32_t len = (uint32_t) snprintf(buffer, sizeof(buffer), "\n%04x  ", 
vendor);
-        char* start = (char*) memmem(content->chars, content->length, buffer, 
len);
-        char* end = content->chars + content->length;
-        if (start)
-        {
-            start += len;
-            end = memchr(start, '\n', (uint32_t) (end - start));
-            if (!end)
-                end = content->chars + content->length;
-            if (!gpu->vendor.length)
-                ffStrbufSetNS(&gpu->vendor, (uint32_t) (end - start), start);
-
-            start = end; // point to '\n' of vendor
-            end = start + 1; // point to start of devices
-            // find the start of next vendor
-            while (end[0] == '\t' || end[0] == '#')
-            {
-                end = strchr(end, '\n');
-                if (!end)
-                {
-                    end = content->chars + content->length;
-                    break;
-                }
-                else
-                    end++;
-            }
-
-            len = (uint32_t) snprintf(buffer, sizeof(buffer), "\n\t%04x  ", 
device);
-            start = memmem(start, (size_t) (end - start), buffer, len);
-            if (start)
-            {
-                start += len;
-                end = memchr(start, '\n', (uint32_t) (end - start));
-                if (!end)
-                    end = content->chars + content->length;
-
-                char* openingBracket = memchr(start, '[', (uint32_t) (end - 
start));
-                if (openingBracket)
-                {
-                    openingBracket++;
-                    char* closingBracket = memchr(openingBracket, ']', 
(uint32_t) (end - openingBracket));
-                    if (closingBracket)
-                        ffStrbufSetNS(&gpu->name, (uint32_t) (closingBracket - 
openingBracket), openingBracket);
-                }
-                if (!gpu->name.length)
-                    ffStrbufSetNS(&gpu->name, (uint32_t) (end - start), start);
-            }
-        }
-    }
-
-    if (!gpu->name.length)
-    {
-        const char* subclassStr;
-        switch (subclass)
-        {
-        case 0 /*PCI_CLASS_DISPLAY_VGA*/: subclassStr = " (VGA compatible)"; 
break;
-        case 1 /*PCI_CLASS_DISPLAY_XGA*/: subclassStr = " (XGA compatible)"; 
break;
-        case 2 /*PCI_CLASS_DISPLAY_3D*/: subclassStr = " (3D)"; break;
-        default: subclassStr = ""; break;
-        }
-
-        ffStrbufSetF(&gpu->name, "%s Device %04X%s", gpu->vendor.length ? 
gpu->vendor.chars : "Unknown", device, subclassStr);
-    }
-}
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/src/detection/gpu/gpu.h 
new/fastfetch-2.8.3/src/detection/gpu/gpu.h
--- old/fastfetch-2.8.0/src/detection/gpu/gpu.h 2024-02-10 05:02:58.000000000 
+0100
+++ new/fastfetch-2.8.3/src/detection/gpu/gpu.h 2024-02-12 03:59:30.000000000 
+0100
@@ -43,6 +43,6 @@
 
 const char* ffGetGPUVendorString(unsigned vendorId);
 
-#ifndef _WIN32
-void ffGPUParsePciIds(FFstrbuf* content, uint8_t subclass, uint16_t vendor, 
uint16_t device, FFGPUResult* gpu);
+#if defined(__linux__) || defined(__FreeBSD__)
+void ffGPUParsePciIds(FFstrbuf* content, uint8_t subclass, uint16_t vendor, 
uint16_t device, uint16_t subVendor, uint16_t subDevice, FFGPUResult* gpu);
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/src/detection/gpu/gpu_bsd.c 
new/fastfetch-2.8.3/src/detection/gpu/gpu_bsd.c
--- old/fastfetch-2.8.0/src/detection/gpu/gpu_bsd.c     2024-02-10 
05:02:58.000000000 +0100
+++ new/fastfetch-2.8.3/src/detection/gpu/gpu_bsd.c     2024-02-12 
03:59:30.000000000 +0100
@@ -1,9 +1,9 @@
 #include "gpu_driver_specific.h"
 
 #include "common/io/io.h"
+#include "common/properties.h"
 #include "3rdparty/nvml/nvml.h"
 #include "util/mallocHelper.h"
-#include "common/io/io.h"
 
 #include <dev/pci/pcireg.h>
 #include <sys/pciio.h>
@@ -46,7 +46,6 @@
         return "ioctl(fd, PCIOCGETCONF, &pc) returned error";
 
     FF_STRBUF_AUTO_DESTROY pciids = ffStrbufCreate();
-    loadPciIds(&pciids);
 
     for (uint32_t i = 0; i < pcio.num_matches; ++i)
     {
@@ -64,7 +63,19 @@
         gpu->deviceId = ((uint64_t) pc->pc_sel.pc_domain << 6) | ((uint64_t) 
pc->pc_sel.pc_bus << 4) | ((uint64_t) pc->pc_sel.pc_dev << 2) | 
pc->pc_sel.pc_func;
         gpu->frequency = FF_GPU_FREQUENCY_UNSET;
 
-        ffGPUParsePciIds(&pciids, pc->pc_subclass, pc->pc_vendor, 
pc->pc_device, gpu);
+        if (gpu->vendor.chars == FF_GPU_VENDOR_NAME_AMD)
+        {
+            char query[32];
+            snprintf(query, sizeof(query), "%X,\t%X,", (unsigned) 
pc->pc_device, (unsigned) pc->pc_revid);
+            ffParsePropFileData("libdrm/amdgpu.ids", query, &gpu->name);
+        }
+
+        if (gpu->name.length == 0)
+        {
+            if (pciids.length == 0)
+                loadPciIds(&pciids);
+            ffGPUParsePciIds(&pciids, pc->pc_subclass, pc->pc_vendor, 
pc->pc_device, pc->pc_subvendor, pc->pc_subdevice, gpu);
+        }
 
         #ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API
         if (gpu->vendor.chars == FF_GPU_VENDOR_NAME_NVIDIA && (options->temp 
|| options->driverSpecific))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/src/detection/gpu/gpu_linux.c 
new/fastfetch-2.8.3/src/detection/gpu/gpu_linux.c
--- old/fastfetch-2.8.0/src/detection/gpu/gpu_linux.c   2024-02-10 
05:02:58.000000000 +0100
+++ new/fastfetch-2.8.3/src/detection/gpu/gpu_linux.c   2024-02-12 
03:59:30.000000000 +0100
@@ -2,6 +2,7 @@
 #include "detection/vulkan/vulkan.h"
 #include "detection/temps/temps_linux.h"
 #include "common/io/io.h"
+#include "common/properties.h"
 #include "util/stringUtils.h"
 
 #ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API
@@ -80,7 +81,6 @@
 
     FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate();
     FF_STRBUF_AUTO_DESTROY pciids = ffStrbufCreate();
-    loadPciIds(&pciids);
 
     struct dirent* entry;
     while((entry = readdir(dirp)) != NULL)
@@ -98,9 +98,9 @@
             continue;
         ffStrbufSubstrBefore(&pciDir, pciDevDirLength);
 
-        uint32_t vendorId, deviceId;
+        uint32_t vendorId, deviceId, subVendorId, subDeviceId;
         uint8_t classId, subclassId;
-        if (sscanf(buffer.chars, "pci:v%8" SCNx32 "d%8" SCNx32 
"sv%*8ssd%*8sbc%2" SCNx8 "sc%2" SCNx8, &vendorId, &deviceId, &classId, 
&subclassId) != 4)
+        if (sscanf(buffer.chars, "pci:v%8" SCNx32 "d%8" SCNx32 "sv%8" SCNx32 
"sd%8" SCNx32 "bc%2" SCNx8 "sc%2" SCNx8, &vendorId, &deviceId, &subVendorId, 
&subDeviceId, &classId, &subclassId) != 6)
             continue;
 
         if (classId != 0x03 /*PCI_BASE_CLASS_DISPLAY*/)
@@ -122,7 +122,29 @@
         gpu->deviceId = ((uint64_t) pciDomain << 6) | ((uint64_t) pciBus << 4) 
| (deviceId << 2) | pciFunc;
         gpu->frequency = FF_GPU_FREQUENCY_UNSET;
 
-        ffGPUParsePciIds(&pciids, subclassId, (uint16_t) vendorId, (uint16_t) 
deviceId, gpu);
+        if (gpu->vendor.chars == FF_GPU_VENDOR_NAME_AMD)
+        {
+            ffStrbufAppendS(&pciDir, "/revision");
+            if (ffReadFileBuffer(pciDir.chars, &buffer))
+            {
+                char* pend;
+                uint64_t revision = strtoul(buffer.chars, &pend, 16);
+                if (pend != buffer.chars)
+                {
+                    char query[32];
+                    snprintf(query, sizeof(query), "%X,\t%X,", (unsigned) 
deviceId, (unsigned) revision);
+                    ffParsePropFileData("libdrm/amdgpu.ids", query, 
&gpu->name);
+                }
+            }
+            ffStrbufSubstrBefore(&pciDir, pciDevDirLength);
+        }
+
+        if (gpu->name.length == 0)
+        {
+            if (!pciids.length)
+                loadPciIds(&pciids);
+            ffGPUParsePciIds(&pciids, subclassId, (uint16_t) vendorId, 
(uint16_t) deviceId, (uint16_t) subVendorId, (uint16_t) subDeviceId, gpu);
+        }
 
         pciDetectDriver(gpu, &pciDir, &buffer);
         ffStrbufSubstrBefore(&pciDir, pciDevDirLength);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/src/detection/gpu/gpu_pci.c 
new/fastfetch-2.8.3/src/detection/gpu/gpu_pci.c
--- old/fastfetch-2.8.0/src/detection/gpu/gpu_pci.c     1970-01-01 
01:00:00.000000000 +0100
+++ new/fastfetch-2.8.3/src/detection/gpu/gpu_pci.c     2024-02-12 
03:59:30.000000000 +0100
@@ -0,0 +1,81 @@
+#include "gpu.h"
+
+void ffGPUParsePciIds(FFstrbuf* content, uint8_t subclass, uint16_t vendor, 
uint16_t device, uint16_t subVendor, uint16_t subDevice, FFGPUResult* gpu)
+{
+    if (content->length)
+    {
+        char buffer[32];
+
+        // Search for vendor
+        uint32_t len = (uint32_t) snprintf(buffer, sizeof(buffer), "\n%04x  ", 
vendor);
+        char* start = (char*) memmem(content->chars, content->length, buffer, 
len);
+        char* end = content->chars + content->length;
+        if (start)
+        {
+            start += len;
+            end = memchr(start, '\n', (uint32_t) (end - start));
+            if (!end)
+                end = content->chars + content->length;
+            if (!gpu->vendor.length)
+                ffStrbufSetNS(&gpu->vendor, (uint32_t) (end - start), start);
+
+            start = end; // point to '\n' of vendor
+            end = start + 1; // point to start of devices
+            // find the start of next vendor
+            while (end[0] == '\t' || end[0] == '#')
+            {
+                end = strchr(end, '\n');
+                if (!end)
+                {
+                    end = content->chars + content->length;
+                    break;
+                }
+                else
+                    end++;
+            }
+
+            // Search for device
+            len = (uint32_t) snprintf(buffer, sizeof(buffer), "\n\t%04x  ", 
device);
+            start = memmem(start, (size_t) (end - start), buffer, len);
+            if (start)
+            {
+                start += len;
+
+                // Search for subvendor and subdevice
+                len = (uint32_t) snprintf(buffer, sizeof(buffer), "\n\t\t%04x 
%04x  ", subVendor, subDevice);
+                char* subStart = memmem(start, (size_t) (end - start), buffer, 
len);
+                if (subStart)
+                    start = subStart + len;
+
+                end = memchr(start, '\n', (uint32_t) (end - start));
+                if (!end)
+                    end = content->chars + content->length;
+
+                char* openingBracket = memchr(start, '[', (uint32_t) (end - 
start));
+                if (openingBracket)
+                {
+                    openingBracket++;
+                    char* closingBracket = memchr(openingBracket, ']', 
(uint32_t) (end - openingBracket));
+                    if (closingBracket)
+                        ffStrbufSetNS(&gpu->name, (uint32_t) (closingBracket - 
openingBracket), openingBracket);
+                }
+                if (!gpu->name.length)
+                    ffStrbufSetNS(&gpu->name, (uint32_t) (end - start), start);
+            }
+        }
+    }
+
+    if (!gpu->name.length)
+    {
+        const char* subclassStr;
+        switch (subclass)
+        {
+        case 0 /*PCI_CLASS_DISPLAY_VGA*/: subclassStr = " (VGA compatible)"; 
break;
+        case 1 /*PCI_CLASS_DISPLAY_XGA*/: subclassStr = " (XGA compatible)"; 
break;
+        case 2 /*PCI_CLASS_DISPLAY_3D*/: subclassStr = " (3D)"; break;
+        default: subclassStr = ""; break;
+        }
+
+        ffStrbufSetF(&gpu->name, "%s Device %04X%s", gpu->vendor.length ? 
gpu->vendor.chars : "Unknown", device, subclassStr);
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastfetch-2.8.0/src/util/platform/FFPlatform_unix.c 
new/fastfetch-2.8.3/src/util/platform/FFPlatform_unix.c
--- old/fastfetch-2.8.0/src/util/platform/FFPlatform_unix.c     2024-02-10 
05:02:58.000000000 +0100
+++ new/fastfetch-2.8.3/src/util/platform/FFPlatform_unix.c     2024-02-12 
03:59:30.000000000 +0100
@@ -7,6 +7,7 @@
 #include <pwd.h>
 #include <limits.h>
 #include <sys/utsname.h>
+#include <paths.h>
 
 #ifdef __APPLE__
     #include <libproc.h>
@@ -135,6 +136,9 @@
 
     ffPlatformPathAddHome(&platform->dataDirs, platform, "");
     platformPathAddEnv(&platform->dataDirs, "XDG_DATA_DIRS");
+#ifdef _PATH_LOCALBASE
+    ffPlatformPathAddAbsolute(&platform->dataDirs, _PATH_LOCALBASE "/share/");
+#endif
     ffPlatformPathAddAbsolute(&platform->dataDirs, FASTFETCH_TARGET_DIR_USR 
"/local/share/");
     ffPlatformPathAddAbsolute(&platform->dataDirs, FASTFETCH_TARGET_DIR_USR 
"/share/");
 }

Reply via email to