| 297 | } |
| 298 | |
| 299 | int64_t LoadFile(string_view relfilename, string *dest, int64_t start, int64_t len, bool binary) { |
| 300 | assert(cur_loader); |
| 301 | auto it = pakfile_registry.find(relfilename); |
| 302 | if (it != pakfile_registry.end()) { |
| 303 | auto &[fname, foff, flen, funcompressed] = it->second; |
| 304 | auto l = LoadFileFromAny(fname, dest, foff, flen); |
| 305 | if (l >= 0) { |
| 306 | if (funcompressed >= 0) { |
| 307 | string uncomp; |
| 308 | WEntropyCoder<false>((const uchar *)dest->c_str(), dest->length(), |
| 309 | (size_t)funcompressed, uncomp); |
| 310 | dest->swap(uncomp); |
| 311 | TextModeConvert(*dest, binary); |
| 312 | return funcompressed; |
| 313 | } else { |
| 314 | TextModeConvert(*dest, binary); |
| 315 | return l; |
| 316 | } |
| 317 | } |
| 318 | } |
| 319 | if (len > 0) LOG_INFO("load: ", relfilename); |
| 320 | auto size = LoadFileFromAny(SanitizePath(relfilename), dest, start, len); |
| 321 | TextModeConvert(*dest, binary); |
| 322 | return size; |
| 323 | } |
| 324 | |
| 325 | string WriteFileName(string_view relfilename) { |
| 326 | return write_dir + SanitizePath(relfilename); |
no test coverage detected