* [PATCH] Use new compress helpers in sha1_file.c
@ 2008-01-11 7:41 Marco Costalba
0 siblings, 0 replies; only message in thread
From: Marco Costalba @ 2008-01-11 7:41 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git Mailing List
A multistep compress is required here, so
we need the full arsenal of compress helpers.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
sha1_file.c | 41 ++++++++++++-----------------------------
1 files changed, 12 insertions(+), 29 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c
index 6583797..6c94bd5 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -7,6 +7,7 @@
* creation etc.
*/
#include "cache.h"
+#include "compress.h"
#include "delta.h"
#include "pack.h"
#include "blob.h"
@@ -2086,33 +2087,23 @@ int write_sha1_file(void *buf, unsigned long
}
/* Set it up */
- memset(&stream, 0, sizeof(stream));
- deflateInit(&stream, zlib_compression_level);
- size = 8 + deflateBound(&stream, len+hdrlen);
+ size = 8 + compress_alloc(&stream, zlib_compression_level, len+hdrlen);
compressed = xmalloc(size);
/* Compress it */
- stream.next_out = compressed;
- stream.avail_out = size;
+ compress_start(&stream, (unsigned char *)hdr, hdrlen, compressed, size);
/* First header.. */
- stream.next_in = (unsigned char *)hdr;
- stream.avail_in = hdrlen;
- while (deflate(&stream, 0) == Z_OK)
- /* nothing */;
+ compress_next(&stream, Z_NO_FLUSH);
/* Then the data itself.. */
stream.next_in = buf;
stream.avail_in = len;
- ret = deflate(&stream, Z_FINISH);
+ ret = compress_next(&stream, Z_FINISH);
if (ret != Z_STREAM_END)
die("unable to deflate new object %s (%d)", sha1_to_hex(sha1), ret);
- ret = deflateEnd(&stream);
- if (ret != Z_OK)
- die("deflateEnd on object %s failed (%d)", sha1_to_hex(sha1), ret);
-
- size = stream.total_out;
+ size = compress_free(&stream);
if (write_buffer(fd, compressed, size) < 0)
die("unable to write sha1 file");
@@ -2147,30 +2138,22 @@ static void *repack_object(const unsigned char *sha1,
hdrlen = sprintf(hdr, "%s %lu", typename(type), len) + 1;
/* Set it up */
- memset(&stream, 0, sizeof(stream));
- deflateInit(&stream, zlib_compression_level);
- size = deflateBound(&stream, len + hdrlen);
+ size = compress_alloc(&stream, zlib_compression_level, len + hdrlen);
buf = xmalloc(size);
/* Compress it */
- stream.next_out = buf;
- stream.avail_out = size;
+ compress_start(&stream, (unsigned char *)hdr, hdrlen, buf, size);
/* First header.. */
- stream.next_in = (void *)hdr;
- stream.avail_in = hdrlen;
- while (deflate(&stream, 0) == Z_OK)
- /* nothing */;
+ compress_next(&stream, Z_NO_FLUSH);
/* Then the data itself.. */
stream.next_in = unpacked;
stream.avail_in = len;
- while (deflate(&stream, Z_FINISH) == Z_OK)
- /* nothing */;
- deflateEnd(&stream);
- free(unpacked);
+ compress_next(&stream, Z_FINISH);
- *objsize = stream.total_out;
+ *objsize = compress_free(&stream);
+ free(unpacked);
return buf;
}
--
1.5.4.rc2.89.g1b3f-dirty
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2008-01-11 7:42 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-11 7:41 [PATCH] Use new compress helpers in sha1_file.c Marco Costalba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).