minilibc:
Fix a bug in time functions git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1520 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
6904f495e1
commit
e74ca7fc9f
|
@ -70,7 +70,7 @@ struct tm *gmtime_r(const time_t *timep, struct tm *r)
|
||||||
struct tm* localtime_r(const time_t* t, struct tm* r)
|
struct tm* localtime_r(const time_t* t, struct tm* r)
|
||||||
{
|
{
|
||||||
time_t tmp;
|
time_t tmp;
|
||||||
struct timezone tz;
|
struct timezone tz = {0};
|
||||||
gettimeofday(0, &tz);
|
gettimeofday(0, &tz);
|
||||||
timezone = tz.tz_minuteswest * 60L;
|
timezone = tz.tz_minuteswest * 60L;
|
||||||
tmp = *t + timezone;
|
tmp = *t + timezone;
|
||||||
|
@ -134,8 +134,9 @@ time_t timegm(struct tm * const t)
|
||||||
This is not intuitive. Most mktime implementations do not support
|
This is not intuitive. Most mktime implementations do not support
|
||||||
dates after 2059, anyway, so we might leave this out for it's
|
dates after 2059, anyway, so we might leave this out for it's
|
||||||
bloat. */
|
bloat. */
|
||||||
if ((years -= 131) >= 0)
|
if (years >= 131)
|
||||||
{
|
{
|
||||||
|
years -= 131;
|
||||||
years /= 100;
|
years /= 100;
|
||||||
day -= (years >> 2) * 3 + 1;
|
day -= (years >> 2) * 3 + 1;
|
||||||
if ((years &= 3) == 3)
|
if ((years &= 3) == 3)
|
||||||
|
@ -159,7 +160,7 @@ time_t timegm(struct tm * const t)
|
||||||
time_t mktime(register struct tm* const t)
|
time_t mktime(register struct tm* const t)
|
||||||
{
|
{
|
||||||
time_t x = timegm(t);
|
time_t x = timegm(t);
|
||||||
struct timezone tz;
|
struct timezone tz = {0};
|
||||||
gettimeofday(0, &tz);
|
gettimeofday(0, &tz);
|
||||||
timezone = tz.tz_minuteswest * 60L;
|
timezone = tz.tz_minuteswest * 60L;
|
||||||
x += timezone;
|
x += timezone;
|
||||||
|
|
Loading…
Reference in New Issue