diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-01-05 14:17:21 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-01-05 14:17:21 +0100 |
commit | 852a5a4f11f0b4de924a49403ab864cc0584a0ad (patch) | |
tree | 51883262eb467673b599b67dae1f9bea71789eb7 /lua.c | |
parent | ac5351b425c2a8faf6e22f8f380f6c5536b95ad2 (diff) |
add a c function for .send and .sendc
Diffstat (limited to 'lua.c')
-rw-r--r-- | lua.c | 24 |
1 files changed, 17 insertions, 7 deletions
@@ -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); |