| use super::hermit_abi; | 
 | use crate::ffi::{OsStr, OsString}; | 
 | use crate::marker::PhantomData; | 
 | use crate::path::{self, PathBuf}; | 
 | use crate::sys::unsupported; | 
 | use crate::{fmt, io}; | 
 |  | 
 | pub fn errno() -> i32 { | 
 |     unsafe { hermit_abi::get_errno() } | 
 | } | 
 |  | 
 | pub fn error_string(errno: i32) -> String { | 
 |     hermit_abi::error_string(errno).to_string() | 
 | } | 
 |  | 
 | pub fn getcwd() -> io::Result<PathBuf> { | 
 |     Ok(PathBuf::from("/")) | 
 | } | 
 |  | 
 | pub fn chdir(_: &path::Path) -> io::Result<()> { | 
 |     unsupported() | 
 | } | 
 |  | 
 | pub struct SplitPaths<'a>(!, PhantomData<&'a ()>); | 
 |  | 
 | pub fn split_paths(_unparsed: &OsStr) -> SplitPaths<'_> { | 
 |     panic!("unsupported") | 
 | } | 
 |  | 
 | impl<'a> Iterator for SplitPaths<'a> { | 
 |     type Item = PathBuf; | 
 |     fn next(&mut self) -> Option<PathBuf> { | 
 |         self.0 | 
 |     } | 
 | } | 
 |  | 
 | #[derive(Debug)] | 
 | pub struct JoinPathsError; | 
 |  | 
 | pub fn join_paths<I, T>(_paths: I) -> Result<OsString, JoinPathsError> | 
 | where | 
 |     I: Iterator<Item = T>, | 
 |     T: AsRef<OsStr>, | 
 | { | 
 |     Err(JoinPathsError) | 
 | } | 
 |  | 
 | impl fmt::Display for JoinPathsError { | 
 |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | 
 |         "not supported on hermit yet".fmt(f) | 
 |     } | 
 | } | 
 |  | 
 | impl crate::error::Error for JoinPathsError {} | 
 |  | 
 | pub fn current_exe() -> io::Result<PathBuf> { | 
 |     unsupported() | 
 | } | 
 |  | 
 | pub fn temp_dir() -> PathBuf { | 
 |     PathBuf::from("/tmp") | 
 | } | 
 |  | 
 | pub fn home_dir() -> Option<PathBuf> { | 
 |     None | 
 | } | 
 |  | 
 | pub fn exit(code: i32) -> ! { | 
 |     unsafe { hermit_abi::exit(code) } | 
 | } | 
 |  | 
 | pub fn getpid() -> u32 { | 
 |     unsafe { hermit_abi::getpid() as u32 } | 
 | } |