[PATCH 3/5] Use new compress helpers in fast-import
From: Marco Costalba <hidden>
Date: 2016-06-15 22:44:04
Subsystem:
the rest · Maintainer:
Linus Torvalds
Here is slightly more difficult, in particular a xrealloc() has been substituted with a free() + xmalloc() to keep the code simple. Signed-off-by: Marco Costalba <redacted> --- fast-import.c | 44 +++++++++++++++------------------------ 1 files changed, 15 insertions(+), 29 deletions(-)
diff --git a/fast-import.c b/fast-import.c
index 74597c9..6166d4a 100644
--- a/fast-import.c
+++ b/fast-import.c@@ -141,6 +141,7 @@ Format of STDIN stream: #include "builtin.h" #include "cache.h" +#include "compress.h" #include "object.h" #include "blob.h" #include "tree.h"
@@ -994,13 +995,13 @@ static int store_object( unsigned char *sha1out, uintmax_t mark) { - void *out, *delta; + unsigned char *out, *delta; struct object_entry *e; unsigned char hdr[96]; unsigned char sha1[20]; unsigned long hdrlen, deltalen; SHA_CTX c; - z_stream s; + int out_size; hdrlen = sprintf((char*)hdr,"%s %lu", typename(type), (unsigned long)dat->len) + 1;
@@ -1036,24 +1037,15 @@ static int store_object( } else delta = NULL; - memset(&s, 0, sizeof(s)); - deflateInit(&s, zlib_compression_level); - if (delta) { - s.next_in = delta; - s.avail_in = deltalen; - } else { - s.next_in = (void *)dat->buf; - s.avail_in = dat->len; - } - s.avail_out = deflateBound(&s, s.avail_in); - s.next_out = out = xmalloc(s.avail_out); - while (deflate(&s, Z_FINISH) == Z_OK) - /* nothing */; - deflateEnd(&s); + if (delta) + out_size = compress_all(zlib_compression_level, delta, deltalen, &out); + else + out_size = compress_all(zlib_compression_level, + (unsigned char *)dat->buf,
dat->len, &out);
/* Determine if we should auto-checkpoint. */
- if ((pack_size + 60 + s.total_out) > max_packsize
- || (pack_size + 60 + s.total_out) < pack_size) {
+ if ((pack_size + 60 + out_size) > max_packsize
+ || (pack_size + 60 + out_size) < pack_size) {
/* This new object needs to *not* have the current pack_id. */
e->pack_id = pack_id + 1;@@ -1064,15 +1056,9 @@ static int store_object( free(delta); delta = NULL; - memset(&s, 0, sizeof(s)); - deflateInit(&s, zlib_compression_level); - s.next_in = (void *)dat->buf; - s.avail_in = dat->len; - s.avail_out = deflateBound(&s, s.avail_in); - s.next_out = out = xrealloc(out, s.avail_out); - while (deflate(&s, Z_FINISH) == Z_OK) - /* nothing */; - deflateEnd(&s); + free(out); + out_size = compress_all(zlib_compression_level, + (unsigned char
*)dat->buf, dat->len, &out); } }
@@ -1105,8 +1091,8 @@ static int store_object( pack_size += hdrlen; } - write_or_die(pack_data->pack_fd, out, s.total_out); - pack_size += s.total_out; + write_or_die(pack_data->pack_fd, out, out_size); + pack_size += out_size; free(out); free(delta);
--
1.5.4.rc2.89.g1b3f-dirty