• M
    Enable dictionary setting in middle of stream, and keeping the dictionary. · afe7cf78
    Mark Adler 提交于
    This patch adds the deflateResetKeep() function to retain the sliding
    window for the next deflate operation, and fixes an inflateResetKeep()
    problem that came from inflate() not updating the window when the
    stream completed.  This enables constructing and decompressing a series
    of concatenated deflate streams where each can depend on the history of
    uncompressed data that precedes it.
    
    This generalizes deflateSetDictionary() and inflateSetDictionary() to
    permit setting the dictionary in the middle of a stream for raw deflate
    and inflate.  This in combination with the Keep functions enables a
    scheme for updating files block by block with the transmission of
    compressed data, where blocks are sent with deflateResetKeep() to
    retain history for better compression, and deflateSetDictionary() is
    used for blocks already present at the receiver to skip compression but
    insert that data in the history, again for better compression.  The
    corresponding inflate calls are done on the receiver side.
    afe7cf78
deflate.c 68.1 KB