Merge pull request #453 from liuming50/fix-rtc-restore-issues

plugins:rtc.c: drop some invalid condition checks

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg authored and GitHub committed 2025-10-14 20:33:25 +02:00
commit c23952cd9e
1 file changed
+21 -13
+21 -13
View File
@@ -170,16 +170,18 @@ static void file_save(void *arg)
static void file_restore(void *arg) static void file_restore(void *arg)
{ {
struct tm tm = { 0 }; struct tm tm = { 0 };
int rc = 1; int rc = 0;
FILE *fp; FILE *fp;
char msg[120];
if (!rtc_file) { if (!rtc_file) {
logit(LOG_NOTICE, "System has no RTC (missing driver?), skipping restore."); snprintf(msg, sizeof(msg), "Resetting system clock to kernel default, %s.", rtc_timestamp);
print_desc(NULL, msg);
rc = time_set(NULL);
print(rc, NULL);
return; return;
} }
print_desc(NULL, "Restoring system clock from backup");
fp = fopen(rtc_file, "r"); fp = fopen(rtc_file, "r");
if (fp) { if (fp) {
char buf[32]; char buf[32];
@@ -187,18 +189,25 @@ static void file_restore(void *arg)
if (fgets(buf, sizeof(buf), fp)) { if (fgets(buf, sizeof(buf), fp)) {
chomp(buf); chomp(buf);
strptime(buf, RTC_FMT, &tm); strptime(buf, RTC_FMT, &tm);
rc = time_set(&tm); if (!strptime(buf, RTC_FMT, &tm))
rc = 1;
} }
fclose(fp); fclose(fp);
} else }
logit(LOG_WARNING, "Missing %s", rtc_file); rc = 1;
if (rc) { if (rc) {
time_set(NULL); print_desc(NULL, "Failed to restore system clock from restore file");
rc = 2; print(2, NULL);
snprintf(msg, sizeof(msg), "Resetting system clock to kernel default, %s.", rtc_timestamp);
print_desc(NULL, msg);
rc = time_set(NULL);
print(rc, NULL);
} else {
print_desc(NULL, "Restoring system clock from restore file");
rc = time_set(&tm);
print(rc, NULL);
} }
print(rc, NULL);
} }
static int rtc_open(void) static int rtc_open(void)
@@ -292,8 +301,7 @@ static void rtc_restore(void *arg)
print(2, NULL); print(2, NULL);
/* Try restoring from last save game */ /* Try restoring from last save game */
if (rtc_file) file_restore(arg);
file_restore(arg);
} else } else
print(0, NULL); print(0, NULL);