This makes exa work on other platforms than linux and macosx.

This commit is contained in:
Michael Neumann 2015-09-14 01:37:52 +02:00
parent 6cf9274828
commit 6317417a98

View File

@ -12,6 +12,7 @@ pub trait FileAttributes {
fn symlink_attributes(&self) -> io::Result<Vec<Attribute>>;
}
#[cfg(any(target_os = "macos", target_os = "linux"))]
impl FileAttributes for Path {
fn attributes(&self) -> io::Result<Vec<Attribute>> {
list_attrs(lister::Lister::new(FollowSymlinks::Yes), &self)
@ -22,7 +23,19 @@ impl FileAttributes for Path {
}
}
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
impl FileAttributes for Path {
fn attributes(&self) -> io::Result<Vec<Attribute>> {
Ok(vec![])
}
fn symlink_attributes(&self) -> io::Result<Vec<Attribute>> {
Ok(vec![])
}
}
/// Attributes which can be passed to `Attribute::list_with_flags`
#[cfg(any(target_os = "macos", target_os = "linux"))]
#[derive(Copy, Clone)]
pub enum FollowSymlinks {
Yes,
@ -36,6 +49,7 @@ pub struct Attribute {
pub size: usize,
}
#[cfg(any(target_os = "macos", target_os = "linux"))]
pub fn list_attrs(lister: lister::Lister, path: &Path) -> io::Result<Vec<Attribute>> {
let c_path = match path.as_os_str().to_cstring() {
Some(cstring) => cstring,
@ -235,4 +249,4 @@ mod lister {
}
}
}
}
}