diff --git a/redox-rt/src/proc.rs b/redox-rt/src/proc.rs index 34a2bc7ab5..320e2adac8 100644 --- a/redox-rt/src/proc.rs +++ b/redox-rt/src/proc.rs @@ -55,8 +55,6 @@ pub struct InterpOverride { pub struct ExtraInfo<'a> { pub cwd: Option<&'a [u8]>, - // Default scheme for the process - pub default_scheme: Option<&'a [u8]>, // POSIX states that while sigactions are reset, ignored sigactions will remain ignored. pub sigignmask: u64, // POSIX also states that the sigprocmask must be preserved across execs. @@ -310,8 +308,7 @@ pub fn fexec_impl( let total_args_envs_auxvpointee_size = args.iter().map(|arg| arg.len() + 1).sum::() + envs.iter().map(|env| env.len() + 1).sum::() - + extrainfo.cwd.map_or(0, |s| s.len() + 1) - + extrainfo.default_scheme.map_or(0, |s| s.len() + 1); + + extrainfo.cwd.map_or(0, |s| s.len() + 1); let args_envs_size_aligned = total_args_envs_auxvpointee_size.next_multiple_of(PAGE_SIZE); let target_args_env_address = find_free_target_addr(&tree, args_envs_size_aligned).ok_or(Error::new(ENOMEM))?; @@ -356,13 +353,6 @@ pub fn fexec_impl( push(AT_REDOX_INITIAL_CWD_LEN)?; } - if let Some(default_scheme) = extrainfo.default_scheme { - push(append(default_scheme)?)?; - push(AT_REDOX_INITIAL_DEFAULT_SCHEME_PTR)?; - push(default_scheme.len())?; - push(AT_REDOX_INITIAL_DEFAULT_SCHEME_LEN)?; - } - #[cfg(target_pointer_width = "32")] { push((extrainfo.sigignmask >> 32) as usize)?; diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs index 9bde8bf59d..02fc314838 100644 --- a/src/header/unistd/mod.rs +++ b/src/header/unistd/mod.rs @@ -888,14 +888,6 @@ pub unsafe extern "C" fn rmdir(path: *const c_char) -> c_int { Sys::rmdir(path).map(|()| 0).or_minus_one_errno() } -#[unsafe(no_mangle)] -pub unsafe extern "C" fn set_default_scheme(scheme: *const c_char) -> c_int { - let scheme = CStr::from_ptr(scheme); - Sys::set_default_scheme(scheme) - .map(|_| 0) - .or_minus_one_errno() -} - /// See . #[unsafe(no_mangle)] pub extern "C" fn setegid(gid: gid_t) -> c_int { diff --git a/src/platform/auxv_defs.rs b/src/platform/auxv_defs.rs index 5f6dad136b..9042d3a402 100644 --- a/src/platform/auxv_defs.rs +++ b/src/platform/auxv_defs.rs @@ -44,11 +44,6 @@ pub const AT_REDOX_INHERITED_SIGPROCMASK: usize = 36; #[cfg(all(target_os = "redox", target_pointer_width = "32"))] pub const AT_REDOX_INHERITED_SIGPROCMASK_HI: usize = 37; -#[cfg(target_os = "redox")] -pub const AT_REDOX_INITIAL_DEFAULT_SCHEME_PTR: usize = 38; -#[cfg(target_os = "redox")] -pub const AT_REDOX_INITIAL_DEFAULT_SCHEME_LEN: usize = 39; - #[cfg(target_os = "redox")] pub const AT_REDOX_UMASK: usize = 40; diff --git a/src/platform/linux/mod.rs b/src/platform/linux/mod.rs index 4c05f39bca..33ba5da2a5 100644 --- a/src/platform/linux/mod.rs +++ b/src/platform/linux/mod.rs @@ -96,9 +96,6 @@ impl Pal for Sys { fn chdir(path: CStr) -> Result<()> { e_raw(unsafe { syscall!(CHDIR, path.as_ptr()) }).map(|_| ()) } - fn set_default_scheme(scheme: CStr) -> Result<()> { - Err(Errno(EOPNOTSUPP)) - } fn chmod(path: CStr, mode: mode_t) -> Result<()> { e_raw(unsafe { syscall!(FCHMODAT, AT_FDCWD, path.as_ptr(), mode, 0) }).map(|_| ()) diff --git a/src/platform/mod.rs b/src/platform/mod.rs index f9f09ea3a1..3b9d481de1 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -354,17 +354,6 @@ pub unsafe fn init(auxvs: Box<[[usize; 2]]>) { } } - if let (Some(scheme_ptr), Some(scheme_len)) = ( - get_auxv(&auxvs, AT_REDOX_INITIAL_DEFAULT_SCHEME_PTR), - get_auxv(&auxvs, AT_REDOX_INITIAL_DEFAULT_SCHEME_LEN), - ) { - let scheme_bytes: &'static [u8] = - unsafe { core::slice::from_raw_parts(scheme_ptr as *const u8, scheme_len) }; - if let Ok(scheme) = core::str::from_utf8(scheme_bytes) { - self::sys::path::set_default_scheme_manual(scheme.into()); - } - } - let mut inherited_sigignmask = 0_u64; if let Some(mask) = get_auxv(&auxvs, AT_REDOX_INHERITED_SIGIGNMASK) { inherited_sigignmask |= mask as u64; diff --git a/src/platform/pal/mod.rs b/src/platform/pal/mod.rs index 39fb912c10..b10b8053c0 100644 --- a/src/platform/pal/mod.rs +++ b/src/platform/pal/mod.rs @@ -37,8 +37,6 @@ pub trait Pal { fn chdir(path: CStr) -> Result<()>; - fn set_default_scheme(scheme: CStr) -> Result<(), Errno>; - fn chmod(path: CStr, mode: mode_t) -> Result<()>; fn chown(path: CStr, owner: uid_t, group: gid_t) -> Result<()>; diff --git a/src/platform/redox/exec.rs b/src/platform/redox/exec.rs index 0ad5b5d6b8..ca19ff2aff 100644 --- a/src/platform/redox/exec.rs +++ b/src/platform/redox/exec.rs @@ -128,9 +128,6 @@ pub fn execve( } let cwd: Box<[u8]> = super::path::clone_cwd().unwrap_or_default().into(); - let default_scheme: Box<[u8]> = super::path::clone_default_scheme() - .unwrap_or_else(|| Box::from("file")) - .into(); // Path to interpreter binary and args if found let (interpreter_path, interpreter_args) = { parse_interpreter(&mut image_file)? }; @@ -248,7 +245,6 @@ pub fn execve( let extrainfo = ExtraInfo { cwd: Some(&cwd), - default_scheme: Some(&default_scheme), sigignmask: redox_rt::signal::get_sigignmask_to_inherit(), sigprocmask, umask: redox_rt::sys::get_umask(), diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 3e4ba36ed9..1e3427756b 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -172,10 +172,6 @@ impl Pal for Sys { path::chdir(path)?; Ok(()) } - fn set_default_scheme(path: CStr) -> Result<()> { - let path = path.to_str().map_err(|_| Errno(EINVAL))?; - Ok(path::set_default_scheme(path)?) - } fn chmod(path: CStr, mode: mode_t) -> Result<()> { let file = File::open(path, fcntl::O_PATH | fcntl::O_CLOEXEC)?; diff --git a/src/platform/redox/path.rs b/src/platform/redox/path.rs index 9482e6d836..731e722db9 100644 --- a/src/platform/redox/path.rs +++ b/src/platform/redox/path.rs @@ -58,24 +58,6 @@ pub fn getcwd(mut buf: Out<[u8]>) -> Option { Some(cwd.len()) } -/// Sets the default scheme -/// -/// By default absolute paths resolve to /scheme/file, calling this function -/// allows a different scheme to be used as the root. This property is inherited -/// by child processes. -/// -/// Resets CWD to /. -pub fn set_default_scheme(scheme: &str) -> Result<()> { - let _siglock = tmp_disable_signals(); - let mut cwd_guard = CWD.lock(); - let mut default_scheme_guard = DEFAULT_SCHEME.lock(); - - *cwd_guard = None; - *default_scheme_guard = Some(scheme.into()); - - Ok(()) -} - // TODO: How much of this logic should be in redox-path? fn canonicalize_with_cwd_internal(cwd: Option<&str>, path: &str) -> Result { let path = canonicalize_using_cwd(cwd, path).ok_or(Error::new(ENOENT))?; @@ -90,9 +72,7 @@ fn canonicalize_with_cwd_internal(cwd: Option<&str>, path: &str) -> Result Result { // TODO: arraystring? static CWD: Mutex>> = Mutex::new(None); -static DEFAULT_SCHEME: Mutex>> = Mutex::new(None); pub fn set_cwd_manual(cwd: Box) { let _siglock = tmp_disable_signals(); *CWD.lock() = Some(cwd); } -pub fn set_default_scheme_manual(scheme: Box) { - let _siglock = tmp_disable_signals(); - *DEFAULT_SCHEME.lock() = Some(scheme) -} - pub fn clone_cwd() -> Option> { let _siglock = tmp_disable_signals(); CWD.lock().clone() } -pub fn clone_default_scheme() -> Option> { - let _siglock = tmp_disable_signals(); - DEFAULT_SCHEME.lock().clone() -} - // TODO: Move to redox-rt, or maybe part of it? pub fn open(path: &str, flags: usize) -> Result { // TODO: SYMLOOP_MAX