* [PATCH 5/6] Convert builtin-pack/unpack
@ 2008-01-11 18:58 Marco Costalba
0 siblings, 0 replies; only message in thread
From: Marco Costalba @ 2008-01-11 18:58 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git Mailing List
Also in this case decompression helper conversion
is quite similar and not too complex, so they go
together.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
builtin-pack-objects.c | 14 ++++++--------
builtin-unpack-objects.c | 20 +++++++-------------
2 files changed, 13 insertions(+), 21 deletions(-)
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 66dedf9..d2865fe 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -302,19 +302,17 @@ static int check_pack_inflate(struct
{
z_stream stream;
unsigned char fakebuf[4096], *in;
+ unsigned int in_size = 0;
int st;
- memset(&stream, 0, sizeof(stream));
- inflateInit(&stream);
+ decompress_alloc(&stream);
do {
- in = use_pack(p, w_curs, offset, &stream.avail_in);
- stream.next_in = in;
- stream.next_out = fakebuf;
- stream.avail_out = sizeof(fakebuf);
- st = inflate(&stream, Z_FINISH);
+ decompress_into(&stream, fakebuf, sizeof(fakebuf));
+ in = use_pack(p, w_curs, offset, &in_size);
+ st = decompress_next_from(&stream, in, in_size, Z_FINISH);
offset += stream.next_in - in;
} while (st == Z_OK || st == Z_BUF_ERROR);
- inflateEnd(&stream);
+ decompress_free(&stream);
return (st == Z_STREAM_END &&
stream.total_out == expect &&
stream.total_in == len) ? 0 : -1;
diff --git a/builtin-unpack-objects.c b/builtin-unpack-objects.c
index 1e51865..f1a4883 100644
--- a/builtin-unpack-objects.c
+++ b/builtin-unpack-objects.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "cache.h"
+#include "compress.h"
#include "object.h"
#include "delta.h"
#include "pack.h"
@@ -61,23 +62,18 @@ static void use(int bytes)
static void *get_data(unsigned long size)
{
z_stream stream;
- void *buf = xmalloc(size);
+ unsigned char *buf = xmalloc(size);;
- memset(&stream, 0, sizeof(stream));
-
- stream.next_out = buf;
- stream.avail_out = size;
- stream.next_in = fill(1);
- stream.avail_in = len;
- inflateInit(&stream);
+ decompress_alloc(&stream);
+ decompress_into(&stream, buf, size);
for (;;) {
- int ret = inflate(&stream, 0);
+ int ret = decompress_next_from(&stream, fill(1), len, Z_NO_FLUSH);
use(len - stream.avail_in);
if (stream.total_out == size && ret == Z_STREAM_END)
break;
if (ret != Z_OK) {
- error("inflate returned %d\n", ret);
+ error("decompress returned %d\n", ret);
free(buf);
buf = NULL;
if (!recover)
@@ -85,10 +81,8 @@ static void *get_data(unsigned long size)
has_errors = 1;
break;
}
- stream.next_in = fill(1);
- stream.avail_in = len;
}
- inflateEnd(&stream);
+ decompress_free(&stream);
return buf;
}
--
1.5.4.rc2.90.gf158-dirty
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2008-01-11 18:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-11 18:58 [PATCH 5/6] Convert builtin-pack/unpack 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).