mirror of
https://github.com/edubart/otclient.git
synced 2025-04-29 17:19:20 +02:00
Merge pull request #1046 from diath/fix_deprecated_physfs_funcs
Fix use of deprecated PhysFS functions
This commit is contained in:
commit
dd0303feee
@ -68,7 +68,7 @@ void FileStream::cache()
|
||||
PHYSFS_seek(m_fileHandle, 0);
|
||||
int size = PHYSFS_fileLength(m_fileHandle);
|
||||
m_data.resize(size);
|
||||
if(PHYSFS_read(m_fileHandle, m_data.data(), size, 1) == -1)
|
||||
if(PHYSFS_readBytes(m_fileHandle, m_data.data(), size) == -1)
|
||||
throwError("unable to read file data", true);
|
||||
PHYSFS_close(m_fileHandle);
|
||||
m_fileHandle = nullptr;
|
||||
@ -97,7 +97,7 @@ void FileStream::flush()
|
||||
if(!PHYSFS_seek(m_fileHandle, 0))
|
||||
throwError("flush seek failed", true);
|
||||
uint len = m_data.size();
|
||||
if(PHYSFS_write(m_fileHandle, m_data.data(), 1, len) != len)
|
||||
if(PHYSFS_writeBytes(m_fileHandle, m_data.data(), len) != len)
|
||||
throwError("flush write failed", true);
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ void FileStream::flush()
|
||||
int FileStream::read(void *buffer, uint32 size, uint32 nmemb)
|
||||
{
|
||||
if(!m_caching) {
|
||||
int res = PHYSFS_read(m_fileHandle, buffer, size, nmemb);
|
||||
int res = PHYSFS_readBytes(m_fileHandle, buffer, size * nmemb);
|
||||
if(res == -1)
|
||||
throwError("read failed", true);
|
||||
return res;
|
||||
@ -130,7 +130,7 @@ int FileStream::read(void *buffer, uint32 size, uint32 nmemb)
|
||||
void FileStream::write(const void *buffer, uint32 count)
|
||||
{
|
||||
if(!m_caching) {
|
||||
if(PHYSFS_write(m_fileHandle, buffer, 1, count) != count)
|
||||
if(PHYSFS_writeBytes(m_fileHandle, buffer, count) != count)
|
||||
throwError("write failed", true);
|
||||
} else {
|
||||
m_data.grow(m_pos + count);
|
||||
@ -184,7 +184,7 @@ uint8 FileStream::getU8()
|
||||
{
|
||||
uint8 v = 0;
|
||||
if(!m_caching) {
|
||||
if(PHYSFS_read(m_fileHandle, &v, 1, 1) != 1)
|
||||
if(PHYSFS_readBytes(m_fileHandle, &v, 1) != 1)
|
||||
throwError("read failed", true);
|
||||
} else {
|
||||
if(m_pos+1 > m_data.size())
|
||||
@ -247,7 +247,7 @@ int8 FileStream::get8()
|
||||
{
|
||||
int8 v = 0;
|
||||
if(!m_caching) {
|
||||
if(PHYSFS_read(m_fileHandle, &v, 1, 1) != 1)
|
||||
if(PHYSFS_readBytes(m_fileHandle, &v, 1) != 1)
|
||||
throwError("read failed", true);
|
||||
} else {
|
||||
if(m_pos+1 > m_data.size())
|
||||
@ -313,7 +313,7 @@ std::string FileStream::getString()
|
||||
if(len > 0 && len < 8192) {
|
||||
char buffer[8192];
|
||||
if(m_fileHandle) {
|
||||
if(PHYSFS_read(m_fileHandle, buffer, 1, len) == 0)
|
||||
if(PHYSFS_readBytes(m_fileHandle, buffer, len) == 0)
|
||||
throwError("read failed", true);
|
||||
else
|
||||
str = std::string(buffer, len);
|
||||
@ -354,7 +354,7 @@ void FileStream::endNode()
|
||||
void FileStream::addU8(uint8 v)
|
||||
{
|
||||
if(!m_caching) {
|
||||
if(PHYSFS_write(m_fileHandle, &v, 1, 1) != 1)
|
||||
if(PHYSFS_writeBytes(m_fileHandle, &v, 1) != 1)
|
||||
throwError("write failed", true);
|
||||
} else {
|
||||
m_data.add(v);
|
||||
@ -401,7 +401,7 @@ void FileStream::addU64(uint64 v)
|
||||
void FileStream::add8(int8 v)
|
||||
{
|
||||
if(!m_caching) {
|
||||
if(PHYSFS_write(m_fileHandle, &v, 1, 1) != 1)
|
||||
if(PHYSFS_writeBytes(m_fileHandle, &v, 1) != 1)
|
||||
throwError("write failed", true);
|
||||
} else {
|
||||
m_data.add(v);
|
||||
@ -455,7 +455,7 @@ void FileStream::throwError(const std::string& message, bool physfsError)
|
||||
{
|
||||
std::string completeMessage = stdext::format("in file '%s': %s", m_name, message);
|
||||
if(physfsError)
|
||||
completeMessage += std::string(": ") + PHYSFS_getLastError();
|
||||
completeMessage += std::string(": ") + PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode());
|
||||
stdext::throw_exception(completeMessage);
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,21 @@
|
||||
|
||||
#include <physfs.h>
|
||||
|
||||
namespace {
|
||||
|
||||
bool isDirectory(const std::string &path)
|
||||
{
|
||||
PHYSFS_Stat stat = {};
|
||||
int result = PHYSFS_stat(path.c_str(), &stat);
|
||||
if (!result) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return stat.filetype == PHYSFS_FILETYPE_DIRECTORY;
|
||||
}
|
||||
|
||||
} // namespace <anonymous>
|
||||
|
||||
ResourceManager g_resources;
|
||||
|
||||
void ResourceManager::init(const char *argv0)
|
||||
@ -52,7 +67,7 @@ bool ResourceManager::discoverWorkDir(const std::string& existentFile)
|
||||
|
||||
bool found = false;
|
||||
for(const std::string& dir : possiblePaths) {
|
||||
if(!PHYSFS_addToSearchPath(dir.c_str(), 0))
|
||||
if(!PHYSFS_mount(dir.c_str(), nullptr, 0))
|
||||
continue;
|
||||
|
||||
if(PHYSFS_exists(existentFile.c_str())) {
|
||||
@ -61,7 +76,7 @@ bool ResourceManager::discoverWorkDir(const std::string& existentFile)
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
PHYSFS_removeFromSearchPath(dir.c_str());
|
||||
PHYSFS_unmount(dir.c_str());
|
||||
}
|
||||
|
||||
return found;
|
||||
@ -80,7 +95,7 @@ bool ResourceManager::setupUserWriteDir(const std::string& appWriteDirName)
|
||||
|
||||
if(!PHYSFS_setWriteDir(writeDir.c_str())) {
|
||||
if(!PHYSFS_setWriteDir(userDir.c_str()) || !PHYSFS_mkdir(dirName.c_str())) {
|
||||
g_logger.error(stdext::format("Unable to create write directory '%s': %s", writeDir, PHYSFS_getLastError()));
|
||||
g_logger.error(stdext::format("Unable to create write directory '%s': %s", writeDir, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -90,7 +105,7 @@ bool ResourceManager::setupUserWriteDir(const std::string& appWriteDirName)
|
||||
bool ResourceManager::setWriteDir(const std::string& writeDir, bool create)
|
||||
{
|
||||
if(!PHYSFS_setWriteDir(writeDir.c_str())) {
|
||||
g_logger.error(stdext::format("Unable to set write directory '%s': %s", writeDir, PHYSFS_getLastError()));
|
||||
g_logger.error(stdext::format("Unable to set write directory '%s': %s", writeDir, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -108,11 +123,11 @@ bool ResourceManager::setWriteDir(const std::string& writeDir, bool create)
|
||||
bool ResourceManager::addSearchPath(const std::string& path, bool pushFront)
|
||||
{
|
||||
std::string savePath = path;
|
||||
if(!PHYSFS_addToSearchPath(path.c_str(), pushFront ? 0 : 1)) {
|
||||
if(!PHYSFS_mount(path.c_str(), nullptr, pushFront ? 0 : 1)) {
|
||||
bool found = false;
|
||||
for(std::string searchPath : m_searchPaths) {
|
||||
std::string newPath = searchPath + path;
|
||||
if(PHYSFS_addToSearchPath(newPath.c_str(), pushFront ? 0 : 1)) {
|
||||
if(PHYSFS_mount(newPath.c_str(), nullptr, pushFront ? 0 : 1)) {
|
||||
savePath = newPath;
|
||||
found = true;
|
||||
break;
|
||||
@ -120,7 +135,7 @@ bool ResourceManager::addSearchPath(const std::string& path, bool pushFront)
|
||||
}
|
||||
|
||||
if(!found) {
|
||||
//g_logger.error(stdext::format("Could not add '%s' to directory search path. Reason %s", path, PHYSFS_getLastError()));
|
||||
//g_logger.error(stdext::format("Could not add '%s' to directory search path. Reason %s", path, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -133,7 +148,7 @@ bool ResourceManager::addSearchPath(const std::string& path, bool pushFront)
|
||||
|
||||
bool ResourceManager::removeSearchPath(const std::string& path)
|
||||
{
|
||||
if(!PHYSFS_removeFromSearchPath(path.c_str()))
|
||||
if(!PHYSFS_unmount(path.c_str()))
|
||||
return false;
|
||||
auto it = std::find(m_searchPaths.begin(), m_searchPaths.end(), path);
|
||||
assert(it != m_searchPaths.end());
|
||||
@ -150,18 +165,18 @@ void ResourceManager::searchAndAddPackages(const std::string& packagesDir, const
|
||||
continue;
|
||||
std::string package = getRealDir(packagesDir) + "/" + file;
|
||||
if(!addSearchPath(package, true))
|
||||
g_logger.error(stdext::format("Unable to read package '%s': %s", package, PHYSFS_getLastError()));
|
||||
g_logger.error(stdext::format("Unable to read package '%s': %s", package, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
}
|
||||
}
|
||||
|
||||
bool ResourceManager::fileExists(const std::string& fileName)
|
||||
{
|
||||
return (PHYSFS_exists(resolvePath(fileName).c_str()) && !PHYSFS_isDirectory(resolvePath(fileName).c_str()));
|
||||
return (PHYSFS_exists(resolvePath(fileName).c_str()) && !isDirectory(resolvePath(fileName)));
|
||||
}
|
||||
|
||||
bool ResourceManager::directoryExists(const std::string& directoryName)
|
||||
{
|
||||
return (PHYSFS_isDirectory(resolvePath(directoryName).c_str()));
|
||||
return isDirectory(resolvePath(directoryName));
|
||||
}
|
||||
|
||||
void ResourceManager::readFileStream(const std::string& fileName, std::iostream& out)
|
||||
@ -182,11 +197,11 @@ std::string ResourceManager::readFileContents(const std::string& fileName)
|
||||
|
||||
PHYSFS_File* file = PHYSFS_openRead(fullPath.c_str());
|
||||
if(!file)
|
||||
stdext::throw_exception(stdext::format("unable to open file '%s': %s", fullPath, PHYSFS_getLastError()));
|
||||
stdext::throw_exception(stdext::format("unable to open file '%s': %s", fullPath, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
|
||||
int fileSize = PHYSFS_fileLength(file);
|
||||
std::string buffer(fileSize, 0);
|
||||
PHYSFS_read(file, (void*)&buffer[0], 1, fileSize);
|
||||
PHYSFS_readBytes(file, (void*)&buffer[0], fileSize);
|
||||
PHYSFS_close(file);
|
||||
|
||||
return buffer;
|
||||
@ -196,11 +211,11 @@ bool ResourceManager::writeFileBuffer(const std::string& fileName, const uchar*
|
||||
{
|
||||
PHYSFS_file* file = PHYSFS_openWrite(fileName.c_str());
|
||||
if(!file) {
|
||||
g_logger.error(PHYSFS_getLastError());
|
||||
g_logger.error(PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode()));
|
||||
return false;
|
||||
}
|
||||
|
||||
PHYSFS_write(file, (void*)data, size, 1);
|
||||
PHYSFS_writeBytes(file, (void*)data, size);
|
||||
PHYSFS_close(file);
|
||||
return true;
|
||||
}
|
||||
@ -229,7 +244,7 @@ FileStreamPtr ResourceManager::openFile(const std::string& fileName)
|
||||
|
||||
PHYSFS_File* file = PHYSFS_openRead(fullPath.c_str());
|
||||
if(!file)
|
||||
stdext::throw_exception(stdext::format("unable to open file '%s': %s", fullPath, PHYSFS_getLastError()));
|
||||
stdext::throw_exception(stdext::format("unable to open file '%s': %s", fullPath, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
return FileStreamPtr(new FileStream(fullPath, file, false));
|
||||
}
|
||||
|
||||
@ -237,7 +252,7 @@ FileStreamPtr ResourceManager::appendFile(const std::string& fileName)
|
||||
{
|
||||
PHYSFS_File* file = PHYSFS_openAppend(fileName.c_str());
|
||||
if(!file)
|
||||
stdext::throw_exception(stdext::format("failed to append file '%s': %s", fileName, PHYSFS_getLastError()));
|
||||
stdext::throw_exception(stdext::format("failed to append file '%s': %s", fileName, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
return FileStreamPtr(new FileStream(fileName, file, true));
|
||||
}
|
||||
|
||||
@ -245,7 +260,7 @@ FileStreamPtr ResourceManager::createFile(const std::string& fileName)
|
||||
{
|
||||
PHYSFS_File* file = PHYSFS_openWrite(fileName.c_str());
|
||||
if(!file)
|
||||
stdext::throw_exception(stdext::format("failed to create file '%s': %s", fileName, PHYSFS_getLastError()));
|
||||
stdext::throw_exception(stdext::format("failed to create file '%s': %s", fileName, PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())));
|
||||
return FileStreamPtr(new FileStream(fileName, file, true));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user