Sha256: f79281ca6b07db348ddcd481a22d5a17d67bfc533c5c7731f9197f16f6372733
Contents?: true
Size: 1.18 KB
Versions: 20
Compression:
Stored size: 1.18 KB
Contents
# frozen_string_literal: true class Puppet::FileSystem::Posix < Puppet::FileSystem::FileImpl def binread(path) path.binread end # Provide an encoding agnostic version of compare_stream # # The FileUtils implementation in Ruby 2.0+ was modified in a manner where # it cannot properly compare File and StringIO instances. To sidestep that # issue this method reimplements the faster 2.0 version that will correctly # compare binary File and StringIO streams. def compare_stream(path, stream) open(path, 0, 'rb') do |this| bsize = stream_blksize(this, stream) sa = String.new.force_encoding('ASCII-8BIT') sb = String.new.force_encoding('ASCII-8BIT') loop do this.read(bsize, sa) stream.read(bsize, sb) return true if sa.empty? && sb.empty? break if sa != sb end false end end private def stream_blksize(*streams) streams.each do |s| next unless s.respond_to?(:stat) size = blksize(s.stat) return size if size end default_blksize() end def blksize(st) s = st.blksize return nil unless s return nil if s == 0 s end def default_blksize 1024 end end
Version data entries
20 entries across 20 versions & 1 rubygems