diff --git a/source/texk/web2c/luatexdir/lua/liolibext.c b/source/texk/web2c/luatexdir/lua/liolibext.c index 4e46100f1556bfcff86fb31e37db27efe35084c7..76284ba335b7d5786f204795f74b3218209de3d4 100644 --- a/source/texk/web2c/luatexdir/lua/liolibext.c +++ b/source/texk/web2c/luatexdir/lua/liolibext.c @@ -181,12 +181,10 @@ static int read2dot14(lua_State *L) { FILE *f = tofile(L); int a = getc(f); int b = getc(f); - int c = getc(f); - int d = getc(f); - if (d == EOF) { + if (b == EOF) { lua_pushnil(L); } else { - int n = (0x1000000 * a + 0x10000 * b + 0x100 * c + d); + int n = 0x100 * a + b ; lua_pushnumber(L, (n >> 14) + ((n & 0x3fff) / 16384.0)); } return 1; @@ -377,12 +375,7 @@ static const luaL_Reg fiolib[] = { {NULL, NULL} }; - int luaopen_fio(lua_State *L) { - luaL_register(L, "fio", fiolib); -#if defined(_MSC_VER) - return luaopen_io(L); -#else - return 1; -#endif /* _MSC_VER */ + luaL_register(L, "fio", fiolib); + return 1; } diff --git a/source/texk/web2c/luatexdir/lua/lstrlibext.c b/source/texk/web2c/luatexdir/lua/lstrlibext.c index 8a474fd09c96f2626a6b723d0904cbfa198222ac..f9bd2177d9910da253634e43230b9a5344c2eaeb 100644 --- a/source/texk/web2c/luatexdir/lua/lstrlibext.c +++ b/source/texk/web2c/luatexdir/lua/lstrlibext.c @@ -1,5 +1,5 @@ /* lstrlibext.c - + Copyright 2012 Taco Hoekwater <taco@luatex.org> This file is part of LuaTeX. @@ -92,7 +92,7 @@ static int str_split (lua_State *L) { } free(orig); return 1; -} +} static int characters_aux (lua_State *L) { size_t ls; @@ -152,7 +152,7 @@ static int utfcharacters_aux (lua_State *L) { } } return utf_failed(L,ind+1); /* we found a follow byte! */ -} +} static int str_utfcharacters (lua_State *L) { @@ -180,7 +180,7 @@ static int utfvalues_aux (lua_State *L) { if (i<0x80) { v = i; } else if (i>=0xF0) { - if ((ind+3)<(int)ls && ((unsigned)*(s+ind+1))>=0x80 + if ((ind+3)<(int)ls && ((unsigned)*(s+ind+1))>=0x80 && ((unsigned)*(s+ind+2))>=0x80 && ((unsigned)*(s+ind+3))>=0x80) { numbytes = 4; j = ((unsigned)*(s+ind+1))-128; @@ -237,7 +237,7 @@ static int characterpairs_aux (lua_State *L) { b[0] = *(s+ind); b[1] = 0; lua_pushlstring(L, b, 1); if (ind+1<(int)ls) { - b[0] = *(s+ind+1); + b[0] = *(s+ind+1); lua_pushlstring(L, b, 1); } else { lua_pushlstring(L, b+1, 0); @@ -350,7 +350,17 @@ static int str_dump (lua_State *L) { return 1; } - +static int str_bytetable (lua_State *L) { + size_t l; + int i; + const char *s = luaL_checklstring(L, 1, &l); + lua_createtable(L,l,0); + for (i=0;i<l;i++) { + lua_pushinteger(L,(unsigned char)*(s+i)); + lua_rawseti(L,-2,i+1); + } + return 1; +} static const luaL_Reg strlibext[] = { {"utfvalues", str_utfvalues}, @@ -359,6 +369,7 @@ static const luaL_Reg strlibext[] = { {"characterpairs", str_characterpairs}, {"bytes", str_bytes}, {"bytepairs", str_bytepairs}, + {"bytetable", str_bytetable}, {"explode", str_split}, {"dump", str_dump}, {NULL, NULL} @@ -374,4 +385,3 @@ void open_strlibext(lua_State * L) } lua_pop(L,1); } -