Methods
Classes and Modules
Class Zlib::GzipReader::DataError
Class Zlib::GzipReader::Error
Class Zlib::GzipReader::NeedDict
Constants
OSES = ['FAT filesystem', 'Amiga', 'VMS (or OpenVMS)', 'Unix', 'VM/CMS', 'Atari TOS', 'HPFS fileystem (OS/2, NT)', 'Macintosh', 'Z-System', 'CP/M', 'TOPS-20', 'NTFS filesystem (NT)', 'QDOS', 'Acorn RISCOS', 'unknown']
Public Class methods
new(io)
# File lib/zliby.rb, line 525
        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
open(filename) {|gz else gz end| ...}
# File lib/zliby.rb, line 600
                def open filename
                        io = File.open filename
                        gz = self.new io
                        if block_given? then yield gz else gz end
                end
                
        end
Public Instance methods
eof?()
# File lib/zliby.rb, line 585
        def eof?
                @inflated.eof?
        end
isbitset?(bit_to_check)
# File lib/zliby.rb, line 529
                        def isbitset? bit_to_check
                        if self & (2 ** bit_to_check)  == (2 ** bit_to_check) then true else false end
                end
pos()
# File lib/zliby.rb, line 589
        def pos
                @inflated.pos
        end
read(length=nil)
# File lib/zliby.rb, line 581
        def read length=nil
                @inflated.read length
        end
rewind()
# File lib/zliby.rb, line 593
        def rewind
                @inflated.rewind
                @io.seek 0, IO::SEEK_SET
        end