diff options
author | Ben S <ogham@bsago.me> | 2014-06-29 21:02:14 +0100 |
---|---|---|
committer | Ben S <ogham@bsago.me> | 2014-06-29 21:02:14 +0100 |
commit | df65886d6d793a539e850e1c00e1f5230ab7a5c6 (patch) | |
tree | ac8a76ab7b41329f8cb157ae0dc8466f7a28aa94 /src/filetype.rs | |
parent | 85e557a7443d74b878e0e81debb284bd112ba6bd (diff) |
Properly handle invalid UTF-8 filenames
Diffstat (limited to 'src/filetype.rs')
-rw-r--r-- | src/filetype.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/filetype.rs b/src/filetype.rs index 9ac3402..5557fa9 100644 --- a/src/filetype.rs +++ b/src/filetype.rs @@ -73,6 +73,7 @@ pub trait HasType { impl<'a> HasType for File<'a> { fn get_type(&self) -> FileType { + let name = self.name.as_slice(); if self.stat.kind == io::TypeDirectory { return Directory; } @@ -85,11 +86,12 @@ impl<'a> HasType for File<'a> { else if self.stat.perm.contains(io::UserExecute) { return Executable; } - else if self.name.starts_with("README") || BUILD_TYPES.iter().any(|&s| s == self.name) { + else if name.starts_with("README") || BUILD_TYPES.iter().any(|&s| s == name) { return Immediate; } else if self.ext.is_some() { - let ext = self.ext.unwrap(); + let e = self.ext.clone().unwrap(); + let ext = e.as_slice(); if IMAGE_TYPES.iter().any(|&s| s == ext) { return Image; } |