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

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

Issue 11565008: Use unicode versions of process APIs on Windows. Additionally, (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | runtime/bin/process_win.cc » ('j') | 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_debugger_api.h" 10 #include "include/dart_debugger_api.h"
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 delete reinterpret_cast<File*>(stream); 247 delete reinterpret_cast<File*>(stream);
248 } 248 }
249 249
250 250
251 // Convert all the arguments to UTF8. On Windows, the arguments are 251 // Convert all the arguments to UTF8. On Windows, the arguments are
252 // encoded in the current code page and not UTF8. 252 // encoded in the current code page and not UTF8.
253 // 253 //
254 // Returns true if the arguments are converted. In that case 254 // Returns true if the arguments are converted. In that case
255 // each of the arguments need to be deallocated using free. 255 // each of the arguments need to be deallocated using free.
256 static bool Utf8ConvertArgv(int argc, char** argv) { 256 static bool Utf8ConvertArgv(int argc, char** argv) {
257 bool result = false; 257 int unicode_argc = 0;
258 for (int i = 0; i < argc; i++) { 258 wchar_t** unicode_argv = ShellUtils::GetUnicodeArgv(&unicode_argc);
259 char* arg = argv[i]; 259 if (unicode_argv == NULL) return false;
260 argv[i] = StringUtils::ConsoleStringToUtf8(arg); 260 for (int i = 0; i < unicode_argc; i++) {
261 if (i == 0) { 261 wchar_t* arg = unicode_argv[i];
262 result = argv[i] != arg; 262 argv[i] = StringUtils::WideToUtf8(arg);
263 } else {
264 ASSERT(result == (argv[i] != arg));
265 }
266 } 263 }
267 return result; 264 ShellUtils::FreeUnicodeArgv(unicode_argv);
265 return true;
268 } 266 }
269 267
270 268
271 // Parse out the command line arguments. Returns -1 if the arguments 269 // Parse out the command line arguments. Returns -1 if the arguments
272 // are incorrect, 0 otherwise. 270 // are incorrect, 0 otherwise.
273 static int ParseArguments(int argc, 271 static int ParseArguments(int argc,
274 char** argv, 272 char** argv,
275 CommandLineOptions* vm_options, 273 CommandLineOptions* vm_options,
276 char** executable_name, 274 char** executable_name,
277 char** script_name, 275 char** script_name,
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 Dart_ShutdownIsolate(); 787 Dart_ShutdownIsolate();
790 // Terminate process exit-code handler. 788 // Terminate process exit-code handler.
791 Process::TerminateExitCodeHandler(); 789 Process::TerminateExitCodeHandler();
792 // Free copied argument strings if converted. 790 // Free copied argument strings if converted.
793 if (argv_converted) { 791 if (argv_converted) {
794 for (int i = 0; i < argc; i++) free(argv[i]); 792 for (int i = 0; i < argc; i++) free(argv[i]);
795 } 793 }
796 794
797 return 0; 795 return 0;
798 } 796 }
OLDNEW
« no previous file with comments | « no previous file | runtime/bin/process_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698