diff options
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/unix/os.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libstd/sys/unix/os.rs b/src/libstd/sys/unix/os.rs index 316d97064ee..cafe52f8403 100644 --- a/src/libstd/sys/unix/os.rs +++ b/src/libstd/sys/unix/os.rs @@ -172,7 +172,7 @@ pub fn join_paths<T: BytesContainer>(paths: &[T]) -> Result<Vec<u8>, &'static st Ok(joined) } -#[cfg(any(target_os = "freebsd", target_os = "dragonfly"))] +#[cfg(target_os = "freebsd")] pub fn load_self() -> Option<Vec<u8>> { unsafe { use libc::funcs::bsd44::*; @@ -198,6 +198,16 @@ pub fn load_self() -> Option<Vec<u8>> { } } +#[cfg(target_os = "dragonfly")] +pub fn load_self() -> Option<Vec<u8>> { + use std::io; + + match io::fs::readlink(&Path::new("/proc/curproc/file")) { + Ok(path) => Some(path.into_vec()), + Err(..) => None + } +} + #[cfg(any(target_os = "linux", target_os = "android"))] pub fn load_self() -> Option<Vec<u8>> { use std::io; |
