MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / pf_pbo_open

Function pf_pbo_open

engine/PoseidonFormats/PoseidonFormats.cpp:479–503  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

477}
478
479PF_API PF_HANDLE pf_pbo_open(const char* path) {
480 ClearError();
481 if (!path) { SetError("null path"); return nullptr; }
482 try {
483 auto* pbo = new PFPbo();
484 std::string bankName = StripPboExt(path);
485 if (!pbo->bank.open(RString(bankName.c_str()))) {
486 SetError("Failed to open PBO");
487 delete pbo;
488 return nullptr;
489 }
490 pbo->bank.Lock();
491 if (pbo->bank.error()) {
492 SetError("PBO read error");
493 pbo->bank.Unlock();
494 delete pbo;
495 return nullptr;
496 }
497 pbo->bank.ForEach(PboCollectEntry, &pbo->entries);
498 return pbo;
499 } catch (const std::exception& e) {
500 SetError(e.what());
501 return nullptr;
502 }
503}
504
505PF_API void pf_pbo_close(PF_HANDLE pbo) {
506 if (!pbo) return;

Callers 1

Calls 9

ClearErrorFunction · 0.85
SetErrorFunction · 0.70
StripPboExtFunction · 0.70
RStringClass · 0.50
openMethod · 0.45
LockMethod · 0.45
errorMethod · 0.45
UnlockMethod · 0.45
ForEachMethod · 0.45

Tested by

no test coverage detected