From: Felix Fietkau Date: Sat, 5 Jan 2013 13:17:21 +0000 (+0100) Subject: add a c function for .send and .sendc X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=commitdiff_plain;h=852a5a4f11f0b4de924a49403ab864cc0584a0ad;hp=ac5351b425c2a8faf6e22f8f380f6c5536b95ad2;ds=sidebyside add a c function for .send and .sendc --- diff --git a/lua.c b/lua.c index 0dd4d4c..0b06a33 100644 --- a/lua.c +++ b/lua.c @@ -89,6 +89,19 @@ static int uh_lua_recv(lua_State *L) } } +static int uh_lua_send(lua_State *L) +{ + const char *buf; + size_t len; + + buf = luaL_checklstring(L, 1, &len); + if (len > 0) + len = write(STDOUT_FILENO, buf, len); + + lua_pushnumber(L, len); + return 1; +} + static int uh_lua_strconvert(lua_State *L, int (*convert)(char *, int, const char *, int)) { @@ -138,13 +151,10 @@ static lua_State *uh_lua_state_init(void) /* build uhttpd api table */ lua_newtable(L); - /* - * use print as send and sendc implementation, - * chunked transfer is handled in the main server - */ - lua_getglobal(L, "print"); - lua_pushvalue(L, -1); - lua_setfield(L, -3, "send"); + lua_pushcfunction(L, uh_lua_send); + lua_setfield(L, -2, "send"); + + lua_pushcfunction(L, uh_lua_send); lua_setfield(L, -2, "sendc"); lua_pushcfunction(L, uh_lua_recv);