diff options
author | michi_cc <michi_cc@openttd.org> | 2009-10-04 21:08:25 +0000 |
---|---|---|
committer | michi_cc <michi_cc@openttd.org> | 2009-10-04 21:08:25 +0000 |
commit | 4f98178fcd110ebfc10fe42e609d27faf7105b73 (patch) | |
tree | aabdd87f27b58ed934c679c2872d5b2b9bc8a1ea | |
parent | e2ef24919e8f9dbefa06161d5b6fe5cbc6eb7bd5 (diff) | |
download | openttd-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.h | 10 | ||||
-rw-r--r-- | src/os/unix/unix.cpp | 23 |
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; |