mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 18:32:10 +02:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c4824b2b5d | |||
| dcbda6c0d5 | |||
| 91e4e94aaa | |||
| 1504e26e38 | |||
| a9c5c2892c |
@@ -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:
|
||||
|
||||
+6
-3
@@ -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"
|
||||
@@ -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)
|
||||
|
||||
@@ -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, "MemFree:")) != NULL)
|
||||
memFree = strtoul(token + strlen("MemFree:"), NULL, 10);
|
||||
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, "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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user