Index: runtime/bin/stdio.cc |
diff --git a/runtime/bin/stdio.cc b/runtime/bin/stdio.cc |
index aa1c7c2288c52709efa432481f3bd31c5bea08cf..fec14b1c170cecd3f6063243271b761d34d8c1b6 100644 |
--- a/runtime/bin/stdio.cc |
+++ b/runtime/bin/stdio.cc |
@@ -69,6 +69,16 @@ void FUNCTION_NAME(Stdin_SetLineMode)(Dart_NativeArguments args) { |
} |
+void FUNCTION_NAME(Stdin_AnsiSupported)(Dart_NativeArguments args) { |
+ bool supported = false; |
+ if (Stdin::AnsiSupported(&supported)) { |
+ Dart_SetBooleanReturnValue(args, supported); |
+ } else { |
+ Dart_SetReturnValue(args, DartUtils::NewDartOSError()); |
+ } |
+} |
+ |
+ |
void FUNCTION_NAME(Stdout_GetTerminalSize)(Dart_NativeArguments args) { |
if (!Dart_IsInteger(Dart_GetNativeArgument(args, 0))) { |
OSError os_error(-1, "Invalid argument", OSError::kUnknown); |
@@ -92,6 +102,26 @@ void FUNCTION_NAME(Stdout_GetTerminalSize)(Dart_NativeArguments args) { |
} |
} |
+ |
+void FUNCTION_NAME(Stdout_AnsiSupported)(Dart_NativeArguments args) { |
+ if (!Dart_IsInteger(Dart_GetNativeArgument(args, 0))) { |
+ OSError os_error(-1, "Invalid argument", OSError::kUnknown); |
+ Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error)); |
+ return; |
+ } |
+ intptr_t fd = DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 0)); |
+ if ((fd != 1) && (fd != 2)) { |
+ Dart_SetReturnValue(args, Dart_NewApiError("Terminal fd must be 1 or 2")); |
+ return; |
+ } |
siva
2017/03/17 23:54:24
The above chunk could be written as (avoids multip
|
+ bool supported = false; |
+ if (Stdout::AnsiSupported(fd, &supported)) { |
+ Dart_SetBooleanReturnValue(args, supported); |
+ } else { |
+ Dart_SetReturnValue(args, DartUtils::NewDartOSError()); |
+ } |
+} |
+ |
} // namespace bin |
} // namespace dart |