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
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
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" )
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 ) ) ;
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
end
local res = {
+ future = TZ;
[0] = {
transition_time = MIN_TIME ;
info = ttinfos [ first ] ;