Revision: 39693 http://trac.macosforge.org/projects/macports/changeset/39693 Author: armahg@macports.org Date: 2008-08-31 03:24:23 -0700 (Sun, 31 Aug 2008) Log Message: ----------- MacPorts.Framework is now (basic) feature complete :). Creating IPC BSD socket files on the fly fixed IPC with helper tool bug where the IPC DoShout command failed to execute successfully if called successively without a long enough time interval between calls. Now time for code clean up, documentation and debugging Modified Paths: -------------- branches/gsoc08-framework/MacPorts_Framework_Release/BetterAuthorizationSampleLib.c branches/gsoc08-framework/MacPorts_Framework_Release/MPHelperTool.m branches/gsoc08-framework/MacPorts_Framework_Release/MPInterpreter.m branches/gsoc08-framework/MacPorts_Framework_Release/MPNotifications+IPCAdditions.m Modified: branches/gsoc08-framework/MacPorts_Framework_Release/BetterAuthorizationSampleLib.c =================================================================== --- branches/gsoc08-framework/MacPorts_Framework_Release/BetterAuthorizationSampleLib.c 2008-08-31 07:54:20 UTC (rev 39692) +++ branches/gsoc08-framework/MacPorts_Framework_Release/BetterAuthorizationSampleLib.c 2008-08-31 10:24:23 UTC (rev 39693) @@ -1933,6 +1933,12 @@ " <key>OnDemand</key>\n" " <true/>\n" + // We don't want our helper tool to be respawned every 10 seconds + // after a faliure ... hopefully this won't ALSO prevent us from + // rerunning the helper tool without rebooting the machine +// " <key>LaunchOnlyOnce</key>\n" +// " <true/>\n" + // There are no program arguments, other that the path to the helper tool itself. // // IMPORTANT Modified: branches/gsoc08-framework/MacPorts_Framework_Release/MPHelperTool.m =================================================================== --- branches/gsoc08-framework/MacPorts_Framework_Release/MPHelperTool.m 2008-08-31 07:54:20 UTC (rev 39692) +++ branches/gsoc08-framework/MacPorts_Framework_Release/MPHelperTool.m 2008-08-31 10:24:23 UTC (rev 39693) @@ -49,6 +49,7 @@ #include <unistd.h> #include <sys/socket.h> #include <sys/un.h> +#include <sys/param.h> #include <signal.h> @@ -300,8 +301,14 @@ connReq.sun_len = sizeof(connReq); connReq.sun_family = AF_UNIX; - strcpy(connReq.sun_path, kServerSocketPath); + //strcpy(connReq.sun_path, kServerSocketPath); +// char testPath [MAXPATHLEN]; +// strcpy(testPath, [ipcFilePath cStringUsingEncoding:NSUTF8StringEncoding]); + [ASLLogger logString:[NSString stringWithFormat:@"ipcFilePath is %@", ipcFilePath]]; +// const char * testPath = [ipcFilePath cStringUsingEncoding:NSUTF8StringEncoding]; + strcpy(connReq.sun_path, [ipcFilePath cStringUsingEncoding:NSUTF8StringEncoding]); + err = connect(conn->fSockFD, (struct sockaddr *) &connReq, SUN_LEN(&connReq)); err = MoreUNIXErrno(err); @@ -740,7 +747,7 @@ // Connect to the server. if (err == 0) { err = ConnectionOpen(&nConn); - [ASLLogger logString:@"MPHelperTool: Installed Signal to Socket!"]; + [ASLLogger logString:[NSString stringWithFormat:@"MPHelperTool: Installed Signal to Socket! %i", err]]; } if (err == 0) @@ -832,7 +839,7 @@ } else - [ASLLogger logString:[NSString stringWithFormat:@"notifier has value %@", notifier]]; + [ASLLogger logString:[NSString stringWithFormat:@"notifier didn't connect has value %@", notifier]]; //DoShout(iConn, log); @@ -896,12 +903,13 @@ //aslMsg may be null //Get the ipc file path - ipcFilePath = (NSString *) (CFStringRef)CFDictionaryGetValue(request, CFSTR(kServerFileSocketPath)); + ipcFilePath = [[NSString alloc] initWithString:(NSString *) (CFStringRef)CFDictionaryGetValue(request, CFSTR(kServerFileSocketPath))]; if (ipcFilePath == nil) { retval = coreFoundationUnknownErr; } else CFDictionaryAddValue(response, CFSTR("SocketServerFilePath"), (CFStringRef)ipcFilePath); + [notifier initializeConnection]; //Get the string that was passed in the request dictionary @@ -1097,8 +1105,8 @@ // notifier = [[NotificationsClient alloc] init]; - [notifier initializeConnection]; + int result = BASHelperToolMain(kMPHelperCommandSet, kMPHelperCommandProcs); // Clean up. @@ -1108,6 +1116,7 @@ [notifier closeConnection]; [notifier release]; + [ipcFilePath release]; [pool release]; Modified: branches/gsoc08-framework/MacPorts_Framework_Release/MPInterpreter.m =================================================================== --- branches/gsoc08-framework/MacPorts_Framework_Release/MPInterpreter.m 2008-08-31 07:54:20 UTC (rev 39692) +++ branches/gsoc08-framework/MacPorts_Framework_Release/MPInterpreter.m 2008-08-31 10:24:23 UTC (rev 39693) @@ -557,7 +557,7 @@ } } - NSLog(@"AFTER Tool Execution request is %@ , response is %@ \n\n", request, response); + //NSLog(@"AFTER Tool Execution request is %@ , response is %@ \n\n", request, response); return result; } Modified: branches/gsoc08-framework/MacPorts_Framework_Release/MPNotifications+IPCAdditions.m =================================================================== --- branches/gsoc08-framework/MacPorts_Framework_Release/MPNotifications+IPCAdditions.m 2008-08-31 07:54:20 UTC (rev 39692) +++ branches/gsoc08-framework/MacPorts_Framework_Release/MPNotifications+IPCAdditions.m 2008-08-31 10:24:23 UTC (rev 39693) @@ -1410,8 +1410,13 @@ NSLog(@"Creating Socket"); } if (err == 0) { - err = SafeBindUnixDomainSocket(listenerFD, kServerSocketPath); - didBind = (err == 0); + //err = SafeBindUnixDomainSocket(listenerFD, kServerSocketPath); + NSLog(@"Socket file path is %@", socketFilePath); + + char testPath [MAXPATHLEN]; + strcpy(testPath, [socketFilePath cStringUsingEncoding:NSUTF8StringEncoding]); + err = SafeBindUnixDomainSocket(listenerFD, [socketFilePath cStringUsingEncoding:NSUTF8StringEncoding]); + didBind = (err == 0); NSLog(@"Binding Socket %i", err); } if (err == 0) {