@@ -51,21 +51,7 @@ + (NSString*) outputForCommand:(NSString *) cmd
51
51
inDir : (NSString *) dir
52
52
retValue : (int *) ret
53
53
{
54
- NSTask *task = [self taskForCommand: cmd withArgs: args inDir: dir];
55
- NSFileHandle * handle = [task.standardOutput fileHandleForReading ];
56
- [task launch ];
57
-
58
- NSData * data = [handle readDataToEndOfFile ];
59
- NSString * string = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
60
-
61
- // Strip trailing newline
62
- if ([string hasSuffix: @" \n " ])
63
- string = [string substringToIndex: [string length ]-1 ];
64
-
65
- [task waitUntilExit ];
66
- if (ret)
67
- *ret = [task terminationStatus ];
68
- return string;
54
+ return [self outputForCommand: cmd withArgs: args inDir: dir inputString: NULL retValue: ret];
69
55
}
70
56
71
57
// TODO: Refactor this to use the function above
@@ -77,15 +63,20 @@ + (NSString*) outputForCommand:(NSString *) cmd
77
63
{
78
64
NSTask *task = [self taskForCommand: cmd withArgs: args inDir: dir];
79
65
NSFileHandle * handle = [task.standardOutput fileHandleForReading ];
80
- task.standardInput = [NSPipe pipe ];
81
- NSFileHandle *inHandle = [task.standardInput fileHandleForWriting ];
82
- [inHandle writeData: [input dataUsingEncoding: NSUTF8StringEncoding]];
83
- [inHandle closeFile ];
66
+
67
+ if (input) {
68
+ task.standardInput = [NSPipe pipe ];
69
+ NSFileHandle *inHandle = [task.standardInput fileHandleForWriting ];
70
+ [inHandle writeData: [input dataUsingEncoding: NSUTF8StringEncoding]];
71
+ [inHandle closeFile ];
72
+ }
84
73
85
74
[task launch ];
86
75
87
76
NSData * data = [handle readDataToEndOfFile ];
88
- NSString * string = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
77
+ NSString *string = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
78
+ if (!string)
79
+ string = [[NSString alloc ] initWithData: data encoding: NSASCIIStringEncoding];
89
80
90
81
// Strip trailing newline
91
82
if ([string hasSuffix: @" \n " ])
@@ -108,7 +99,9 @@ + (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir
108
99
[task launch ];
109
100
#warning This can cause a "Bad file descriptor"... when?
110
101
NSData * data = [handle readDataToEndOfFile ];
111
- NSString * string = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
102
+ NSString *string = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
103
+ if (!string)
104
+ string = [[NSString alloc ] initWithData: data encoding: NSASCIIStringEncoding];
112
105
113
106
// Strip trailing newline
114
107
if ([string hasSuffix: @" \n " ])
0 commit comments