|
@@ -78,31 +78,38 @@ NSString *GetCompatible() {
|
|
|
}
|
|
|
|
|
|
NSString *GetSystemVersion() {
|
|
|
- NSTask *task;
|
|
|
- task = [[NSTask alloc] init];
|
|
|
- [task setLaunchPath: @"/usr/bin/sw_vers"];
|
|
|
-
|
|
|
- NSArray *arguments;
|
|
|
- arguments = [NSArray arrayWithObjects: @"-productVersion", nil];
|
|
|
- [task setArguments: arguments];
|
|
|
-
|
|
|
- NSPipe *pipe;
|
|
|
- pipe = [NSPipe pipe];
|
|
|
- [task setStandardOutput: pipe];
|
|
|
-
|
|
|
- NSFileHandle *file;
|
|
|
- file = [pipe fileHandleForReading];
|
|
|
-
|
|
|
- [task launch];
|
|
|
-
|
|
|
- NSData *data;
|
|
|
- data = [file readDataToEndOfFile];
|
|
|
-
|
|
|
- NSString *string;
|
|
|
- string = [[NSString alloc] initWithData: data
|
|
|
- encoding: NSUTF8StringEncoding];
|
|
|
-// NSLog (@"got\n%@", string);
|
|
|
- string = [string stringByReplacingOccurrencesOfString:@"\r\0" withString:@""];
|
|
|
- string = [string stringByReplacingOccurrencesOfString:@"\n" withString:@""];
|
|
|
- return string;
|
|
|
+ @try {
|
|
|
+ NSTask *task = [[NSTask alloc] init];
|
|
|
+ [task setLaunchPath: @"/usr/bin/sw_vers"];
|
|
|
+
|
|
|
+ NSArray *arguments = [NSArray arrayWithObjects: @"-productVersion", nil];
|
|
|
+ [task setArguments: arguments];
|
|
|
+
|
|
|
+ NSPipe *pipe = [NSPipe pipe];
|
|
|
+ [task setStandardOutput: pipe];
|
|
|
+
|
|
|
+ [task launch];
|
|
|
+ [task waitUntilExit];
|
|
|
+
|
|
|
+ if ([task terminationStatus] != 0) {
|
|
|
+ NSLog(@"Error: Task terminated with non-zero status %d", [task terminationStatus]);
|
|
|
+ return nil;
|
|
|
+ }
|
|
|
+
|
|
|
+ NSFileHandle *file = [pipe fileHandleForReading];
|
|
|
+ NSData *data = [file readDataToEndOfFile];
|
|
|
+
|
|
|
+ if (!data) {
|
|
|
+ NSLog(@"Error: Failed to read data from task output pipe");
|
|
|
+ return nil;
|
|
|
+ }
|
|
|
+
|
|
|
+ NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
|
|
+ string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
|
|
+
|
|
|
+ return string;
|
|
|
+ } @catch (NSException *exception) {
|
|
|
+ NSLog(@"Exception: %@", exception);
|
|
|
+ return nil;
|
|
|
+ }
|
|
|
}
|