MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/OpenColorIO / archiveConfig

Function archiveConfig

src/OpenColorIO/OCIOZArchive.cpp:205–326  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203//////////////////////////////////////////////////////////////////////////////////////
204
205void archiveConfig(std::ostream & ostream, const Config & config, const char * configWorkingDirectory)
206{
207 void * archiver = nullptr;
208 void *write_mem_stream = NULL;
209 const uint8_t *buffer_ptr = NULL;
210 int32_t buffer_size = 0;
211 mz_zip_file file_info;
212
213 if (!config.isArchivable())
214 {
215 std::ostringstream os;
216 os << "Config is not archivable.";
217 throw Exception(os.str().c_str());
218 }
219
220 // Initialize.
221 memset(&file_info, 0, sizeof(file_info));
222
223 // Retrieve and store the config as string.
224 std::stringstream ss;
225 config.serialize(ss);
226 std::string configStr = ss.str();
227
228 // Write zip to memory stream.
229#if MZ_VERSION_BUILD >= 040000
230 write_mem_stream = mz_stream_mem_create();
231#else
232 mz_stream_mem_create(&write_mem_stream);
233#endif
234 mz_stream_mem_set_grow_size(write_mem_stream, 128 * 1024);
235 mz_stream_open(write_mem_stream, NULL, MZ_OPEN_MODE_CREATE);
236
237 // Minizip archive options.
238 ArchiveOptions options;
239 // Make sure that the compression method is set to DEFLATE.
240 options.compress_method = ArchiveCompressionMethods::DEFLATE;
241 // Make sure that the compression level is set to BEST.
242 options.compress_level = ArchiveCompressionLevels::BEST;
243
244 // Create the writer handle.
245#if MZ_VERSION_BUILD >= 040000
246 archiver = mz_zip_writer_create();
247#else
248 mz_zip_writer_create(&archiver);
249#endif
250
251 // Archive options.
252 // Compression method
253 mz_zip_writer_set_compress_method(archiver, options.compress_method);
254 // Compress level.
255 mz_zip_writer_set_compress_level(archiver, options.compress_level);
256
257 MinizipNgMemStreamGuard memStreamGuard(write_mem_stream);
258 MinizipNgHandlerGuard archiverGuard(archiver, true, true);
259
260 // Open the in-memory zip.
261 if (mz_zip_writer_open(archiver, write_mem_stream, 0) == MZ_OK)
262 {

Callers 1

archiveMethod · 0.85

Calls 5

addSupportedFilesFunction · 0.85
isArchivableMethod · 0.80
serializeMethod · 0.45
sizeMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected