From 59fddd3f7c46684049b209f7838e26b289422348 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Fri, 13 Oct 2006 04:26:37 +0000 Subject: [PATCH] change gestalt usage to work on versions < 10.4 --- src/os/darwin/darwin_sigar.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/os/darwin/darwin_sigar.c b/src/os/darwin/darwin_sigar.c index 38882a33..94d38956 100644 --- a/src/os/darwin/darwin_sigar.c +++ b/src/os/darwin/darwin_sigar.c @@ -2189,15 +2189,29 @@ int sigar_os_sys_info_get(sigar_t *sigar, { #ifdef DARWIN char *codename = NULL; - long version_major, version_minor, version_fix; + long version, version_major, version_minor, version_fix; SIGAR_SSTRCPY(sysinfo->name, "MacOSX"); SIGAR_SSTRCPY(sysinfo->vendor_name, "Mac OS X"); SIGAR_SSTRCPY(sysinfo->vendor, "Apple"); - Gestalt(gestaltSystemVersionMajor, &version_major); - Gestalt(gestaltSystemVersionMinor, &version_minor); - Gestalt(gestaltSystemVersionBugFix, &version_fix); + if (Gestalt(gestaltSystemVersion, &version) == noErr) { + if (version >= 0x00001040) { + Gestalt('sys1' /*gestaltSystemVersionMajor*/, &version_major); + Gestalt('sys2' /*gestaltSystemVersionMinor*/, &version_minor); + Gestalt('sys3' /*gestaltSystemVersionBugFix*/, &version_fix); + } + else { + version_fix = version & 0xf; + version >>= 4; + version_minor = version & 0xf; + version >>= 4; + version_major = version - (version >> 4) * 6; + } + } + else { + return SIGAR_ENOTIMPL; + } snprintf(sysinfo->vendor_version, sizeof(sysinfo->vendor_version),