1 # -*- encoding: binary -*-
3 # internal compatibility class for older Rubies
4 module MogileFS::CopyStream # :nodoc:
5 def self.copy_stream(src, dst)
6 src_io = src.respond_to?(:to_str) ? File.open(src) : src
7 dst_io = dst.respond_to?(:to_str) ? File.open(dst, "w") : dst
10 if src_io.respond_to?(:readpartial)
12 src_io.readpartial(0x4000, buf)
13 written += dst_io.write(buf)
18 while src_io.read(0x4000, buf)
19 written += dst_io.write(buf)
22 dst_io.flush if dst_io.respond_to?(:flush)
25 src_io.close if src_io != src
26 dst_io.close if dst_io != dst