rollup merge of #21423: oli-obk/prettier_read_until

Conflicts:
	src/libstd/io/mod.rs
This commit is contained in:
Alex Crichton 2015-01-21 09:16:33 -08:00
commit 9ef5484783
1 changed files with 8 additions and 10 deletions

View File

@ -1436,33 +1436,31 @@ pub trait Buffer: Reader {
fn read_until(&mut self, byte: u8) -> IoResult<Vec<u8>> {
let mut res = Vec::new();
let mut used;
loop {
{
let (done, used) = {
let available = match self.fill_buf() {
Ok(n) => n,
Err(ref e) if res.len() > 0 && e.kind == EndOfFile => {
used = 0;
break
return Ok(res);
}
Err(e) => return Err(e)
};
match available.iter().position(|&b| b == byte) {
Some(i) => {
res.push_all(&available[..i + 1]);
used = i + 1;
break
(true, i + 1)
}
None => {
res.push_all(available);
used = available.len();
(false, available.len())
}
}
};
buffer.consume(used);
if done {
return Ok(res);
}
self.consume(used);
}
self.consume(used);
Ok(res)
}
/// Reads the next utf8-encoded character from the underlying stream.