From: Marco Costalba <mcostalba@gmail.com>
To: gitster@pobox.com
Cc: git@vger.kernel.org, Marco Costalba <mcostalba@gmail.com>
Subject: [PATCH 02/11] Use new compress helpers in git files
Date: Sat, 2 Feb 2008 12:35:47 +0100 [thread overview]
Message-ID: <1201952156-6764-2-git-send-email-mcostalba@gmail.com> (raw)
In-Reply-To: <1201952156-6764-1-git-send-email-mcostalba@gmail.com>
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@gmail.com>
---
archive-zip.c | 28 +++-------------------------
builtin-pack-objects.c | 19 +++----------------
diff.c | 22 +++++-----------------
index-pack.c | 20 +++-----------------
4 files changed, 14 insertions(+), 75 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, unsigned int n)
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 d3efeff..991a30f 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,19 +431,7 @@ 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;
+ datalen = compress_all(pack_compression_level, buf, size, &out);
/*
* The object header is a byte of 'type' followed by zero or
diff --git a/diff.c b/diff.c
index d464fe3..9eb9672 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 *sha1)
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.rc4.39.g524a
next prev parent reply other threads:[~2008-02-02 11:37 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 ` Marco Costalba [this message]
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 ` [PATCH 10/11] Convert builtin-pack/unpack Marco Costalba
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-2-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).