#14 closed enhancement (fixed)
Support survey dates before 1970
Reported by: | Graham | Owned by: | Olly Betts |
---|---|---|---|
Priority: | major | Milestone: | 1.1.15 |
Component: | aven | Version: | 1.1.13 |
Keywords: | date | Cc: |
Description ¶
It would be useful if Survex could be made to register dates earlier than 1970. At least as far back as 1940 would be good for me.
Change History (3)
comment:1 Changed 15 years ago by
Milestone: | → 1.1.14 |
---|---|
Status: | new → assigned |
comment:2 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Summary: | Dates → Support survey dates before 1970 |
Fixed in r3519.
I bypassed all the time_t range issues by storing the date as the number of days since Jan 1st 1900, so survey dates from 1900-2078 are now accepted, and .3d files are smaller too.
comment:3 Changed 15 years ago by
Milestone: | 1.1.14 → 1.1.15 |
---|
Setting milestone to 1.1.15, since that's the release this fix will be in.
Note: See
TracTickets for help on using
tickets.
The simplest solution for now seems to be to make the time value in the 3d file signed and relax the < 1970 check to be < 1902. That comfortably covers the date ranges people seem to have survey data for.
That'll trivially work on platforms with a signed time_t (which seems to be all the ones we care about), but it seems Microsoft's C runtime doesn't handle negative time_t well:
http://code.google.com/p/y2038/wiki/AmazingDiscoveries
So I guess we'll need to provide our own mktime() replacement there. It's not a complex function, and I found an implementation here with a suitable licence:
http://lynx.isc.org/lynx2.8.5/lynx2-8-5/src/mktime.c