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-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-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-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-03-12 12:16:41 +01:00
2021-04-03 21:51:50 +02:00
if ( family . length == 0 && name . length == 0 )
{
2021-04-15 18:59:26 +02:00
ffPrintError ( instance , FF_HOST_MODULE_NAME , 0 , & instance -> config . hostKey , & instance -> config . hostFormat , FF_HOST_NUM_FORMAT_ARGS , "neither family nor name could be determined" );
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-04-15 18:59:26 +02:00
if ( name . length == 0 )
2021-03-19 20:57:07 +01:00
{
2021-04-15 18:59:26 +02:00
ffStrbufAppend ( & host , & family );
}
else if ( family . length == 0 )
{
ffStrbufAppend ( & host , & name );
2021-02-19 16:23:41 +01:00
}
2021-03-23 19:48:52 +01:00
else
{
2021-04-15 18:59:26 +02:00
ffStrbufAppend ( & host , & family );
ffStrbufAppendC ( & host , ' ' );
ffStrbufAppend ( & host , & name );
}
if (
version . length > 0 &&
ffStrbufIgnCaseCompS ( & version , "None" ) != 0 &&
ffStrbufIgnCaseCompS ( & version , "To be filled by O.E.M." ) != 0
) {
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
}