mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-20 18:10:07 +00:00
When parsing a timestamp-string into epoch seconds, first we use strptime to get a `struct tm` of year, month, day, etc, but strptime is timezone-naive and doesn't set tm_isdst meaningfully (glibc apparently doesn't set it at all). Then we ask mktime() to convert a `struct tm` to epoch seconds, and we can ask it to lookup DST status for the current timezone by giving it a `struct tm` with tm_isdst set to a negative value. See the mktime(3) manpage. With this change, strptime_local and localtime2sec agree with how GNU `date` parses timestamp-strings, with the exception that `date` refuses to parse ambiguous timestamp-strings that fall within the "fold" intervals of DST transitions, saying they're invalid. Since `date` uses additional libraries to give good timezone support it's capable of detecting these ambiguous timestamp-strings, but for a tool like miller it's reasonable to rely directly on libc and have it choose an epoch-seconds-timestamp that correspond to either the first or second time-of-day that the timestamp-string represents. Remove a duplicate test from c/reg_test/run. Fix #170 |
||
|---|---|---|
| .. | ||
| expected | ||
| input | ||
| dev | ||
| Makefile.am | ||
| Makefile.in | ||
| README.md | ||
| run | ||
There are two classes of testing for Miller:
-
C source-file names starting with
test_use MinUnit to unit-test various subsystems of interest. These are separate executables built and run by the build framework. -
test/runruns the mainmlrexecutable with canned inputs, comparing actual to canned outputs, to regression-test Miller's end-to-end operation.