Skip to content

Commit

Permalink
gc: use tempfile module to handle gc.pid file
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael Haggerty authored and Junio C Hamano committed Aug 12, 2015
1 parent 00539ce commit ebebeae
Showing 1 changed file with 5 additions and 20 deletions.
25 changes: 5 additions & 20 deletions builtin/gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
*/

#include "builtin.h"
#include "tempfile.h"
#include "lockfile.h"
#include "parse-options.h"
#include "run-command.h"
Expand Down Expand Up @@ -42,20 +43,7 @@ static struct argv_array prune = ARGV_ARRAY_INIT;
static struct argv_array prune_worktrees = ARGV_ARRAY_INIT;
static struct argv_array rerere = ARGV_ARRAY_INIT;

static char *pidfile;

static void remove_pidfile(void)
{
if (pidfile)
unlink(pidfile);
}

static void remove_pidfile_on_signal(int signo)
{
remove_pidfile();
sigchain_pop(signo);
raise(signo);
}
static struct tempfile pidfile;

static void git_config_date_string(const char *key, const char **output)
{
Expand Down Expand Up @@ -201,7 +189,7 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
int fd;
char *pidfile_path;

if (pidfile)
if (is_tempfile_active(&pidfile))
/* already locked */
return NULL;

Expand Down Expand Up @@ -248,11 +236,8 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
write_in_full(fd, sb.buf, sb.len);
strbuf_release(&sb);
commit_lock_file(&lock);

pidfile = pidfile_path;
sigchain_push_common(remove_pidfile_on_signal);
atexit(remove_pidfile);

register_tempfile(&pidfile, pidfile_path);
free(pidfile_path);
return NULL;
}

Expand Down

0 comments on commit ebebeae

Please sign in to comment.