Skip to content

Commit

Permalink
Merge pull request fastfetch-cli#654 from fastfetch-cli/dev
Browse files Browse the repository at this point in the history
Release v2.3.4
  • Loading branch information
CarterLi authored Dec 7, 2023
2 parents 923997f + dcbda6c commit c4824b2
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 33 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
# 2.3.4

Bugfixes:
* Fix `--help` doesn't work when built without python

Features:
* Use `MemAvailable` if available (Memory, Linux)
* Improve performance of detecting dpkg package count (Packages, Linux)

# 2.3.3

Bugfixes:
Expand Down
9 changes: 6 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url

project(fastfetch
VERSION 2.3.3
VERSION 2.3.4
LANGUAGES C
DESCRIPTION "Fast neofetch-like system information tool"
HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch"
Expand Down Expand Up @@ -221,12 +221,15 @@ endfunction(fastfetch_load_text)

find_package(Python)
if(Python_FOUND)
# Minify JSON string. `io.open(0,encoding='utf-8')` is needed to avoid encoding issues on Windows
execute_process(COMMAND ${Python_EXECUTABLE} -c "import json,sys;json.dump(json.load(sys.stdin),sys.stdout,separators=(',',':'))"
INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/data/help.json"
OUTPUT_VARIABLE DATATEXT_JSON_HELP)
if(DATATEXT_JSON_HELP STREQUAL "")
message(ERROR "DATATEXT_JSON_HELP is empty, which should not happen!")
endif()
else()
file(READ "src/data/help.json" TEMP)
message(STATUS "Python3 is not found, 'help.json' will not be minified")
file(READ "src/data/help.json" DATATEXT_JSON_HELP)
endif()

fastfetch_encode_c_string("${DATATEXT_JSON_HELP}" DATATEXT_JSON_HELP)
Expand Down
42 changes: 26 additions & 16 deletions src/detection/memory/memory_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,43 @@ const char* ffDetectMemory(FFMemoryResult* ram)
buf[nRead] = '\0';

uint64_t memTotal = 0,
memAvailable = 0,
shmem = 0,
memFree = 0,
buffers = 0,
cached = 0,
sReclaimable = 0;

char *token = NULL;
if((token = strstr(buf, "MemTotal:")) != NULL)
memTotal = strtoul(token + strlen("MemTotal:"), NULL, 10);
else
return "MemTotal not found in /proc/meminfo";

if((token = strstr(buf, "MemAvailable:")) != NULL)
memAvailable = strtoul(token + strlen("MemAvailable:"), NULL, 10);
else
{
if((token = strstr(buf, "MemFree:")) != NULL)
memFree = strtoul(token + strlen("MemFree:"), NULL, 10);

if((token = strstr(buf, "Buffers:")) != NULL)
buffers = strtoul(token + strlen("Buffers:"), NULL, 10);

if((token = strstr(buf, "Cached:")) != NULL)
cached = strtoul(token + strlen("Cached:"), NULL, 10);

if((token = strstr(buf, "Shmem:")) != NULL)
shmem = strtoul(token + strlen("Shmem:"), NULL, 10);

if((token = strstr(buf, "SReclaimable:")) != NULL)
sReclaimable = strtoul(token + strlen("SReclaimable:"), NULL, 10);

if((token = strstr(buf, "MemFree:")) != NULL)
memFree = strtoul(token + strlen("MemFree:"), NULL, 10);

if((token = strstr(buf, "Buffers:")) != NULL)
buffers = strtoul(token + strlen("Buffers:"), NULL, 10);

if((token = strstr(buf, "Cached:")) != NULL)
cached = strtoul(token + strlen("Cached:"), NULL, 10);

if((token = strstr(buf, "Shmem:")) != NULL)
shmem = strtoul(token + strlen("Shmem:"), NULL, 10);

if((token = strstr(buf, "SReclaimable:")) != NULL)
sReclaimable = strtoul(token + strlen("SReclaimable:"), NULL, 10);
memAvailable = memFree + buffers + cached + sReclaimable - shmem;
}

ram->bytesTotal = memTotal * 1024lu;
ram->bytesUsed = (memTotal + shmem - memFree - buffers - cached - sReclaimable) * 1024lu;
ram->bytesUsed = (memTotal - memAvailable) * 1024lu;

return NULL;
}
21 changes: 7 additions & 14 deletions src/detection/packages/packages_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,19 @@ static uint32_t getNumElements(FFstrbuf* baseDir, const char* dirname, unsigned

static uint32_t getNumStringsImpl(const char* filename, const char* needle)
{
FILE* file = fopen(filename, "r");
if(file == NULL)
FF_STRBUF_AUTO_DESTROY content = ffStrbufCreate();
if (!ffReadFileBuffer(filename, &content))
return 0;

uint32_t count = 0;

char* line = NULL;
size_t len = 0;

while(getline(&line, &len, file) != EOF)
char *iter = content.chars;
size_t needleLength = strlen(needle);
while ((iter = memmem(iter, content.length - (size_t)(iter - content.chars), needle, needleLength)) != NULL)
{
if(strstr(line, needle) != NULL)
++count;
++count;
iter += needleLength;
}

if(line != NULL)
free(line);

fclose(file);

return count;
}

Expand Down

0 comments on commit c4824b2

Please sign in to comment.