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

Function LoadFromFileInternal

engine/dlib/src/dlib/configfile.cpp:605–650  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

603 }
604
605 static Result LoadFromFileInternal(const char* url, int argc, const char** argv, HConfig* config)
606 {
607#ifdef __ANDROID__
608 // TODO:
609 // This is not pretty but we wan't use dmSys::LoadResource()
610 // on all platforms as we must be able
611 // to load from any path (file:///...)
612 // We should probably add a new scheme resource: or similar
613 // to solve this situation.
614 uint32_t buffer_size = 1024 * 256;
615 void* buffer = malloc(buffer_size);
616
617 uint32_t project_size;
618 dmSys::Result sysr = dmSys::LoadResource(url, buffer, buffer_size, &project_size);
619 if (sysr != dmSys::RESULT_OK) {
620 return RESULT_FILE_NOT_FOUND;
621 }
622
623 Result r = LoadFromBufferInternal(url, (const char*) buffer, project_size, argc, argv, config);
624 free(buffer);
625 return r;
626#else
627 FILE* f = fopen(url, "rb");
628 if (!f)
629 {
630 return RESULT_FILE_NOT_FOUND;
631 }
632 fseek(f, 0, SEEK_END);
633 long file_size = ftell(f);
634 fseek(f, 0, SEEK_SET);
635
636 char* buffer = new char[file_size];
637 if (fread(buffer, 1, file_size, f) != (size_t) file_size)
638 {
639 fclose(f);
640 delete[] buffer;
641 return RESULT_UNEXPECTED_EOF;
642 }
643 fclose(f);
644
645 Result r = LoadFromBufferInternal(url, buffer, file_size, argc, argv, config);
646 delete[] buffer;
647
648 return r;
649#endif
650 }
651
652 Result LoadFromBuffer(const char* buffer, uint32_t buffer_size, int argc, const char** argv, HConfig* config)
653 {

Callers 1

DoLoadFunction · 0.85

Calls 4

mallocFunction · 0.85
freeFunction · 0.85
LoadResourceFunction · 0.70
LoadFromBufferInternalFunction · 0.70

Tested by

no test coverage detected