| OLD | NEW |
| 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_debugger_api.h" | 10 #include "include/dart_debugger_api.h" |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 if (strncmp(option, name, length) == 0) { | 255 if (strncmp(option, name, length) == 0) { |
| 256 return main_options[i].process(option + length); | 256 return main_options[i].process(option + length); |
| 257 } | 257 } |
| 258 i += 1; | 258 i += 1; |
| 259 name = main_options[i].option_name; | 259 name = main_options[i].option_name; |
| 260 } | 260 } |
| 261 return false; | 261 return false; |
| 262 } | 262 } |
| 263 | 263 |
| 264 | 264 |
| 265 static void* OpenFile(const char* name) { |
| 266 File* file = File::Open(name, File::kWriteTruncate); |
| 267 ASSERT(file != NULL); |
| 268 return reinterpret_cast<void*>(file); |
| 269 } |
| 270 |
| 271 |
| 272 static void WriteFile(const void* buffer, intptr_t num_bytes, void* stream) { |
| 273 ASSERT(stream != NULL); |
| 274 File* file_stream = reinterpret_cast<File*>(stream); |
| 275 bool bytes_written = file_stream->WriteFully(buffer, num_bytes); |
| 276 ASSERT(bytes_written); |
| 277 } |
| 278 |
| 279 |
| 280 static void CloseFile(void* stream) { |
| 281 delete reinterpret_cast<File*>(stream); |
| 282 } |
| 283 |
| 284 |
| 265 // Convert all the arguments to UTF8. On Windows, the arguments are | 285 // Convert all the arguments to UTF8. On Windows, the arguments are |
| 266 // encoded in the current code page and not UTF8. | 286 // encoded in the current code page and not UTF8. |
| 267 // | 287 // |
| 268 // Returns true if the arguments are converted. In that case | 288 // Returns true if the arguments are converted. In that case |
| 269 // each of the arguments need to be deallocated using free. | 289 // each of the arguments need to be deallocated using free. |
| 270 static bool Utf8ConvertArgv(int argc, char** argv) { | 290 static bool Utf8ConvertArgv(int argc, char** argv) { |
| 271 int unicode_argc = 0; | 291 int unicode_argc = 0; |
| 272 wchar_t** unicode_argv = ShellUtils::GetUnicodeArgv(&unicode_argc); | 292 wchar_t** unicode_argv = ShellUtils::GetUnicodeArgv(&unicode_argc); |
| 273 if (unicode_argv == NULL) return false; | 293 if (unicode_argv == NULL) return false; |
| 274 for (int i = 0; i < unicode_argc; i++) { | 294 for (int i = 0; i < unicode_argc; i++) { |
| (...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 705 } else { | 725 } else { |
| 706 PrintUsage(); | 726 PrintUsage(); |
| 707 return kErrorExitCode; | 727 return kErrorExitCode; |
| 708 } | 728 } |
| 709 } | 729 } |
| 710 | 730 |
| 711 Dart_SetVMFlags(vm_options.count(), vm_options.arguments()); | 731 Dart_SetVMFlags(vm_options.count(), vm_options.arguments()); |
| 712 | 732 |
| 713 // Initialize the Dart VM. | 733 // Initialize the Dart VM. |
| 714 if (!Dart_Initialize(CreateIsolateAndSetup, NULL, NULL, ShutdownIsolate, | 734 if (!Dart_Initialize(CreateIsolateAndSetup, NULL, NULL, ShutdownIsolate, |
| 715 DartUtils::OpenFile, | 735 OpenFile, WriteFile, CloseFile)) { |
| 716 DartUtils::ReadFile, | |
| 717 DartUtils::WriteFile, | |
| 718 DartUtils::CloseFile)) { | |
| 719 fprintf(stderr, "%s", "VM initialization failed\n"); | 736 fprintf(stderr, "%s", "VM initialization failed\n"); |
| 720 fflush(stderr); | 737 fflush(stderr); |
| 721 return kErrorExitCode; | 738 return kErrorExitCode; |
| 722 } | 739 } |
| 723 | 740 |
| 724 DartUtils::SetOriginalWorkingDirectory(); | 741 DartUtils::SetOriginalWorkingDirectory(); |
| 725 | 742 |
| 726 // Start the debugger wire protocol handler if necessary. | 743 // Start the debugger wire protocol handler if necessary. |
| 727 if (start_debugger) { | 744 if (start_debugger) { |
| 728 ASSERT(debug_port != 0); | 745 ASSERT(debug_port != 0); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 | 864 |
| 848 return Process::GlobalExitCode(); | 865 return Process::GlobalExitCode(); |
| 849 } | 866 } |
| 850 | 867 |
| 851 } // namespace bin | 868 } // namespace bin |
| 852 } // namespace dart | 869 } // namespace dart |
| 853 | 870 |
| 854 int main(int argc, char** argv) { | 871 int main(int argc, char** argv) { |
| 855 return dart::bin::main(argc, argv); | 872 return dart::bin::main(argc, argv); |
| 856 } | 873 } |
| OLD | NEW |