forked from SelfControlApp/selfcontrol
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SelfControlUtilities.m
executable file
·60 lines (51 loc) · 1.95 KB
/
SelfControlUtilities.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//
// VersionChecker.m
// SelfControl
//
// Created by Charlie Stigler on 4/3/09.
// Copyright 2009 Eyebeam.
// This file is part of SelfControl.
//
// SelfControl is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#import "SelfControlUtilities.h"
@implementation SelfControlUtilities
+ (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