Clean up FileType enum following enum namespacing
All of the enum components had a redundant 'Type' specifier: TypeSymlink, TypeDirectory, TypeFile. This change removes them, replacing them with a namespace: FileType::Symlink, FileType::Directory, and FileType::RegularFile. RegularFile is used instead of just File, as File by itself could be mistakenly thought of as referring to the struct. [breaking-change]
This commit is contained in:
parent
4334d3c196
commit
3b9dfd6af0
@ -37,7 +37,7 @@ pub fn realpath(original: &Path) -> io::IoResult<Path> {
|
||||
|
||||
match fs::lstat(&result) {
|
||||
Err(..) => break,
|
||||
Ok(ref stat) if stat.kind != io::TypeSymlink => break,
|
||||
Ok(ref stat) if stat.kind != io::FileType::Symlink => break,
|
||||
Ok(..) => {
|
||||
followed += 1;
|
||||
let path = try!(fs::readlink(&result));
|
||||
|
@ -54,7 +54,7 @@ fs::unlink(&path);
|
||||
|
||||
use clone::Clone;
|
||||
use io::standard_error;
|
||||
use io::{FilePermission, Write, Open, FileAccess, FileMode};
|
||||
use io::{FilePermission, Write, Open, FileAccess, FileMode, FileType};
|
||||
use io::{IoResult, IoError, FileStat, SeekStyle, Seek, Writer, Reader};
|
||||
use io::{Read, Truncate, ReadWrite, Append};
|
||||
use io::UpdateIoError;
|
||||
@ -592,7 +592,7 @@ pub fn mkdir_recursive(path: &Path, mode: FilePermission) -> IoResult<()> {
|
||||
match result {
|
||||
Err(mkdir_err) => {
|
||||
// already exists ?
|
||||
if try!(stat(&curpath)).kind != io::TypeDirectory {
|
||||
if try!(stat(&curpath)).kind != FileType::Directory {
|
||||
return Err(mkdir_err);
|
||||
}
|
||||
}
|
||||
@ -638,7 +638,7 @@ pub fn rmdir_recursive(path: &Path) -> IoResult<()> {
|
||||
false => try!(update_err(lstat(&child), path))
|
||||
};
|
||||
|
||||
if child_type.kind == io::TypeDirectory {
|
||||
if child_type.kind == FileType::Directory {
|
||||
rm_stack.push(child);
|
||||
has_child_dir = true;
|
||||
} else {
|
||||
@ -772,13 +772,13 @@ impl PathExtensions for path::Path {
|
||||
}
|
||||
fn is_file(&self) -> bool {
|
||||
match self.stat() {
|
||||
Ok(s) => s.kind == io::TypeFile,
|
||||
Ok(s) => s.kind == FileType::RegularFile,
|
||||
Err(..) => false
|
||||
}
|
||||
}
|
||||
fn is_dir(&self) -> bool {
|
||||
match self.stat() {
|
||||
Ok(s) => s.kind == io::TypeDirectory,
|
||||
Ok(s) => s.kind == FileType::Directory,
|
||||
Err(..) => false
|
||||
}
|
||||
}
|
||||
@ -806,7 +806,7 @@ fn access_string(access: FileAccess) -> &'static str {
|
||||
#[allow(unused_mut)]
|
||||
mod test {
|
||||
use prelude::*;
|
||||
use io::{SeekSet, SeekCur, SeekEnd, Read, Open, ReadWrite};
|
||||
use io::{SeekSet, SeekCur, SeekEnd, Read, Open, ReadWrite, FileType};
|
||||
use io;
|
||||
use str;
|
||||
use io::fs::*;
|
||||
@ -1028,12 +1028,12 @@ mod test {
|
||||
fs.write(msg.as_bytes()).unwrap();
|
||||
|
||||
let fstat_res = check!(fs.stat());
|
||||
assert_eq!(fstat_res.kind, io::TypeFile);
|
||||
assert_eq!(fstat_res.kind, FileType::RegularFile);
|
||||
}
|
||||
let stat_res_fn = check!(stat(filename));
|
||||
assert_eq!(stat_res_fn.kind, io::TypeFile);
|
||||
assert_eq!(stat_res_fn.kind, FileType::RegularFile);
|
||||
let stat_res_meth = check!(filename.stat());
|
||||
assert_eq!(stat_res_meth.kind, io::TypeFile);
|
||||
assert_eq!(stat_res_meth.kind, FileType::RegularFile);
|
||||
check!(unlink(filename));
|
||||
}
|
||||
|
||||
@ -1043,9 +1043,9 @@ mod test {
|
||||
let filename = &tmpdir.join("file_stat_correct_on_is_dir");
|
||||
check!(mkdir(filename, io::USER_RWX));
|
||||
let stat_res_fn = check!(stat(filename));
|
||||
assert!(stat_res_fn.kind == io::TypeDirectory);
|
||||
assert!(stat_res_fn.kind == FileType::Directory);
|
||||
let stat_res_meth = check!(filename.stat());
|
||||
assert!(stat_res_meth.kind == io::TypeDirectory);
|
||||
assert!(stat_res_meth.kind == FileType::Directory);
|
||||
check!(rmdir(filename));
|
||||
}
|
||||
|
||||
@ -1315,8 +1315,8 @@ mod test {
|
||||
check!(File::create(&input).write("foobar".as_bytes()));
|
||||
check!(symlink(&input, &out));
|
||||
if cfg!(not(windows)) {
|
||||
assert_eq!(check!(lstat(&out)).kind, io::TypeSymlink);
|
||||
assert_eq!(check!(out.lstat()).kind, io::TypeSymlink);
|
||||
assert_eq!(check!(lstat(&out)).kind, FileType::Symlink);
|
||||
assert_eq!(check!(out.lstat()).kind, FileType::Symlink);
|
||||
}
|
||||
assert_eq!(check!(stat(&out)).size, check!(stat(&input)).size);
|
||||
assert_eq!(check!(File::open(&out).read_to_end()),
|
||||
@ -1350,8 +1350,8 @@ mod test {
|
||||
check!(File::create(&input).write("foobar".as_bytes()));
|
||||
check!(link(&input, &out));
|
||||
if cfg!(not(windows)) {
|
||||
assert_eq!(check!(lstat(&out)).kind, io::TypeFile);
|
||||
assert_eq!(check!(out.lstat()).kind, io::TypeFile);
|
||||
assert_eq!(check!(lstat(&out)).kind, FileType::RegularFile);
|
||||
assert_eq!(check!(out.lstat()).kind, FileType::RegularFile);
|
||||
assert_eq!(check!(stat(&out)).unstable.nlink, 2);
|
||||
assert_eq!(check!(out.stat()).unstable.nlink, 2);
|
||||
}
|
||||
|
@ -224,7 +224,6 @@ responding to errors that may occur while attempting to read the numbers.
|
||||
pub use self::SeekStyle::*;
|
||||
pub use self::FileMode::*;
|
||||
pub use self::FileAccess::*;
|
||||
pub use self::FileType::*;
|
||||
pub use self::IoErrorKind::*;
|
||||
|
||||
use char::Char;
|
||||
@ -1698,22 +1697,22 @@ pub enum FileAccess {
|
||||
#[deriving(PartialEq, Show, Hash, Clone)]
|
||||
pub enum FileType {
|
||||
/// This is a normal file, corresponding to `S_IFREG`
|
||||
TypeFile,
|
||||
RegularFile,
|
||||
|
||||
/// This file is a directory, corresponding to `S_IFDIR`
|
||||
TypeDirectory,
|
||||
Directory,
|
||||
|
||||
/// This file is a named pipe, corresponding to `S_IFIFO`
|
||||
TypeNamedPipe,
|
||||
NamedPipe,
|
||||
|
||||
/// This file is a block device, corresponding to `S_IFBLK`
|
||||
TypeBlockSpecial,
|
||||
BlockSpecial,
|
||||
|
||||
/// This file is a symbolic link to another file, corresponding to `S_IFLNK`
|
||||
TypeSymlink,
|
||||
Symlink,
|
||||
|
||||
/// The type of this file is not recognized as one of the other categories
|
||||
TypeUnknown,
|
||||
Unknown,
|
||||
}
|
||||
|
||||
/// A structure used to describe metadata information about a file. This
|
||||
|
@ -305,12 +305,12 @@ fn mkstat(stat: &libc::stat) -> FileStat {
|
||||
FileStat {
|
||||
size: stat.st_size as u64,
|
||||
kind: match (stat.st_mode as libc::mode_t) & libc::S_IFMT {
|
||||
libc::S_IFREG => io::TypeFile,
|
||||
libc::S_IFDIR => io::TypeDirectory,
|
||||
libc::S_IFIFO => io::TypeNamedPipe,
|
||||
libc::S_IFBLK => io::TypeBlockSpecial,
|
||||
libc::S_IFLNK => io::TypeSymlink,
|
||||
_ => io::TypeUnknown,
|
||||
libc::S_IFREG => io::FileType::RegularFile,
|
||||
libc::S_IFDIR => io::FileType::Directory,
|
||||
libc::S_IFIFO => io::FileType::NamedPipe,
|
||||
libc::S_IFBLK => io::FileType::BlockSpecial,
|
||||
libc::S_IFLNK => io::FileType::Symlink,
|
||||
_ => io::FileType::Unknown,
|
||||
},
|
||||
perm: FilePermission::from_bits_truncate(stat.st_mode as u32),
|
||||
created: mktime(stat.st_ctime as u64, stat.st_ctime_nsec as u64),
|
||||
|
@ -407,12 +407,12 @@ fn mkstat(stat: &libc::stat) -> FileStat {
|
||||
FileStat {
|
||||
size: stat.st_size as u64,
|
||||
kind: match (stat.st_mode as libc::c_int) & libc::S_IFMT {
|
||||
libc::S_IFREG => io::TypeFile,
|
||||
libc::S_IFDIR => io::TypeDirectory,
|
||||
libc::S_IFIFO => io::TypeNamedPipe,
|
||||
libc::S_IFBLK => io::TypeBlockSpecial,
|
||||
libc::S_IFLNK => io::TypeSymlink,
|
||||
_ => io::TypeUnknown,
|
||||
libc::S_IFREG => io::FileType::RegularFile,
|
||||
libc::S_IFDIR => io::FileType::Directory,
|
||||
libc::S_IFIFO => io::FileType::NamedPipe,
|
||||
libc::S_IFBLK => io::FileType::BlockSpecial,
|
||||
libc::S_IFLNK => io::FileType::Symlink,
|
||||
_ => io::FileType::Unknown,
|
||||
},
|
||||
perm: FilePermission::from_bits_truncate(stat.st_mode as u32),
|
||||
created: stat.st_ctime as u64,
|
||||
|
@ -11,5 +11,5 @@
|
||||
use std::io::FileType;
|
||||
|
||||
pub fn main() {
|
||||
let _ = FileType::TypeFile.clone();
|
||||
let _ = FileType::RegularFile.clone();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user