diff options
Diffstat (limited to 'runtime/ops/fs.rs')
-rw-r--r-- | runtime/ops/fs.rs | 68 |
1 files changed, 16 insertions, 52 deletions
diff --git a/runtime/ops/fs.rs b/runtime/ops/fs.rs index 99b37916d..2bcd6cacc 100644 --- a/runtime/ops/fs.rs +++ b/runtime/ops/fs.rs @@ -4,7 +4,6 @@ use super::io::StdFileResource; use super::utils::into_string; use crate::fs_util::canonicalize_path; use crate::permissions::Permissions; -use deno_core::error::bad_resource_id; use deno_core::error::custom_error; use deno_core::error::type_error; use deno_core::error::AnyError; @@ -24,11 +23,16 @@ use serde::Serialize; use std::borrow::Cow; use std::cell::RefCell; use std::convert::From; -use std::env::{current_dir, set_current_dir, temp_dir}; +use std::env::current_dir; +use std::env::set_current_dir; +use std::env::temp_dir; use std::io; +use std::io::Error; +use std::io::Seek; +use std::io::SeekFrom; use std::io::Write; -use std::io::{Error, Seek, SeekFrom}; -use std::path::{Path, PathBuf}; +use std::path::Path; +use std::path::PathBuf; use std::rc::Rc; use std::time::SystemTime; use std::time::UNIX_EPOCH; @@ -339,12 +343,7 @@ async fn op_seek_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; tokio::task::spawn_blocking(move || { let mut std_file = std_file.lock().unwrap(); @@ -376,12 +375,7 @@ async fn op_fdatasync_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; tokio::task::spawn_blocking(move || { let std_file = std_file.lock().unwrap(); @@ -410,12 +404,7 @@ async fn op_fsync_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; tokio::task::spawn_blocking(move || { let std_file = std_file.lock().unwrap(); @@ -447,12 +436,7 @@ async fn op_fstat_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; let metadata = tokio::task::spawn_blocking(move || { let std_file = std_file.lock().unwrap(); @@ -499,12 +483,7 @@ async fn op_flock_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; tokio::task::spawn_blocking(move || -> Result<(), AnyError> { let std_file = std_file.lock().unwrap(); @@ -548,12 +527,7 @@ async fn op_funlock_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; tokio::task::spawn_blocking(move || -> Result<(), AnyError> { let std_file = std_file.lock().unwrap(); @@ -1636,12 +1610,7 @@ async fn op_ftruncate_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; tokio::task::spawn_blocking(move || { let std_file = std_file.lock().unwrap(); @@ -1938,12 +1907,7 @@ async fn op_futime_async( .resource_table .get::<StdFileResource>(rid)?; - if resource.fs_file.is_none() { - return Err(bad_resource_id()); - } - - let fs_file = resource.fs_file.as_ref().unwrap(); - let std_file = fs_file.0.as_ref().unwrap().clone(); + let std_file = resource.std_file()?; tokio::task::spawn_blocking(move || { let std_file = std_file.lock().unwrap(); filetime::set_file_handle_times(&std_file, Some(atime), Some(mtime))?; |