Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: runtime/bin/main.cc

Issue 1458983002: Don't use global variables for capturing stdio. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/bin/file.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 #include <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include "include/dart_api.h" 9 #include "include/dart_api.h"
10 #include "include/dart_tools_api.h" 10 #include "include/dart_tools_api.h"
(...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 Dart_Handle args[] = {paths, keys, values}; 1048 Dart_Handle args[] = {paths, keys, values};
1049 Dart_Handle result = Dart_Invoke(io_lib, handler_function_name, 3, args); 1049 Dart_Handle result = Dart_Invoke(io_lib, handler_function_name, 3, args);
1050 if (Dart_IsError(result)) return ServiceRequestError(result); 1050 if (Dart_IsError(result)) return ServiceRequestError(result);
1051 const char *json; 1051 const char *json;
1052 result = Dart_StringToCString(result, &json); 1052 result = Dart_StringToCString(result, &json);
1053 if (Dart_IsError(result)) return ServiceRequestError(result); 1053 if (Dart_IsError(result)) return ServiceRequestError(result);
1054 return strdup(json); 1054 return strdup(json);
1055 } 1055 }
1056 1056
1057 1057
1058 extern bool capture_stdio;
1059 extern bool capture_stdout;
1060 extern bool capture_stderr;
1061 static const char* kStdoutStreamId = "Stdout"; 1058 static const char* kStdoutStreamId = "Stdout";
1062 static const char* kStderrStreamId = "Stderr"; 1059 static const char* kStderrStreamId = "Stderr";
1063 1060
1064 1061
1065 static bool ServiceStreamListenCallback(const char* stream_id) { 1062 static bool ServiceStreamListenCallback(const char* stream_id) {
1066 if (strcmp(stream_id, kStdoutStreamId) == 0) { 1063 if (strcmp(stream_id, kStdoutStreamId) == 0) {
1067 capture_stdio = true; 1064 File::set_capture_stdout(true);
1068 capture_stdout = true;
1069 return true; 1065 return true;
1070 } else if (strcmp(stream_id, kStderrStreamId) == 0) { 1066 } else if (strcmp(stream_id, kStderrStreamId) == 0) {
1071 capture_stdio = true; 1067 File::set_capture_stderr(true);
1072 capture_stderr = true;
1073 return true; 1068 return true;
1074 } 1069 }
1075 return false; 1070 return false;
1076 } 1071 }
1077 1072
1078 1073
1079 static void ServiceStreamCancelCallback(const char* stream_id) { 1074 static void ServiceStreamCancelCallback(const char* stream_id) {
1080 if (strcmp(stream_id, kStdoutStreamId) == 0) { 1075 if (strcmp(stream_id, kStdoutStreamId) == 0) {
1081 capture_stdout = false; 1076 File::set_capture_stdout(false);
1082 } else if (strcmp(stream_id, kStderrStreamId) == 0) { 1077 } else if (strcmp(stream_id, kStderrStreamId) == 0) {
1083 capture_stderr = false; 1078 File::set_capture_stderr(false);
1084 } 1079 }
1085 capture_stdio = (capture_stdout || capture_stderr);
1086 } 1080 }
1087 1081
1088 1082
1089 static void WriteSnapshotFile(const char* filename, 1083 static void WriteSnapshotFile(const char* filename,
1090 const uint8_t* buffer, 1084 const uint8_t* buffer,
1091 const intptr_t size) { 1085 const intptr_t size) {
1092 File* file = File::Open(filename, File::kWriteTruncate); 1086 File* file = File::Open(filename, File::kWriteTruncate);
1093 ASSERT(file != NULL); 1087 ASSERT(file != NULL);
1094 if (!file->WriteFully(buffer, size)) { 1088 if (!file->WriteFully(buffer, size)) {
1095 ErrorExit(kErrorExitCode, 1089 ErrorExit(kErrorExitCode,
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
1522 Platform::Exit(Process::GlobalExitCode()); 1516 Platform::Exit(Process::GlobalExitCode());
1523 } 1517 }
1524 1518
1525 } // namespace bin 1519 } // namespace bin
1526 } // namespace dart 1520 } // namespace dart
1527 1521
1528 int main(int argc, char** argv) { 1522 int main(int argc, char** argv) {
1529 dart::bin::main(argc, argv); 1523 dart::bin::main(argc, argv);
1530 UNREACHABLE(); 1524 UNREACHABLE();
1531 } 1525 }
OLDNEW
« no previous file with comments | « runtime/bin/file.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698