| Index: native_client_sdk/src/libraries/nacl_io/html5fs/html5_fs_node.cc
|
| diff --git a/native_client_sdk/src/libraries/nacl_io/html5fs/html5_fs_node.cc b/native_client_sdk/src/libraries/nacl_io/html5fs/html5_fs_node.cc
|
| index 3fc2f0f8531da34a58a23108f0e292f056d1b21b..981f69e8f3655d66f49b8bc879048cdeb8430bbc 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io/html5fs/html5_fs_node.cc
|
| +++ b/native_client_sdk/src/libraries/nacl_io/html5fs/html5_fs_node.cc
|
| @@ -76,8 +76,8 @@ Error Html5FsNode::FSync() {
|
| if (IsaDir())
|
| return 0;
|
|
|
| - int32_t result = filesystem_->ppapi()->GetFileIoInterface()->Flush(
|
| - fileio_resource_, PP_BlockUntilComplete());
|
| + int32_t result =
|
| + file_io_iface_->Flush(fileio_resource_, PP_BlockUntilComplete());
|
| if (result != PP_OK)
|
| return PPErrorToErrno(result);
|
| return 0;
|
| @@ -100,17 +100,15 @@ Error Html5FsNode::GetDents(size_t offs,
|
|
|
| OutputBuffer output_buf = {NULL, 0};
|
| PP_ArrayOutput output = {&GetOutputBuffer, &output_buf};
|
| - int32_t result =
|
| - filesystem_->ppapi()->GetFileRefInterface()->ReadDirectoryEntries(
|
| - fileref_resource_, output, PP_BlockUntilComplete());
|
| + int32_t result = file_ref_iface_->ReadDirectoryEntries(
|
| + fileref_resource_, output, PP_BlockUntilComplete());
|
| if (result != PP_OK)
|
| return PPErrorToErrno(result);
|
|
|
| PP_DirectoryEntry* entries = static_cast<PP_DirectoryEntry*>(output_buf.data);
|
|
|
| for (int i = 0; i < output_buf.element_count; ++i) {
|
| - PP_Var file_name_var = filesystem_->ppapi()->GetFileRefInterface()->GetName(
|
| - entries[i].file_ref);
|
| + PP_Var file_name_var = file_ref_iface_->GetName(entries[i].file_ref);
|
|
|
| // Release the file reference.
|
| filesystem_->ppapi()->ReleaseResource(entries[i].file_ref);
|
| @@ -119,8 +117,8 @@ Error Html5FsNode::GetDents(size_t offs,
|
| continue;
|
|
|
| uint32_t file_name_length;
|
| - const char* file_name = filesystem_->ppapi()->GetVarInterface()->VarToUtf8(
|
| - file_name_var, &file_name_length);
|
| + const char* file_name =
|
| + var_iface_->VarToUtf8(file_name_var, &file_name_length);
|
|
|
| if (file_name) {
|
| file_name_length =
|
| @@ -131,7 +129,7 @@ Error Html5FsNode::GetDents(size_t offs,
|
| helper.AddDirent(1, file_name, file_name_length);
|
| }
|
|
|
| - filesystem_->ppapi()->GetVarInterface()->Release(file_name_var);
|
| + var_iface_->Release(file_name_var);
|
| }
|
|
|
| // Release the output buffer.
|
| @@ -144,8 +142,8 @@ Error Html5FsNode::GetStat(struct stat* stat) {
|
| AUTO_LOCK(node_lock_);
|
|
|
| PP_FileInfo info;
|
| - int32_t result = filesystem_->ppapi()->GetFileRefInterface()->Query(
|
| - fileref_resource_, &info, PP_BlockUntilComplete());
|
| + int32_t result =
|
| + file_ref_iface_->Query(fileref_resource_, &info, PP_BlockUntilComplete());
|
| if (result != PP_OK)
|
| return PPErrorToErrno(result);
|
|
|
| @@ -181,12 +179,11 @@ Error Html5FsNode::Read(const HandleAttr& attr,
|
| if (IsaDir())
|
| return EISDIR;
|
|
|
| - int32_t result = filesystem_->ppapi()->GetFileIoInterface()->Read(
|
| - fileio_resource_,
|
| - attr.offs,
|
| - static_cast<char*>(buf),
|
| - static_cast<int32_t>(count),
|
| - PP_BlockUntilComplete());
|
| + int32_t result = file_io_iface_->Read(fileio_resource_,
|
| + attr.offs,
|
| + static_cast<char*>(buf),
|
| + static_cast<int32_t>(count),
|
| + PP_BlockUntilComplete());
|
| if (result < 0)
|
| return PPErrorToErrno(result);
|
|
|
| @@ -198,7 +195,7 @@ Error Html5FsNode::FTruncate(off_t size) {
|
| if (IsaDir())
|
| return EISDIR;
|
|
|
| - int32_t result = filesystem_->ppapi()->GetFileIoInterface()->SetLength(
|
| + int32_t result = file_io_iface_->SetLength(
|
| fileio_resource_, size, PP_BlockUntilComplete());
|
| if (result != PP_OK)
|
| return PPErrorToErrno(result);
|
| @@ -214,12 +211,11 @@ Error Html5FsNode::Write(const HandleAttr& attr,
|
| if (IsaDir())
|
| return EISDIR;
|
|
|
| - int32_t result = filesystem_->ppapi()->GetFileIoInterface()->Write(
|
| - fileio_resource_,
|
| - attr.offs,
|
| - static_cast<const char*>(buf),
|
| - static_cast<int32_t>(count),
|
| - PP_BlockUntilComplete());
|
| + int32_t result = file_io_iface_->Write(fileio_resource_,
|
| + attr.offs,
|
| + static_cast<const char*>(buf),
|
| + static_cast<int32_t>(count),
|
| + PP_BlockUntilComplete());
|
| if (result < 0)
|
| return PPErrorToErrno(result);
|
|
|
| @@ -240,8 +236,8 @@ Error Html5FsNode::GetSize(off_t* out_size) {
|
| AUTO_LOCK(node_lock_);
|
|
|
| PP_FileInfo info;
|
| - int32_t result = filesystem_->ppapi()->GetFileIoInterface()->Query(
|
| - fileio_resource_, &info, PP_BlockUntilComplete());
|
| + int32_t result =
|
| + file_io_iface_->Query(fileio_resource_, &info, PP_BlockUntilComplete());
|
| if (result != PP_OK)
|
| return PPErrorToErrno(result);
|
|
|
| @@ -260,23 +256,38 @@ Error Html5FsNode::Init(int open_flags) {
|
| if (error)
|
| return error;
|
|
|
| + file_io_iface_ = filesystem_->ppapi()->GetFileIoInterface();
|
| + file_ref_iface_ = filesystem_->ppapi()->GetFileRefInterface();
|
| + var_iface_ = filesystem_->ppapi()->GetVarInterface();
|
| +
|
| + if (!(file_io_iface_ && file_ref_iface_ && var_iface_)) {
|
| + LOG_ERROR("Got NULL interface(s): %s%s%s",
|
| + file_ref_iface_ ? "" : "FileRef",
|
| + file_io_iface_ ? "" : "FileIo ",
|
| + var_iface_ ? "" : "Var ");
|
| + return EIO;
|
| + }
|
| +
|
| // First query the FileRef to see if it is a file or directory.
|
| PP_FileInfo file_info;
|
| - int32_t query_result = filesystem_->ppapi()->GetFileRefInterface()->Query(
|
| + int32_t query_result = file_ref_iface_->Query(
|
| fileref_resource_, &file_info, PP_BlockUntilComplete());
|
| // If this is a directory, do not get a FileIO.
|
| if (query_result == PP_OK && file_info.type == PP_FILETYPE_DIRECTORY)
|
| return 0;
|
|
|
| - FileIoInterface* file_io = filesystem_->ppapi()->GetFileIoInterface();
|
| - fileio_resource_ = file_io->Create(filesystem_->ppapi()->GetInstance());
|
| - if (!fileio_resource_)
|
| - return ENOSYS;
|
| + fileio_resource_ =
|
| + file_io_iface_->Create(filesystem_->ppapi()->GetInstance());
|
| + if (!fileio_resource_) {
|
| + LOG_ERROR("Couldn't create FileIo resource.");
|
| + return EIO;
|
| + }
|
|
|
| - int32_t open_result = file_io->Open(fileio_resource_,
|
| - fileref_resource_,
|
| - OpenFlagsToPPAPIOpenFlags(open_flags),
|
| - PP_BlockUntilComplete());
|
| + int32_t open_result =
|
| + file_io_iface_->Open(fileio_resource_,
|
| + fileref_resource_,
|
| + OpenFlagsToPPAPIOpenFlags(open_flags),
|
| + PP_BlockUntilComplete());
|
| if (open_result != PP_OK)
|
| return PPErrorToErrno(open_result);
|
| return 0;
|
| @@ -286,7 +297,7 @@ void Html5FsNode::Destroy() {
|
| FSync();
|
|
|
| if (fileio_resource_) {
|
| - filesystem_->ppapi()->GetFileIoInterface()->Close(fileio_resource_);
|
| + file_io_iface_->Close(fileio_resource_);
|
| filesystem_->ppapi()->ReleaseResource(fileio_resource_);
|
| }
|
|
|
|
|