From b984a4955668e4f51442131618b6a5389041cb4e Mon Sep 17 00:00:00 2001 From: MCJack123 Date: Fri, 15 Apr 2022 18:35:58 -0400 Subject: [PATCH] Added strip option to string.dump --- include/lua.h | 1 + src/lapi.c | 9 +++++++-- src/lstrlib.c | 3 ++- src/lua.h | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/lua.h b/include/lua.h index 334b2c7..596b853 100644 --- a/include/lua.h +++ b/include/lua.h @@ -207,6 +207,7 @@ LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, const char *chunkname); LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); +LUA_API int (lua_dump53) (lua_State *L, lua_Writer writer, void *data, int strip); LUA_API void *lua_vcontext (lua_State *L); diff --git a/src/lapi.c b/src/lapi.c index 51badd6..637bbcc 100644 --- a/src/lapi.c +++ b/src/lapi.c @@ -976,14 +976,14 @@ LUA_API int lua_load (lua_State *L, lua_Reader reader, void *data, } -LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data) { +LUA_API int lua_dump53 (lua_State *L, lua_Writer writer, void *data, int strip) { int status; TValue *o; lua_lock(L); api_checknelems(L, 1); o = L->top - 1; if (isLfunction(o)) - status = luaU_dump(L, clvalue(o)->l.p, writer, data, 0); + status = luaU_dump(L, clvalue(o)->l.p, writer, data, strip); else status = 1; lua_unlock(L); @@ -991,6 +991,11 @@ LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data) { } +LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data) { + return lua_dump53(L, writer, data, 0); +} + + LUA_API int lua_status (lua_State *L) { return L->status; } diff --git a/src/lstrlib.c b/src/lstrlib.c index 045828e..0eb206e 100644 --- a/src/lstrlib.c +++ b/src/lstrlib.c @@ -164,10 +164,11 @@ static int writer (lua_State *L, const void* b, size_t size, void* B) { static int str_dump (lua_State *L) { luaL_Buffer b; + int strip = lua_gettop(L) > 1 && lua_toboolean(L, 2); luaL_checktype(L, 1, LUA_TFUNCTION); lua_settop(L, 1); luaL_buffinit(L,&b); - if (lua_dump(L, writer, &b) != 0) + if (lua_dump53(L, writer, &b, strip) != 0) luaL_error(L, "unable to dump given function"); luaL_pushresult(&b); return 1; diff --git a/src/lua.h b/src/lua.h index b1cb558..f7eff96 100644 --- a/src/lua.h +++ b/src/lua.h @@ -208,6 +208,7 @@ LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, const char *chunkname); LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); +LUA_API int (lua_dump53) (lua_State *L, lua_Writer writer, void *data, int strip); LUA_API void *lua_vcontext (lua_State *L);