# File lib/rubygems/package.rb, line 230 def add_file_simple(name, mode, size) raise BlockNeeded unless block_given? raise ClosedIO if @closed name, prefix = split_name(name) header = TarHeader.new(:name => name, :mode => mode, :size => size, :prefix => prefix).to_s @io.write header os = BoundedStream.new(@io, size) yield os #FIXME: what if an exception is raised in the block? min_padding = size - os.written @io.write("\0" * min_padding) remainder = (512 - (size % 512)) % 512 @io.write("\0" * remainder) end