From: Jo-Philipp Wich <jow@openwrt.org>
Date: Sat, 4 Apr 2009 22:54:16 +0000 (+0000)
Subject: trunk: prepare LuCI to handle .lua.gz files
X-Git-Tag: 0.9.0~537
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9835296ba2623b5c87624da3a8ba5f43595297d0;p=oweals%2Fluci.git

trunk: prepare LuCI to handle .lua.gz files
---

diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua
index ebca729bb..18d84e52f 100644
--- a/libs/cbi/luasrc/cbi.lua
+++ b/libs/cbi/luasrc/cbi.lua
@@ -59,12 +59,15 @@ function load(cbimap, ...)
 	local upldir = "/lib/uci/upload/"
 	local cbidir = luci.util.libpath() .. "/model/cbi/"
 
-	assert(luci.fs.stat(cbimap) or luci.fs.stat(cbidir..cbimap..".lua"),
-	 "Model not found!")
+	assert(luci.fs.stat(cbimap) or
+		luci.fs.stat(cbidir..cbimap..".lua") or
+		luci.fs.stat(cbidir..cbimap..".lua.gz"),
+			"Model not found!")
 
 	local func, err = loadfile(cbimap)
 	if not func then
-		func, err = loadfile(cbidir..cbimap..".lua")
+		func, err = loadfile(cbidir..cbimap..".lua") or
+			loadfile(cbidir..cbimap..".lua.gz")
 	end
 	assert(func, err)
 
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index 565e995d1..519473ea4 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -355,7 +355,7 @@ end
 --- Generate the dispatching index using the best possible strategy.
 function createindex()
 	local path = luci.util.libpath() .. "/controller/"
-	local suff = ".lua"
+	local suff = { ".lua", ".lua.gz" }
 
 	if luci.util.copcall(require, "luci.fastindex") then
 		createindex_fastindex(path, suff)
@@ -366,14 +366,16 @@ end
 
 --- Generate the dispatching index using the fastindex C-indexer.
 -- @param path		Controller base directory
--- @param suffix	Controller file suffix
-function createindex_fastindex(path, suffix)
+-- @param suffixes	Controller file suffixes
+function createindex_fastindex(path, suffixes)
 	index = {}
 
 	if not fi then
 		fi = luci.fastindex.new("index")
-		fi.add(path .. "*" .. suffix)
-		fi.add(path .. "*/*" .. suffix)
+		for _, suffix in ipairs(suffixes) do
+			fi.add(path .. "*" .. suffix)
+			fi.add(path .. "*/*" .. suffix)
+		end
 	end
 	fi.scan()
 
@@ -384,12 +386,16 @@ end
 
 --- Generate the dispatching index using the native file-cache based strategy.
 -- @param path		Controller base directory
--- @param suffix	Controller file suffix
-function createindex_plain(path, suffix)
-	local controllers = util.combine(
-		luci.fs.glob(path .. "*" .. suffix) or {},
-		luci.fs.glob(path .. "*/*" .. suffix) or {}
-	)
+-- @param suffixes	Controller file suffixes
+function createindex_plain(path, suffixes)
+	local controllers = { }
+	for _, suffix in ipairs(suffixes) do
+		util.combine(
+			controllers,
+			luci.fs.glob(path .. "*" .. suffix) or {},
+			luci.fs.glob(path .. "*/*" .. suffix) or {}
+		)
+	end
 
 	if indexcache then
 		local cachedate = fs.mtime(indexcache)
@@ -416,7 +422,11 @@ function createindex_plain(path, suffix)
 	index = {}
 
 	for i,c in ipairs(controllers) do
-		local module = "luci.controller." .. c:sub(#path+1, #c-#suffix):gsub("/", ".")
+		local module = "luci.controller." .. c:sub(#path+1, #c):gsub("/", ".")
+		for _, suffix in ipairs(suffixes) do
+			module = module:gsub(suffix.."$", "")
+		end
+
 		local mod = require(module)
 		local idx = mod.index
 
diff --git a/libs/web/luasrc/i18n.lua b/libs/web/luasrc/i18n.lua
index 4b3adf7eb..4db9c3343 100644
--- a/libs/web/luasrc/i18n.lua
+++ b/libs/web/luasrc/i18n.lua
@@ -47,7 +47,9 @@ end
 function load(file, lang, force)
 	lang = lang and lang:gsub("_", "-") or ""
 	if force or not loaded[lang] or not loaded[lang][file] then
-		local f = loadfile(i18ndir .. file .. "." .. lang .. ".lua")
+		local f = loadfile(i18ndir .. file .. "." .. lang .. ".lua") or
+			loadfile(i18ndir .. file .. "." .. lang .. ".lua.gz")
+
 		if f then
 			table[lang] = table[lang] or {}
 			setfenv(f, table[lang])
diff --git a/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua b/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua
index 20d50cceb..6ec13b84e 100644
--- a/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua
+++ b/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua
@@ -29,7 +29,11 @@ l:value("auto")
 
 local i18ndir = luci.i18n.i18ndir .. "default."
 for k, v in pairs(luci.config.languages) do
-	if k:sub(1, 1) ~= "." and luci.fs.access(i18ndir .. k:gsub("_", "-") .. ".lua") then
+	local file = i18ndir .. k:gsub("_", "-")
+	if k:sub(1, 1) ~= "." and (
+		luci.fs.access(file .. ".lua") or
+		luci.fs.access(file .. ".lua.gz")
+	) then
 		l:value(k, v)
 	end
 end
diff --git a/modules/admin-mini/luasrc/model/cbi/mini/luci.lua b/modules/admin-mini/luasrc/model/cbi/mini/luci.lua
index 9eea8715e..d3afd5537 100644
--- a/modules/admin-mini/luasrc/model/cbi/mini/luci.lua
+++ b/modules/admin-mini/luasrc/model/cbi/mini/luci.lua
@@ -29,7 +29,11 @@ l:value("auto")
 
 local i18ndir = luci.i18n.i18ndir .. "default."
 for k, v in pairs(luci.config.languages) do
-	if k:sub(1, 1) ~= "." and luci.fs.access(i18ndir .. k:gsub("_", "-") .. ".lua") then
+	local file = i18ndir .. k:gsub("_", "-")
+	if k:sub(1, 1) ~= "." and (
+		luci.fs.access(file .. ".lua") or
+		luci.fs.access(file .. ".lua.gz")
+	) then
 		l:value(k, v)
 	end
 end