# File lib/rubygems/package.rb, line 227
    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