X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/97f3375906b56c5dfaddfcdb5208002919006ad1..cdaad9ec35371fcfc3b398b7302f1e8fe313b4f6:/luatz/tzfile.lua diff --git a/luatz/tzfile.lua b/luatz/tzfile.lua index d4285c4..2d64d36 100644 --- a/luatz/tzfile.lua +++ b/luatz/tzfile.lua @@ -3,7 +3,9 @@ local tt_info_mt = require "luatz.tzinfo".tt_info_mt local read_int32be, read_int64be -if string.unpack then -- Only available in Lua 5.3+ +-- luacheck: push std max +if string.unpack then + -- Only available in Lua 5.3+ function read_int32be(fd) local data, err = fd:read(4) if data == nil then return nil, err end @@ -15,7 +17,7 @@ if string.unpack then -- Only available in Lua 5.3+ if data == nil then return nil, err end return string.unpack(">i8", data) end -else +else -- luacheck: pop function read_int32be(fd) local data, err = fd:read(4) if data == nil then return nil, err end @@ -58,7 +60,7 @@ local fifteen_nulls = ("\0"):rep(15) local function read_tz ( fd ) assert ( fd:read(4) == "TZif" , "Invalid TZ file" ) local version = assert ( fd:read(1) ) - if version == "\0" or version == "2" then + if version == "\0" or version == "2" or version == "3" then local MIN_TIME = -2^32+1 assert ( assert ( fd:read(15) ) == fifteen_nulls , "Expected 15 nulls" ) @@ -98,7 +100,7 @@ local function read_tz ( fd ) local abbreviations = assert ( fd:read ( tzh_charcnt ) ) - local leap_seconds = { } + local leap_seconds = { } -- luacheck: ignore 241 for i=1, tzh_leapcnt do leap_seconds [ i ] = { offset = assert ( read_int32be ( fd ) ) ; @@ -117,7 +119,8 @@ local function read_tz ( fd ) For version-2-format timezone files, the above header and data is followed by a second header and data, identical in format except that eight bytes are used for each transition time or leap-second time. ]] - assert ( fd:read(5) == "TZif2" ) + assert(fd:read(4) == "TZif") + assert(fd:read(1) == version) assert ( assert ( fd:read(15) ) == fifteen_nulls , "Expected 15 nulls" ) MIN_TIME = -2^64+1 @@ -217,6 +220,7 @@ local function read_tz ( fd ) end local res = { + future = TZ; [0] = { transition_time = MIN_TIME ; info = ttinfos [ first ] ;