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-03-02 23:24:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fastfetch (Old) and /work/SRC/openSUSE:Factory/.fastfetch.new.1770 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fastfetch" Sat Mar 2 23:24:11 2024 rev:18 rq:1154306 version:2.8.7 Changes: -------- --- /work/SRC/openSUSE:Factory/fastfetch/fastfetch.changes 2024-02-28 19:47:42.603098174 +0100 +++ /work/SRC/openSUSE:Factory/.fastfetch.new.1770/fastfetch.changes 2024-03-02 23:24:30.693641970 +0100 @@ -1,0 +2,12 @@ +Sat Mar 2 13:13:39 UTC 2024 - Gordon Leung <piratec...@protonmail.com> + +- update to version 2.8.7: + Bugfixes: + * Fix max CPU frequency detection for some cases (CPU, Linux) + * Fix some memory leaks + * Fix ddcutil 2.1 compatibility (Brightness, Linux) + Features: + * Support zellij version detection (Linux, Terminal) + + +------------------------------------------------------------------- Old: ---- fastfetch-2.8.6.tar.gz New: ---- fastfetch-2.8.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fastfetch.spec ++++++ --- /var/tmp/diff_new_pack.0qOk6j/_old 2024-03-02 23:24:32.013689787 +0100 +++ /var/tmp/diff_new_pack.0qOk6j/_new 2024-03-02 23:24:32.029690366 +0100 @@ -17,7 +17,7 @@ Name: fastfetch -Version: 2.8.6 +Version: 2.8.7 Release: 0 Summary: Neofetch-like tool written mostly in C License: MIT ++++++ fastfetch-2.8.6.tar.gz -> fastfetch-2.8.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/CHANGELOG.md new/fastfetch-2.8.7/CHANGELOG.md --- old/fastfetch-2.8.6/CHANGELOG.md 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/CHANGELOG.md 2024-03-02 12:14:35.000000000 +0100 @@ -1,3 +1,17 @@ +# 2.8.7 + +Bugfixes: +* Fix max CPU frequency detection for some cases (CPU, Linux) +* Fix some memory leaks +* Fix ddcutil 2.1 compatibility (Brightness, Linux) +* Workaround `permission denied` error when reading `/proc/uptime` (Uptime, Android) + +Features: +* Support zellij version detection (Linux, Terminal) + +Logo: +* Fix PostMarketOS + # 2.8.6 Changes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/CMakeLists.txt new/fastfetch-2.8.7/CMakeLists.txt --- old/fastfetch-2.8.6/CMakeLists.txt 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/CMakeLists.txt 2024-03-02 12:14:35.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.6 + VERSION 2.8.7 LANGUAGES C DESCRIPTION "Fast neofetch-like system information tool" HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch" @@ -122,7 +122,7 @@ set(FASTFETCH_FLAGS_DEBUG "${FASTFETCH_FLAGS_DEBUG} -fsanitize=address") endif() set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${FASTFETCH_FLAGS_DEBUG}") -set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FASTFETCH_FLAGS_DEBUG}") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FASTFETCH_FLAGS_DEBUG} -fstack-protector-all -fno-delete-null-pointer-checks") if(NOT WIN32) set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -rdynamic") endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/debian/changelog new/fastfetch-2.8.7/debian/changelog --- old/fastfetch-2.8.6/debian/changelog 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/debian/changelog 2024-03-02 12:14:35.000000000 +0100 @@ -1,3 +1,9 @@ +fastfetch (2.8.6) jammy; urgency=medium + + * Update to 2.8.6 + + -- Carter Li <zhangsong...@live.cn> Wed, 28 Feb 2024 10:01:40 +0800 + fastfetch (2.8.4) jammy; urgency=medium * Update to 2.8.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/debian/files new/fastfetch-2.8.7/debian/files --- old/fastfetch-2.8.6/debian/files 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/debian/files 2024-03-02 12:14:35.000000000 +0100 @@ -1 +1 @@ -fastfetch_2.8.4_source.buildinfo universe/utils optional +fastfetch_2.8.6_source.buildinfo universe/utils optional diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/doc/json_schema.json new/fastfetch-2.8.7/doc/json_schema.json --- old/fastfetch-2.8.6/doc/json_schema.json 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/doc/json_schema.json 2024-03-02 12:14:35.000000000 +0100 @@ -30,6 +30,7 @@ "percent": { "description": "Threshold of percentage colors", "type": "object", + "additionalProperties": false, "properties": { "green": { "type": "integer", @@ -54,6 +55,7 @@ }, { "type": "object", + "additionalProperties": false, "properties": { "green": { "type": "integer", @@ -73,6 +75,7 @@ } }, "type": "object", + "additionalProperties": false, "title": "JSON config", "description": "JSON config file for fastfetch. Usually be `~/.config/fastfetch.jsonc`", "properties": { @@ -95,6 +98,7 @@ { "description": "Fastfetch logo configurations", "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Set the type of the logo given", @@ -122,6 +126,7 @@ }, "color": { "type": "object", + "additionalProperties": false, "description": "Overwrite a color in the logo", "properties": { "1": { @@ -160,8 +165,7 @@ "description": "Color 9", "$ref": "#/$defs/colors" } - }, - "additionalProperties": false + } }, "width": { "type": "integer", @@ -175,6 +179,7 @@ }, "padding": { "type": "object", + "additionalProperties": false, "description": "Set the padding of the logo", "properties": { "top": { @@ -192,8 +197,7 @@ "description": "Set the right padding of the logo", "minimum": 0 } - }, - "additionalProperties": false + } }, "printRemaining": { "type": "boolean", @@ -217,6 +221,7 @@ }, "chafa": { "type": "object", + "additionalProperties": false, "description": "Chafa configuration. See chafa document for details", "properties": { "fgOnly": { @@ -259,17 +264,16 @@ "DIFFUSION" ] } - }, - "additionalProperties": false + } } - }, - "additionalProperties": false + } } ] }, "general": { "description": "Fastfetch general configurations", "type": "object", + "additionalProperties": false, "properties": { "multithreading": { "type": "boolean", @@ -325,12 +329,12 @@ "description": "Set the timeout (ms) when waiting for child processes, `-1` for no timeout", "default": 1000 } - }, - "additionalProperties": false + } }, "display": { "description": "Configure how things to be displayed", "type": "object", + "additionalProperties": false, "properties": { "stat": { "type": "boolean", @@ -371,6 +375,7 @@ }, { "type": "object", + "additionalProperties": false, "properties": { "keys": { "description": "Set the color of the keys", @@ -380,8 +385,7 @@ "description": "Set the color of the title", "$ref": "#/$defs/colors" } - }, - "additionalProperties": false + } } ] }, @@ -416,6 +420,7 @@ }, "size": { "type": "object", + "additionalProperties": false, "description": "Set how a size value should be displayed", "properties": { "maxPrefix": { @@ -435,6 +440,7 @@ }, "temp": { "type": "object", + "additionalProperties": false, "description": "Set how temperature values should be displayed", "properties": { "unit": { @@ -452,6 +458,7 @@ }, "color": { "type": "object", + "additionalProperties": false, "description": "Set color used in different states of temperature values", "properties": { "green": { @@ -472,6 +479,7 @@ }, "bar": { "type": "object", + "additionalProperties": false, "description": "Set the bar configuration", "properties": { "charElapsed": { @@ -499,6 +507,7 @@ }, "percent": { "type": "object", + "additionalProperties": false, "description": "Set how a percentage value should be displayed", "properties": { "type": { @@ -517,6 +526,7 @@ }, "color": { "type": "object", + "additionalProperties": false, "description": "Set color used in different states of percentage bars and numbers", "properties": { "green": { @@ -540,12 +550,12 @@ "description": "Whether to disable the stdout application buffer", "default": false } - }, - "additionalProperties": false + } }, "library": { "description": "Set the path of a library to load", "type": "object", + "additionalProperties": false, "properties": { "pci": { "type": "string", @@ -647,8 +657,7 @@ "description": "Used for brightness detection of external displays (Linux)", "type": "string" } - }, - "additionalProperties": false + } }, "modules": { "description": "Fastfetch modules to run", @@ -721,6 +730,7 @@ }, { "type": "object", + "additionalProperties": false, "description": "Run module with custom configurations", "required": [ "type" @@ -733,16 +743,20 @@ "oneOf": [ { "title": "Break", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "break", "description": "Print a empty line" } - }, - "additionalProperties": false + } }, { + "title": "module", "description": "No additional properties", + "type": "object", + "additionalProperties": false, "properties": { "type": { "anyOf": [ @@ -880,11 +894,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Battery", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "battery", @@ -913,11 +928,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Bluetooth", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "List bluetooth devices", @@ -943,11 +959,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Brightness", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "brightness", @@ -967,6 +984,8 @@ }, { "title": "Chassis", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "chassis", @@ -988,6 +1007,8 @@ }, { "title": "CPU", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print CPU name, frequency, etc", @@ -1015,11 +1036,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "CPU Usage", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "cpuusage", @@ -1037,6 +1059,8 @@ }, { "title": "Colors", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print some colored blocks", @@ -1064,6 +1088,7 @@ "block": { "description": "Set behavior of block printing", "type": "object", + "additionalProperties": false, "properties": { "width": { "description": "Set the block width in spaces", @@ -1088,6 +1113,8 @@ }, { "title": "Command", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Running custom shell scripts", @@ -1113,11 +1140,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Custom", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print a custom string, with or without key", @@ -1140,11 +1168,12 @@ }, "required": [ "format" - ], - "additionalProperties": false + ] }, { "title": "Display", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print resolutions, refresh rates, etc", @@ -1187,11 +1216,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Disk", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print partitions, space usage, disk type, etc", @@ -1246,11 +1276,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "DiskIO", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print physical disk I/O throughput", @@ -1277,11 +1308,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "DE", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "de", @@ -1308,6 +1340,8 @@ }, { "title": "Gamepad", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "gamepad", @@ -1328,11 +1362,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "GPU", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print GPU names, graphic memory size, type, etc", @@ -1372,11 +1407,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Local IP", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "List local IP addresses (v4 or v6), MAC addresses, etc", @@ -1428,11 +1464,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Memory", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "memory", @@ -1453,11 +1490,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "NetIO", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print network I/O throughput", @@ -1489,11 +1527,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "OpenGL", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print highest OpenGL version supported by the GPU", @@ -1521,11 +1560,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Packages", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "packages", @@ -1552,6 +1592,8 @@ }, { "title": "Physical Disk", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print physical disk information", @@ -1576,11 +1618,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Public IP", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print your public IP address, etc", @@ -1610,11 +1653,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Separator", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print a separator line", @@ -1625,11 +1669,12 @@ "type": "string", "default": "-" } - }, - "additionalProperties": false + } }, { "title": "Sound", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print sound devices, volume, etc", @@ -1660,11 +1705,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Swap", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "swap", @@ -1685,11 +1731,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Title", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print title, which contains your user name, hostname", @@ -1702,6 +1749,8 @@ }, "color": { "description": "Set colors of the different part of title", + "type": "object", + "additionalProperties": false, "properties": { "user": { "description": "Set color of the user name (left part)", @@ -1715,8 +1764,7 @@ "description": "Set color of the host name (right part)", "$ref": "#/$defs/colors" } - }, - "additionalProperties": false + } }, "key": { "$ref": "#/$defs/key" @@ -1730,11 +1778,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "Weather", + "type": "object", + "additionalProperties": false, "properties": { "type": { "description": "Print weather information", @@ -1767,11 +1816,12 @@ "format": { "$ref": "#/$defs/format" } - }, - "additionalProperties": false + } }, { "title": "WM", + "type": "object", + "additionalProperties": false, "properties": { "type": { "const": "wm", @@ -1801,6 +1851,5 @@ ] } } - }, - "additionalProperties": false + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/detection/brightness/brightness_linux.c new/fastfetch-2.8.7/src/detection/brightness/brightness_linux.c --- old/fastfetch-2.8.6/src/detection/brightness/brightness_linux.c 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/detection/brightness/brightness_linux.c 2024-03-02 12:14:35.000000000 +0100 @@ -114,7 +114,7 @@ { FF_SUPPRESS_IO(); // Ref: https://github.com/rockowitz/ddcutil/issues/344 - if (ffddca_init("--disable-watch-displays", -1 /*DDCA_SYSLOG_NOT_SET*/, 1 /*DDCA_INIT_OPTIONS_DISABLE_CONFIG_FILE*/) < 0) + if (ffddca_init(NULL, -1 /*DDCA_SYSLOG_NOT_SET*/, 1 /*DDCA_INIT_OPTIONS_DISABLE_CONFIG_FILE*/) < 0) return "ddca_init() failed"; } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/detection/cpu/cpu_linux.c new/fastfetch-2.8.7/src/detection/cpu/cpu_linux.c --- old/fastfetch-2.8.6/src/detection/cpu/cpu_linux.c 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/detection/cpu/cpu_linux.c 2024-03-02 12:14:35.000000000 +0100 @@ -85,30 +85,58 @@ return NULL; } -static double getGHz(const char* file) +static double getFrequency(FFstrbuf* basePath, const char* cpuinfoFileName, const char* scalingFileName, FFstrbuf* buffer) { - FF_STRBUF_AUTO_DESTROY content = ffStrbufCreate(); - if(ffAppendFileBuffer(file, &content)) - { - double herz = ffStrbufToDouble(&content); + uint32_t baseLen = basePath->length; + ffStrbufAppendS(basePath, cpuinfoFileName); + bool ok = ffReadFileBuffer(basePath->chars, buffer); + ffStrbufSubstrBefore(basePath, baseLen); + if (ok) + return ffStrbufToDouble(buffer) / 1e6; - //ffStrbufToDouble failed - if(herz != herz) - return 0; + ffStrbufAppendS(basePath, scalingFileName); + ok = ffReadFileBuffer(basePath->chars, buffer); + ffStrbufSubstrBefore(basePath, baseLen); + if (ok) + return ffStrbufToDouble(buffer) / 1e6; - herz /= 1000.0; //to MHz - return herz / 1000.0; //to GHz - } - return 0; + return 0.0/0.0; } -static double getFrequency(const char* info, const char* scaling) +static bool detectFrequency(FFCPUResult* cpu) { - double frequency = getGHz(info); - if(frequency > 0.0) - return frequency; + FF_STRBUF_AUTO_DESTROY path = ffStrbufCreateS("/sys/devices/system/cpu/cpufreq/"); + FF_AUTO_CLOSE_DIR DIR* dir = opendir(path.chars); + FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate(); + uint32_t baseLen = path.length; + bool flag = false; + + struct dirent* entry; + while((entry = readdir(dir)) != NULL) + { + if (ffStrStartsWith(entry->d_name, "policy") && isdigit(entry->d_name[strlen("policy")])) + { + ffStrbufAppendS(&path, entry->d_name); + double fmin = getFrequency(&path, "/cpuinfo_min_freq", "/scaling_min_freq", &buffer); + if (fmin != fmin) continue; + double fmax = getFrequency(&path, "/cpuinfo_max_freq", "/scaling_max_freq", &buffer); + if (fmax != fmax) continue; - return getGHz(scaling); + if (flag) + { + cpu->frequencyMin = cpu->frequencyMin < fmin ? cpu->frequencyMin : fmin; + cpu->frequencyMax = cpu->frequencyMax > fmax ? cpu->frequencyMax : fmax; + } + else + { + cpu->frequencyMin = fmin; + cpu->frequencyMax = fmax; + flag = true; + } + ffStrbufSubstrBefore(&path, baseLen); + } + } + return flag; } static double detectCPUTemp(void) @@ -204,16 +232,8 @@ cpu->coresOnline = (uint16_t) get_nprocs(); cpu->coresPhysical = (uint16_t) ffStrbufToUInt(&physicalCoresBuffer, cpu->coresLogical); - #define BP "/sys/devices/system/cpu/cpufreq/policy0/" - if(ffPathExists(BP, FF_PATHTYPE_DIRECTORY)) - { - cpu->frequencyMin = getFrequency(BP"cpuinfo_min_freq", BP"scaling_min_freq"); - cpu->frequencyMax = getFrequency(BP"cpuinfo_max_freq", BP"scaling_max_freq"); - } - else - { + if (!detectFrequency(cpu)) cpu->frequencyMin = cpu->frequencyMax = ffStrbufToDouble(&cpuMHz) / 1000; - } if(cpuUarch.length > 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/detection/gpu/gpu_linux.c new/fastfetch-2.8.7/src/detection/gpu/gpu_linux.c --- old/fastfetch-2.8.6/src/detection/gpu/gpu_linux.c 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/detection/gpu/gpu_linux.c 2024-03-02 12:14:35.000000000 +0100 @@ -78,7 +78,7 @@ //https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci const char* pciDirPath = "/sys/bus/pci/devices/"; - DIR* dirp = opendir(pciDirPath); + FF_AUTO_CLOSE_DIR DIR* dirp = opendir(pciDirPath); if(dirp == NULL) return "Failed to open `/sys/bus/pci/devices/`"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/detection/terminalshell/terminalshell.c new/fastfetch-2.8.7/src/detection/terminalshell/terminalshell.c --- old/fastfetch-2.8.6/src/detection/terminalshell/terminalshell.c 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/detection/terminalshell/terminalshell.c 2024-03-02 12:14:35.000000000 +0100 @@ -437,6 +437,15 @@ return version->length > 0; } +static bool getTerminalVersionZellij(FFstrbuf* exe, FFstrbuf* version) +{ + if(!getExeVersionRaw(exe, version)) return false; + + // zellij 0.39.2 + ffStrbufSubstrAfterFirstC(version, ' '); + return version->length > 0; +} + #ifdef _WIN32 static bool getTerminalVersionWindowsTerminal(FFstrbuf* exe, FFstrbuf* version) @@ -554,6 +563,9 @@ if(ffStrbufStartsWithIgnCaseS(processName, "screen")) return getTerminalVersionScreen(exe, version); + if(ffStrbufStartsWithIgnCaseS(processName, "zellij")) + return getTerminalVersionZellij(exe, version); + const char* termProgramVersion = getenv("TERM_PROGRAM_VERSION"); if(termProgramVersion) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/detection/uptime/uptime_linux.c new/fastfetch-2.8.7/src/detection/uptime/uptime_linux.c --- old/fastfetch-2.8.6/src/detection/uptime/uptime_linux.c 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/detection/uptime/uptime_linux.c 2024-03-02 12:14:35.000000000 +0100 @@ -6,20 +6,32 @@ const char* ffDetectUptime(FFUptimeResult* result) { + #ifndef __ANDROID__ // cat: /proc/uptime: Permission denied + // #620 char buf[64]; ssize_t nRead = ffReadFileData("/proc/uptime", sizeof(buf) - 1, buf); - if(nRead < 0) - return "ffReadFileData(\"/proc/uptime\", sizeof(buf) - 1, buf) failed"; - buf[nRead] = '\0'; - - char *err = NULL; - double sec = strtod(buf, &err); - if(err != buf) - result->uptime = (uint64_t) (sec * 1000); - else - return "strtod(buf, &err) failed"; + if(nRead > 0) + { + buf[nRead] = '\0'; + char *err = NULL; + double sec = strtod(buf, &err); + if(err != buf) + { + result->uptime = (uint64_t) (sec * 1000); + result->bootTime = ffTimeGetNow() + result->uptime; + return NULL; + } + } + + #endif + + struct timespec uptime; + if (clock_gettime(CLOCK_BOOTTIME, &uptime) != 0) + return "clock_gettime(CLOCK_BOOTTIME) failed"; + + result->uptime = (uint64_t) uptime.tv_sec * 1000 + (uint64_t) uptime.tv_nsec / 1000000; result->bootTime = ffTimeGetNow() + result->uptime; return NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/logo/ascii/postmarketos.txt new/fastfetch-2.8.7/src/logo/ascii/postmarketos.txt --- old/fastfetch-2.8.6/src/logo/ascii/postmarketos.txt 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/logo/ascii/postmarketos.txt 2024-03-02 12:14:35.000000000 +0100 @@ -1,18 +1,18 @@ - /\\ - / \\ - / \\ - / \\ - / \\ - / \\ - \\ \\ - /\\ \\____ \\ - / \\____ \\ \\ - / / \\ \\ - / / \\ ___\\ - / / \\ / ____ - / / \\/ / \\ - / / __________/ \\ - / \\ \\ \\ - / \\ \\ \\ - / / / \\ -/___________/ /____________________\\ + /\ + / \ + / \ + / \ + / \ + / \ + \ \ + /\ \____ \ + / \____ \ \ + / / \ \ + / / \ ___\ + / / \ / ____ + / / \/ / \ + / / __________/ \ + / \ \ \ + / \ \ \ + / / / \ +/___________/ /____________________\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/logo/ascii/postmarketos_small.txt new/fastfetch-2.8.7/src/logo/ascii/postmarketos_small.txt --- old/fastfetch-2.8.6/src/logo/ascii/postmarketos_small.txt 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/logo/ascii/postmarketos_small.txt 2024-03-02 12:14:35.000000000 +0100 @@ -1,9 +1,9 @@ - /\\ - / \\ - / \\ - \\__ \\ - /\\__ \\ _\\ - / / \\/ __ - / / ____/ \\ - / \\ \\ \\ -/_____/ /________\\ + /\ + / \ + / \ + \__ \ + /\__ \ _\ + / / \/ __ + / / ____/ \ + / \ \ \ +/_____/ /________\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.8.6/src/modules/physicaldisk/physicaldisk.c new/fastfetch-2.8.7/src/modules/physicaldisk/physicaldisk.c --- old/fastfetch-2.8.6/src/modules/physicaldisk/physicaldisk.c 2024-02-27 17:04:20.000000000 +0100 +++ new/fastfetch-2.8.7/src/modules/physicaldisk/physicaldisk.c 2024-03-02 12:14:35.000000000 +0100 @@ -130,6 +130,7 @@ ffStrbufDestroy(&dev->interconnect); ffStrbufDestroy(&dev->devPath); ffStrbufDestroy(&dev->serial); + ffStrbufDestroy(&dev->revision); } } @@ -244,6 +245,8 @@ ffStrbufDestroy(&dev->name); ffStrbufDestroy(&dev->interconnect); ffStrbufDestroy(&dev->devPath); + ffStrbufDestroy(&dev->serial); + ffStrbufDestroy(&dev->revision); } }