OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 patch class _WindowsCodePageDecoder { | 5 patch class _WindowsCodePageDecoder { |
6 /* patch */ static String _decodeBytes(List<int> bytes) | 6 /* patch */ static String _decodeBytes(List<int> bytes) |
7 native "SystemEncodingToString"; | 7 native "SystemEncodingToString"; |
8 } | 8 } |
9 | 9 |
10 | 10 |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 } | 293 } |
294 | 294 |
295 // Start the underlying process. | 295 // Start the underlying process. |
296 return Process.start(path, arguments, options).then((Process p) { | 296 return Process.start(path, arguments, options).then((Process p) { |
297 // Make sure the process stdin is closed. | 297 // Make sure the process stdin is closed. |
298 p.stdin.close(); | 298 p.stdin.close(); |
299 | 299 |
300 // Setup stdout handling. | 300 // Setup stdout handling. |
301 Future<StringBuffer> stdout = p.stdout | 301 Future<StringBuffer> stdout = p.stdout |
302 .transform(new StringDecoder(stdoutEncoding)) | 302 .transform(new StringDecoder(stdoutEncoding)) |
303 .reduce( | 303 .fold( |
304 new StringBuffer(), | 304 new StringBuffer(), |
305 (buf, data) { | 305 (buf, data) { |
306 buf.write(data); | 306 buf.write(data); |
307 return buf; | 307 return buf; |
308 }); | 308 }); |
309 | 309 |
310 Future<StringBuffer> stderr = p.stderr | 310 Future<StringBuffer> stderr = p.stderr |
311 .transform(new StringDecoder(stderrEncoding)) | 311 .transform(new StringDecoder(stderrEncoding)) |
312 .reduce( | 312 .fold( |
313 new StringBuffer(), | 313 new StringBuffer(), |
314 (buf, data) { | 314 (buf, data) { |
315 buf.write(data); | 315 buf.write(data); |
316 return buf; | 316 return buf; |
317 }); | 317 }); |
318 | 318 |
319 return Future.wait([p.exitCode, stdout, stderr]).then((result) { | 319 return Future.wait([p.exitCode, stdout, stderr]).then((result) { |
320 return new _ProcessResult(result[0], | 320 return new _ProcessResult(result[0], |
321 result[1].toString(), | 321 result[1].toString(), |
322 result[2].toString()); | 322 result[2].toString()); |
323 }); | 323 }); |
324 }); | 324 }); |
325 } | 325 } |
326 | 326 |
327 | 327 |
328 class _ProcessResult implements ProcessResult { | 328 class _ProcessResult implements ProcessResult { |
329 const _ProcessResult(int this.exitCode, | 329 const _ProcessResult(int this.exitCode, |
330 String this.stdout, | 330 String this.stdout, |
331 String this.stderr); | 331 String this.stderr); |
332 | 332 |
333 final int exitCode; | 333 final int exitCode; |
334 final String stdout; | 334 final String stdout; |
335 final String stderr; | 335 final String stderr; |
336 } | 336 } |
OLD | NEW |