Hello Gabriele,

Thursday, July 25, 2002, 4:13:23 PM, you wrote:

GS> Hi Henrik,

GS> On Monday, July 22, 2002, 4:02:01 AM, you wrote:

HMK>> Did anyone make rebol's compress match the one used in gzcompress() with php?

GS> I  never  tried,  but maybe PHP's just adding the GZIP header that
GS> REBOL does not add?

GS> Regards,
GS>    Gabriele.


I've tried it as well and here is result:

Rebol produces same output as PHP function:
      gzcompress($data_to_decompress, 9);
but with the uncompressed data size (last 4 bytes)
(at least in all my tests there was same result and I was able to
compress/decompress data between PHP and Rebol vice versa)

For reading/writing *.gz files from Rebol we need to work with the GZIP header...
I've written this testing gzip parser - this doesn't solve our problem - see
the comments in the file and try to find solution:-)

<code>
rebol [
        title: "GZip test parser"
        purpose: {Experimental script to test a posibility to decompress *.gz files}
        author: "Oldes"
        email: [EMAIL PROTECTED]
        specification: http://www.faqs.org/rfcs/rfc1952.html
]

;gzipbin: read/binary %/c/web/fwp/www/test2.gz

;for testing I have already loaded compressed text: "Rebol"
gzipbin: #{1F8B080000000000000B0B4A4DCACF0100D2293B6505000000}
rebolbin: compress "Rebol"

;comparing these binaries we can see:
;gzipbin:  #{1F8B080000000000000B 0B4A4DCACF0100 D2293B65 05000000}
;rebolbin: #{                789C 0B4A4DCACF0100 05A301F5 05000000} 

parse/all gzipbin [
        ;IDentification:
        #{1F8B}
        ;compression method:
        copy CM  1 skip (probe CM: to-binary CM)
        ;FLaGs:
        copy FLG 1 skip (probe FLG: enbase/base FLG 2)
    ;Modification TIME:
        copy MTIME 4 skip (probe MTIME: to-integer head reverse to-binary MTIME)
        ;eXtra FLags:
        copy XFL 1 skip (probe XFL: to-binary XFL)
        ;Operating System:
        copy OS  1 skip (probe OS: to-integer to-binary OS)
        tmp:
        (
                if FLG/6 = #"1" [
                        ;eXtra LENgth
                        XLEN: to-integer head reverse to-binary copy/part tmp 2
                        tmp: skip tmp 2
                        FEXTRA: copy/part tmp XLEN
                        tmp: skip tmp XLEN
                ]
                if FLG/5 = #"1" [
                        ;...original file name, zero-terminated...
                        parse/all tmp [copy FNAME to #{00} 1 skip tmp: to end]
                ]
                if FLG/4 = #"1" [
                        ;...file comment, zero-terminated...
                        parse/all tmp [copy FCOMMENT to #{00} 1 skip tmp: to end]
                ]
        )
        :tmp
        copy rest to end
   (
                probe rest: to-binary rest
                ;in the REST variable is zlib compressed data 4bytes of CRC32 and 
4bytes of size of uncompressed data...
                ;Can anybody find how to uncompress these data in Rebol???
                ;if I insert #{789C} in the head (as it's in the 'rebolbin I get error:
                ;** Script Error: Invalid compressed data - problem: -3
                ;that probably means wrong CRC32 - :(( - RT will have to help us
   )
]
</code>


-- 
>>do [send to-email join 'oliva [EMAIL PROTECTED] "BESsssT REgArrrDssss, RebOldes"]

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to