local read_tzfile = require "luatz.tzfile".read_tzfile

local base_zoneinfo_path = "/usr/share/zoneinfo/"
local local_zoneinfo_path = "/etc/localtime"
local tz_cache = { }

local function name_to_zoneinfo_path ( name )
	if name == nil then
		return local_zoneinfo_path
	elseif name:sub ( 1 , 1 ) == "/" then
		return name
	else
		return base_zoneinfo_path .. name
	end
end

local function clear_tz_cache ( name )
	tz_cache [ name_to_zoneinfo_path ( name ) ] = nil
end

local function get_tz ( name )
	local path = name_to_zoneinfo_path ( name )
	-- TODO: stat path
	local tzinfo = tz_cache [ path ]
	if tzinfo == nil then
		tzinfo = read_tzfile ( path )
		tz_cache [ path ] = tzinfo
	end
	return tzinfo
end

return {
	get_tz = get_tz ;
	clear_tz_cache = clear_tz_cache ;
}
