Current Path : /usr/local/lib/ruby/1.8/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/local/lib/ruby/1.8/readbytes.rb |
# TruncatedDataError is raised when IO#readbytes fails to read enough data. class TruncatedDataError<IOError def initialize(mesg, data) # :nodoc: @data = data super(mesg) end # The read portion of an IO#readbytes attempt. attr_reader :data end class IO # Reads exactly +n+ bytes. # # If the data read is nil an EOFError is raised. # # If the data read is too short a TruncatedDataError is raised and the read # data is obtainable via its #data method. def readbytes(n) str = read(n) if str == nil raise EOFError, "End of file reached" end if str.size < n raise TruncatedDataError.new("data truncated", str) end str end end if __FILE__ == $0 begin loop do print STDIN.readbytes(6) end rescue TruncatedDataError p $!.data raise end end