diff options
Diffstat (limited to 'cli/ops/fs.rs')
-rw-r--r-- | cli/ops/fs.rs | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/cli/ops/fs.rs b/cli/ops/fs.rs index 9d5be3077..ce7045e21 100644 --- a/cli/ops/fs.rs +++ b/cli/ops/fs.rs @@ -3,7 +3,6 @@ use super::dispatch_json::{blocking_json, Deserialize, JsonOp, Value}; use super::io::std_file_resource; use super::io::{FileMetadata, StreamResource, StreamResourceHolder}; -use crate::fs::resolve_from_cwd; use crate::op_error::OpError; use crate::ops::dispatch_json::JsonResult; use crate::state::State; @@ -75,7 +74,7 @@ fn op_open( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: OpenArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = Path::new(&args.path).to_path_buf(); let resource_table = isolate.resource_table.clone(); let mut open_options = std::fs::OpenOptions::new(); @@ -274,7 +273,7 @@ fn op_mkdir( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: MkdirArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = Path::new(&args.path).to_path_buf(); let mode = args.mode.unwrap_or(0o777) & 0o777; state.check_write(&path)?; @@ -308,7 +307,7 @@ fn op_chmod( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: ChmodArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = Path::new(&args.path).to_path_buf(); let mode = args.mode & 0o777; state.check_write(&path)?; @@ -348,7 +347,7 @@ fn op_chown( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: ChownArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = Path::new(&args.path).to_path_buf(); state.check_write(&path)?; @@ -387,7 +386,7 @@ fn op_remove( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: RemoveArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = PathBuf::from(&args.path); let recursive = args.recursive; state.check_write(&path)?; @@ -438,8 +437,8 @@ fn op_copy_file( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: CopyFileArgs = serde_json::from_value(args)?; - let from = resolve_from_cwd(Path::new(&args.from))?; - let to = resolve_from_cwd(Path::new(&args.to))?; + let from = PathBuf::from(&args.from); + let to = PathBuf::from(&args.to); state.check_read(&from)?; state.check_write(&to)?; @@ -532,7 +531,7 @@ fn op_stat( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: StatArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = PathBuf::from(&args.path); let lstat = args.lstat; state.check_read(&path)?; @@ -562,9 +561,12 @@ fn op_realpath( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: RealpathArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = PathBuf::from(&args.path); state.check_read(&path)?; + if path.is_relative() { + state.check_read_blind(¤t_dir()?, "CWD")?; + } let is_sync = args.promise_id.is_none(); blocking_json(is_sync, move || { @@ -594,7 +596,7 @@ fn op_read_dir( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: ReadDirArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = PathBuf::from(&args.path); state.check_read(&path)?; @@ -637,8 +639,8 @@ fn op_rename( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: RenameArgs = serde_json::from_value(args)?; - let oldpath = resolve_from_cwd(Path::new(&args.oldpath))?; - let newpath = resolve_from_cwd(Path::new(&args.newpath))?; + let oldpath = PathBuf::from(&args.oldpath); + let newpath = PathBuf::from(&args.newpath); state.check_read(&oldpath)?; state.check_write(&oldpath)?; @@ -667,8 +669,8 @@ fn op_link( ) -> Result<JsonOp, OpError> { state.check_unstable("Deno.link"); let args: LinkArgs = serde_json::from_value(args)?; - let oldpath = resolve_from_cwd(Path::new(&args.oldpath))?; - let newpath = resolve_from_cwd(Path::new(&args.newpath))?; + let oldpath = PathBuf::from(&args.oldpath); + let newpath = PathBuf::from(&args.newpath); state.check_read(&oldpath)?; state.check_write(&newpath)?; @@ -705,8 +707,8 @@ fn op_symlink( ) -> Result<JsonOp, OpError> { state.check_unstable("Deno.symlink"); let args: SymlinkArgs = serde_json::from_value(args)?; - let oldpath = resolve_from_cwd(Path::new(&args.oldpath))?; - let newpath = resolve_from_cwd(Path::new(&args.newpath))?; + let oldpath = PathBuf::from(&args.oldpath); + let newpath = PathBuf::from(&args.newpath); state.check_write(&newpath)?; @@ -764,7 +766,7 @@ fn op_read_link( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: ReadLinkArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = PathBuf::from(&args.path); state.check_read(&path)?; @@ -791,7 +793,7 @@ fn op_truncate( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: TruncateArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = PathBuf::from(&args.path); let len = args.len; state.check_write(&path)?; @@ -866,7 +868,7 @@ fn op_make_temp_dir( ) -> Result<JsonOp, OpError> { let args: MakeTempArgs = serde_json::from_value(args)?; - let dir = args.dir.map(|s| resolve_from_cwd(Path::new(&s)).unwrap()); + let dir = args.dir.map(|s| PathBuf::from(&s)); let prefix = args.prefix.map(String::from); let suffix = args.suffix.map(String::from); @@ -897,7 +899,7 @@ fn op_make_temp_file( ) -> Result<JsonOp, OpError> { let args: MakeTempArgs = serde_json::from_value(args)?; - let dir = args.dir.map(|s| resolve_from_cwd(Path::new(&s)).unwrap()); + let dir = args.dir.map(|s| PathBuf::from(&s)); let prefix = args.prefix.map(String::from); let suffix = args.suffix.map(String::from); @@ -938,7 +940,7 @@ fn op_utime( state.check_unstable("Deno.utime"); let args: UtimeArgs = serde_json::from_value(args)?; - let path = resolve_from_cwd(Path::new(&args.path))?; + let path = PathBuf::from(&args.path); state.check_write(&path)?; @@ -956,7 +958,7 @@ fn op_cwd( _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let path = current_dir()?; - state.check_read(&path)?; + state.check_read_blind(&path, "CWD")?; let path_str = into_string(path.into_os_string())?; Ok(JsonOp::Sync(json!(path_str))) } |