These are the 'easy' ones, where a signgle step compression is requested so that we can use only one call to compress_all() Signed-off-by: Marco Costalba <mcostalba@xxxxxxxxx> --- archive-zip.c | 28 +++------------------------- builtin-pack-objects.c | 21 ++++----------------- diff.c | 22 +++++----------------- index-pack.c | 20 +++----------------- 4 files changed, 15 insertions(+), 76 deletions(-) diff --git a/archive-zip.c b/archive-zip.c index 74e30f6..9071b86 100644 --- a/archive-zip.c +++ b/archive-zip.c @@ -3,6 +3,7 @@ */ #include "cache.h" #include "commit.h" +#include "compress.h" #include "blob.h" #include "tree.h" #include "quote.h" @@ -97,33 +98,10 @@ static void copy_le32(unsigned char *dest, static void *zlib_deflate(void *data, unsigned long size, unsigned long *compressed_size) { - z_stream stream; - unsigned long maxsize; - void *buffer; - int result; - - memset(&stream, 0, sizeof(stream)); - deflateInit(&stream, zlib_compression_level); - maxsize = deflateBound(&stream, size); - buffer = xmalloc(maxsize); - - stream.next_in = data; - stream.avail_in = size; - stream.next_out = buffer; - stream.avail_out = maxsize; - - do { - result = deflate(&stream, Z_FINISH); - } while (result == Z_OK); - - if (result != Z_STREAM_END) { - free(buffer); - return NULL; - } - deflateEnd(&stream); - *compressed_size = stream.total_out; + unsigned char *buffer = NULL; + *compressed_size = compress_all(zlib_compression_level, data, size, &buffer); return buffer; } diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index a39cb82..66dedf9 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "cache.h" +#include "compress.h" #include "attr.h" #include "object.h" #include "blob.h" @@ -409,9 +410,7 @@ static unsigned long write_object(struct sha1file *f, */ if (!to_reuse) { - z_stream stream; - unsigned long maxsize; - void *out; + unsigned char *out = NULL; if (!usable_delta) { buf = read_sha1_file(entry->idx.sha1, &obj_type, &size); if (!buf) @@ -432,20 +431,8 @@ static unsigned long write_object(struct sha1file *f, OBJ_OFS_DELTA : OBJ_REF_DELTA; } /* compress the data to store and put compressed length in datalen */ - memset(&stream, 0, sizeof(stream)); - deflateInit(&stream, pack_compression_level); - maxsize = deflateBound(&stream, size); - out = xmalloc(maxsize); - /* Compress it */ - stream.next_in = buf; - stream.avail_in = size; - stream.next_out = out; - stream.avail_out = maxsize; - while (deflate(&stream, Z_FINISH) == Z_OK) - /* nothing */; - deflateEnd(&stream); - datalen = stream.total_out; - deflateEnd(&stream); + datalen = compress_all(pack_compression_level, buf, size, &out); + /* * The object header is a byte of 'type' followed by zero or * more bytes of length. diff --git a/diff.c b/diff.c index b18c140..43f537c 100644 --- a/diff.c +++ b/diff.c @@ -2,6 +2,7 @@ * Copyright (C) 2005 Junio C Hamano */ #include "cache.h" +#include "compress.h" #include "quote.h" #include "diff.h" #include "diffcore.h" @@ -1037,23 +1038,10 @@ static unsigned char *deflate_it(char *data, unsigned long size, unsigned long *result_size) { - int bound; - unsigned char *deflated; - z_stream stream; - - memset(&stream, 0, sizeof(stream)); - deflateInit(&stream, zlib_compression_level); - bound = deflateBound(&stream, size); - deflated = xmalloc(bound); - stream.next_out = deflated; - stream.avail_out = bound; - - stream.next_in = (unsigned char *)data; - stream.avail_in = size; - while (deflate(&stream, Z_FINISH) == Z_OK) - ; /* nothing */ - deflateEnd(&stream); - *result_size = stream.total_out; + unsigned char *deflated = NULL; + + *result_size = compress_all(zlib_compression_level, + (unsigned char *)data, size, &deflated); return deflated; } diff --git a/index-pack.c b/index-pack.c index 9fd6982..880088e 100644 --- a/index-pack.c +++ b/index-pack.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "compress.h" #include "delta.h" #include "pack.h" #include "csum-file.h" @@ -494,24 +495,9 @@ static void parse_pack_objects(unsigned char static int write_compressed(int fd, void *in, unsigned int size, uint32_t *obj_crc) { - z_stream stream; - unsigned long maxsize; - void *out; + unsigned char *out = NULL; - memset(&stream, 0, sizeof(stream)); - deflateInit(&stream, zlib_compression_level); - maxsize = deflateBound(&stream, size); - out = xmalloc(maxsize); - - /* Compress it */ - stream.next_in = in; - stream.avail_in = size; - stream.next_out = out; - stream.avail_out = maxsize; - while (deflate(&stream, Z_FINISH) == Z_OK); - deflateEnd(&stream); - - size = stream.total_out; + size = compress_all(zlib_compression_level, in, size, &out); write_or_die(fd, out, size); *obj_crc = crc32(*obj_crc, out, size); free(out); -- 1.5.4.rc2.89.g1b3f-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html