On Mar 14, 2010, at 3:22 PM, gMail.com wrote:
> Hi,
> I can't find a way in Cocoa to mount a dmg disk.
> So I would try to call the shell through a NSTask.
> I succeed on the Terminal when executing this command line:
> 
> echo -n password | hdiutil mount /Users/john/Documents/MyDmgDisk.dmg
> 
> But when I pass this command line to the NSTask, I fail all the time.
> Furthermore, the app stops to output my NSLog messages to the XCode console.
> Please, what do I miss?
> 
> NSString    *commandLine = @"echo -n password | hdiutil mount
> /Users/john/Documents/MyDmgDisk.dmg";
> 
>  NSArray     *args = [NSArray arrayWithObjects:@"-c",  commandLine , nil];
>  NSTask        *task = [[NSTask alloc] init];
>  [task setLaunchPath:@"/bin/sh"];
>  [task setArguments:args];
>  [task setStandardOutput:[NSFileHandle fileHandleWithNullDevice]];
>  [task setStandardError:[NSFileHandle fileHandleWithStandardError]];
>  [task launch];
>  [task waitUntilExit];
>  int result = [task terminationStatus];
>  [task release];
> 
> 
> Please note, in case of no password, I simply call
>    system("hdiutil mount Users/john/Documents/MyDmgDisk.dmg");
> and it works well all the time. But even here, I don't know how to deal with
> the password. Any idea?


You're relying too heavily on the shell, and you're not passing the necessary 
-stdinpass option to hdiutil. Try (written in Mail, no guarantees):

NSArray         *args = [NSArray arrayWithObjects:@"hdiutil", @"mount", 
@"-stdinpass", pathToDMG, nil];
NSTask          *task = [[NSTask alloc] init];
NSPipe          *pipe = [NSPipe pipe];

[task setLaunchPath:@"/usr/bin/hdiutil"];
[task setArguments:args];
[task setStandardInput:pipe];
[task setStandardOutput:[NSFileHandle fileHandleWithNullDevice]];
[task setStandardError:[NSFileHandle fileHandleWithStandardError]];
[task launch];
[[pipe fileHandleForWriting] writeData:[@"password" 
dataUsingEncoding:NSUTF8StringEncoding]];
[[pipe fileHandleForWriting] closeFile];
[task waitUntilExit];
int             result = [task terminationStatus];
[task release];

-- Gwynne

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to