X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/2f95f50608f64e18a0513ac2e1b713a603db0498..97d46aee1158e549c110d66a0e1c4185c3cbbdf3:/lib/dvb/dvbtime.cpp diff --git a/lib/dvb/dvbtime.cpp b/lib/dvb/dvbtime.cpp index 03847ecb..bb6b94b0 100644 --- a/lib/dvb/dvbtime.cpp +++ b/lib/dvb/dvbtime.cpp @@ -20,7 +20,7 @@ void setRTC(time_t time) FILE *f = fopen("/proc/stb/fp/rtc", "w"); if (f) { - if (fprintf(f, "%u", time)) + if (fprintf(f, "%u", (unsigned int)time)) prev_time = time; else eDebug("write /proc/stb/fp/rtc failed (%m)"); @@ -47,8 +47,11 @@ time_t getRTC() if (f) { // sanity check to detect corrupt atmel firmware - if (fscanf(f, "%u", &rtc_time) != 1) + unsigned int tmp; + if (fscanf(f, "%u", &tmp) != 1) eDebug("read /proc/stb/fp/rtc failed (%m)"); + else + rtc_time=tmp; fclose(f); } else @@ -64,7 +67,7 @@ time_t getRTC() return rtc_time != prev_time ? rtc_time : 0; } -time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5) +time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5, __u16 *hash) { tm t; t.tm_sec=fromBCD(t5); @@ -84,6 +87,11 @@ time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5) t.tm_isdst = 0; t.tm_gmtoff = 0; + if (hash) { + *hash = t.tm_hour * 60 + t.tm_min; + *hash |= t.tm_mday << 11; + } + return timegm(&t); }