about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/scorched3d/file-existence.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/scorched3d/file-existence.patch')
-rw-r--r--nixpkgs/pkgs/games/scorched3d/file-existence.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/scorched3d/file-existence.patch b/nixpkgs/pkgs/games/scorched3d/file-existence.patch
new file mode 100644
index 000000000000..35eb63d07022
--- /dev/null
+++ b/nixpkgs/pkgs/games/scorched3d/file-existence.patch
@@ -0,0 +1,37 @@
+diff --git a/src/common/common/DefinesFile.cpp b/src/common/common/DefinesFile.cpp
+index 6ad803d..022797a 100644
+--- a/src/common/common/DefinesFile.cpp
++++ b/src/common/common/DefinesFile.cpp
+@@ -36,6 +36,17 @@
+ #include <unistd.h>

+ #endif

+ 

++namespace {

++    bool fileCanBeStated(const std::string &file)

++    {

++        struct stat buf;

++        memset(&buf, 0, sizeof(buf));

++        int result = stat(file.c_str(), &buf );

++

++        return result == 0;

++    }

++}

++

+ std::string S3D::getHomeDir()

+ {

+ #ifdef _WIN32

+@@ -74,12 +85,12 @@ bool S3D::dirMake(const std::string &file)
+ 

+ bool S3D::fileExists(const std::string &file)

+ {

+-	return (S3D::fileModTime(file) != 0);

++	return fileCanBeStated(file);

+ }

+ 

+ bool S3D::dirExists(const std::string &file)

+ {

+-	return (S3D::fileModTime(file) != 0);

++	return fileCanBeStated(file);

+ }

+ 

+ time_t S3D::fileModTime(const std::string &file)