about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/scorched3d/file-existence.patch
blob: 35eb63d0702240f4d3766d8fdebef1e396e82779 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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)