Chromium Code Reviews| Index: runtime/bin/main.cc |
| diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc |
| index 2db7280a10873be78d06e9a0d78df7ba4c8134e3..6f3a9a3ff5c0dc47e13b196a7157afb7c0ce0e27 100644 |
| --- a/runtime/bin/main.cc |
| +++ b/runtime/bin/main.cc |
| @@ -163,21 +163,25 @@ static bool ProcessMainOptions(const char* option) { |
| static int ParseArguments(int argc, |
| char** argv, |
| CommandLineOptions* vm_options, |
| + char** executable_name, |
| char** script_name, |
| CommandLineOptions* dart_options) { |
| const char* kPrefix = "--"; |
| const intptr_t kPrefixLen = strlen(kPrefix); |
| - // Skip the binary name. |
| + // Get the executable name. |
| + *executable_name = argv[0]; |
| + |
| + // Start the rest after the executable name. |
| int i = 1; |
| // Parse out the vm options. |
| while ((i < argc) && IsValidFlag(argv[i], kPrefix, kPrefixLen)) { |
| if (ProcessMainOptions(argv[i])) { |
| - i += 1; |
| + ++i; |
|
Ivan Posva
2012/05/07 17:40:36
i++ is more conventional, no?
Mads Ager (google)
2012/05/08 06:39:04
Yes, it is. Done.
|
| } else { |
| vm_options->AddArgument(argv[i]); |
| - i += 1; |
| + ++i; |
| } |
| } |
| if (generate_pprof_symbols_filename != NULL) { |
| @@ -187,7 +191,7 @@ static int ParseArguments(int argc, |
| // Get the script name. |
| if (i < argc) { |
| *script_name = argv[i]; |
| - i += 1; |
| + ++i; |
| } else { |
| return -1; |
| } |
| @@ -203,8 +207,13 @@ static int ParseArguments(int argc, |
| static Dart_Handle SetupRuntimeOptions(CommandLineOptions* options, |
| + const char* executable_name, |
| const char* script_name) { |
| int options_count = options->count(); |
| + Dart_Handle dart_executable = Dart_NewString(executable_name); |
| + if (Dart_IsError(dart_executable)) { |
| + return dart_executable; |
| + } |
| Dart_Handle dart_script = Dart_NewString(script_name); |
| if (Dart_IsError(dart_script)) { |
| return dart_script; |
| @@ -240,6 +249,17 @@ static Dart_Handle SetupRuntimeOptions(CommandLineOptions* options, |
| if (Dart_IsError(runtime_options_class)) { |
| return runtime_options_class; |
| } |
| + Dart_Handle executable_name_name = Dart_NewString("_nativeExecutable"); |
| + if (Dart_IsError(executable_name_name)) { |
| + return executable_name_name; |
| + } |
| + Dart_Handle set_executable_name = |
| + Dart_SetField(runtime_options_class, |
| + executable_name_name, |
| + dart_executable); |
| + if (Dart_IsError(set_executable_name)) { |
| + return set_executable_name; |
| + } |
| Dart_Handle script_name_name = Dart_NewString("_nativeScript"); |
| if (Dart_IsError(script_name_name)) { |
| return script_name_name; |
| @@ -569,6 +589,7 @@ static int ErrorExit(const char* format, ...) { |
| int main(int argc, char** argv) { |
| + char* executable_name; |
| char* script_name; |
| CommandLineOptions vm_options(argc); |
| CommandLineOptions dart_options(argc); |
| @@ -584,6 +605,7 @@ int main(int argc, char** argv) { |
| if (ParseArguments(argc, |
| argv, |
| &vm_options, |
| + &executable_name, |
| &script_name, |
| &dart_options) < 0) { |
| PrintUsage(); |
| @@ -627,7 +649,7 @@ int main(int argc, char** argv) { |
| // Create a dart options object that can be accessed from dart code. |
| Dart_Handle options_result = |
| - SetupRuntimeOptions(&dart_options, original_script_name); |
| + SetupRuntimeOptions(&dart_options, executable_name, original_script_name); |
| if (Dart_IsError(options_result)) { |
| return ErrorExit("%s\n", Dart_GetError(options_result)); |
| } |