The documentation for zlib says that it expects an Adler-32 checksum
at the end of the file.

PHP follows this [largely outdated] standard.

Python, on the other hand, doesn't, and uses a different checksum, CRC-32.

That's why it won't decompress. But I've written my own function and
it's working now. :)
        function fixAdler32($data) {
                $tempnam = tempnam('/tmp', 'gzfix');
                $fh = fopen($tempnam, 'wb');
                
                fwrite($fh, "\x1f\x8b\x08\x00\x00\x00\x00\x00" . $data);
                fclose($fh);
                
                $dat = '';
                $gz = gzopen($tempnam, 'rb');
                if ($gz == false) die('Error opening temporary GZ file.');
        
                do {
                        $dat .= gzread($gz, 100000);
                } while (!feof($gz));
                gzclose($gz);
                unlink($tempnam);
                return $dat;
        }


On Nov 6, 2007 11:07 PM, Per Jessen <[EMAIL PROTECTED]> wrote:
> [EMAIL PROTECTED] wrote:
>
> > Alright, I think I know the problem.
> >
> > PHP's gzuncompress uses the Adler-32 checksum at the end of the zlib,
> > while Python uses CRC32.
> >
> > Why must you follow the standards, PHP!?
> >
> > Does anyone know of any workaround?
>
> Are you saying that you've got compressed data in one format by Python
> that cannot be uncompressed by PHP because it expects another format?
>
>
>
> /Per Jessen, Zürich
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to