From 852a5a4f11f0b4de924a49403ab864cc0584a0ad Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 5 Jan 2013 14:17:21 +0100 Subject: [PATCH] add a c function for .send and .sendc --- lua.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) 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); -- 2.25.1