Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
gc: use tempfile module to handle gc.pid file
author
Michael Haggerty
<mhagger@alum.mit.edu>
Mon, 10 Aug 2015 09:47:49 +0000
(11:47 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Wed, 12 Aug 2015 21:50:11 +0000
(14:50 -0700)
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/gc.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
00539ce
)
diff --git
a/builtin/gc.c
b/builtin/gc.c
index c41354b5121890134209115f91341ade91537986..bfe589f4978aa7dc300fb97fa773df7b5c168ed4 100644
(file)
--- a/
builtin/gc.c
+++ b/
builtin/gc.c
@@
-11,6
+11,7
@@
*/
#include "builtin.h"
*/
#include "builtin.h"
+#include "tempfile.h"
#include "lockfile.h"
#include "parse-options.h"
#include "run-command.h"
#include "lockfile.h"
#include "parse-options.h"
#include "run-command.h"
@@
-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 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)
{
static void git_config_date_string(const char *key, const char **output)
{
@@
-201,7
+189,7
@@
static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
int fd;
char *pidfile_path;
int fd;
char *pidfile_path;
- if (
pidfile
)
+ if (
is_tempfile_active(&pidfile)
)
/* already locked */
return NULL;
/* already locked */
return NULL;
@@
-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);
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;
}
return NULL;
}