diff options
author | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-05-03 17:19:20 +0000 |
---|---|---|
committer | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-05-03 17:19:20 +0000 |
commit | 37f687e09940b8aea678b166750b54cd90d34e55 (patch) | |
tree | e0ae1e375441ad6bb5cf23d537bad535e3a58e34 /package/uhttpd/src/uhttpd-lua.c | |
parent | 8329c6da4fac952135d7f10d8ee008b5342ad87b (diff) |
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>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31571 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/uhttpd/src/uhttpd-lua.c')
-rw-r--r-- | package/uhttpd/src/uhttpd-lua.c | 12 |
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, |