static int Lzip_write_file(lua_State *L) { const char *filename = luaL_checkstring(L, 1); size_t size_to_reserve_at_beginning = (size_t)luaL_optinteger(L, 2, 0); mz_zip_archive* za = (mz_zip_archive*)lua_newuserdata(L, sizeof(mz_zip_archive)); mz_zip_zero_struct(za); if (!mz_zip_writer_init_file(za, filename, size_to_reserve_at_beginning)) return lmz_zip_pusherror(L, za, filename); luaL_setmetatable(L, LMZ_ZIP_WRITER); return 1; }
ArchiveWriter::ArchiveWriter(const string& path) : zip_obj_(NULL) { mz_zip_archive* zip = new mz_zip_archive(); memset(zip, 0, sizeof(*zip)); mz_bool rc = mz_zip_writer_init_file(zip, path.c_str(), 0); if (!rc) { THROW_EXCEPTION("Failed to init archive writer"); } zip_obj_ = zip; }