diff --git a/src/core.rs b/src/core.rs index ba0aabde..ff22c778 100644 --- a/src/core.rs +++ b/src/core.rs @@ -6,7 +6,7 @@ pub mod jobtable; use std::collections::HashMap; use std::os::fd::RawFd; -use std::{io, process, env, path}; +use std::{process, env, path}; use nix::{fcntl, unistd}; use nix::sys::{signal, wait}; use nix::sys::signal::{Signal, SigHandler}; @@ -187,26 +187,4 @@ impl ShellCore { self.set_subshell_vars(); self.job_table.clear(); } - - pub fn get_current_directory(&mut self) -> &Option { - if self.tcwd.is_none() { - match env::current_dir() { - Ok(path) => { - self.tcwd = Some(path); - }, - Err(err) => { - eprintln!("pwd: error retrieving current directory: {:?}", err); - } - } - } - &self.tcwd - } - - pub fn set_current_directory(&mut self, path: &path::PathBuf) -> Result<(), io::Error> { - let res = env::set_current_dir(path); - if res.is_ok() { - self.tcwd = Some(path.clone()); - } - res - } } diff --git a/src/core/builtins.rs b/src/core/builtins.rs index b5ee3bd7..3e08b9ad 100644 --- a/src/core/builtins.rs +++ b/src/core/builtins.rs @@ -7,6 +7,7 @@ mod pwd; mod utils; use crate::ShellCore; +use std::{io, env, path}; impl ShellCore { pub fn set_builtins(&mut self) { @@ -17,6 +18,28 @@ impl ShellCore { self.builtins.insert("pwd".to_string(), pwd::pwd); self.builtins.insert("true".to_string(), true_); } + + pub fn get_current_directory(&mut self) -> &Option { + if self.tcwd.is_none() { + match env::current_dir() { + Ok(path) => { + self.tcwd = Some(path); + }, + Err(err) => { + eprintln!("pwd: error retrieving current directory: {:?}", err); + } + } + } + &self.tcwd + } + + pub fn set_current_directory(&mut self, path: &path::PathBuf) -> Result<(), io::Error> { + let res = env::set_current_dir(path); + if res.is_ok() { + self.tcwd = Some(path.clone()); + } + res + } } pub fn exit(core: &mut ShellCore, args: &mut Vec) -> i32 {