# File lib/rhc/vendor/zliby.rb, line 528
  def initialize io
    
    #Add a helper method to check bits
    ::Fixnum.module_eval do
      def isbitset? bit_to_check
      if self & (2 ** bit_to_check)  == (2 ** bit_to_check) then true else false end
    end
    end

    super()
    @io = io
    io.read.each_byte {|b| @input_buffer << b}
    if @input_buffer[@in_pos+=1] != 0x1f || @input_buffer[@in_pos+=1] != 0x8b then raise Zlib::GzipFile::Error.new("not in gzip format") end
    if @input_buffer[@in_pos+=1] != 0x08 then raise Zlib::GzipFile::Error.new("unknown compression method") end
    flg = @input_buffer[@in_pos+=1]
    @ftext = flg.isbitset? 0
    @fhcrc = flg.isbitset? 1
    @fextra = flg.isbitset? 2
    @fname = flg.isbitset? 3
    @fcomment = flg.isbitset? 4
    @mtime = Time.at(@input_buffer[@in_pos+=1] | (@input_buffer[@in_pos+=1] << 8) | (@input_buffer[@in_pos+=1] << 16) | (@input_buffer[@in_pos+=1] << 24))
    @xfl = @input_buffer[@in_pos+=1]
    @os = OSES[@input_buffer[@in_pos+=1]]
    if @fextra then 
      @xlen = (@input_buffer[@in_pos+=1] | (@input_buffer[@in_pos+=1] << 8)) 
      @xtra_field = []
      @xlen.times {@xtra_field << @input_buffer[@in_pos+=1]}
    end
    if @fname then
      @original_name = ""
      until @original_name["\0"].nil? == false
        @original_name.concat(@input_buffer[@in_pos+=1])
      end
      @original_name.chop!
    end
    if @fcomment then
      @comment = ""
      until @comment["\0"].nil? == false
        @comment.concat(@input_buffer[@in_pos+=1])
      end
      @comment.chop!
    end
    if @fhcrc then
      @header_crc = @input_buffer[@in_pos+=1] | (@input_buffer[@in_pos+=1] << 8)
    end  
    @contents = ""
    until @in_pos == @input_buffer.length-1
      @contents.concat(@input_buffer[@in_pos+=1])
    end

    #we do raw deflate, no headers
    @zstream = Zlib::Inflate.new -MAX_WBITS
    @inflated = StringIO.new(@zstream.inflate @contents)
     
  end