From: Marco Costalba <mcostalba@gmail.com>
To: gitster@pobox.com
Cc: git@vger.kernel.org, Marco Costalba <mcostalba@gmail.com>
Subject: [PATCH 10/11] Convert builtin-pack/unpack
Date: Sat, 2 Feb 2008 12:35:55 +0100 [thread overview]
Message-ID: <1201952156-6764-10-git-send-email-mcostalba@gmail.com> (raw)
In-Reply-To: <1201952156-6764-9-git-send-email-mcostalba@gmail.com>
In this case decompression helper conversion is
quite similar and not too complex, so they go
togheter.
Also in index-pack.c pass correct arguments
to decompress_next_from().
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
builtin-pack-objects.c | 14 ++++++--------
builtin-unpack-objects.c | 22 +++++++++-------------
index-pack.c | 4 +++-
3 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 991a30f..43614ce 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -302,19 +302,17 @@ static int check_pack_inflate(struct packed_git *p,
{
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..c996560 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,20 @@ 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);
+ /* fill() modifies len, so be sure is evaluated as first */
+ void* tmp = fill(1);
+ int ret = decompress_next_from(&stream, tmp, 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 +83,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;
}
diff --git a/index-pack.c b/index-pack.c
index 30d7837..929de39 100644
--- a/index-pack.c
+++ b/index-pack.c
@@ -173,7 +173,9 @@ static void *unpack_entry_data(unsigned long offset, unsigned long size)
decompress_into(&stream, buf, size);
for (;;) {
- int ret = decompress_next_from(&stream, fill(1), input_len, Z_NO_FLUSH);
+ /* fill() modifies len, so be sure is evaluated as first */
+ void* tmp = fill(1);
+ int ret = decompress_next_from(&stream, tmp, input_len, Z_NO_FLUSH);
use(input_len - stream.avail_in);
if (stream.total_out == size && ret == Z_STREAM_END)
break;
--
1.5.4.rc4.39.g524a
next prev parent reply other threads:[~2008-02-02 11:38 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-02 11:35 [PATCH 01/11] Introduce stream compress helpers Marco Costalba
2008-02-02 11:35 ` [PATCH 02/11] Use new compress helpers in git files Marco Costalba
2008-02-02 11:35 ` [PATCH 03/11] Use new compress helpers in fast-import Marco Costalba
2008-02-02 11:35 ` [PATCH 04/11] Use new compress helpers in http-push.c Marco Costalba
2008-02-02 11:35 ` [PATCH 05/11] Use new compress helpers in sha1_file.c Marco Costalba
2008-02-02 11:35 ` [PATCH 06/11] Better error handling in compress_all() Marco Costalba
2008-02-02 11:35 ` [PATCH 07/11] Introduce stream decompress helpers Marco Costalba
2008-02-02 11:35 ` [PATCH 08/11] Use new decompress_all() helper in git Marco Costalba
2008-02-02 11:35 ` [PATCH 09/11] Convert http-push.c and http-walker.c Marco Costalba
2008-02-02 11:35 ` Marco Costalba [this message]
2008-02-02 11:35 ` [PATCH 11/11] Convert sha1_file.c to use decompress helpers Marco Costalba
2008-02-04 2:08 ` [PATCH 10/11] Convert builtin-pack/unpack Junio C Hamano
2008-02-04 2:07 ` [PATCH 08/11] Use new decompress_all() helper in git Junio C Hamano
2008-02-04 2:07 ` [PATCH 07/11] Introduce stream decompress helpers Junio C Hamano
2008-02-03 22:54 ` [PATCH 06/11] Better error handling in compress_all() Junio C Hamano
2008-02-03 22:53 ` [PATCH 04/11] Use new compress helpers in http-push.c Junio C Hamano
2008-02-03 22:53 ` [PATCH 03/11] Use new compress helpers in fast-import Junio C Hamano
2008-02-04 1:48 ` Shawn O. Pearce
2008-02-04 1:41 ` Shawn O. Pearce
2008-02-03 22:54 ` [PATCH 02/11] Use new compress helpers in git files Junio C Hamano
2008-02-03 22:53 ` [PATCH 01/11] Introduce stream compress helpers Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1201952156-6764-10-git-send-email-mcostalba@gmail.com \
--to=mcostalba@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).