MCPcopy Create free account
hub / github.com/defold/defold / ReadFile

Function ReadFile

engine/resource/src/providers/provider_zip.cpp:334–366  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

332}
333
334static dmResourceProvider::Result ReadFile(dmResourceProvider::HArchiveInternal _archive, dmhash_t path_hash, const char* path, uint8_t* buffer, uint32_t buffer_len)
335{
336 ZipProviderContext* archive = (ZipProviderContext*)_archive;
337 EntryInfo* entry = archive->m_EntryMap.Get(path_hash);
338 if (!entry)
339 return dmResourceProvider::RESULT_NOT_FOUND;
340
341 if (buffer_len < entry->m_Size)
342 return dmResourceProvider::RESULT_INVAL_ERROR;
343
344 dmZip::Result zr = dmZip::OpenEntry(archive->m_Zip, entry->m_EntryIndex);
345 if (dmZip::RESULT_OK != zr)
346 return dmResourceProvider::RESULT_IO_ERROR;
347
348 dmResourceProvider::Result result = dmResourceProvider::RESULT_OK;
349 if (entry->m_ManifestEntry)
350 {
351 uint32_t raw_data_size;
352 dmZip::GetEntrySize(archive->m_Zip, &raw_data_size);
353 uint8_t* raw_data = new uint8_t[raw_data_size];
354 dmZip::GetEntryData(archive->m_Zip, (void*)raw_data, raw_data_size);
355 result = UnpackData(path, entry->m_ManifestEntry, raw_data, raw_data_size, buffer);
356 delete[] raw_data;
357 } else
358 {
359 // Uncompressed, regular files (i.e. no Liveupdate header)
360 dmZip::GetEntryData(archive->m_Zip, (void*)buffer, buffer_len);
361 }
362
363 dmZip::CloseEntry(archive->m_Zip);
364
365 return result;
366}
367
368static dmResourceProvider::Result ReadFilePartial(dmResourceProvider::HArchiveInternal _archive, dmhash_t path_hash, const char* path, uint32_t offset, uint32_t size, uint8_t* buffer, uint32_t* nread)
369{

Callers

nothing calls this directly

Calls 6

OpenEntryFunction · 0.85
GetEntrySizeFunction · 0.85
GetEntryDataFunction · 0.85
UnpackDataFunction · 0.85
CloseEntryFunction · 0.85
GetMethod · 0.45

Tested by

no test coverage detected