Re: [PATCH] Rewrite bulk-checkin.c:finish_bulk_checkin() to use a strbuf for handling packname
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:00:03
Sun He [off-list ref] writes:
quoted hunk
Signed-off-by: Sun He <redacted> --- bulk-checkin.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)diff --git a/bulk-checkin.c b/bulk-checkin.c index 118c625..8c47d71 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c@@ -23,7 +23,8 @@ static struct bulk_checkin_state { static void finish_bulk_checkin(struct bulk_checkin_state *state) { unsigned char sha1[20]; - char packname[PATH_MAX]; + char *packname; + struct strbuf sb;
Funny indentation.
quoted hunk
int i; if (!state->f)@@ -43,6 +44,10 @@ static void finish_bulk_checkin(struct bulk_checkin_state *state) close(fd); } + /* 64-1 is more than the sum of len(sha1_to_hex(sha1)) and len(".pack") */ + strbuf_init(&sb,strlen(get_object_directory())+64); + packname = sb.buf; + sprintf(packname, "%s/pack/pack-", get_object_directory());
If you are using strbuf why not use strbuf_addf() instead? Then you do not have to worry about "Is 64-1 enough?" and things like that.
quoted hunk
finish_tmp_packfile(packname, state->pack_tmp_name, state->written, state->nr_written,@@ -54,6 +59,9 @@ clear_exit: free(state->written); memset(state, 0, sizeof(*state)); + /* release sb space */ + strbuf_release(&sb);
The function name is more than enough to explain what it does. Drop that comment.
/* Make objects we just wrote available to ourselves */ reprepare_packed_git(); }