diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2014-04-16 18:11:07 +0200 |
---|---|---|
committer | Daniel Willmann <daniel@totalueberwachung.de> | 2014-04-16 18:30:16 +0200 |
commit | 6dcf22920aed79b06aea8a7bdb68af88aff3a00f (patch) | |
tree | 41cb43222ba9b32cb7fef9f48b59394981b4af2c | |
parent | a06d4cca3824eaa16b9b0ce426d1b7ec9b7190e3 (diff) |
gsm0411_utils: Use localtime instead of gmtime in gsm340_gen_scts
We actually want to write the local time in SCTS
-rw-r--r-- | src/gsm/gsm0411_utils.c | 26 |
1 files 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; |