Files
fastfetch/src/detection/chassis/chassis_linux.c
T

33 lines
1.0 KiB
C
Raw Normal View History

2022-12-24 22:48:10 +08:00
#include "chassis.h"
#include "common/io/io.h"
2023-06-22 10:45:43 +00:00
#include "util/smbiosHelper.h"
2022-12-24 22:48:10 +08:00
#include <stdlib.h>
2023-06-22 10:45:43 +00:00
static void getSmbiosValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer)
2022-12-24 22:48:10 +08:00
{
ffReadFileBuffer(devicesPath, buffer);
2023-06-22 10:45:43 +00:00
if(ffIsSmbiosValueSet(buffer))
2022-12-24 22:48:10 +08:00
return;
ffReadFileBuffer(classPath, buffer);
2023-06-22 10:45:43 +00:00
if(ffIsSmbiosValueSet(buffer))
2022-12-24 22:48:10 +08:00
return;
ffStrbufClear(buffer);
}
2023-06-16 16:33:43 +08:00
const char* ffDetectChassis(FFChassisResult* result)
2022-12-24 22:48:10 +08:00
{
2023-06-22 19:05:13 +08:00
getSmbiosValue("/sys/devices/virtual/dmi/id/chassis_type", "/sys/class/dmi/id/chassis_type", &result->type);
getSmbiosValue("/sys/devices/virtual/dmi/id/chassis_vendor", "/sys/class/dmi/id/chassis_vendor", &result->vendor);
getSmbiosValue("/sys/devices/virtual/dmi/id/chassis_version", "/sys/class/dmi/id/chassis_version", &result->version);
2023-06-22 19:05:13 +08:00
if(result->type.length)
{
2023-06-22 19:05:13 +08:00
const char* typeStr = ffChassisTypeToString(ffStrbufToUInt16(&result->type, 9999));
if(typeStr)
ffStrbufSetS(&result->type, typeStr);
}
2023-06-16 16:33:43 +08:00
return NULL;
2022-12-24 22:48:10 +08:00
}