mirror of https://github.com/OpenTTD/OpenTTD
(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.
parent
e2ef24919e
commit
4f98178fcd
|
@ -75,14 +75,4 @@ static inline bool MacOSVersionIsAtLeast(long major, long minor, long bugfix)
|
||||||
return true;
|
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 */
|
#endif /* MACOS_H */
|
||||||
|
|
|
@ -21,7 +21,9 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <signal.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
|
#define HAS_STATVFS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -71,17 +73,16 @@ bool FiosGetDiskFreeSpace(const char *path, uint64 *tot)
|
||||||
{
|
{
|
||||||
uint64 free = 0;
|
uint64 free = 0;
|
||||||
|
|
||||||
#ifdef HAS_STATVFS
|
#ifdef __APPLE__
|
||||||
# ifdef __APPLE__
|
struct statfs s;
|
||||||
/* 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;
|
|
||||||
|
|
||||||
if (statvfs(path, &s) != 0) return false;
|
if (statfs(path, &s) != 0) return false;
|
||||||
free = (uint64)s.f_frsize * s.f_bavail;
|
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
|
#endif
|
||||||
if (tot != NULL) *tot = free;
|
if (tot != NULL) *tot = free;
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue