diff options
| author | Jeremy Soller <jackpot51@gmail.com> | 2016-11-10 19:58:19 -0700 |
|---|---|---|
| committer | Jeremy Soller <jackpot51@gmail.com> | 2016-11-10 19:58:19 -0700 |
| commit | 79a8c272fb8ad09600ef58ff223c73eb44343040 (patch) | |
| tree | 0820d60e0912ec28b8a70e771efd3d3e14d226fc /src/libstd/sys | |
| parent | a90850995f9f177c910ba548f1a6312353673926 (diff) | |
| download | rust-79a8c272fb8ad09600ef58ff223c73eb44343040.tar.gz rust-79a8c272fb8ad09600ef58ff223c73eb44343040.zip | |
Fix readdir
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/redox/fs.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/libstd/sys/redox/fs.rs b/src/libstd/sys/redox/fs.rs index 3779c4c6677..1a96ac2f2ea 100644 --- a/src/libstd/sys/redox/fs.rs +++ b/src/libstd/sys/redox/fs.rs @@ -146,16 +146,17 @@ impl Iterator for ReadDir { fn next(&mut self) -> Option<io::Result<DirEntry>> { loop { let start = self.i; - while self.i < self.data.len() { - let i = self.i; + let mut i = self.i; + while i < self.data.len() { self.i += 1; if self.data[i] == b'\n' { break; } + i += 1; } if start < self.i { let ret = DirEntry { - name: self.data[start .. self.i].to_owned().into_boxed_slice(), + name: self.data[start .. i].to_owned().into_boxed_slice(), root: self.root.clone() }; if ret.name_bytes() != b"." && ret.name_bytes() != b".." { @@ -182,7 +183,7 @@ impl DirEntry { } pub fn file_type(&self) -> io::Result<FileType> { - stat(&self.path()).map(|m| m.file_type()) + lstat(&self.path()).map(|m| m.file_type()) } fn name_bytes(&self) -> &[u8] { @@ -367,7 +368,8 @@ impl fmt::Debug for File { pub fn readdir(p: &Path) -> io::Result<ReadDir> { let root = Arc::new(p.to_path_buf()); - let options = OpenOptions::new(); + let mut options = OpenOptions::new(); + options.read(true); let fd = File::open(p, &options)?; let mut data = Vec::new(); fd.read_to_end(&mut data)?; @@ -431,7 +433,8 @@ pub fn link(_src: &Path, _dst: &Path) -> io::Result<()> { pub fn stat(p: &Path) -> io::Result<FileAttr> { let mut stat: stat = stat::default(); - let options = OpenOptions::new(); + let mut options = OpenOptions::new(); + options.read(true); let file = File::open(p, &options)?; cvt(fstat(file.0.raw(), &mut stat))?; Ok(FileAttr { stat: stat }) @@ -442,7 +445,8 @@ pub fn lstat(p: &Path) -> io::Result<FileAttr> { } pub fn canonicalize(p: &Path) -> io::Result<PathBuf> { - let options = OpenOptions::new(); + let mut options = OpenOptions::new(); + options.read(true); let file = File::open(p, &options)?; file.path() } |
