s::String MountpointZip::FileReadAll(const char* fnm) { ZipEntry entry; if (!m_zip.GetEntry(fnm, entry)) { #ifndef SCRATCH_NO_EXCEPTIONS throw s::Exception("File not found."); #else return ""; #endif } size_t sz = entry.GetSize(); char* buffer = (char*)malloc(sz + 1); entry.Read(buffer, sz); buffer[sz] = '\0'; s::String ret(buffer); free(buffer); return ret; }