#import "HelpController.h"
#import "PreferenceController.h"
-
@implementation AppController
[super dealloc];
}
+// http://vgable.com/blog/2008/10/05/restarting-your-cocoa-application/
+- (void)restartOurselves
+{
+ NSString *killArg1AndOpenArg2Script = @"kill -9 $1 \n open \"$2\"";
+ NSString *ourPID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
+ NSString *pathToUs = [[NSBundle mainBundle] bundlePath];
+
+ NSArray *shArgs = [NSArray arrayWithObjects:@"-c", killArg1AndOpenArg2Script, @"", ourPID, pathToUs, nil];
+ NSTask *restartTask = [NSTask launchedTaskWithLaunchPath:@"/bin/sh" arguments:shArgs];
+ [restartTask waitUntilExit];
+ NSLog(@"*** ERROR: %@ should have been terminated, but we are still running", pathToUs);
+ assert(!"We should not be running!");
+}
+
+- (BOOL) checkExecutablePermissions {
+ NSDictionary *applicationAttributes = [[NSFileManager defaultManager] fileAttributesAtPath:[[NSBundle mainBundle] executablePath] traverseLink: YES];
+
+ // We expect 2755 as octal (1517 as decimal, -rwxr-sr-x as extended notation)
+ return ([applicationAttributes filePosixPermissions] == 1517 && [[applicationAttributes fileGroupOwnerAccountName] isEqualToString: @"procmod"]);
+}
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#pragma mark NSApplication Delegate
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
+ [NSApp activateIgnoringOtherApps:YES];
+
// check if this is the first launch
if ( ![[NSUserDefaults standardUserDefaults] boolForKey:TCFirstLaunchPref] ) {
// FIRST LAUNCH
ChazCheckForUpdate( TCUpdateCheckURL, NO );
}
- // automaticall start the cheat server if the pref is set
+ // automatically start the cheat server if the pref is set
if ( [[NSUserDefaults standardUserDefaults] boolForKey:TCRunServerPref] ) {
if ( ![self startCheatServer] ) {
// inform the user that the server won't start