moonbridge
changeset 90:54e6104c70a6
Proper return values for drain functions
author | jbe |
---|---|
date | Tue Apr 07 02:52:41 2015 +0200 (2015-04-07) |
parents | c4fd976d9537 |
children | 6b26783f9323 |
files | moonbridge_io.c |
line diff
1.1 --- a/moonbridge_io.c Tue Apr 07 02:52:24 2015 +0200 1.2 +++ b/moonbridge_io.c Tue Apr 07 02:52:41 2015 +0200 1.3 @@ -115,6 +115,9 @@ 1.4 if (!drain) { 1.5 luaL_addlstring(&luabuf, handle->readbuf, endcnt); 1.6 luaL_pushresult(&luabuf); 1.7 + } else { 1.8 + luabufcnt += handle->readbufcnt; 1.9 + lua_pushinteger(L, luabufcnt); 1.10 } 1.11 handle->readbufcnt -= endcnt; 1.12 memmove(handle->readbuf, handle->readbuf + endcnt, handle->readbufcnt); 1.13 @@ -140,7 +143,18 @@ 1.14 luaL_addlstring(&luabuf, handle->readbuf, handle->readbufcnt); 1.15 luaL_pushresult(&luabuf); 1.16 } 1.17 + luabufcnt += handle->readbufcnt; 1.18 handle->readbufcnt = 0; 1.19 + if (!drain) { 1.20 + if (!luabufcnt && result == 0) { 1.21 + lua_pushboolean(L, 0); 1.22 + lua_pushliteral(L, "End of file"); 1.23 + return 2; 1.24 + } 1.25 + } else { 1.26 + if (!luabufcnt && result == 0) lua_pushboolean(L, 1); 1.27 + else lua_pushboolean(L, luabufcnt); 1.28 + } 1.29 return 1; 1.30 } 1.31