X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/e5c87b4489b0881b7b9903733478f0d11ac96ab7..8f2b79ab6974384bf3760c3015156cd9c6090c34:/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;
 }