Skip to content

Commit a18282c

Browse files
committed
Remove eof() from io::Reader
1 parent dd11fe1 commit a18282c

File tree

16 files changed

+19
-144
lines changed

16 files changed

+19
-144
lines changed

src/libextra/time.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -788,7 +788,7 @@ pub fn strptime(s: &str, format: &str) -> Result<Tm, ~str> {
788788
}
789789
}
790790

791-
if pos == len && rdr.eof() {
791+
if pos == len && rdr.tell() as uint == format.len() {
792792
Ok(Tm {
793793
tm_sec: tm.tm_sec,
794794
tm_min: tm.tm_min,

src/libnative/io/file.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@ impl io::Reader for FileDesc {
114114
fn read(&mut self, buf: &mut [u8]) -> Option<uint> {
115115
match self.inner_read(buf) { Ok(n) => Some(n), Err(..) => None }
116116
}
117-
fn eof(&mut self) -> bool { false }
118117
}
119118

120119
impl io::Writer for FileDesc {

src/libstd/io/buffered.rs

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ pub struct BufferedReader<R> {
6666
priv inner: R,
6767
priv buf: ~[u8],
6868
priv pos: uint,
69-
priv cap: uint
69+
priv cap: uint,
70+
priv eof: bool,
7071
}
7172

7273
impl<R: Reader> BufferedReader<R> {
@@ -84,7 +85,8 @@ impl<R: Reader> BufferedReader<R> {
8485
inner: inner,
8586
buf: buf,
8687
pos: 0,
87-
cap: 0
88+
cap: 0,
89+
eof: false,
8890
}
8991
}
9092

@@ -113,7 +115,7 @@ impl<R: Reader> Buffer for BufferedReader<R> {
113115
self.pos = 0;
114116
self.cap = cap;
115117
}
116-
None => {}
118+
None => { self.eof = true; }
117119
}
118120
}
119121
return self.buf.slice(self.pos, self.cap);
@@ -134,15 +136,11 @@ impl<R: Reader> Reader for BufferedReader<R> {
134136
nread
135137
};
136138
self.pos += nread;
137-
if nread == 0 && self.inner.eof() && buf.len() != 0 {
138-
return None;
139+
if nread == 0 && buf.len() != 0 && self.eof {
140+
return None;
139141
}
140142
Some(nread)
141143
}
142-
143-
fn eof(&mut self) -> bool {
144-
self.pos == self.cap && self.inner.eof()
145-
}
146144
}
147145

148146
/// Wraps a Writer and buffers output to it
@@ -270,7 +268,6 @@ impl<W> InternalBufferedWriter<W> {
270268

271269
impl<W: Reader> Reader for InternalBufferedWriter<W> {
272270
fn read(&mut self, buf: &mut [u8]) -> Option<uint> { self.get_mut_ref().inner.read(buf) }
273-
fn eof(&mut self) -> bool { self.get_mut_ref().inner.eof() }
274271
}
275272

276273
/// Wraps a Stream and buffers input and output to and from it
@@ -325,7 +322,6 @@ impl<S: Stream> Buffer for BufferedStream<S> {
325322

326323
impl<S: Stream> Reader for BufferedStream<S> {
327324
fn read(&mut self, buf: &mut [u8]) -> Option<uint> { self.inner.read(buf) }
328-
fn eof(&mut self) -> bool { self.inner.eof() }
329325
}
330326

331327
impl<S: Stream> Writer for BufferedStream<S> {
@@ -351,10 +347,6 @@ mod test {
351347
fn read(&mut self, _: &mut [u8]) -> Option<uint> {
352348
None
353349
}
354-
355-
fn eof(&mut self) -> bool {
356-
true
357-
}
358350
}
359351

360352
impl Writer for NullStream {
@@ -370,10 +362,6 @@ mod test {
370362
fn read(&mut self, _: &mut [u8]) -> Option<uint> {
371363
self.lengths.shift_opt()
372364
}
373-
374-
fn eof(&mut self) -> bool {
375-
self.lengths.len() == 0
376-
}
377365
}
378366

379367
#[test]
@@ -385,24 +373,20 @@ mod test {
385373
let nread = reader.read(buf);
386374
assert_eq!(Some(2), nread);
387375
assert_eq!([0, 1, 0], buf);
388-
assert!(!reader.eof());
389376

390377
let mut buf = [0];
391378
let nread = reader.read(buf);
392379
assert_eq!(Some(1), nread);
393380
assert_eq!([2], buf);
394-
assert!(!reader.eof());
395381

396382
let mut buf = [0, 0, 0];
397383
let nread = reader.read(buf);
398384
assert_eq!(Some(1), nread);
399385
assert_eq!([3, 0, 0], buf);
400-
assert!(!reader.eof());
401386

402387
let nread = reader.read(buf);
403388
assert_eq!(Some(1), nread);
404389
assert_eq!([4, 0, 0], buf);
405-
assert!(reader.eof());
406390

407391
assert_eq!(None, reader.read(buf));
408392
}
@@ -466,13 +450,11 @@ mod test {
466450

467451
impl io::Reader for S {
468452
fn read(&mut self, _: &mut [u8]) -> Option<uint> { None }
469-
fn eof(&mut self) -> bool { true }
470453
}
471454

472455
let mut stream = BufferedStream::new(S);
473456
let mut buf = [];
474457
stream.read(buf);
475-
stream.eof();
476458
stream.write(buf);
477459
stream.flush();
478460
}
@@ -539,6 +521,7 @@ mod test {
539521
assert_eq!(reader.read(buf), Some(2));
540522
assert_eq!(reader.read(buf), Some(0));
541523
assert_eq!(reader.read(buf), Some(1));
524+
assert_eq!(reader.read(buf), Some(0));
542525
assert_eq!(reader.read(buf), None);
543526
}
544527

src/libstd/io/comm_adapters.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,6 @@ impl Reader for PortReader {
7777
Some(num_read)
7878
}
7979
}
80-
81-
fn eof(&mut self) -> bool { self.closed }
8280
}
8381

8482
/// Allows writing to a chan.
@@ -133,22 +131,17 @@ mod test {
133131
let mut reader = PortReader::new(port);
134132
let mut buf = ~[0u8, ..3];
135133

136-
assert_eq!(false, reader.eof());
137134

138135
assert_eq!(Some(0), reader.read([]));
139-
assert_eq!(false, reader.eof());
140136

141137
assert_eq!(Some(3), reader.read(buf));
142-
assert_eq!(false, reader.eof());
143138
assert_eq!(~[1,2,3], buf);
144139

145140
assert_eq!(Some(3), reader.read(buf));
146-
assert_eq!(false, reader.eof());
147141
assert_eq!(~[4,5,6], buf);
148142

149143
assert_eq!(Some(2), reader.read(buf));
150144
assert_eq!(~[7,8,6], buf);
151-
assert_eq!(true, reader.eof());
152145

153146
let mut err = None;
154147
let result = io::io_error::cond.trap(|io::standard_error(k, _, _)| {
@@ -158,7 +151,6 @@ mod test {
158151
});
159152
assert_eq!(Some(io::EndOfFile), err);
160153
assert_eq!(None, result);
161-
assert_eq!(true, reader.eof());
162154
assert_eq!(~[7,8,6], buf);
163155

164156
// Ensure it continues to fail in the same way.
@@ -170,7 +162,6 @@ mod test {
170162
});
171163
assert_eq!(Some(io::EndOfFile), err);
172164
assert_eq!(None, result);
173-
assert_eq!(true, reader.eof());
174165
assert_eq!(~[7,8,6], buf);
175166
}
176167

src/libstd/io/extensions.rs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,6 @@ mod test {
150150
Some(1)
151151
}
152152
}
153-
fn eof(&mut self) -> bool {
154-
false
155-
}
156153
}
157154

158155
struct EofReader;
@@ -161,9 +158,6 @@ mod test {
161158
fn read(&mut self, _: &mut [u8]) -> Option<uint> {
162159
None
163160
}
164-
fn eof(&mut self) -> bool {
165-
false
166-
}
167161
}
168162

169163
struct ErroringReader;
@@ -173,9 +167,6 @@ mod test {
173167
io_error::cond.raise(placeholder_error());
174168
None
175169
}
176-
fn eof(&mut self) -> bool {
177-
false
178-
}
179170
}
180171

181172
struct PartialReader {
@@ -195,9 +186,6 @@ mod test {
195186
Some(2)
196187
}
197188
}
198-
fn eof(&mut self) -> bool {
199-
false
200-
}
201189
}
202190

203191
struct ErroringLaterReader {
@@ -215,9 +203,6 @@ mod test {
215203
None
216204
}
217205
}
218-
fn eof(&mut self) -> bool {
219-
false
220-
}
221206
}
222207

223208
struct ThreeChunkReader {
@@ -240,9 +225,6 @@ mod test {
240225
None
241226
}
242227
}
243-
fn eof(&mut self) -> bool {
244-
false
245-
}
246228
}
247229

248230
#[test]

src/libstd/io/flate.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,4 @@ impl<R: Reader> InflateReader<R> {
4949

5050
impl<R: Reader> Reader for InflateReader<R> {
5151
fn read(&mut self, _buf: &mut [u8]) -> Option<uint> { fail!() }
52-
53-
fn eof(&mut self) -> bool { fail!() }
5452
}

src/libstd/io/fs.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,14 @@ impl File {
205205
pub fn truncate(&mut self, size: i64) {
206206
self.fd.truncate(size).map_err(|e| io_error::cond.raise(e));
207207
}
208+
209+
/// Tests whether this stream has reached EOF.
210+
///
211+
/// If true, then this file will no longer continue to return data via
212+
/// `read`.
213+
pub fn eof(&self) -> bool {
214+
self.last_nread == 0
215+
}
208216
}
209217

210218
/// Unlink a file from the underlying filesystem.
@@ -597,8 +605,6 @@ impl Reader for File {
597605
}
598606
}
599607
}
600-
601-
fn eof(&mut self) -> bool { self.last_nread == 0 }
602608
}
603609

604610
impl Writer for File {

src/libstd/io/mem.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ impl MemReader {
124124

125125
impl Reader for MemReader {
126126
fn read(&mut self, buf: &mut [u8]) -> Option<uint> {
127-
{ if self.eof() { return None; } }
127+
if self.pos == self.buf.len() { return None }
128128

129129
let write_len = min(buf.len(), self.buf.len() - self.pos);
130130
{
@@ -138,8 +138,6 @@ impl Reader for MemReader {
138138

139139
return Some(write_len);
140140
}
141-
142-
fn eof(&mut self) -> bool { self.pos == self.buf.len() }
143141
}
144142

145143
impl Seek for MemReader {
@@ -222,7 +220,7 @@ impl<'a> BufReader<'a> {
222220

223221
impl<'a> Reader for BufReader<'a> {
224222
fn read(&mut self, buf: &mut [u8]) -> Option<uint> {
225-
{ if self.eof() { return None; } }
223+
if self.pos == self.buf.len() { return None }
226224

227225
let write_len = min(buf.len(), self.buf.len() - self.pos);
228226
{
@@ -236,8 +234,6 @@ impl<'a> Reader for BufReader<'a> {
236234

237235
return Some(write_len);
238236
}
239-
240-
fn eof(&mut self) -> bool { self.pos == self.buf.len() }
241237
}
242238

243239
impl<'a> Seek for BufReader<'a> {
@@ -369,9 +365,7 @@ mod test {
369365
assert_eq!(buf, [1, 2, 3, 4]);
370366
assert_eq!(reader.read(buf), Some(3));
371367
assert_eq!(buf.slice(0, 3), [5, 6, 7]);
372-
assert!(reader.eof());
373368
assert_eq!(reader.read(buf), None);
374-
assert!(reader.eof());
375369
}
376370

377371
#[test]
@@ -391,9 +385,7 @@ mod test {
391385
assert_eq!(buf, [1, 2, 3, 4]);
392386
assert_eq!(reader.read(buf), Some(3));
393387
assert_eq!(buf.slice(0, 3), [5, 6, 7]);
394-
assert!(reader.eof());
395388
assert_eq!(reader.read(buf), None);
396-
assert!(reader.eof());
397389
}
398390

399391
#[test]

src/libstd/io/mod.rs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -502,26 +502,6 @@ pub trait Reader {
502502
/// Is it actually possible for 0 bytes to be read successfully?
503503
fn read(&mut self, buf: &mut [u8]) -> Option<uint>;
504504

505-
/// Return whether the Reader has reached the end of the stream.
506-
///
507-
/// # Example
508-
///
509-
/// ```rust
510-
/// use std::io;
511-
/// # let _g = ::std::io::ignore_io_error();
512-
/// let mut reader = io::stdin();
513-
///
514-
/// let mut bytes = [0, .. 10];
515-
/// reader.read(bytes);
516-
///
517-
/// if reader.eof() { println("stdin() had at most 10 bytes of data."); }
518-
/// ```
519-
///
520-
/// # Failure
521-
///
522-
/// Returns `true` on failure.
523-
fn eof(&mut self) -> bool;
524-
525505
// Convenient helper methods based on the above methods
526506

527507
/// Reads a single byte. Returns `None` on EOF.
@@ -864,12 +844,10 @@ pub trait Reader {
864844

865845
impl Reader for ~Reader {
866846
fn read(&mut self, buf: &mut [u8]) -> Option<uint> { self.read(buf) }
867-
fn eof(&mut self) -> bool { self.eof() }
868847
}
869848

870849
impl<'a> Reader for &'a mut Reader {
871850
fn read(&mut self, buf: &mut [u8]) -> Option<uint> { self.read(buf) }
872-
fn eof(&mut self) -> bool { self.eof() }
873851
}
874852

875853
fn extend_sign(val: u64, nbytes: uint) -> i64 {

src/libstd/io/net/tcp.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ impl Reader for TcpStream {
6767
}
6868
}
6969
}
70-
71-
fn eof(&mut self) -> bool { fail!() }
7270
}
7371

7472
impl Writer for TcpStream {

0 commit comments

Comments
 (0)