X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=AppController.m;h=1adfbaf6c222055befad09cfea81c8bc358dd6fd;hb=ad02580588e2ca41f15ba8f9bd084561d8d485c2;hp=ebae2deae04d2c320139de396c52f10ecd114fc7;hpb=d27548f80fe411fda2ee69c74a24eab4292267e9;p=chaz%2Fthecheat diff --git a/AppController.m b/AppController.m index ebae2de..1adfbaf 100644 --- a/AppController.m +++ b/AppController.m @@ -25,7 +25,6 @@ #import "HelpController.h" #import "PreferenceController.h" - @implementation AppController @@ -80,14 +79,35 @@ [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 @@ -100,7 +120,7 @@ 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