mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
1.4.0
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fcd020c830
commit
65a5162550
156 changed files with 21888 additions and 18301 deletions
36
lib/readbytes.rb
Normal file
36
lib/readbytes.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
# readbytes.rb
|
||||
#
|
||||
# add IO#readbytes, which reads fixed sized data.
|
||||
# it guarantees read data size.
|
||||
|
||||
class TruncatedDataError<IOError
|
||||
def initialize(mesg, data)
|
||||
@data = data
|
||||
super(mesg)
|
||||
end
|
||||
attr_reader :data
|
||||
end
|
||||
|
||||
class IO
|
||||
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
|
Loading…
Add table
Add a link
Reference in a new issue