89ef11e004
- Modify bin.gypi to ensure that the io library and patch files are read directly from the sources. Remove the source buffer generation step in the gypi files for all the io library and patch files. - Restructure the code a bit to eliminate some code duplication. - Delete runtime/tools/concat_library.py R=ager@google.com, sgjesse@google.com Review URL: https://codereview.chromium.org//14752008 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22514 260f80e4-7a28-3924-810f-c04153c831b5
84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
#include "bin/platform.h"
|
|
|
|
#include "include/dart_api.h"
|
|
|
|
#include "bin/file.h"
|
|
#include "bin/utils.h"
|
|
|
|
namespace dart {
|
|
namespace bin {
|
|
|
|
void FUNCTION_NAME(Platform_NumberOfProcessors)(Dart_NativeArguments args) {
|
|
Dart_EnterScope();
|
|
Dart_SetReturnValue(args, Dart_NewInteger(Platform::NumberOfProcessors()));
|
|
Dart_ExitScope();
|
|
}
|
|
|
|
|
|
void FUNCTION_NAME(Platform_OperatingSystem)(Dart_NativeArguments args) {
|
|
Dart_EnterScope();
|
|
Dart_SetReturnValue(args, DartUtils::NewString(Platform::OperatingSystem()));
|
|
Dart_ExitScope();
|
|
}
|
|
|
|
|
|
void FUNCTION_NAME(Platform_PathSeparator)(Dart_NativeArguments args) {
|
|
Dart_EnterScope();
|
|
Dart_SetReturnValue(args, DartUtils::NewString(File::PathSeparator()));
|
|
Dart_ExitScope();
|
|
}
|
|
|
|
|
|
void FUNCTION_NAME(Platform_LocalHostname)(Dart_NativeArguments args) {
|
|
Dart_EnterScope();
|
|
const intptr_t HOSTNAME_LENGTH = 256;
|
|
char hostname[HOSTNAME_LENGTH];
|
|
if (Platform::LocalHostname(hostname, HOSTNAME_LENGTH)) {
|
|
Dart_SetReturnValue(args, DartUtils::NewString(hostname));
|
|
} else {
|
|
Dart_SetReturnValue(args, DartUtils::NewDartOSError());
|
|
}
|
|
Dart_ExitScope();
|
|
}
|
|
|
|
|
|
void FUNCTION_NAME(Platform_Environment)(Dart_NativeArguments args) {
|
|
Dart_EnterScope();
|
|
intptr_t count = 0;
|
|
char** env = Platform::Environment(&count);
|
|
if (env == NULL) {
|
|
OSError error(-1,
|
|
"Failed to retrieve environment variables.",
|
|
OSError::kUnknown);
|
|
Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error));
|
|
} else {
|
|
Dart_Handle result = Dart_NewList(count);
|
|
if (Dart_IsError(result)) {
|
|
Platform::FreeEnvironment(env, count);
|
|
Dart_PropagateError(result);
|
|
}
|
|
for (intptr_t i = 0; i < count; i++) {
|
|
Dart_Handle str = DartUtils::NewString(env[i]);
|
|
if (Dart_IsError(str)) {
|
|
Platform::FreeEnvironment(env, count);
|
|
Dart_PropagateError(str);
|
|
}
|
|
Dart_Handle error = Dart_ListSetAt(result, i, str);
|
|
if (Dart_IsError(error)) {
|
|
Platform::FreeEnvironment(env, count);
|
|
Dart_PropagateError(error);
|
|
}
|
|
}
|
|
Platform::FreeEnvironment(env, count);
|
|
Dart_SetReturnValue(args, result);
|
|
}
|
|
Dart_ExitScope();
|
|
}
|
|
|
|
} // namespace bin
|
|
} // namespace dart
|