| 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 "bin/dartutils.h" | 5 #include "bin/dartutils.h" |
| 6 #include "bin/io_buffer.h" | 6 #include "bin/io_buffer.h" |
| 7 #include "bin/process.h" | 7 #include "bin/process.h" |
| 8 #include "bin/socket.h" | 8 #include "bin/socket.h" |
| 9 | 9 |
| 10 #include "include/dart_api.h" | 10 #include "include/dart_api.h" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 Dart_SetReturnValue(args, Dart_NewBoolean(false)); | 115 Dart_SetReturnValue(args, Dart_NewBoolean(false)); |
| 116 Dart_ExitScope(); | 116 Dart_ExitScope(); |
| 117 return; | 117 return; |
| 118 } | 118 } |
| 119 } | 119 } |
| 120 Dart_Handle in_handle = Dart_GetNativeArgument(args, 5); | 120 Dart_Handle in_handle = Dart_GetNativeArgument(args, 5); |
| 121 Dart_Handle out_handle = Dart_GetNativeArgument(args, 6); | 121 Dart_Handle out_handle = Dart_GetNativeArgument(args, 6); |
| 122 Dart_Handle err_handle = Dart_GetNativeArgument(args, 7); | 122 Dart_Handle err_handle = Dart_GetNativeArgument(args, 7); |
| 123 Dart_Handle exit_handle = Dart_GetNativeArgument(args, 8); | 123 Dart_Handle exit_handle = Dart_GetNativeArgument(args, 8); |
| 124 intptr_t pid = -1; | 124 intptr_t pid = -1; |
| 125 static const int kMaxChildOsErrorMessageLength = 256; | 125 char* os_error_message = NULL; |
| 126 char os_error_message[kMaxChildOsErrorMessageLength]; | |
| 127 | 126 |
| 128 int error_code = Process::Start(path, | 127 int error_code = Process::Start(path, |
| 129 string_args, | 128 string_args, |
| 130 args_length, | 129 args_length, |
| 131 working_directory, | 130 working_directory, |
| 132 string_environment, | 131 string_environment, |
| 133 environment_length, | 132 environment_length, |
| 134 &in, | 133 &in, |
| 135 &out, | 134 &out, |
| 136 &err, | 135 &err, |
| 137 &pid, | 136 &pid, |
| 138 &exit_event, | 137 &exit_event, |
| 139 os_error_message, kMaxChildOsErrorMessageLength); | 138 &os_error_message); |
| 140 if (error_code == 0) { | 139 if (error_code == 0) { |
| 141 Socket::SetSocketIdNativeField(in_handle, in); | 140 Socket::SetSocketIdNativeField(in_handle, in); |
| 142 Socket::SetSocketIdNativeField(out_handle, out); | 141 Socket::SetSocketIdNativeField(out_handle, out); |
| 143 Socket::SetSocketIdNativeField(err_handle, err); | 142 Socket::SetSocketIdNativeField(err_handle, err); |
| 144 Socket::SetSocketIdNativeField(exit_handle, exit_event); | 143 Socket::SetSocketIdNativeField(exit_handle, exit_event); |
| 145 Process::SetProcessIdNativeField(process, pid); | 144 Process::SetProcessIdNativeField(process, pid); |
| 146 } else { | 145 } else { |
| 147 DartUtils::SetIntegerField( | 146 DartUtils::SetIntegerField( |
| 148 status_handle, "_errorCode", error_code); | 147 status_handle, "_errorCode", error_code); |
| 149 DartUtils::SetStringField( | 148 DartUtils::SetStringField( |
| 150 status_handle, "_errorMessage", os_error_message); | 149 status_handle, "_errorMessage", os_error_message); |
| 151 } | 150 } |
| 152 delete[] string_args; | 151 delete[] string_args; |
| 153 delete[] string_environment; | 152 delete[] string_environment; |
| 153 free(os_error_message); |
| 154 Dart_SetReturnValue(args, Dart_NewBoolean(error_code == 0)); | 154 Dart_SetReturnValue(args, Dart_NewBoolean(error_code == 0)); |
| 155 Dart_ExitScope(); | 155 Dart_ExitScope(); |
| 156 } | 156 } |
| 157 | 157 |
| 158 | 158 |
| 159 void FUNCTION_NAME(Process_Kill)(Dart_NativeArguments args) { | 159 void FUNCTION_NAME(Process_Kill)(Dart_NativeArguments args) { |
| 160 Dart_EnterScope(); | 160 Dart_EnterScope(); |
| 161 Dart_Handle process = Dart_GetNativeArgument(args, 1); | 161 Dart_Handle process = Dart_GetNativeArgument(args, 1); |
| 162 intptr_t pid = -1; | 162 intptr_t pid = -1; |
| 163 Process::GetProcessIdNativeField(process, &pid); | 163 Process::GetProcessIdNativeField(process, &pid); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 187 Dart_Handle result = Dart_ListLength(bytes, &bytes_length); | 187 Dart_Handle result = Dart_ListLength(bytes, &bytes_length); |
| 188 if (Dart_IsError(result)) Dart_PropagateError(result); | 188 if (Dart_IsError(result)) Dart_PropagateError(result); |
| 189 uint8_t* buffer = new uint8_t[bytes_length + 1]; | 189 uint8_t* buffer = new uint8_t[bytes_length + 1]; |
| 190 result = Dart_ListGetAsBytes(bytes, 0, buffer, bytes_length); | 190 result = Dart_ListGetAsBytes(bytes, 0, buffer, bytes_length); |
| 191 buffer[bytes_length] = '\0'; | 191 buffer[bytes_length] = '\0'; |
| 192 if (Dart_IsError(result)) { | 192 if (Dart_IsError(result)) { |
| 193 delete[] buffer; | 193 delete[] buffer; |
| 194 Dart_PropagateError(result); | 194 Dart_PropagateError(result); |
| 195 } | 195 } |
| 196 char* str = | 196 char* str = |
| 197 StringUtils::SystemStringToUtf8(reinterpret_cast<char*>(buffer)); | 197 StringUtils::ConsoleStringToUtf8(reinterpret_cast<char*>(buffer)); |
| 198 Dart_SetReturnValue(args, DartUtils::NewString(str)); | 198 Dart_SetReturnValue(args, DartUtils::NewString(str)); |
| 199 if (str != reinterpret_cast<char*>(buffer)) free(str); | 199 if (str != reinterpret_cast<char*>(buffer)) free(str); |
| 200 Dart_ExitScope(); | 200 Dart_ExitScope(); |
| 201 } | 201 } |
| 202 | 202 |
| 203 | 203 |
| 204 void FUNCTION_NAME(StringToSystemEncoding)(Dart_NativeArguments args) { | 204 void FUNCTION_NAME(StringToSystemEncoding)(Dart_NativeArguments args) { |
| 205 Dart_EnterScope(); | 205 Dart_EnterScope(); |
| 206 Dart_Handle str = Dart_GetNativeArgument(args, 0); | 206 Dart_Handle str = Dart_GetNativeArgument(args, 0); |
| 207 const char* utf8 = DartUtils::GetStringValue(str); | 207 const char* utf8 = DartUtils::GetStringValue(str); |
| 208 const char* system_string = StringUtils::Utf8ToSystemString(utf8); | 208 const char* system_string = StringUtils::Utf8ToConsoleString(utf8); |
| 209 int external_length = strlen(system_string); | 209 int external_length = strlen(system_string); |
| 210 uint8_t* buffer = NULL; | 210 uint8_t* buffer = NULL; |
| 211 Dart_Handle external_array = IOBuffer::Allocate(external_length, &buffer); | 211 Dart_Handle external_array = IOBuffer::Allocate(external_length, &buffer); |
| 212 memmove(buffer, system_string, external_length); | 212 memmove(buffer, system_string, external_length); |
| 213 if (utf8 != system_string) free(const_cast<char*>(system_string)); | 213 if (utf8 != system_string) free(const_cast<char*>(system_string)); |
| 214 Dart_SetReturnValue(args, external_array); | 214 Dart_SetReturnValue(args, external_array); |
| 215 Dart_ExitScope(); | 215 Dart_ExitScope(); |
| 216 } | 216 } |
| OLD | NEW |