| Index: runtime/bin/directory_fuchsia.cc
|
| diff --git a/runtime/bin/directory_fuchsia.cc b/runtime/bin/directory_fuchsia.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a1387b07fc75eba821ca0eda88b270c31d633f77
|
| --- /dev/null
|
| +++ b/runtime/bin/directory_fuchsia.cc
|
| @@ -0,0 +1,154 @@
|
| +// Copyright (c) 2016, 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 "platform/globals.h"
|
| +#if defined(TARGET_OS_FUCHSIA)
|
| +
|
| +#include "bin/directory.h"
|
| +
|
| +#include <errno.h> // NOLINT
|
| +#include <stdlib.h> // NOLINT
|
| +#include <string.h> // NOLINT
|
| +#include <unistd.h> // NOLINT
|
| +
|
| +namespace dart {
|
| +namespace bin {
|
| +
|
| +PathBuffer::PathBuffer() : length_(0) {
|
| + data_ = calloc(PATH_MAX + 1, sizeof(char)); // NOLINT
|
| +}
|
| +
|
| +
|
| +PathBuffer::~PathBuffer() {
|
| + free(data_);
|
| +}
|
| +
|
| +
|
| +bool PathBuffer::AddW(const wchar_t* name) {
|
| + UNREACHABLE();
|
| + return false;
|
| +}
|
| +
|
| +
|
| +char* PathBuffer::AsString() const {
|
| + return reinterpret_cast<char*>(data_);
|
| +}
|
| +
|
| +
|
| +wchar_t* PathBuffer::AsStringW() const {
|
| + UNREACHABLE();
|
| + return NULL;
|
| +}
|
| +
|
| +
|
| +const char* PathBuffer::AsScopedString() const {
|
| + return DartUtils::ScopedCopyCString(AsString());
|
| +}
|
| +
|
| +
|
| +bool PathBuffer::Add(const char* name) {
|
| + const intptr_t name_length = strnlen(name, PATH_MAX + 1);
|
| + if (name_length == 0) {
|
| + errno = EINVAL;
|
| + return false;
|
| + }
|
| + char* data = AsString();
|
| + int written = snprintf(data + length_,
|
| + PATH_MAX - length_,
|
| + "%s",
|
| + name);
|
| + data[PATH_MAX] = '\0';
|
| + if ((written <= (PATH_MAX - length_)) &&
|
| + (written > 0) &&
|
| + (static_cast<size_t>(written) == strnlen(name, PATH_MAX + 1))) {
|
| + length_ += written;
|
| + return true;
|
| + } else {
|
| + errno = ENAMETOOLONG;
|
| + return false;
|
| + }
|
| +}
|
| +
|
| +
|
| +void PathBuffer::Reset(intptr_t new_length) {
|
| + length_ = new_length;
|
| + AsString()[length_] = '\0';
|
| +}
|
| +
|
| +
|
| +ListType DirectoryListingEntry::Next(DirectoryListing* listing) {
|
| + UNIMPLEMENTED();
|
| + return kListError;
|
| +}
|
| +
|
| +
|
| +DirectoryListingEntry::~DirectoryListingEntry() {
|
| + UNIMPLEMENTED();
|
| +}
|
| +
|
| +
|
| +void DirectoryListingEntry::ResetLink() {
|
| + UNIMPLEMENTED();
|
| +}
|
| +
|
| +
|
| +Directory::ExistsResult Directory::Exists(const char* dir_name) {
|
| + UNIMPLEMENTED();
|
| + return UNKNOWN;
|
| +}
|
| +
|
| +
|
| +char* Directory::CurrentNoScope() {
|
| + return getcwd(NULL, 0);
|
| +}
|
| +
|
| +
|
| +const char* Directory::Current() {
|
| + char buffer[PATH_MAX];
|
| + if (getcwd(buffer, PATH_MAX) == NULL) {
|
| + return NULL;
|
| + }
|
| + return DartUtils::ScopedCopyCString(buffer);
|
| +}
|
| +
|
| +
|
| +bool Directory::SetCurrent(const char* path) {
|
| + UNIMPLEMENTED();
|
| + return false;
|
| +}
|
| +
|
| +
|
| +bool Directory::Create(const char* dir_name) {
|
| + UNIMPLEMENTED();
|
| + return false;
|
| +}
|
| +
|
| +
|
| +const char* Directory::SystemTemp() {
|
| + UNIMPLEMENTED();
|
| + return NULL;
|
| +}
|
| +
|
| +
|
| +const char* Directory::CreateTemp(const char* prefix) {
|
| + UNIMPLEMENTED();
|
| + return NULL;
|
| +}
|
| +
|
| +
|
| +bool Directory::Delete(const char* dir_name, bool recursive) {
|
| + UNIMPLEMENTED();
|
| + return false;
|
| +}
|
| +
|
| +
|
| +bool Directory::Rename(const char* path, const char* new_path) {
|
| + UNIMPLEMENTED();
|
| + return false;
|
| +}
|
| +
|
| +} // namespace bin
|
| +} // namespace dart
|
| +
|
| +#endif // defined(TARGET_OS_LINUX)
|
|
|