2021-02-18 22:25:36 +01:00
#include "fastfetch.h"
2021-04-15 18:59:26 +02:00
#define FF_HOST_MODULE_NAME "Host"
#define FF_HOST_NUM_FORMAT_ARGS 3
2021-05-14 16:03:19 +02:00
static bool hostValueSet ( FFstrbuf * value )
2021-04-23 20:59:13 +02:00
{
2021-05-14 16:03:19 +02:00
ffStrbufTrim ( value , ' ' );
2021-04-23 20:59:13 +02:00
return
value -> length > 0 &&
ffStrbufIgnCaseCompS ( value , "None" ) != 0 &&
2021-05-14 16:03:19 +02:00
ffStrbufIgnCaseCompS ( value , "To be filled by O.E.M." ) != 0 &&
ffStrbufIgnCaseCompS ( value , "System Product Name" ) != 0 &&
ffStrbufIgnCaseCompS ( value , "System Version" ) != 0
2021-04-23 20:59:13 +02:00
;
}
2021-02-27 18:30:05 +01:00
void ffPrintHost ( FFinstance * instance )
2021-02-18 22:25:36 +01:00
{
2021-04-15 18:59:26 +02:00
if ( ffPrintFromCache ( instance , FF_HOST_MODULE_NAME , & instance -> config . hostKey , & instance -> config . hostFormat , FF_HOST_NUM_FORMAT_ARGS ))
2021-02-22 16:52:51 +01:00
return ;
2021-03-21 16:52:17 +01:00
FF_STRBUF_CREATE ( family );
ffGetFileContent ( "/sys/devices/virtual/dmi/id/product_family" , & family );
2021-05-14 16:03:19 +02:00
bool familySet = hostValueSet ( & family );
2021-03-12 12:16:41 +01:00
2021-03-21 16:52:17 +01:00
FF_STRBUF_CREATE ( name );
ffGetFileContent ( "/sys/devices/virtual/dmi/id/product_name" , & name );
2021-05-14 16:03:19 +02:00
bool nameSet = hostValueSet ( & name );
2021-03-27 18:14:19 +01:00
2021-03-21 16:52:17 +01:00
FF_STRBUF_CREATE ( version );
ffGetFileContent ( "/sys/devices/virtual/dmi/id/product_version" , & version );
2021-05-14 16:03:19 +02:00
bool versionSet = hostValueSet ( & version );
2021-03-12 12:16:41 +01:00
2021-05-14 16:03:19 +02:00
if ( ! familySet && ! nameSet )
2021-04-03 21:51:50 +02:00
{
2021-04-23 20:59:13 +02:00
ffPrintError ( instance , FF_HOST_MODULE_NAME , 0 , & instance -> config . hostKey , & instance -> config . hostFormat , FF_HOST_NUM_FORMAT_ARGS , "neither family nor name is set by O.E.M." );
2021-04-03 21:51:50 +02:00
return ;
}
2021-03-21 16:52:17 +01:00
FF_STRBUF_CREATE ( host );
2021-03-19 20:57:07 +01:00
2021-05-14 16:03:19 +02:00
if ( nameSet )
2021-04-15 18:59:26 +02:00
ffStrbufAppend ( & host , & name );
2021-03-23 19:48:52 +01:00
else
2021-04-15 18:59:26 +02:00
ffStrbufAppend ( & host , & family );
2021-05-14 16:03:19 +02:00
if ( versionSet ) {
2021-04-15 18:59:26 +02:00
ffStrbufAppendC ( & host , ' ' );
ffStrbufAppend ( & host , & version );
2021-03-23 19:48:52 +01:00
}
2021-02-22 16:52:51 +01:00
2021-04-15 18:59:26 +02:00
ffPrintAndSaveToCache ( instance , FF_HOST_MODULE_NAME , & instance -> config . hostKey , & host , & instance -> config . hostFormat , FF_HOST_NUM_FORMAT_ARGS , ( FFformatarg []) {
{ FF_FORMAT_ARG_TYPE_STRBUF , & family },
{ FF_FORMAT_ARG_TYPE_STRBUF , & name },
{ FF_FORMAT_ARG_TYPE_STRBUF , & version }
});
2021-03-21 16:52:17 +01:00
ffStrbufDestroy ( & family );
ffStrbufDestroy ( & name );
ffStrbufDestroy ( & version );
2021-03-27 18:14:19 +01:00
}