diff --git a/src/common/settings.c b/src/common/settings.c index 256ad5cf2..e3219c57d 100644 --- a/src/common/settings.c +++ b/src/common/settings.c @@ -269,8 +269,10 @@ FFvariant ffSettingsGetXFConf(FFinstance* instance, const char* channelName, con #ifdef __ANDROID__ #include -void ffSettingsGetAndroidProperty(const char* propName, FFstrbuf* result) { - ffStrbufEnsureCapacity(result, PROP_VALUE_MAX); - result->length = (uint32_t) __system_property_get(propName, result->chars); +bool ffSettingsGetAndroidProperty(const char* propName, FFstrbuf* result) { + uint32_t originalLength = result->length; + ffStrbufEnsureFree(result, PROP_VALUE_MAX); + result->length += (uint32_t) __system_property_get(propName, result->chars + result->length); + return result->length > originalLength; } #endif diff --git a/src/fastfetch.h b/src/fastfetch.h index b1b76d838..462f3a39a 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -400,7 +400,7 @@ FFvariant ffSettingsGet(FFinstance* instance, const char* dconfKey, const char* FFvariant ffSettingsGetXFConf(FFinstance* instance, const char* channelName, const char* propertyName, FFvarianttype type); #ifdef __ANDROID__ -void ffSettingsGetAndroidProperty(const char* propName, FFstrbuf* result); +bool ffSettingsGetAndroidProperty(const char* propName, FFstrbuf* result); #endif //detection/plasma.c diff --git a/src/modules/host.c b/src/modules/host.c index 046e60077..5975273e9 100644 --- a/src/modules/host.c +++ b/src/modules/host.c @@ -1,5 +1,7 @@ #include "fastfetch.h" +#include + #define FF_HOST_MODULE_NAME "Host" #define FF_HOST_NUM_FORMAT_ARGS 3 @@ -30,7 +32,7 @@ static bool hostValueSet(FFstrbuf* value) ; } -static inline void getHostValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) +static void getHostValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) { ffGetFileContent(devicesPath, buffer); @@ -45,33 +47,51 @@ void ffPrintHost(FFinstance* instance) FFstrbuf family; ffStrbufInit(&family); - getHostValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &family); + #ifndef __ANDROID__ + getHostValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &family); + #else + ffSettingsGetAndroidProperty("ro.product.device", &family); + #endif bool familySet = hostValueSet(&family); FFstrbuf name; ffStrbufInit(&name); - getHostValue("/sys/devices/virtual/dmi/id/product_name", "/sys/class/dmi/id/product_name", &name); + #ifndef __ANDROID__ + getHostValue("/sys/devices/virtual/dmi/id/product_name", "/sys/class/dmi/id/product_name", &name); - if(name.length == 0) - ffGetFileContent("/sys/firmware/devicetree/base/model", &name); + if(name.length == 0) + ffGetFileContent("/sys/firmware/devicetree/base/model", &name); - if(name.length == 0) - ffGetFileContent("/tmp/sysinfo/model", &name); + if(name.length == 0) + ffGetFileContent("/tmp/sysinfo/model", &name); + if(ffStrbufStartsWithS(&name, "Standard PC")) + { + FFstrbuf copy; + ffStrbufInitCopy(©, &name); + ffStrbufSetS(&name, "KVM/QEMU "); + ffStrbufAppend(&name, ©); + ffStrbufDestroy(©); + } + #else + ffSettingsGetAndroidProperty("ro.product.brand", buffer); + if(buffer->length > 0){ + toupper(buffer->chars[0]); + ffStrbufAppendC(buffer, ' '); + } + + if(!ffSettingsGetAndroidProperty("ro.product.model", buffer)) + ffSettingsGetAndroidProperty("ro.product.name", buffer); + + ffStrbufTrimRight(buffer, ' '); + #endif bool nameSet = hostValueSet(&name); - if(ffStrbufStartsWithS(&name, "Standard PC")) - { - FFstrbuf copy; - ffStrbufInitCopy(©, &name); - ffStrbufSetS(&name, "KVM/QEMU "); - ffStrbufAppend(&name, ©); - ffStrbufDestroy(©); - } - FFstrbuf version; ffStrbufInit(&version); - getHostValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &version); + #ifndef __ANDROID__ + getHostValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &version); + #endif bool versionSet = hostValueSet(&version); if(!familySet && !nameSet) diff --git a/src/modules/os.c b/src/modules/os.c index 256547c84..899c1b5ba 100644 --- a/src/modules/os.c +++ b/src/modules/os.c @@ -75,9 +75,9 @@ const FFOSResult* ffDetectOS(FFinstance* instance) 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.release", &result.version); ffSettingsGetAndroidProperty("ro.build.version.codename", &result.codename); - ffSettingsGetAndroidProperty("ro.build.display.id", &result.buildID); + ffSettingsGetAndroidProperty("ro.build.id", &result.buildID); #endif pthread_mutex_unlock(&mutex);