Some systems come without timegm function in standard library. Taskwarrior
already has its own implementation defined in util.c. However, this has
never been used as util.h has not been included.
Takes the "import" performance test from 5m5s on a test machine to 13s
total.
A huge part of the previously morbid performance were memory allocation
and release for very little benefit in the JSON parser. With this new
approach the copying is kept to a minimum. There is still room for
improvements.
- TW-1265 cannot add UDA with underscore (thanks to Jakub Wilk).
- Added unit tests for TW-1265.
- Added ChangeLog and AUTHOR entries for other fixed issues.
- Factorize code for parsing date elements.
- Better order of blocks for parsing date elements.
- Add corresponding minimal-digit date parsing method for reading seconds,
minutes and week.
- Update documentation and test.
- Remove the code related to the format "day of year" (number of day starting
from the January 1) as mktime does not allow to specify it with the field
tm_yday.
- Cleaner check of the date (everything is done by Date::valid).
- Correct hour, minute and second is also checked.
- Undefined variables are put to today in dates (if year and month is not
specified, the current ones are considered). But if a global ones is
specified, lower one are put to their default values (0 or 1).
- Fixed a bug that caused a commond dateformat (YDM-HN) to be misinterpreted
as a UUID. Solution is to increase minimum partial UUID length from 9 to
14.
- Added portable implementation of timegm for non GNU/BSD platforms that
don't have their own implementation
- Removed the use of tm_gmtoff on non GNU/BSD platforms that don't have
it as part of the tm struct in time.h
- Added CMake tests HAVE_TIMEGM and HAVE_TM_GMTOFF
- Fixed bug #995, which mis-parsed UUIDs in filters as other elements (thanks
to Bryce Harrington).
- Nibbler no longer permits 8-character UUID abbreviations, because too often
they resemble other forms, such as '1111111d' which looks like a duration.
- Modified unit tests accordingly.