X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=device%2Flib%2Ftime.c;h=8266ab9e69880f58a6aa8496e296e26a2d3a6897;hb=1e65e3bd5cbff5a1ab4a7a65c2ff68e4b5e5b43c;hp=34bb60c873ea4919bb0b3cb054c00c5d1d74caa4;hpb=ae8d22552c38d80a8269ba2a4c9df28ca114cd42;p=fw%2Fsdcc diff --git a/device/lib/time.c b/device/lib/time.c old mode 100755 new mode 100644 index 34bb60c8..8266ab9e --- a/device/lib/time.c +++ b/device/lib/time.c @@ -25,8 +25,6 @@ #include #include -#define FIXDS390BUG (long) - // please note that the tm structure has the years since 1900, // but time returns the seconds since 1970 @@ -71,18 +69,21 @@ static char ascTimeBuffer[32]; static void CheckTime(struct tm *timeptr) { // we could do some normalization here, e.g. // change 40 october to 9 november + #if !__TIME_UNSIGNED if (timeptr->tm_sec<0) timeptr->tm_sec=0; - else if (timeptr->tm_sec>59) timeptr->tm_sec=59; if (timeptr->tm_min<0) timeptr->tm_min=0; - else if (timeptr->tm_min>59) timeptr->tm_min=59; if (timeptr->tm_hour<0) timeptr->tm_hour=0; - else if (timeptr->tm_hour>23) timeptr->tm_hour=23; if (timeptr->tm_wday<0) timeptr->tm_wday=0; - else if (timeptr->tm_wday>6) timeptr->tm_wday=6; + if (timeptr->tm_mon<0) timeptr->tm_mon=0; + #endif + + if (timeptr->tm_sec>59) timeptr->tm_sec=59; + if (timeptr->tm_min>59) timeptr->tm_min=59; + if (timeptr->tm_hour>23) timeptr->tm_hour=23; + if (timeptr->tm_wday>6) timeptr->tm_wday=6; if (timeptr->tm_mday<1) timeptr->tm_mday=1; else if (timeptr->tm_mday>31) timeptr->tm_mday=31; - if (timeptr->tm_mon<0) timeptr->tm_mon=0; - else if (timeptr->tm_mon>11) timeptr->tm_mon=11; + if (timeptr->tm_mon>11) timeptr->tm_mon=11; if (timeptr->tm_year<0) timeptr->tm_year=0; } @@ -178,28 +179,28 @@ time_t mktime(struct tm *timeptr) { CheckTime(timeptr); // seconds from 1970 till 1 jan 00:00:00 this year - seconds= FIXDS390BUG (year-1970)*60*60*24*365; + seconds= (year-1970)*(60*60*24L*365); // add extra days for leap years for (i=1970; itm_mday-1)*60*60*24; - seconds+= FIXDS390BUG timeptr->tm_hour*60*60; - seconds+= FIXDS390BUG timeptr->tm_min*60; - seconds+= FIXDS390BUG timeptr->tm_sec; + seconds+= (timeptr->tm_mday-1)*60*60*24L; + seconds+= timeptr->tm_hour*60*60L; + seconds+= timeptr->tm_min*60; + seconds+= timeptr->tm_sec; return seconds; }