summaryrefslogtreecommitdiff
path: root/cli/ops/fs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops/fs.rs')
-rw-r--r--cli/ops/fs.rs48
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(&current_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)))
}