]> git.madduck.net Git - etc/awesome.git/blobdiff - luatz/tzfile.lua

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

luatz/tzinfo: Allow timetable objects in tzinfo methods
[etc/awesome.git] / luatz / tzfile.lua
index eed426e75efc475af1d43ff3e2c81adf80f1ea57..a0f8da5fb62e969bd62bf7b4f13d1afb74d9d407 100644 (file)
@@ -1,4 +1,6 @@
 local tz_info_mt = require "luatz.tzinfo".tz_info_mt
+local tt_info_mt = require "luatz.tzinfo".tt_info_mt
+
 
 local function read_int32be ( fd )
        local data , err = fd:read ( 4 )
@@ -39,7 +41,7 @@ end
 
 local fifteen_nulls = ("\0"):rep(15)
 local function read_tz ( fd )
-       assert ( fd:read(4) == "TZif" )
+       assert ( fd:read(4) == "TZif" , "Invalid TZ file" )
        local version = assert ( fd:read(1) )
        if version == "\0" or version == "2" then
                local MIN_TIME = -2^32+1
@@ -162,6 +164,7 @@ local function read_tz ( fd )
                        v.abbr = abbreviations:sub ( v.abbrind+1 , v.abbrind+3 )
                        v.isstd = isstd [ i ] or false
                        v.isgmt = isgmt [ i ] or false
+                       setmetatable ( v , tt_info_mt )
                end
 
                --[[
@@ -198,7 +201,7 @@ local function read_tz ( fd )
 end
 
 local function read_tzfile ( path )
-       local fd = assert ( io.open ( path ) )
+       local fd = assert ( io.open ( path , "rb" ) )
        local tzinfo = read_tz ( fd )
        fd:close ( )
        return tzinfo