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  

Impressum / About Us