mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Remove 'FileExists' check, if open fails, NULL file handle is returned and we just check on that. Also, commit 'a90302f0' introduced the option to open RSON files from path ID's, but the ID was only passed in the FileExist function, the actual 'Open' call did not receive the path ID argument, and therefore, did not open from there.
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#include "core/stdafx.h"
|
|
#include <tier0/memstd.h>
|
|
#include "tier1/utlbuffer.h"
|
|
#include <filesystem/filesystem.h>
|
|
#include "vpc/rson.h"
|
|
|
|
RSON::Node_t* RSON::LoadFromBuffer(const char* pszBufferName, char* pBuffer, RSON::eFieldType rootType)
|
|
{
|
|
return RSON_LoadFromBuffer(pszBufferName, pBuffer, rootType, 0, NULL);
|
|
}
|
|
|
|
RSON::Node_t* RSON::LoadFromFile(const char* pszFilePath, const char* pPathID)
|
|
{
|
|
FileHandle_t file = FileSystem()->Open(pszFilePath, "rt", pPathID);
|
|
|
|
if (!file)
|
|
return NULL;
|
|
|
|
unsigned int nFileSize = FileSystem()->Size(file);
|
|
std::unique_ptr<char[]> fileBuf(new char[nFileSize + 1]);
|
|
|
|
int nRead = FileSystem()->Read(fileBuf.get(), nFileSize, file);
|
|
FileSystem()->Close(file);
|
|
|
|
fileBuf[nRead] = '\0';
|
|
|
|
RSON::Node_t* node = RSON::LoadFromBuffer(pszFilePath, fileBuf.get(), eFieldType::RSON_OBJECT);
|
|
|
|
if (node)
|
|
return node;
|
|
else
|
|
{
|
|
// [rexx]: not sure if this should be fatal or not. ideally this should be handled appropriately
|
|
// in the calling function
|
|
Error(eDLL_T::ENGINE, NO_ERROR, "Error loading file '%s'\n", pszFilePath);
|
|
return NULL;
|
|
}
|
|
|
|
return NULL;
|
|
} |