diff --git a/src/exa.rs b/src/exa.rs index 035c234..f81432b 100644 --- a/src/exa.rs +++ b/src/exa.rs @@ -79,7 +79,7 @@ fn lines_view(files: Vec<&File>) { } fn grid_view(across: bool, console_width: uint, files: Vec<&File>) { - let max_column_length = files.iter().map(|f| f.file_name_width()).max().unwrap(); + let max_column_length = files.iter().map(|f| f.file_name_width()).max().unwrap_or(0); let num_columns = (console_width + 1) / (max_column_length + 1); let count = files.len(); @@ -143,7 +143,7 @@ fn details_view(options: &Options, columns: &Vec, files: Vec<&File>) { .collect(); let column_widths: Vec = range(0, columns.len()) - .map(|n| lengths.iter().map(|row| row[n]).max().unwrap()) + .map(|n| lengths.iter().map(|row| row[n]).max().unwrap_or(0)) .collect(); for (field_widths, row) in lengths.iter().zip(table.iter()) { diff --git a/src/file.rs b/src/file.rs index 21105da..d10dc4e 100644 --- a/src/file.rs +++ b/src/file.rs @@ -32,7 +32,7 @@ pub struct File<'a> { impl<'a> File<'a> { pub fn from_path(path: &'a Path, parent: &'a Dir) -> IoResult> { let v = path.filename().unwrap(); // fails if / or . or .. - let filename = String::from_utf8(v.to_vec()).unwrap(); + let filename = String::from_utf8(v.to_vec()).unwrap_or_else(|_| panic!("Name was not valid UTF-8")); // Use lstat here instead of file.stat(), as it doesn't follow // symbolic links. Otherwise, the stat() call will fail if it diff --git a/src/unix.rs b/src/unix.rs index 5841f00..784d579 100644 --- a/src/unix.rs +++ b/src/unix.rs @@ -29,7 +29,6 @@ mod c { } #[repr(C)] - #[deriving(Show)] pub struct c_group { pub gr_name: *const c_char, // group name pub gr_passwd: *const c_char, // password @@ -142,7 +141,6 @@ impl Unix { } self.group_names.insert(gid, group_name); } - } - + } } }