PBEasyPipe: Add a new method to provide input

This commit is contained in:
Pieter de Bie
2008-09-24 01:07:15 +02:00
parent 76e176e8b4
commit 4024753045
+34 -3
View File
@@ -49,14 +49,42 @@
NSTask *task = [self taskForCommand:cmd withArgs:args inDir:dir];
NSFileHandle* handle = [task.standardOutput fileHandleForReading];
[task launch];
NSData* data = [handle readDataToEndOfFile];
NSString* string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// Strip trailing newline
if ([string hasSuffix:@"\n"])
string = [string substringToIndex:[string length]-1];
[task waitUntilExit];
if (ret)
*ret = [task terminationStatus];
return string;
}
+ (NSString*) outputForCommand:(NSString *) cmd
withArgs:(NSArray *) args
inDir:(NSString *) dir
inputString:(NSString *)input
retValue:(int *) ret
{
NSTask *task = [self taskForCommand:cmd withArgs:args inDir:dir];
NSFileHandle* handle = [task.standardOutput fileHandleForReading];
task.standardInput = [NSPipe pipe];
NSFileHandle *inHandle = [task.standardInput fileHandleForWriting];
[inHandle writeData:[input dataUsingEncoding:NSUTF8StringEncoding]];
[inHandle closeFile];
[task launch];
NSData* data = [handle readDataToEndOfFile];
NSString* string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// Strip trailing newline
if ([string hasSuffix:@"\n"])
string = [string substringToIndex:[string length]-1];
[task waitUntilExit];
if (ret)
*ret = [task terminationStatus];
@@ -65,10 +93,12 @@
// We don't use the above function because then we'd have to wait until the program was finished
// with running
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
{
NSTask *task = [self taskForCommand:cmd withArgs:args inDir:dir];
NSFileHandle* handle = [task.standardOutput fileHandleForReading];
[task launch];
NSData* data = [handle readDataToEndOfFile];
@@ -80,6 +110,7 @@
return string;
}
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args
{
return [self outputForCommand:cmd withArgs:args inDir:nil];