Exemple #1
0
void ZipWriter::close()
{
    if (_out) {
        mz_zip_writer_finalize_archive(&_archive);
        mz_zip_writer_end(&_archive);
        _out.reset();
    }
}
Exemple #2
0
    void ArchiveWriter::Close()
    {
        mz_zip_archive* zip = (mz_zip_archive*)zip_obj_;
        mz_zip_writer_finalize_archive(zip);
        mz_zip_writer_end(zip);
        delete zip;

        zip_obj_ = NULL;
    }
Exemple #3
0
	void ZipIO::closeArchive(){
		if (_kisopen) {
			if (_kmode == OpenMode::READ) {
				mz_zip_reader_end(&_kzarchive);
			} else if (_kmode == OpenMode::WRITE) {
				mz_zip_writer_end(&_kzarchive);
			};
		}

		_kisopen = false;
		_kready = false;
	}
Exemple #4
0
    std::string pak::bin() //const
    {
        std::string result;

        if( type == paktype::ZIP )
        {
            mz_zip_archive zip_archive;
            memset( &zip_archive, 0, sizeof(zip_archive) );

            mz_bool status = mz_zip_writer_init_heap( &zip_archive, 0, 128 * 1024 );
            assert( status );
            if( !status )
                return "mz_zip_writer_init_heap() failed!", std::string();

            for( iterator it = this->begin(); it != this->end(); ++it )
            {
                const char *filename = it->operator[]("filename").c_str();
                const char *content = it->operator[]("content").c_str();
                const size_t bufsize = it->operator[]("content").size();

                status = mz_zip_writer_add_mem( &zip_archive, filename, content, bufsize, MZ_DEFAULT_COMPRESSION );
                if( !status )
                    return "mz_zip_writer_add_mem() failed!", std::string();
            }

            void *pBuf;
            size_t pSize;

            status = mz_zip_writer_finalize_heap_archive( &zip_archive, &pBuf, &pSize);
            if( !status )
                return "mz_zip_writer_finalize_heap_archive() failed!", std::string();

            // Ends archive writing, freeing all allocations, and closing the output file if mz_zip_writer_init_file() was used.
            // Note for the archive to be valid, it must have been finalized before ending.
            status = mz_zip_writer_end( &zip_archive );
            assert( status );
            if( !status )
                return "mz_zip_writer_end() failed!", std::string();

            result.resize( pSize );
            memcpy( &result.at(0), pBuf, pSize );

            free( pBuf );
        }
        else
        {}

        return result;
    }
Exemple #5
0
void zip_file::save(std::vector<unsigned char> &bytes)
{
    if(archive_->m_zip_mode == MZ_ZIP_MODE_WRITING)
    {
        mz_zip_writer_finalize_archive(archive_.get());
    }
    
    if(archive_->m_zip_mode == MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED)
    {
        mz_zip_writer_end(archive_.get());
    }
    
    if(archive_->m_zip_mode == MZ_ZIP_MODE_INVALID)
    {
        start_read();
    }
    
    append_comment();
    bytes.assign(buffer_.begin(), buffer_.end());
}
Exemple #6
0
void zip_file::save(std::ostream &stream)
{
    if(archive_->m_zip_mode == MZ_ZIP_MODE_WRITING)
    {
        mz_zip_writer_finalize_archive(archive_.get());
    }
    
    if(archive_->m_zip_mode == MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED)
    {
        mz_zip_writer_end(archive_.get());
    }
    
    if(archive_->m_zip_mode == MZ_ZIP_MODE_INVALID)
    {
        start_read();
    }
    
    append_comment();
    stream.write(buffer_.data(), buffer_.size());
}
Exemple #7
0
static int lmz_writer_gc(lua_State *L) {
  lmz_file_t* zip = luaL_checkudata(L, 1, "miniz_writer");
  mz_zip_writer_end(&(zip->archive));
  return 0;
}
Exemple #8
0
static int Lwriter_close(lua_State *L) {
    mz_zip_archive *za = luaL_checkudata(L, 1, LMZ_ZIP_WRITER);
    lua_pushboolean(L, mz_zip_writer_end(za));
    return 1;
}