summaryrefslogtreecommitdiffstats
path: root/package/uhttpd/src/uhttpd-lua.c
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2012-05-03 17:19:20 +0000
committerJo-Philipp Wich <jow@openwrt.org>2012-05-03 17:19:20 +0000
commit54b34ccbc5a41e7bdbf29271dcc380715418f8c1 (patch)
treec764006195d2181e43fd9461543327e70523740e /package/uhttpd/src/uhttpd-lua.c
parentbcd8d530d10127ce0be796fe7ef42944c47d4485 (diff)
downloadmaster-31e0f0ae-54b34ccbc5a41e7bdbf29271dcc380715418f8c1.tar.gz
master-31e0f0ae-54b34ccbc5a41e7bdbf29271dcc380715418f8c1.tar.bz2
master-31e0f0ae-54b34ccbc5a41e7bdbf29271dcc380715418f8c1.zip
uhttpd: added uhttpd.docroot
Passes the document-root to the Lua handler by placing it in uhttpd.docroot. It could alternatively be placed in env.DOCUMENT_ROOT which would more closely resemble the CGI protocol; but would mean that it is not available at the time when the handler-chunk is loaded but rather not until the handler is called, without any code savings. Signed-off-by: David Favro <openwrt@meta-dynamic.com> SVN-Revision: 31571
Diffstat (limited to 'package/uhttpd/src/uhttpd-lua.c')
-rw-r--r--package/uhttpd/src/uhttpd-lua.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/package/uhttpd/src/uhttpd-lua.c b/package/uhttpd/src/uhttpd-lua.c
index a140dc2f2d..83b0b0a26b 100644
--- a/package/uhttpd/src/uhttpd-lua.c
+++ b/package/uhttpd/src/uhttpd-lua.c
@@ -137,7 +137,7 @@ static int uh_lua_urlencode(lua_State *L)
}
-lua_State * uh_lua_init(const char *handler)
+lua_State * uh_lua_init(const struct config *conf)
{
lua_State *L = lua_open();
const char *err_str = NULL;
@@ -164,12 +164,20 @@ lua_State * uh_lua_init(const char *handler)
lua_pushcfunction(L, uh_lua_urlencode);
lua_setfield(L, -2, "urlencode");
+ /* Pass the document-root to the Lua handler by placing it in
+ ** uhttpd.docroot. It could alternatively be placed in env.DOCUMENT_ROOT
+ ** which would more closely resemble the CGI protocol; but would mean that
+ ** it is not available at the time when the handler-chunk is loaded but
+ ** rather not until the handler is called, without any code savings. */
+ lua_pushstring(L, conf->docroot);
+ lua_setfield(L, -2, "docroot");
+
/* _G.uhttpd = { ... } */
lua_setfield(L, LUA_GLOBALSINDEX, "uhttpd");
/* load Lua handler */
- switch( luaL_loadfile(L, handler) )
+ switch( luaL_loadfile(L, conf->lua_handler) )
{
case LUA_ERRSYNTAX:
fprintf(stderr,