From 37f687e09940b8aea678b166750b54cd90d34e55 Mon Sep 17 00:00:00 2001 From: jow Date: Thu, 3 May 2012 17:19:20 +0000 Subject: 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 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31571 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/uhttpd/src/uhttpd-lua.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'package/uhttpd/src/uhttpd-lua.c') diff --git a/package/uhttpd/src/uhttpd-lua.c b/package/uhttpd/src/uhttpd-lua.c index a140dc2f2..83b0b0a26 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, -- cgit v1.2.3