Hello Could you unsubscribe me from this mailing list.
Regards Sunil. ________________________________ From: [EMAIL PROTECTED] on behalf of David Schwartz Sent: Fri 6/6/2008 10:09 AM To: [email protected] Subject: RE: 2038 date limit > Changing this is would involve including independent date > routines which don't > have this restriction. I did start on this some time ago but other higher > priority tasks (e.g. paid ones!) took over. I've got 64-bit date/time routines that are good out to 2270 that work fine on 32-bit architectures. Would the following routines be sufficient: 1) All routines are based on a uint64_t to hold the seconds since the epoch. So you can still easily convert to/from time_t for in-range values. 2) Get day, month, year, hour, minute, and second from a uint64_t seconds since the epoch value. Or, convert a uint64_t to a struct tm (as either UTC or local time) and you can extract whichever of these elements are needed. 3) Convert to time_t, which returns an error if the value is out of range. 4) Format a uint64_t in UTC time using a strftime like format. Format in local time using a strftime like format. 5) Convert a struct tm in either local or UTC time to a 64-bit 'seconds since epoch' value. To add a second or a week or compare two times, normal integer routines can be used. All routines, again, are believed valid from the epoch to 2270. (At worst, they might somehow bungle leap year issues, I guess.) The way these routines work is for out-of-range dates, they fudge them into range (using an offset that keeps all time rules the same), use the system routines, and then fudge them back to the starting range. For example (this is not quite the actual code): #define ULL(x) x##ULL #define SSE(x,y) if(secs>=x) { secs-=x; add_years=y; } #define DAYS(x) (ULL(x)*(24*60*60)) ... // adjust to range if(secs<ULL(0x7fffffff)) { add_years=0; } else SSE(DAYS(87669), 240) else SSE(DAYS(80353), 220) else SSE(DAYS(73049), 200) else SSE(DAYS(65744), 180) else SSE(DAYS(58439), 160) else SSE(DAYS(51134), 140) else SSE(DAYS(43830), 120) else SSE(DAYS(36525), 100) else SSE(DAYS(29220), 80) else SSE(DAYS(23376), 64) ... // bring it back in range t.tm_year+=add_years; If this code would be helpful, I could clean it up and separate it from some other code it's entangled with. I don't have the time to work on integrating it with OpenSSL though. (Though if there's interest but not resources, I might be able to task someone else with doing it.) DS ______________________________________________________________________ OpenSSL Project http://www.openssl.org <http://www.openssl.org/> User Support Mailing List [email protected] Automated List Manager [EMAIL PROTECTED] Please do not print this email unless it is absolutely necessary. The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com
<<winmail.dat>>
