Subject: Re: [PATCH v2 13/16] lock_repo_for_gc(): compute the path to "gc.pid" only once

From: Junio C Hamano <[email-masked]>
Date: Tue, 11 Aug 2015 13:06:28 -0700

Michael Haggerty <[email-masked]> writes:

> Signed-off-by: Michael Haggerty <[email-masked]>
> ---
>  builtin/gc.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/gc.c b/builtin/gc.c
> index 36fe333..c41354b 100644
> --- a/builtin/gc.c
> +++ b/builtin/gc.c
> @@ -199,6 +199,7 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
>  	uintmax_t pid;
>  	FILE *fp;
>  	int fd;
> +	char *pidfile_path;
>  
>  	if (pidfile)
>  		/* already locked */
> @@ -207,12 +208,13 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
>  	if (gethostname(my_host, sizeof(my_host)))
>  		strcpy(my_host, "unknown");
>  
> -	fd = hold_lock_file_for_update(&lock, git_path("gc.pid"),
> +	pidfile_path = git_pathdup("gc.pid");
> +	fd = hold_lock_file_for_update(&lock, pidfile_path,
>  				       LOCK_DIE_ON_ERROR);

Looks correct; somehow this reminded me of the other topic from Peff
to reduce use of git_path() ;-)

> -	pidfile = git_pathdup("gc.pid");
> +	pidfile = pidfile_path;
>  	sigchain_push_common(remove_pidfile_on_signal);
>  	atexit(remove_pidfile);

I wonder if you can reduce the atexit() here by registering this as
a tempfile to be cleared?