From: Pierre Habouzit Date: Thu, 6 Sep 2007 11:20:08 +0000 (+0200) Subject: mktree: Simplify write_tree() using strbuf API X-Git-Tag: v1.5.4-rc0~295^2~30 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=d52bc66152834dff3fb5f32a54f6ed57730f58c6;p=git.git mktree: Simplify write_tree() using strbuf API Signed-off-by: Pierre Habouzit Signed-off-by: Junio C Hamano --- diff --git a/mktree.c b/mktree.c index 86de5eb5f..2e84889c0 100644 --- a/mktree.c +++ b/mktree.c @@ -44,30 +44,23 @@ static int ent_compare(const void *a_, const void *b_) static void write_tree(unsigned char *sha1) { - char *buffer; - unsigned long size, offset; + struct strbuf buf; + size_t size; int i; qsort(entries, used, sizeof(*entries), ent_compare); for (size = i = 0; i < used; i++) size += 32 + entries[i]->len; - buffer = xmalloc(size); - offset = 0; + strbuf_init(&buf); + strbuf_grow(&buf, size); for (i = 0; i < used; i++) { struct treeent *ent = entries[i]; - - if (offset + ent->len + 100 < size) { - size = alloc_nr(offset + ent->len + 100); - buffer = xrealloc(buffer, size); - } - offset += sprintf(buffer + offset, "%o ", ent->mode); - offset += sprintf(buffer + offset, "%s", ent->name); - buffer[offset++] = 0; - hashcpy((unsigned char*)buffer + offset, ent->sha1); - offset += 20; + strbuf_addf(&buf, "%o %s%c", ent->mode, ent->name, '\0'); + strbuf_add(&buf, ent->sha1, 20); } - write_sha1_file(buffer, offset, tree_type, sha1); + + write_sha1_file(buf.buf, buf.len, tree_type, sha1); } static const char mktree_usage[] = "git-mktree [-z]";