diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-03-28 21:03:23 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-03-28 23:25:13 +0300 |
commit | 30df2c7248c2b58469aeb635a87a0ed978829c47 (patch) | |
tree | 0674f11b8f5450426cb5d7940aa203705e353702 /src/fs/virtfs/virtfs.cpp | |
parent | 75a5173176adfc4bc417c10df137d9ea8d90d403 (diff) | |
download | manaverse-30df2c7248c2b58469aeb635a87a0ed978829c47.tar.gz manaverse-30df2c7248c2b58469aeb635a87a0ed978829c47.tar.bz2 manaverse-30df2c7248c2b58469aeb635a87a0ed978829c47.tar.xz manaverse-30df2c7248c2b58469aeb635a87a0ed978829c47.zip |
Move Virtfs::loadFile into virtfs.cpp
Diffstat (limited to 'src/fs/virtfs/virtfs.cpp')
-rw-r--r-- | src/fs/virtfs/virtfs.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/fs/virtfs/virtfs.cpp b/src/fs/virtfs/virtfs.cpp index bab10197d..b36ee5ddd 100644 --- a/src/fs/virtfs/virtfs.cpp +++ b/src/fs/virtfs/virtfs.cpp @@ -561,4 +561,33 @@ namespace VirtFs { return file->funcs->eof(file); } + + char *loadFile(const std::string &restrict fileName, + int &restrict fileSize) + { + // Attempt to open the specified file using PhysicsFS + VirtFile *restrict const file = VirtFs::openRead(fileName); + + if (!file) + { + logger->log("Warning: Failed to load %s.", + fileName.c_str()); + return nullptr; + } + + logger->log("Loaded %s/%s", + VirtFs::getRealDir(fileName).c_str(), + fileName.c_str()); + + fileSize = CAST_S32(VirtFs::fileLength(file)); + // Allocate memory and load the file + char *restrict const buffer = new char[fileSize]; + if (fileSize > 0) + buffer[fileSize - 1] = 0; + VirtFs::read(file, buffer, 1, fileSize); + VirtFs::close(file); + + return buffer; + } + } // namespace VirtFs |