system: fix localtime value in ubus info method output
authorRafał Miłecki <zajec5@gmail.com>
Tue, 5 Jul 2016 13:40:56 +0000 (15:40 +0200)
committerJohn Crispin <john@phrozen.org>
Tue, 5 Jul 2016 20:16:43 +0000 (22:16 +0200)
commit3c771f9e4ba46d3e39334cb20eab98221043f1e2
tree9ad3172e07fe500182668ab4f84ea9c34d11bdf4
parent64970552b42b33cc22220e0943671b597d9243f6
system: fix localtime value in ubus info method output

Function mktime respects current time zone and calling it results in
converting time back to the UTC. It means we were never returning a
time for local zone but GMT one.

The easiest solution is to use tm_gmtoff from struct tm. Unfortunately
this isn't part of POSIX but it seems to be the best idea anyway.

Alternative (worse?) solutions:
1) Use timegm that is nonstandard GNU extension
2) Work with TZ env (getenv & (un)setenv) that is not thread-safe
3) Use timegm (next to localtime) and implement function comparing two
   struct tm. This is what glibc does internally (tm_diff) when compiled
   without HAVE_TM_GMTOFF.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
system.c