diff options
Diffstat (limited to 'lib/openssl/buffering.rb')
-rw-r--r-- | lib/openssl/buffering.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/openssl/buffering.rb b/lib/openssl/buffering.rb index f07e5bc..95afd78 100644 --- a/lib/openssl/buffering.rb +++ b/lib/openssl/buffering.rb @@ -36,28 +36,32 @@ module Buffering end end - def consume_rbuff(size=nil) + def consume_rbuff(size=nil, str=nil) if @rbuffer.size == 0 @eof = nil nil else size = @rbuffer.size unless size - ret = @rbuffer[0, size] + if str + str[0, str.size] = @rbuffer[0, size] + else + str = @rbuffer[0, size] + end @rbuffer[0, size] = "" - ret + str end end public - def read(size=nil) + def read(size=nil, str=nil) fill_rbuff unless defined? @rbuffer @eof ||= nil until @eof break if size && size <= @rbuffer.size fill_rbuff end - consume_rbuff(size) + consume_rbuff(size, str) end def gets(eol=$/) |