Permalink
Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
53 lines (44 sloc) 1.53 KB
@implementation NSApplication (SystemVersion)
- (void)getSystemVersionMajor:(unsigned *)major
minor:(unsigned *)minor
bugFix:(unsigned *)bugFix;
{
OSErr err;
SInt32 systemVersion, versionMajor, versionMinor, versionBugFix;
if ((err = Gestalt(gestaltSystemVersion, &systemVersion)) != noErr) goto fail;
if (systemVersion < 0x1040)
{
if (major) *major = ((systemVersion & 0xF000) >> 12) * 10 +
((systemVersion & 0x0F00) >> 8);
if (minor) *minor = (systemVersion & 0x00F0) >> 4;
if (bugFix) *bugFix = (systemVersion & 0x000F);
}
else
{
if ((err = Gestalt(gestaltSystemVersionMajor, &versionMajor)) != noErr) goto fail;
if ((err = Gestalt(gestaltSystemVersionMinor, &versionMinor)) != noErr) goto fail;
if ((err = Gestalt(gestaltSystemVersionBugFix, &versionBugFix)) != noErr) goto fail;
if (major) *major = versionMajor;
if (minor) *minor = versionMinor;
if (bugFix) *bugFix = versionBugFix;
}
return;
fail:
NSLog(@"Unable to obtain system version: %ld", (long)err);
if (major) *major = 10;
if (minor) *minor = 0;
if (bugFix) *bugFix = 0;
}
@end
/*
int main(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
unsigned major, minor, bugFix;
[[NSApplication sharedApplication]
getSystemVersionMajor:&major minor:&minor bugFix:&bugFix];
NSLog(@"%u.%u.%u", major, minor, bugFix);
[pool release];
return EXIT_SUCCESS;
}
*/