diff --git a/src/common/settings.c b/src/common/settings.c index a2a94e872..80e3a9e3c 100644 --- a/src/common/settings.c +++ b/src/common/settings.c @@ -391,3 +391,11 @@ uint32_t ffSettingsGetSQLiteColumnCount(FFinstance* instance, const char* fileNa return 0; } #endif //FF_HAVE_SQLITE3 + +#ifdef __ANDROID__ +#include +void ffSettingsGetAndroidProperty(const char* propName, FFstrbuf* result) { + ffStrbufEnsureCapacity(result, PROP_VALUE_MAX); + result->length = __system_property_get(propName, result->chars); +} +#endif diff --git a/src/fastfetch.h b/src/fastfetch.h index 832845d29..490c089b1 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -340,6 +340,10 @@ FFvariant ffSettingsGetXFConf(FFinstance* instance, const char* channelName, con uint32_t ffSettingsGetSQLiteColumnCount(FFinstance* instance, const char* fileName, const char* tableName); +#ifdef __ANDROID__ +void ffSettingsGetAndroidProperty(const char* propName, FFstrbuf* result); +#endif + //common/detectPlasma.c const FFPlasmaResult* ffDetectPlasma(FFinstance* instance); diff --git a/src/modules/cpu.c b/src/modules/cpu.c index aadfb8a55..c5bb2426b 100644 --- a/src/modules/cpu.c +++ b/src/modules/cpu.c @@ -63,14 +63,17 @@ void ffPrintCPU(FFinstance* instance) while(getline(&line, &len, cpuinfo) != -1) { - ffGetPropValue(line, "model name :", &name); - ffGetPropValue(line, "vendor_id :", &vendor); - ffGetPropValue(line, "cpu cores :", &physicalCoresString); - ffGetPropValue(line, "cpu MHz :", &procGhzString); - //Stop after the first CPU - if(strstr(line, "flags") != NULL) + if(name.length > 0 && (*line == '\0' || *line == '\n')) break; + + (void)( + ffGetPropValue(line, "model name :", &name) || + ffGetPropValue(line, "vendor_id :", &vendor) || + ffGetPropValue(line, "cpu cores :", &physicalCoresString) || + ffGetPropValue(line, "cpu MHz :", &procGhzString) || + (name.length == 0 && ffGetPropValue(line, "Hardware :", &name)) //For Android devices + ); } if(line != NULL) diff --git a/src/modules/os.c b/src/modules/os.c index 2109e6ac8..256547c84 100644 --- a/src/modules/os.c +++ b/src/modules/os.c @@ -18,18 +18,6 @@ const FFOSResult* ffDetectOS(FFinstance* instance) } init = true; - FILE* osRelease = fopen("/etc/os-release", "r"); - - if(osRelease == NULL) - osRelease = fopen("/usr/lib/os-release", "r"); - - ffStrbufInitA(&result.error, 64); - if(osRelease == NULL) - { - ffStrbufAppendS(&result.error, "couldn't read /etc/os-release nor /usr/lib/os-release"); - return &result; - } - ffStrbufInit(&result.systemName); ffStrbufInit(&result.name); ffStrbufInit(&result.prettyName); @@ -47,6 +35,19 @@ const FFOSResult* ffDetectOS(FFinstance* instance) ffStrbufSetS(&result.systemName, instance->state.utsname.sysname); ffStrbufSetS(&result.architecture, instance->state.utsname.machine); +#if !__ANDROID__ + FILE* osRelease = fopen("/etc/os-release", "r"); + + if(osRelease == NULL) + osRelease = fopen("/usr/lib/os-release", "r"); + + ffStrbufInitA(&result.error, 64); + if(osRelease == NULL) + { + ffStrbufAppendS(&result.error, "couldn't read /etc/os-release nor /usr/lib/os-release"); + return &result; + } + char* line = NULL; size_t len = 0; @@ -70,6 +71,14 @@ const FFOSResult* ffDetectOS(FFinstance* instance) free(line); fclose(osRelease); +#else + ffStrbufSetS(&result.name, "Android"); + ffStrbufSetS(&result.id, "android"); + ffSettingsGetAndroidProperty("ro.build.version.release", &result.versionID); + ffSettingsGetAndroidProperty("ro.build.version.sdk", &result.version); + ffSettingsGetAndroidProperty("ro.build.version.codename", &result.codename); + ffSettingsGetAndroidProperty("ro.build.display.id", &result.buildID); +#endif pthread_mutex_unlock(&mutex); diff --git a/src/modules/packages.c b/src/modules/packages.c index efdbb6425..19679b8c9 100644 --- a/src/modules/packages.c +++ b/src/modules/packages.c @@ -57,6 +57,11 @@ void ffPrintPackages(FFinstance* instance) { uint32_t pacman = getNumElements("/var/lib/pacman/local", DT_DIR); uint32_t dpkg = getNumStrings("/var/lib/dpkg/status", "Status: "); + +#if __ANDROID__ + dpkg += getNumStrings("/data/data/com.termux/files/usr/var/lib/dpkg/status", "Status: "); +#endif + uint32_t rpm = ffSettingsGetSQLiteColumnCount(instance, "/var/lib/rpm/rpmdb.sqlite", "Packages"); uint32_t xbps = getNumElements("/var/db/xbps", DT_REG); uint32_t flatpak = getNumElements("/var/lib/flatpak/app", DT_DIR);