22 lines
655 B
Rust
22 lines
655 B
Rust
use crate::{jobs::JobBldr, libsh::error::ShResult, parse::{NdRule, Node}, prelude::*, procio::{borrow_fd, IoStack}, state};
|
|
|
|
use super::setup_builtin;
|
|
|
|
pub fn pwd(node: Node, io_stack: &mut IoStack, job: &mut JobBldr) -> ShResult<()> {
|
|
let NdRule::Command { assignments: _, argv } = node.class else {
|
|
unreachable!()
|
|
};
|
|
|
|
let (_,io_frame) = setup_builtin(argv, job, Some((io_stack,node.redirs)))?;
|
|
|
|
let stdout = borrow_fd(STDOUT_FILENO);
|
|
|
|
let mut curr_dir = env::current_dir().unwrap().to_str().unwrap().to_string();
|
|
curr_dir.push('\n');
|
|
write(stdout, curr_dir.as_bytes())?;
|
|
|
|
io_frame.unwrap().restore().unwrap();
|
|
state::set_status(0);
|
|
Ok(())
|
|
}
|