#import "LoginController.h" @implementation LoginController - (void) awakeFromNib { NSRect root=[[NSScreen mainScreen] visibleFrame]; NSRect frame=[mainWin frame]; NSPoint tl; tl.x=(root.size.width-frame.size.width)/2+root.origin.x; tl.y=(root.size.height-frame.size.height)/2+root.origin.y; [mainWin setFrameOrigin:tl]; [progressBar setDisplayedWhenStopped: YES]; [progressBar setDoubleValue: 0.0]; [progressBar setIndeterminate: NO]; [progressBar setUsesThreadedAnimation: YES]; } - (IBAction)login:(id)sender { NSAutoreleasePool *pool; NSMutableArray *args; NSMutableString *s; NSTask *mountTask, *runTask; NSBundle *bundle; NSString *domain, *serverName, *serverIP, *uid, *gid, *mountTarget; pool = [[NSAutoreleasePool alloc] init]; // retrieve values from Info.plist bundle = [NSBundle mainBundle]; domain = (NSString*) [bundle objectForInfoDictionaryKey: @"prefDomain"]; serverName = (NSString*) [bundle objectForInfoDictionaryKey: @"prefServerName"]; serverIP = (NSString*) [bundle objectForInfoDictionaryKey: @"prefServerIP"]; mountTarget = (NSString*) [bundle objectForInfoDictionaryKey: @"prefMountTarget"]; gid = (NSString*) [bundle objectForInfoDictionaryKey: @"prefGID"]; uid = (NSString*) [bundle objectForInfoDictionaryKey: @"prefUID"]; [loginButton setEnabled: NO]; [progressBar setIndeterminate: YES]; [progressBar startAnimation: self]; if ([[fieldPwd stringValue] isEqualToString:@"local only"]) { printf("local mode\n"); exit(0); } s = [@"//" mutableCopy]; [s appendString: domain]; [s appendString: @";"]; [s appendString:[fieldUser stringValue]]; [s appendString:@":"]; [s appendString:[fieldPwd stringValue]]; [s appendString:@"@"]; [s appendString: serverName]; [s appendString:@"/"]; [s appendString:[fieldUser stringValue]]; args= [NSMutableArray array]; [args addObject:@"-I"]; [args addObject: serverIP]; [args addObject:@"-u"]; [args addObject: uid]; [args addObject:@"-g"]; [args addObject: gid]; [args addObject:s]; [args addObject: mountTarget]; NSLog(@"call params: \"%@\"",args); mountTask = [[NSTask alloc] init]; [mountTask setLaunchPath:@"/sbin/mount_smbfs"]; [mountTask setArguments:args]; [mountTask launch]; [mountTask waitUntilExit]; //printf("result: %d\n",[mountTask terminationStatus]); if ([mountTask terminationStatus]==0) { NSMutableArray *as=[NSMutableArray array]; //printf("success.\n"); NS_DURING [runTask=[NSTask launchedTaskWithLaunchPath:@"/sbin/smb.postmount" arguments: as] waitUntilExit]; NS_HANDLER NS_ENDHANDLER //printf("ok, done.\n"); exit(0); } [loginButton setEnabled: YES]; [progressBar stopAnimation: self]; [progressBar setDisplayedWhenStopped: YES]; [progressBar setDoubleValue: 0.0]; [progressBar setIndeterminate: NO]; } @end