From 6dcf22920aed79b06aea8a7bdb68af88aff3a00f Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Wed, 16 Apr 2014 18:11:07 +0200 Subject: gsm0411_utils: Use localtime instead of gmtime in gsm340_gen_scts We actually want to write the local time in SCTS --- src/gsm/gsm0411_utils.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/gsm/gsm0411_utils.c b/src/gsm/gsm0411_utils.c index 503571e7..71973a95 100644 --- a/src/gsm/gsm0411_utils.c +++ b/src/gsm/gsm0411_utils.c @@ -75,19 +75,23 @@ uint8_t gsm411_unbcdify(uint8_t value) /* Generate 03.40 TP-SCTS */ void gsm340_gen_scts(uint8_t *scts, time_t time) { - struct tm *tm = gmtime(&time); - - *scts++ = gsm411_bcdify(tm->tm_year % 100); - *scts++ = gsm411_bcdify(tm->tm_mon + 1); - *scts++ = gsm411_bcdify(tm->tm_mday); - *scts++ = gsm411_bcdify(tm->tm_hour); - *scts++ = gsm411_bcdify(tm->tm_min); - *scts++ = gsm411_bcdify(tm->tm_sec); + struct tm tm; + + tzset(); + localtime_r(&time, &tm); + + *scts++ = gsm411_bcdify(tm.tm_year % 100); + *scts++ = gsm411_bcdify(tm.tm_mon + 1); + *scts++ = gsm411_bcdify(tm.tm_mday); + *scts++ = gsm411_bcdify(tm.tm_hour); + *scts++ = gsm411_bcdify(tm.tm_min); + *scts++ = gsm411_bcdify(tm.tm_sec); + #ifdef HAVE_TM_GMTOFF_IN_TM - if (tm->tm_gmtoff >= 0) - *scts++ = gsm411_bcdify(tm->tm_gmtoff/(60*15)); + if (tm.tm_gmtoff >= 0) + *scts++ = gsm411_bcdify(tm.tm_gmtoff/(60*15)); else - *scts++ = gsm411_bcdify(-tm->tm_gmtoff/(60*15)) | 0x08; + *scts++ = gsm411_bcdify(-tm.tm_gmtoff/(60*15)) | 0x08; #else #warning find a portable way to obtain timezone offset *scts++ = 0; -- cgit v1.2.3