| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "nacl_io/fusefs/fuse_fs.h" | 5 #include "nacl_io/fusefs/fuse_fs.h" |
| 6 | 6 |
| 7 #include <errno.h> | 7 #include <errno.h> |
| 8 #include <fcntl.h> | 8 #include <fcntl.h> |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 | 10 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 *out_node = node; | 136 *out_node = node; |
| 137 return 0; | 137 return 0; |
| 138 } | 138 } |
| 139 | 139 |
| 140 Error FuseFs::Unlink(const Path& path) { | 140 Error FuseFs::Unlink(const Path& path) { |
| 141 if (!fuse_ops_->unlink) { | 141 if (!fuse_ops_->unlink) { |
| 142 LOG_TRACE("fuse_ops_->unlink is NULL."); | 142 LOG_TRACE("fuse_ops_->unlink is NULL."); |
| 143 return ENOSYS; | 143 return ENOSYS; |
| 144 } | 144 } |
| 145 | 145 |
| 146 int result = fuse_ops_->unlink(path.Join().c_str()); | 146 std::string path_str = path.Join(); |
| 147 int result = fuse_ops_->unlink(path_str.c_str()); |
| 147 if (result < 0) | 148 if (result < 0) |
| 148 return -result; | 149 return -result; |
| 149 | 150 |
| 150 return 0; | 151 return 0; |
| 151 } | 152 } |
| 152 | 153 |
| 153 Error FuseFs::Mkdir(const Path& path, int perm) { | 154 Error FuseFs::Mkdir(const Path& path, int perm) { |
| 154 if (!fuse_ops_->mkdir) { | 155 if (!fuse_ops_->mkdir) { |
| 155 LOG_TRACE("fuse_ops_->mkdir is NULL."); | 156 LOG_TRACE("fuse_ops_->mkdir is NULL."); |
| 156 return ENOSYS; | 157 return ENOSYS; |
| 157 } | 158 } |
| 158 | 159 |
| 159 int result = fuse_ops_->mkdir(path.Join().c_str(), perm); | 160 std::string path_str = path.Join(); |
| 161 int result = fuse_ops_->mkdir(path_str.c_str(), perm); |
| 160 if (result < 0) | 162 if (result < 0) |
| 161 return -result; | 163 return -result; |
| 162 | 164 |
| 163 return 0; | 165 return 0; |
| 164 } | 166 } |
| 165 | 167 |
| 166 Error FuseFs::Rmdir(const Path& path) { | 168 Error FuseFs::Rmdir(const Path& path) { |
| 167 if (!fuse_ops_->rmdir) { | 169 if (!fuse_ops_->rmdir) { |
| 168 LOG_TRACE("fuse_ops_->rmdir is NULL."); | 170 LOG_TRACE("fuse_ops_->rmdir is NULL."); |
| 169 return ENOSYS; | 171 return ENOSYS; |
| 170 } | 172 } |
| 171 | 173 |
| 172 int result = fuse_ops_->rmdir(path.Join().c_str()); | 174 std::string path_str = path.Join(); |
| 175 int result = fuse_ops_->rmdir(path_str.c_str()); |
| 173 if (result < 0) | 176 if (result < 0) |
| 174 return -result; | 177 return -result; |
| 175 | 178 |
| 176 return 0; | 179 return 0; |
| 177 } | 180 } |
| 178 | 181 |
| 179 Error FuseFs::Remove(const Path& path) { | 182 Error FuseFs::Remove(const Path& path) { |
| 180 ScopedNode node; | 183 ScopedNode node; |
| 181 Error error = Open(path, O_RDONLY, &node); | 184 Error error = Open(path, O_RDONLY, &node); |
| 182 if (error) | 185 if (error) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 195 return Unlink(path); | 198 return Unlink(path); |
| 196 } | 199 } |
| 197 } | 200 } |
| 198 | 201 |
| 199 Error FuseFs::Rename(const Path& path, const Path& newpath) { | 202 Error FuseFs::Rename(const Path& path, const Path& newpath) { |
| 200 if (!fuse_ops_->rename) { | 203 if (!fuse_ops_->rename) { |
| 201 LOG_TRACE("fuse_ops_->rename is NULL."); | 204 LOG_TRACE("fuse_ops_->rename is NULL."); |
| 202 return ENOSYS; | 205 return ENOSYS; |
| 203 } | 206 } |
| 204 | 207 |
| 205 int result = fuse_ops_->rename(path.Join().c_str(), newpath.Join().c_str()); | 208 std::string path_str = path.Join(); |
| 209 std::string newpath_str = newpath.Join(); |
| 210 int result = fuse_ops_->rename(path_str.c_str(), newpath_str.c_str()); |
| 206 if (result < 0) | 211 if (result < 0) |
| 207 return -result; | 212 return -result; |
| 208 | 213 |
| 209 return 0; | 214 return 0; |
| 210 } | 215 } |
| 211 | 216 |
| 212 FuseFsNode::FuseFsNode(Filesystem* filesystem, | 217 FuseFsNode::FuseFsNode(Filesystem* filesystem, |
| 213 struct fuse_operations* fuse_ops, | 218 struct fuse_operations* fuse_ops, |
| 214 struct fuse_file_info& info, | 219 struct fuse_file_info& info, |
| 215 const std::string& path) | 220 const std::string& path) |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 } else { | 495 } else { |
| 491 fill_info->getdents->AddDirent(ino, name, strlen(name)); | 496 fill_info->getdents->AddDirent(ino, name, strlen(name)); |
| 492 fill_info->num_bytes -= sizeof(dirent); | 497 fill_info->num_bytes -= sizeof(dirent); |
| 493 // According to the docs, we can never return 1 (buffer full) when the | 498 // According to the docs, we can never return 1 (buffer full) when the |
| 494 // offset is zero (the user is probably ignoring the result anyway). | 499 // offset is zero (the user is probably ignoring the result anyway). |
| 495 return 0; | 500 return 0; |
| 496 } | 501 } |
| 497 } | 502 } |
| 498 | 503 |
| 499 } // namespace nacl_io | 504 } // namespace nacl_io |
| OLD | NEW |