1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "nacl_io/passthroughfs/passthrough_fs.h" 6 7#include <errno.h> 8 9#include "nacl_io/kernel_handle.h" 10#include "nacl_io/kernel_wrap_real.h" 11#include "nacl_io/passthroughfs/real_node.h" 12 13namespace nacl_io { 14 15PassthroughFs::PassthroughFs() { 16} 17 18Error PassthroughFs::Init(const FsInitArgs& args) { 19 return Filesystem::Init(args); 20} 21 22void PassthroughFs::Destroy() { 23} 24 25Error PassthroughFs::OpenWithMode(const Path& path, int open_flags, 26 mode_t mode, ScopedNode* out_node) { 27 out_node->reset(NULL); 28 int real_fd; 29 int error = _real_open(path.Join().c_str(), open_flags, mode, &real_fd); 30 if (error) 31 return error; 32 33 out_node->reset(new RealNode(this, real_fd, true)); 34 return 0; 35} 36 37Error PassthroughFs::OpenResource(const Path& path, ScopedNode* out_node) { 38 int real_fd; 39 out_node->reset(NULL); 40 int error = _real_open_resource(path.Join().c_str(), &real_fd); 41 if (error) 42 return error; 43 44 out_node->reset(new RealNode(this, real_fd)); 45 return 0; 46} 47 48Error PassthroughFs::Unlink(const Path& path) { 49 // Not implemented by NaCl. 50 return ENOSYS; 51} 52 53Error PassthroughFs::Mkdir(const Path& path, int perm) { 54 return _real_mkdir(path.Join().c_str(), perm); 55} 56 57Error PassthroughFs::Rmdir(const Path& path) { 58 return _real_rmdir(path.Join().c_str()); 59} 60 61Error PassthroughFs::Remove(const Path& path) { 62 // Not implemented by NaCl. 63 return ENOSYS; 64} 65 66Error PassthroughFs::Rename(const Path& path, const Path& newpath) { 67 // Not implemented by NaCl. 68 return ENOSYS; 69} 70 71} // namespace nacl_io 72