X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/e5c87b4489b0881b7b9903733478f0d11ac96ab7..c4d8a1bf5f96364056f744881037ca00b0465824:/luatz/tzcache.lua diff --git a/luatz/tzcache.lua b/luatz/tzcache.lua index de62d79..ae32dce 100644 --- a/luatz/tzcache.lua +++ b/luatz/tzcache.lua @@ -1,31 +1,35 @@ local read_tzfile = require "luatz.tzfile".read_tzfile -local tz_cache = { } +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 then - return "/usr/share/zoneinfo/" .. name +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 "/etc/localtime" + return base_zoneinfo_path .. name end end -local function clear_tz_cache ( name ) - tz_cache [ name_to_zoneinfo_path ( name ) ] = nil +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 ) +local function get_tz(name) + local path = name_to_zoneinfo_path(name) -- TODO: stat path - local tzinfo = tz_cache [ path ] + local tzinfo = tz_cache[path] if tzinfo == nil then - tzinfo = read_tzfile ( path ) - tz_cache [ path ] = tzinfo + tzinfo = read_tzfile(path) + tz_cache[path] = tzinfo end return tzinfo end return { - get_tz = get_tz ; - clear_tz_cache = clear_tz_cache ; + get_tz = get_tz; + clear_tz_cache = clear_tz_cache; }