git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Rewrite bulk-checkin.c:finish_bulk_checkin() to use a strbuf for handling packname

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 27, 2014, 19:39 UTC
Message-ID
<xmqq8uswz6np.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1393509601-31312-1-git-send-email-sunheehnus@gmail.com>
Sun He <sunheehnus@gmail.com> writes:
Show 16 quoted lines
> Signed-off-by: Sun He <sunheehnus@gmail.com>
> ---
>  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.
Show 12 quoted lines
>  	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.

Show 8 quoted lines
>  	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();
>  }
Previous: Sun He
Message 2 of 2 in “Rewrite bulk-checkin.c:finish_bulk_checkin() to use a strbuf for handling packname”
  1. Rewrite bulk-checkin.c:finish_bulk_checkin() to use a strbuf for handling packnameSun He, Feb 27, 2014
  2. Junio C HamanoFeb 27, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.