Changeset 15330


Ignore:
Timestamp:
04/19/12 23:45:50 (11 years ago)
Author:
nit
Message:

[titan] make dvbdate struct dynamic

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/dvb.h

    r15329 r15330  
    660660        int i = 0;
    661661        long mjd;
    662         struct tm time;
     662        struct tm *time = NULL;
     663        time_t gmttime = 0;
     664
     665        time = (struct tm*)malloc(sizeof(struct tm));
     666        if(time == NULL)
     667        {
     668                err("no mem");
     669                return 0;
     670        }
    663671
    664672        memset(&time, 0, sizeof(time));
    665673
    666674        mjd = ((buf[0] & 0xff) << 8) | (buf[1] & 0xff);
    667         time.tm_hour = bcdtoint(buf[2] & 0xff);
    668         time.tm_min = bcdtoint(buf[3] & 0xff);
    669         time.tm_sec = bcdtoint(buf[4] & 0xff);
    670 
    671         time.tm_year = (int) ((mjd - 15078.2) / 365.25);
    672         time.tm_mon = (int) ((mjd - 14956.1 - (int) (time.tm_year * 365.25)) / 30.6001);
    673         time.tm_mday = (int) mjd - 14956 - (int) (time.tm_year * 365.25) - (int) (time.tm_mon * 30.6001);
    674         if(time.tm_mon == 14 || time.tm_mon == 15) i = 1;
    675         time.tm_year += i;
    676         time.tm_mon = time.tm_mon - 2 - i * 12;
    677 
    678         time.tm_isdst = 0;
    679         time.tm_gmtoff = 0;
     675        time->tm_hour = bcdtoint(buf[2] & 0xff);
     676        time->tm_min = bcdtoint(buf[3] & 0xff);
     677        time->tm_sec = bcdtoint(buf[4] & 0xff);
     678
     679        time->tm_year = (int) ((mjd - 15078.2) / 365.25);
     680        time->tm_mon = (int) ((mjd - 14956.1 - (int) (time->tm_year * 365.25)) / 30.6001);
     681        time->tm_mday = (int) mjd - 14956 - (int) (time->tm_year * 365.25) - (int) (time->tm_mon * 30.6001);
     682        if(time->tm_mon == 14 || time->tm_mon == 15) i = 1;
     683        time->tm_year += i;
     684        time->tm_mon = time->tm_mon - 2 - i * 12;
     685
     686        time->tm_isdst = 0;
     687        time->tm_gmtoff = 0;
    680688
    681689        if(flag == 0)
    682                 return timegm(&time);
     690                gmttime = timegm(time);
    683691        else
    684                 return mktime(&time);
     692                gmttime = mktime(time);
     693
     694        free(time);
     695        return gmttime;
    685696}
    686697
Note: See TracChangeset for help on using the changeset viewer.