static int Lwriter_add_from_zip_reader(lua_State *L) { mz_zip_archive *za = luaL_checkudata(L, 1, LMZ_ZIP_WRITER); mz_zip_archive *src = luaL_checkudata(L, 2, LMZ_ZIP_READER); mz_uint file_index = (mz_uint)luaL_checkinteger(L, 3) - 1; if (!mz_zip_writer_add_from_zip_reader(za, src, file_index)) return lmz_zip_pusherror(L, za, NULL); return_self(L); }
static int lmz_writer_add_from_zip_reader(lua_State *L) { lmz_file_t* zip = luaL_checkudata(L, 1, "miniz_writer"); lmz_file_t* source = luaL_checkudata(L, 2, "miniz_reader"); mz_uint file_index = (mz_uint)luaL_checkinteger(L, 3) - 1; if (!mz_zip_writer_add_from_zip_reader(&(zip->archive), &(source->archive), file_index)) { return luaL_error(L, "Failure to copy file between zips"); } return 0; }