diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2016-09-05 22:16:16 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2016-09-05 22:16:16 +0100 |
commit | 88f504740f1887bc4aa83d51ae0f50f6a9e713d9 (patch) | |
tree | 2ae53775bcfa28a026fe7075c8c8f331ba9cca67 /luxio.c | |
parent | d6e186bad3aa0641091dd37d361be02ce7001a3c (diff) | |
download | luxio-88f504740f1887bc4aa83d51ae0f50f6a9e713d9.tar.gz |
Reflow iconv()
Diffstat (limited to 'luxio.c')
-rw-r--r-- | luxio.c | 64 |
1 files changed, 32 insertions, 32 deletions
@@ -3813,38 +3813,38 @@ luxio_iconv(lua_State *L) { /* based on Alexandre Erwin Ittner <alexandre@ittner.com.br>'s code */ /* either returns completed string, or -1, errno, partial result */ - iconv_t *_cd = (iconv_t*)lua_touserdata(L, 1); - iconv_t cd = *_cd; - size_t ibleft; - char *inbuf = (char* )luaL_checklstring(L, 2, &ibleft); - char outbufs[ICONV_BUF_SIZE]; - char *outbuf = outbufs; - size_t obleft = ICONV_BUF_SIZE; - size_t ret = -1; - - luaL_Buffer b; - luaL_buffinit(L, &b); - - do { - ret = iconv(cd, (ICONV_IN_TYPE)&inbuf, &ibleft, &outbuf, &obleft); - if (ret == (size_t)(-1)) { - luaL_addlstring(&b, outbufs, ICONV_BUF_SIZE - obleft); - - if (errno == E2BIG) { - obleft = ICONV_BUF_SIZE; - outbuf = outbufs; - } else { - lua_pushnumber(L, -1); - lua_pushnumber(L, errno); - luaL_pushresult(&b); - return 3; - } - } - } while (ret == (size_t)-1); - - luaL_addlstring(&b, outbufs, ICONV_BUF_SIZE - obleft); - luaL_pushresult(&b); - return 1; + iconv_t *_cd = (iconv_t*)lua_touserdata(L, 1); + iconv_t cd = *_cd; + size_t ibleft; + char *inbuf = (char* )luaL_checklstring(L, 2, &ibleft); + char outbufs[ICONV_BUF_SIZE]; + char *outbuf = outbufs; + size_t obleft = ICONV_BUF_SIZE; + size_t ret = -1; + + luaL_Buffer b; + luaL_buffinit(L, &b); + + do { + ret = iconv(cd, (ICONV_IN_TYPE)&inbuf, &ibleft, &outbuf, &obleft); + if (ret == (size_t)(-1)) { + luaL_addlstring(&b, outbufs, ICONV_BUF_SIZE - obleft); + + if (errno == E2BIG) { + obleft = ICONV_BUF_SIZE; + outbuf = outbufs; + } else { + lua_pushnumber(L, -1); + lua_pushnumber(L, errno); + luaL_pushresult(&b); + return 3; + } + } + } while (ret == (size_t)-1); + + luaL_addlstring(&b, outbufs, ICONV_BUF_SIZE - obleft); + luaL_pushresult(&b); + return 1; } #undef ICONV_BUF_SIZE |