blob: 50aad309774609244917df09aea423fa23139285 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <lib/vfs/cpp/directory.h>
#include <lib/vfs/cpp/internal/directory_connection.h>
namespace vfs {
Directory::Directory() = default;
Directory::~Directory() = default;
void Directory::Describe(fuchsia::io::NodeInfo* out_info) {
out_info->set_directory(fuchsia::io::DirectoryObject());
}
zx_status_t Directory::Lookup(const std::string& name, Node** out_node) {
return ZX_ERR_NOT_FOUND;
}
zx_status_t Directory::CreateConnection(
uint32_t flags, std::unique_ptr<Connection>* connection) {
*connection = std::make_unique<internal::DirectoryConnection>(flags, this);
return ZX_OK;
}
uint32_t Directory::GetAdditionalAllowedFlags() const {
return fuchsia::io::OPEN_RIGHT_READABLE | fuchsia::io::OPEN_RIGHT_WRITABLE |
fuchsia::io::OPEN_FLAG_DIRECTORY;
}
uint32_t Directory::GetProhibitiveFlags() const {
return fuchsia::io::OPEN_FLAG_CREATE |
fuchsia::io::OPEN_FLAG_CREATE_IF_ABSENT |
fuchsia::io::OPEN_FLAG_TRUNCATE | fuchsia::io::OPEN_FLAG_APPEND;
}
bool Directory::IsDirectory() const { return true; }
} // namespace vfs