summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichi_cc <michi_cc@openttd.org>2009-10-04 21:08:25 +0000
committermichi_cc <michi_cc@openttd.org>2009-10-04 21:08:25 +0000
commit4f98178fcd110ebfc10fe42e609d27faf7105b73 (patch)
treeaabdd87f27b58ed934c679c2872d5b2b9bc8a1ea
parente2ef24919e8f9dbefa06161d5b6fe5cbc6eb7bd5 (diff)
downloadopenttd-4f98178fcd110ebfc10fe42e609d27faf7105b73.tar.xz
(svn r17705) -Fix: [OSX] Re-enable signal handling on OSX 10.3.9. Trying to link with an undefined symbols that lives in the system library seems to confuse the loader on 10.3.9. Use a different function to circumvent it.
-rw-r--r--src/os/macosx/macos.h10
-rw-r--r--src/os/unix/unix.cpp23
2 files changed, 12 insertions, 21 deletions
diff --git a/src/os/macosx/macos.h b/src/os/macosx/macos.h
index 7783257bc..f60462481 100644
--- a/src/os/macosx/macos.h
+++ b/src/os/macosx/macos.h
@@ -75,14 +75,4 @@ static inline bool MacOSVersionIsAtLeast(long major, long minor, long bugfix)
return true;
}
-/*
- * OSX 10.3.9 has blessed us with a signal with unlikable side effects.
- * The most problematic side effect is that it makes OpenTTD 'think' that
- * it's running on 10.4.0 or higher and thus tries to link to functions
- * that are only defined there. So now we'll remove all and any signal
- * handling for OSX < 10.4 and 10.3.9 works as it should at the cost of
- * not giving a useful error when savegame loading goes wrong.
- */
-#define signal(sig, func) (MacOSVersionIsAtLeast(10, 4, 0) ? signal(sig, func) : NULL)
-
#endif /* MACOS_H */
diff --git a/src/os/unix/unix.cpp b/src/os/unix/unix.cpp
index 7d51b7549..7250751f5 100644
--- a/src/os/unix/unix.cpp
+++ b/src/os/unix/unix.cpp
@@ -21,7 +21,9 @@
#include <time.h>
#include <signal.h>
-#if (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) || defined(__GLIBC__)
+#ifdef __APPLE__
+ #include <sys/mount.h>
+#elif (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) || defined(__GLIBC__)
#define HAS_STATVFS
#endif
@@ -71,17 +73,16 @@ bool FiosGetDiskFreeSpace(const char *path, uint64 *tot)
{
uint64 free = 0;
-#ifdef HAS_STATVFS
-# ifdef __APPLE__
- /* OSX 10.3 lacks statvfs so don't try to use it even though later versions of OSX has it. */
- if (MacOSVersionIsAtLeast(10, 4, 0))
-# endif
- {
- struct statvfs s;
+#ifdef __APPLE__
+ struct statfs s;
- if (statvfs(path, &s) != 0) return false;
- free = (uint64)s.f_frsize * s.f_bavail;
- }
+ if (statfs(path, &s) != 0) return false;
+ free = (uint64)s.f_bsize * s.f_bavail;
+#elif defined(HAS_STATVFS)
+ struct statvfs s;
+
+ if (statvfs(path, &s) != 0) return false;
+ free = (uint64)s.f_frsize * s.f_bavail;
#endif
if (tot != NULL) *tot = free;
return true;