History Of Ticket 923a912309
Not logged in
Ticket change [d1355e95d9] (rid 5471) by drh on 2009-10-18 18:35:27:
  1. Change resolution to "Fixed"
  2. Change status to "Fixed"
Ticket change [c42011c7c3] (rid 5462) by anonymous on 2009-10-18 15:31:44:
  1. Appended to comment:

    anonymous claiming to be Dmitry Chestnykh added on 2009-10-18 15:31:44:
    If we use deflateInit2 instead of deflateInit, zlib will not append Adler32 CRC to the end of compressed stream, and also it will not prepend 2-byte signature to the beginning of compressed stream.

    This fixes the issue with ditto.

    (As discussed here)

    --- src/zip.c
    +++ src/zip.c
    @@ -126,11 +126,10 @@
     ** that the file should be saved as.
     */
     void zip_add_file(const char *zName, const Blob *pFile){
       z_stream stream;
       int nameLen;
    -  int skip;
       int toOut;
       int iStart;
       int iCRC = 0;
       int nByte = 0;
       int nByteCompr = 0;
    @@ -177,53 +176,37 @@
       blob_append(&body, zHdr, 30);
       blob_append(&body, zName, nameLen);
       blob_append(&body, zExTime, 13);
     
       if( nBlob>0 ){
    -    /* The first two bytes that come out of the deflate compressor are
    -    ** some kind of header that ZIP does not use.  So skip the first two
    -    ** output bytes.
    -    */
    -    skip = 2;
    -
         /* Write the compressed file.  Compute the CRC as we progress.
         */
         stream.zalloc = (alloc_func)0;
         stream.zfree = (free_func)0;
         stream.opaque = 0;
         stream.avail_in = blob_size(pFile);
         stream.next_in = (unsigned char*)blob_buffer(pFile);
         stream.avail_out = sizeof(zOutBuf);
         stream.next_out = (unsigned char*)zOutBuf;
    -    deflateInit(&stream, 9);
    +    deflateInit2(&stream, 9, Z_DEFLATED, -MAX_WBITS, 8, Z_DEFAULT_STRATEGY);
         iCRC = crc32(0, stream.next_in, stream.avail_in);
         while( stream.avail_in>0 ){
           deflate(&stream, 0);
           toOut = sizeof(zOutBuf) - stream.avail_out;
    -      if( toOut>skip ){
    -        blob_append(&body, &zOutBuf[skip], toOut - skip);
    -        skip = 0;
    -      }else{
    -        skip -= toOut;
    -      }
    +      blob_append(&body, zOutBuf, toOut);
           stream.avail_out = sizeof(zOutBuf);
           stream.next_out = (unsigned char*)zOutBuf;
         }
         do{
           stream.avail_out = sizeof(zOutBuf);
           stream.next_out = (unsigned char*)zOutBuf;
           deflate(&stream, Z_FINISH);
           toOut = sizeof(zOutBuf) - stream.avail_out;
    -      if( toOut>skip ){
    -        blob_append(&body, &zOutBuf[skip], toOut - skip);
    -        skip = 0;
    -      }else{
    -        skip -= toOut;
    -      }
    +      blob_append(&body, zOutBuf, toOut);
         }while( stream.avail_out==0 );
         nByte = stream.total_in;
    -    nByteCompr = stream.total_out - 2;
    +    nByteCompr = stream.total_out;
         deflateEnd(&stream);
     
         /* Go back and write the header, now that we know the compressed file size.
         */
         z = &blob_buffer(&body)[iStart];
    
Ticket change [2aef22de59] (rid 4833) by anonymous on 2009-07-16 22:48:57:
  1. Appended to comment:

    anonymous added on 2009-07-16 22:48:57:
    The bug exists within ditto, the utility that BOMArchiver (the graphical front-end for zip extraction on OS X) uses. The error reporting on the Console is "Couldn't read pkzip signature." A quick investigation reveals that this occurs when the data descriptor flag is set (see http://www.info-zip.org/board/board.pl?m-1198023427/). However, a quick overview of Fossil's zip files doesn't appear to indicate that this bit is set, so I'm at a loss.

Ticket change [03b74fb31e] (rid 4832) by drh on 2009-07-13 14:13:50:
  1. Appended to comment:

    drh added on 2009-07-13 14:13:50:
    This is a known problem. If you run "unzip" from the command-line it works. But if you double-click on the icon it does not. I have no idea what the difference is and since I don't have source code to Apple's unzip utility, I cannot run it in a debugger to find out. Any suggestions on how to proceed are welcomed.

  2. Change resolution to "Open"
Ticket change [c2350816b3] (rid 4831) by anonymous on 2009-07-13 12:27:23:
  1. Change comment to "osx will not unzip the zip files created by fossil to replicate the problem ; 1. login as anonymous to fossil-scm.org 2. choose either timeline or leaves 3. click on a 'version'(?) to open the summary page 4. click on 'ZIP archive' to start download. 5. download completed; either a) choose unzip as the default action, or b) double-click from finder. (behaviour noted in osx 10.5)"
  2. Change foundin to "e124881a70"
  3. Change private_contact to "36f0fb79a71d7f6f746a9380e7eab81fa1eb1b8a"
  4. Change severity to "Important"
  5. Change status to "Open"
  6. Change title to "osx will not unzip the zip files created by fossil"
  7. Change type to "Incident"