Foundation Tool as Daemon?
SD
macosxdevlist at personal.fishh2o.com
Tue Jun 3 15:33:47 PDT 2008
Here's some code for using an NSTask, you'll have to clean it up probably:
NSString *pathToTool = ...;
NSTask *task = [[[NSTask alloc] init] autorelease];
[task setLaunchPath:pathToTool];
[task setArguments:[NSArray arrayWithObjects:
pathToTool,
@"arg1",
@"arg2",
nil]];
NSPipe *writePipe = [NSPipe pipe];
NSFileHandle *writeHandle = [writePipe fileHandleForWriting];
[task setStandardInput:writePipe];
NSPipe *readPipe = [NSPipe pipe];
NSFileHandle *readHandle = [readPipe fileHandleForReading];
[task setStandardOutput:readPipe];
NSPipe *readErrorPipe = [NSPipe pipe];
NSFileHandle *readErrorHandle = [readErrorPipe fileHandleForReading];
[task setStandardError:readErrorPipe];
[task launch];
//need to write user and pass then post data
//size then data
NSString *userAndPass = [[proxyController userName]
stringByAppendingFormat:@":%@",
[proxyController password]];
NSMutableData* postData = [NSMutableData data];
//username and pass
int32_t size = strlen([userAndPass UTF8String])*sizeof(char);
[postData appendBytes:&size length:sizeof(int32_t)];
[postData appendBytes:[userAndPass UTF8String] length:size];
//post data
if(postDictionary != nil)
{
NSString *postDictionaryStr = [postDictionary
formatForHTTPUsingEncoding:NSUTF8StringEncoding];
size = strlen([postDictionaryStr UTF8String])*sizeof(char);
[postData appendBytes:&size length:sizeof(int32_t)];
[postData appendBytes:[postDictionaryStr UTF8String] length:size];
}
[writeHandle writeData:postData];
[task waitUntilExit];
NSData* URLdata = [readHandle readDataToEndOfFile];
NSData* errorData = [readErrorHandle readDataToEndOfFile];
IFDEBUG(
NSLog(@"URLdata = '%@'", URLdata);
NSLog(@"errorData = '%@'", errorData);
)
if(debugInfo != nil) [debugInfo appendFormat:@"\t URLdata
= '%@'\n", URLdata];
if(debugInfo != nil) [debugInfo appendFormat:@"\t
errorData = '%@'\n", errorData];
if(debugInfo != nil) [debugInfo appendFormat:@"\t
URLHandle status = N/A\n"];
if(debugInfo != nil) [debugInfo appendFormat:@"\t httpCode N/A\n"];
NSString *returnStr = [[[NSString alloc]
initWithData:([errorData
length] == 0 ? URLdata : errorData)
encoding:NSUTF8StringEncoding]
autorelease];
if(debugInfo != nil) [debugInfo appendFormat:@"\t
returnStr = '%@'\n", returnStr];
IFDEBUG(NSLog(@"returnStr = '%@'", returnStr);)
return returnStr;
SD
--
==========================================
SD
WARNING: Programming may be habit forming.
More information about the MacOSX-dev
mailing list