diff options
Diffstat (limited to 'mrblib/io.rb')
| -rw-r--r-- | mrblib/io.rb | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/mrblib/io.rb b/mrblib/io.rb index 4bcf4f800..8408aea87 100644 --- a/mrblib/io.rb +++ b/mrblib/io.rb @@ -133,20 +133,12 @@ class IO end def eof? - return true if @buf && @buf.size > 0 - - ret = false - char = '' - begin - char = sysread(1) - rescue EOFError => e - ret = true - ensure - _ungets(char) + buf = _read_buf + return buf.size == 0 + rescue EOFError + return true end - - ret end alias_method :eof, :eof? @@ -176,24 +168,17 @@ class IO @buf = sysread(BUF_SIZE) end - def _ungets(substr) + def ungetc(substr) raise TypeError.new "expect String, got #{substr.class}" unless substr.is_a?(String) - raise IOError if @pos == 0 || @pos.nil? @pos -= substr.size if @buf.empty? - @buf = substr + @buf = substr.dup else @buf = substr + @buf end nil end - def ungetc(char) - raise IOError if @pos == 0 || @pos.nil? - _ungets(char) - nil - end - def read(length = nil) unless length.nil? unless length.is_a? Fixnum |
