Uptime: code refactor

This commit is contained in:
李通洲
2023-04-25 19:39:35 +08:00
parent 39582471e8
commit 51bc06f60b
5 changed files with 19 additions and 13 deletions
+1 -1
View File
@@ -5,6 +5,6 @@
#include "fastfetch.h"
uint64_t ffDetectUptime();
const char* ffDetectUptime(uint64_t* result);
#endif
+6 -4
View File
@@ -4,7 +4,7 @@
#include <sys/sysctl.h>
#include <sys/time.h>
uint64_t ffDetectUptime()
const char* ffDetectUptime(uint64_t* result)
{
struct timeval bootTime;
size_t bootTimeSize = sizeof(bootTime);
@@ -12,8 +12,10 @@ uint64_t ffDetectUptime()
(int[]) {CTL_KERN, KERN_BOOTTIME}, 2,
&bootTime, &bootTimeSize,
NULL, 0
) == 0)
return (uint64_t) difftime(time(NULL), bootTime.tv_sec);
) != 0)
return "sysctl({CTL_KERN, KERN_BOOTTIME}) failed";
return 0;
*result = (uint64_t) difftime(time(NULL), bootTime.tv_sec);
return NULL;
}
+4 -3
View File
@@ -2,10 +2,11 @@
#include <sys/sysinfo.h>
uint64_t ffDetectUptime()
const char* ffDetectUptime(uint64_t* result)
{
struct sysinfo info;
if(sysinfo(&info) != 0)
return 0;
return (uint32_t) info.uptime;
return "sysinfo() failed";
*result = info.uptime;
return NULL;
}
+3 -2
View File
@@ -2,7 +2,8 @@
#include <sysinfoapi.h>
uint64_t ffDetectUptime()
const char* ffDetectUptime(uint64_t* result)
{
return GetTickCount64() / 1000;
*result = GetTickCount64() / 1000;
return NULL;
}
+5 -3
View File
@@ -7,11 +7,13 @@
void ffPrintUptime(FFinstance* instance)
{
uint64_t uptime = ffDetectUptime();
uint64_t uptime;
if(uptime == 0)
const char* error = ffDetectUptime(&uptime);
if(error)
{
ffPrintError(instance, FF_UPTIME_MODULE_NAME, 0, &instance->config.uptime, "Uptime could't be detected");
ffPrintError(instance, FF_UPTIME_MODULE_NAME, 0, &instance->config.uptime, "%s", error);
return;
}