|
@@ -3,7 +3,7 @@ extern crate libc;
|
|
|
|
|
|
|
|
use std::io;
|
|
use std::io;
|
|
|
use std::path::Path;
|
|
use std::path::Path;
|
|
|
-
|
|
|
|
|
|
|
+use std::ffi::CString;
|
|
|
|
|
|
|
|
pub const ENABLED: bool = cfg!(feature="git") && cfg!(any(target_os="macos", target_os="linux"));
|
|
pub const ENABLED: bool = cfg!(feature="git") && cfg!(any(target_os="macos", target_os="linux"));
|
|
|
|
|
|
|
@@ -51,7 +51,7 @@ pub struct Attribute {
|
|
|
|
|
|
|
|
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
|
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
|
|
pub fn list_attrs(lister: lister::Lister, path: &Path) -> io::Result<Vec<Attribute>> {
|
|
pub fn list_attrs(lister: lister::Lister, path: &Path) -> io::Result<Vec<Attribute>> {
|
|
|
- let c_path = match path.as_os_str().to_cstring() {
|
|
|
|
|
|
|
+ let c_path = match path.to_str().and_then(|s| { CString::new(s).ok() }) {
|
|
|
Some(cstring) => cstring,
|
|
Some(cstring) => cstring,
|
|
|
None => return Err(io::Error::new(io::ErrorKind::Other, "Error: path somehow contained a NUL?")),
|
|
None => return Err(io::Error::new(io::ErrorKind::Other, "Error: path somehow contained a NUL?")),
|
|
|
};
|
|
};
|