Handle localtime_r() failure in j1939 timedate
When the call to localtime_r() fails (by returning NULL, as per the POSIX specification), make sure to fill the hour/minute offsets with the fallback values as specified in the J1939DA supporting information.pull/627/head
parent
99ab67143a
commit
e9b81276e5
|
|
@ -41,6 +41,7 @@ static void gmtime_to_j1939_pgn_65254_td(struct j1939_time_date_packet *tdp)
|
||||||
utc_tm = gmtime_r(&now, &utc_tm_buf);
|
utc_tm = gmtime_r(&now, &utc_tm_buf);
|
||||||
local_tm = localtime_r(&now, &local_tm_buf);
|
local_tm = localtime_r(&now, &local_tm_buf);
|
||||||
|
|
||||||
|
if (local_tm != NULL) {
|
||||||
/* Calculate the offsets */
|
/* Calculate the offsets */
|
||||||
hour_offset = local_tm->tm_hour - utc_tm->tm_hour;
|
hour_offset = local_tm->tm_hour - utc_tm->tm_hour;
|
||||||
minute_offset = local_tm->tm_min - utc_tm->tm_min;
|
minute_offset = local_tm->tm_min - utc_tm->tm_min;
|
||||||
|
|
@ -52,6 +53,11 @@ static void gmtime_to_j1939_pgn_65254_td(struct j1939_time_date_packet *tdp)
|
||||||
else
|
else
|
||||||
hour_offset -= 24; /* before midnight */
|
hour_offset -= 24; /* before midnight */
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
/* The local time offsets cannot be determined at the moment */
|
||||||
|
hour_offset = 0xF9;
|
||||||
|
minute_offset = 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Seconds (spn959):
|
* Seconds (spn959):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue