]> Dogcows Code - chaz/thecheat/blobdiff - AppController.m
The Cheat 1.2.3
[chaz/thecheat] / AppController.m
index ebae2deae04d2c320139de396c52f10ecd114fc7..1adfbaf6c222055befad09cfea81c8bc358dd6fd 100644 (file)
@@ -25,7 +25,6 @@
 #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
This page took 0.021092 seconds and 4 git commands to generate.