Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2071)

Unified Diff: native_client_sdk/src/libraries/nacl_io/passthroughfs/passthrough_fs.cc

Issue 414993002: [NaCl SDK] nacl_io: Remove duplication between passthroughfs and devfs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/libraries/nacl_io/passthroughfs/passthrough_fs.cc
diff --git a/native_client_sdk/src/libraries/nacl_io/passthroughfs/passthrough_fs.cc b/native_client_sdk/src/libraries/nacl_io/passthroughfs/passthrough_fs.cc
index 52c5f961f98f48bc52f51442084c629d7a8f1d6e..93dbf1867280c278cb6d629605bed4f8ec8591f2 100644
--- a/native_client_sdk/src/libraries/nacl_io/passthroughfs/passthrough_fs.cc
+++ b/native_client_sdk/src/libraries/nacl_io/passthroughfs/passthrough_fs.cc
@@ -8,120 +8,10 @@
#include "nacl_io/kernel_handle.h"
#include "nacl_io/kernel_wrap_real.h"
+#include "nacl_io/passthroughfs/real_node.h"
namespace nacl_io {
-class PassthroughFsNode : public Node {
- public:
- explicit PassthroughFsNode(Filesystem* filesystem, int real_fd)
- : Node(filesystem), real_fd_(real_fd) {}
-
- protected:
- virtual Error Init(int flags) { return 0; }
-
- virtual void Destroy() {
- if (real_fd_)
- _real_close(real_fd_);
- real_fd_ = 0;
- }
-
- public:
- // Normal read/write operations on a file
- virtual Error Read(const HandleAttr& attr,
- void* buf,
- size_t count,
- int* out_bytes) {
- *out_bytes = 0;
-
- int64_t new_offset;
- int err = _real_lseek(real_fd_, attr.offs, 0, &new_offset);
- if (err)
- return err;
-
- size_t nread;
- err = _real_read(real_fd_, buf, count, &nread);
- if (err)
- return err;
-
- *out_bytes = static_cast<int>(nread);
- return 0;
- }
-
- virtual Error Write(const HandleAttr& attr,
- const void* buf,
- size_t count,
- int* out_bytes) {
- *out_bytes = 0;
-
- int64_t new_offset;
- int err = _real_lseek(real_fd_, attr.offs, 0, &new_offset);
- if (err)
- return err;
-
- size_t nwrote;
- err = _real_write(real_fd_, buf, count, &nwrote);
- if (err)
- return err;
-
- *out_bytes = static_cast<int>(nwrote);
- return 0;
- }
-
- virtual Error FTruncate(off_t size) {
- // TODO(binji): what to do here?
- return ENOSYS;
- }
-
- virtual Error GetDents(size_t offs,
- struct dirent* pdir,
- size_t count,
- int* out_bytes) {
- size_t nread;
- int err = _real_getdents(real_fd_, pdir, count, &nread);
- if (err)
- return err;
- return nread;
- }
-
- virtual Error GetStat(struct stat* stat) {
- int err = _real_fstat(real_fd_, stat);
- if (err)
- return err;
- return 0;
- }
-
- virtual Error Isatty() {
-#ifdef __GLIBC__
- // isatty is not yet hooked up to the IRT interface under glibc.
- return ENOTTY;
-#else
- int result = 0;
- int err = _real_isatty(real_fd_, &result);
- if (err)
- return err;
- return 0;
-#endif
- }
-
- Error MMap(void* addr,
- size_t length,
- int prot,
- int flags,
- size_t offset,
- void** out_addr) {
- *out_addr = addr;
- int err = _real_mmap(out_addr, length, prot, flags, real_fd_, offset);
- if (err)
- return err;
- return 0;
- }
-
- private:
- friend class PassthroughFs;
-
- int real_fd_;
-};
-
PassthroughFs::PassthroughFs() {
}
@@ -144,7 +34,7 @@ Error PassthroughFs::Open(const Path& path, int mode, ScopedNode* out_node) {
if (error)
return error;
- out_node->reset(new PassthroughFsNode(this, real_fd));
+ out_node->reset(new RealNode(this, real_fd, true));
return 0;
}
@@ -155,7 +45,7 @@ Error PassthroughFs::OpenResource(const Path& path, ScopedNode* out_node) {
if (error)
return error;
- out_node->reset(new PassthroughFsNode(this, real_fd));
+ out_node->reset(new RealNode(this, real_fd));
return 0;
}

Powered by Google App Engine
This is Rietveld 408576698