|
@@ -571,6 +571,9 @@ std::string Filesystem::getSourceBaseDirectory() const
|
|
|
|
|
|
std::string Filesystem::getRealDirectory(const char *filename) const
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ throw love::Exception("PhysFS is not initialized.");
|
|
|
+
|
|
|
const char *dir = PHYSFS_getRealDir(filename);
|
|
|
|
|
|
if (dir == nullptr)
|
|
@@ -581,11 +584,17 @@ std::string Filesystem::getRealDirectory(const char *filename) const
|
|
|
|
|
|
bool Filesystem::exists(const char *path) const
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return false;
|
|
|
+
|
|
|
return PHYSFS_exists(path) != 0;
|
|
|
}
|
|
|
|
|
|
bool Filesystem::isDirectory(const char *dir) const
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return false;
|
|
|
+
|
|
|
#ifdef LOVE_USE_PHYSFS_2_1
|
|
|
PHYSFS_Stat stat = {};
|
|
|
if (PHYSFS_stat(dir, &stat))
|
|
@@ -599,11 +608,17 @@ bool Filesystem::isDirectory(const char *dir) const
|
|
|
|
|
|
bool Filesystem::isFile(const char *file) const
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return false;
|
|
|
+
|
|
|
return PHYSFS_exists(file) && !isDirectory(file);
|
|
|
}
|
|
|
|
|
|
bool Filesystem::isSymlink(const char *filename) const
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return false;
|
|
|
+
|
|
|
#ifdef LOVE_USE_PHYSFS_2_1
|
|
|
PHYSFS_Stat stat = {};
|
|
|
if (PHYSFS_stat(filename, &stat))
|
|
@@ -617,21 +632,29 @@ bool Filesystem::isSymlink(const char *filename) const
|
|
|
|
|
|
bool Filesystem::createDirectory(const char *dir)
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return false;
|
|
|
+
|
|
|
if (PHYSFS_getWriteDir() == 0 && !setupWriteDirectory())
|
|
|
return false;
|
|
|
|
|
|
if (!PHYSFS_mkdir(dir))
|
|
|
return false;
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
bool Filesystem::remove(const char *file)
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return false;
|
|
|
+
|
|
|
if (PHYSFS_getWriteDir() == 0 && !setupWriteDirectory())
|
|
|
return false;
|
|
|
|
|
|
if (!PHYSFS_delete(file))
|
|
|
return false;
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -669,8 +692,14 @@ void Filesystem::append(const char *filename, const void *data, int64 size) cons
|
|
|
|
|
|
void Filesystem::getDirectoryItems(const char *dir, std::vector<std::string> &items)
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return;
|
|
|
+
|
|
|
char **rc = PHYSFS_enumerateFiles(dir);
|
|
|
|
|
|
+ if (rc == nullptr)
|
|
|
+ return;
|
|
|
+
|
|
|
for (char **i = rc; *i != 0; i++)
|
|
|
items.push_back(*i);
|
|
|
|
|
@@ -681,6 +710,9 @@ int64 Filesystem::getLastModified(const char *filename) const
|
|
|
{
|
|
|
PHYSFS_sint64 time = -1;
|
|
|
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return -1;
|
|
|
+
|
|
|
#ifdef LOVE_USE_PHYSFS_2_1
|
|
|
PHYSFS_Stat stat = {};
|
|
|
if (PHYSFS_stat(filename, &stat))
|
|
@@ -704,6 +736,9 @@ int64 Filesystem::getSize(const char *filename) const
|
|
|
|
|
|
void Filesystem::setSymlinksEnabled(bool enable)
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return;
|
|
|
+
|
|
|
if (!enable)
|
|
|
{
|
|
|
PHYSFS_Version version = {};
|
|
@@ -720,6 +755,9 @@ void Filesystem::setSymlinksEnabled(bool enable)
|
|
|
|
|
|
bool Filesystem::areSymlinksEnabled() const
|
|
|
{
|
|
|
+ if (!PHYSFS_isInit())
|
|
|
+ return false;
|
|
|
+
|
|
|
return PHYSFS_symbolicLinksPermitted() != 0;
|
|
|
}
|
|
|
|