| Index: sdk/lib/io/stdio.dart
|
| diff --git a/sdk/lib/io/stdio.dart b/sdk/lib/io/stdio.dart
|
| index 07218db89440c42dbed99c32ec526c56246b8d15..29ea48d2a4380dbb9ca1459fb12715eeff26bae4 100644
|
| --- a/sdk/lib/io/stdio.dart
|
| +++ b/sdk/lib/io/stdio.dart
|
| @@ -10,25 +10,18 @@ const int _STDIO_HANDLE_TYPE_FILE = 2;
|
| const int _STDIO_HANDLE_TYPE_SOCKET = 3;
|
| const int _STDIO_HANDLE_TYPE_OTHER = 4;
|
|
|
| -
|
| class _StdStream extends Stream<List<int>> {
|
| final Stream<List<int>> _stream;
|
|
|
| _StdStream(this._stream);
|
|
|
| StreamSubscription<List<int>> listen(void onData(List<int> event),
|
| - {Function onError,
|
| - void onDone(),
|
| - bool cancelOnError}) {
|
| - return _stream.listen(
|
| - onData,
|
| - onError: onError,
|
| - onDone: onDone,
|
| - cancelOnError: cancelOnError);
|
| + {Function onError, void onDone(), bool cancelOnError}) {
|
| + return _stream.listen(onData,
|
| + onError: onError, onDone: onDone, cancelOnError: cancelOnError);
|
| }
|
| }
|
|
|
| -
|
| /**
|
| * [Stdin] allows both synchronous and asynchronous reads from the standard
|
| * input stream.
|
| @@ -53,8 +46,8 @@ class Stdin extends _StdStream implements Stream<List<int>> {
|
| * that data is returned.
|
| * Returns `null` if no bytes preceded the end of input.
|
| */
|
| - String readLineSync({Encoding encoding: SYSTEM_ENCODING,
|
| - bool retainNewlines: false}) {
|
| + String readLineSync(
|
| + {Encoding encoding: SYSTEM_ENCODING, bool retainNewlines: false}) {
|
| const CR = 13;
|
| const LF = 10;
|
| final List<int> line = <int>[];
|
| @@ -87,7 +80,8 @@ class Stdin extends _StdStream implements Stream<List<int>> {
|
| }
|
| } else {
|
| // Case having to handel CR LF as a single unretained line terminator.
|
| - outer: while (true) {
|
| + outer:
|
| + while (true) {
|
| int byte = readByteSync();
|
| if (byte == LF) break;
|
| if (byte == CR) {
|
| @@ -151,7 +145,6 @@ class Stdin extends _StdStream implements Stream<List<int>> {
|
| external int readByteSync();
|
| }
|
|
|
| -
|
| /**
|
| * [Stdout] represents the [IOSink] for either `stdout` or `stderr`.
|
| *
|
| @@ -208,7 +201,6 @@ class Stdout extends _StdFileSink implements IOSink {
|
| }
|
| }
|
|
|
| -
|
| class StdoutException implements IOException {
|
| final String message;
|
| final OSError osError;
|
| @@ -220,7 +212,6 @@ class StdoutException implements IOException {
|
| }
|
| }
|
|
|
| -
|
| class StdinException implements IOException {
|
| final String message;
|
| final OSError osError;
|
| @@ -232,7 +223,6 @@ class StdinException implements IOException {
|
| }
|
| }
|
|
|
| -
|
| class _StdConsumer implements StreamConsumer<List<int>> {
|
| final _file;
|
|
|
| @@ -241,15 +231,14 @@ class _StdConsumer implements StreamConsumer<List<int>> {
|
| Future addStream(Stream<List<int>> stream) {
|
| var completer = new Completer();
|
| var sub;
|
| - sub = stream.listen(
|
| - (data) {
|
| - try {
|
| - _file.writeFromSync(data);
|
| - } catch (e, s) {
|
| - sub.cancel();
|
| - completer.completeError(e, s);
|
| - }
|
| - },
|
| + sub = stream.listen((data) {
|
| + try {
|
| + _file.writeFromSync(data);
|
| + } catch (e, s) {
|
| + sub.cancel();
|
| + completer.completeError(e, s);
|
| + }
|
| + },
|
| onError: completer.completeError,
|
| onDone: completer.complete,
|
| cancelOnError: true);
|
| @@ -285,29 +274,36 @@ class _StdSinkHelper implements IOSink {
|
| _translation = _FileTranslation.text;
|
| _sink.write(object);
|
| }
|
| - void writeln([object = "" ]) {
|
| +
|
| + void writeln([object = ""]) {
|
| _translation = _FileTranslation.text;
|
| _sink.writeln(object);
|
| }
|
| +
|
| void writeAll(objects, [sep = ""]) {
|
| _translation = _FileTranslation.text;
|
| _sink.writeAll(objects, sep);
|
| }
|
| +
|
| void add(List<int> data) {
|
| _translation = _FileTranslation.binary;
|
| _sink.add(data);
|
| }
|
| +
|
| void addError(error, [StackTrace stackTrace]) {
|
| _sink.addError(error, stackTrace);
|
| }
|
| +
|
| void writeCharCode(int charCode) {
|
| _translation = _FileTranslation.text;
|
| _sink.writeCharCode(charCode);
|
| }
|
| +
|
| Future addStream(Stream<List<int>> stream) {
|
| _translation = _FileTranslation.binary;
|
| return _sink.addStream(stream);
|
| }
|
| +
|
| Future flush() => _sink.flush();
|
| Future close() => _sink.close();
|
| Future get done => _sink.done;
|
| @@ -333,12 +329,10 @@ class StdioType {
|
| String toString() => "StdioType: $name";
|
| }
|
|
|
| -
|
| Stdin _stdin;
|
| Stdout _stdout;
|
| Stdout _stderr;
|
|
|
| -
|
| /// The standard input stream of data read by this program.
|
| Stdin get stdin {
|
| if (_stdin == null) {
|
| @@ -347,7 +341,6 @@ Stdin get stdin {
|
| return _stdin;
|
| }
|
|
|
| -
|
| /// The standard output stream of data written by this program.
|
| Stdout get stdout {
|
| if (_stdout == null) {
|
| @@ -356,7 +349,6 @@ Stdout get stdout {
|
| return _stdout;
|
| }
|
|
|
| -
|
| /// The standard output stream of errors written by this program.
|
| Stdout get stderr {
|
| if (_stderr == null) {
|
| @@ -365,7 +357,6 @@ Stdout get stderr {
|
| return _stderr;
|
| }
|
|
|
| -
|
| /// For a stream, returns whether it is attached to a file, pipe, terminal, or
|
| /// something else.
|
| StdioType stdioType(object) {
|
| @@ -373,9 +364,12 @@ StdioType stdioType(object) {
|
| object = object._stream;
|
| } else if (object == stdout || object == stderr) {
|
| switch (_StdIOUtils._getStdioHandleType(object == stdout ? 1 : 2)) {
|
| - case _STDIO_HANDLE_TYPE_TERMINAL: return StdioType.TERMINAL;
|
| - case _STDIO_HANDLE_TYPE_PIPE: return StdioType.PIPE;
|
| - case _STDIO_HANDLE_TYPE_FILE: return StdioType.FILE;
|
| + case _STDIO_HANDLE_TYPE_TERMINAL:
|
| + return StdioType.TERMINAL;
|
| + case _STDIO_HANDLE_TYPE_PIPE:
|
| + return StdioType.PIPE;
|
| + case _STDIO_HANDLE_TYPE_FILE:
|
| + return StdioType.FILE;
|
| }
|
| }
|
| if (object is _FileStream) {
|
| @@ -405,10 +399,10 @@ StdioType stdioType(object) {
|
| return StdioType.OTHER;
|
| }
|
|
|
| -
|
| class _StdIOUtils {
|
| external static _getStdioOutputStream(int fd);
|
| external static Stdin _getStdioInputStream();
|
| +
|
| /// Returns the socket type or `null` if [socket] is not a builtin socket.
|
| external static int _socketType(Socket socket);
|
| external static _getStdioHandleType(int fd);
|
|
|