From 7f19cb1d2175dbe38249c05628a5aaaa3b0cffa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 20 Sep 2022 18:26:50 +0800 Subject: [PATCH] Battery: print error info instead of nan% ( macOS ) --- src/detection/battery/battery_apple.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/detection/battery/battery_apple.c b/src/detection/battery/battery_apple.c index 979367662..8fa956c77 100644 --- a/src/detection/battery/battery_apple.c +++ b/src/detection/battery/battery_apple.c @@ -27,13 +27,23 @@ const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results) } bool boolValue; + const char* error; BatteryResult* battery = ffListAdd(results); ffStrbufInit(&battery->capacity); int currentCapacity, maxCapacity; - if(!ffCfDictGetInt(properties, CFSTR("CurrentCapacity"), ¤tCapacity) && - !ffCfDictGetInt(properties, CFSTR("MaxCapacity"), &maxCapacity)) - ffStrbufAppendF(&battery->capacity, "%.0f", currentCapacity * 100.0 / maxCapacity); + + if ((error = ffCfDictGetInt(properties, CFSTR("MaxCapacity"), &maxCapacity))) + return error; + if (maxCapacity <= 0) + return "Querying MaxCapacity failed"; + + if ((error = ffCfDictGetInt(properties, CFSTR("CurrentCapacity"), ¤tCapacity))) + return error; + if(currentCapacity <= 0) + return "Querying CurrentCapacity failed"; + + ffStrbufAppendF(&battery->capacity, "%.0f", currentCapacity * 100.0 / maxCapacity); ffStrbufInit(&battery->manufacturer); ffStrbufInit(&battery->modelName);