aboutsummaryrefslogtreecommitdiff
path: root/credential-cache--daemon.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-08-25 14:57:09 -0700
committerJunio C Hamano <gitster@pobox.com>2015-08-25 14:57:09 -0700
commitdb86e61cbbc4c59a0886366bbf392498e64b53c8 (patch)
tree8b92645b8adeddaf02caa483579c64dbc09370fe /credential-cache--daemon.c
parent424f89f098a045785471cccb4f7307cc5b05bc54 (diff)
parent9e9033166b3a6b34aad917891b9210fa194fdfd9 (diff)
downloadgit-db86e61cbbc4c59a0886366bbf392498e64b53c8.tar.xz
Merge branch 'mh/tempfile'
The "lockfile" API has been rebuilt on top of a new "tempfile" API. * mh/tempfile: credential-cache--daemon: use tempfile module credential-cache--daemon: delete socket from main() gc: use tempfile module to handle gc.pid file lock_repo_for_gc(): compute the path to "gc.pid" only once diff: use tempfile module setup_temporary_shallow(): use tempfile module write_shared_index(): use tempfile module register_tempfile(): new function to handle an existing temporary file tempfile: add several functions for creating temporary files prepare_tempfile_object(): new function, extracted from create_tempfile() tempfile: a new module for handling temporary files commit_lock_file(): use get_locked_file_path() lockfile: add accessor get_lock_file_path() lockfile: add accessors get_lock_file_fd() and get_lock_file_fp() create_bundle(): duplicate file descriptor to avoid closing it twice lockfile: move documentation to lockfile.h and lockfile.c
Diffstat (limited to 'credential-cache--daemon.c')
-rw-r--r--credential-cache--daemon.c25
1 files changed, 6 insertions, 19 deletions
diff --git a/credential-cache--daemon.c b/credential-cache--daemon.c
index c2f00498f6..eef6fce4c7 100644
--- a/credential-cache--daemon.c
+++ b/credential-cache--daemon.c
@@ -1,23 +1,11 @@
#include "cache.h"
+#include "tempfile.h"
#include "credential.h"
#include "unix-socket.h"
#include "sigchain.h"
#include "parse-options.h"
-static const char *socket_path;
-
-static void cleanup_socket(void)
-{
- if (socket_path)
- unlink(socket_path);
-}
-
-static void cleanup_socket_on_signal(int sig)
-{
- cleanup_socket();
- sigchain_pop(sig);
- raise(sig);
-}
+static struct tempfile socket_file;
struct credential_cache_entry {
struct credential item;
@@ -221,7 +209,6 @@ static void serve_cache(const char *socket_path, int debug)
; /* nothing */
close(fd);
- unlink(socket_path);
}
static const char permissions_advice[] =
@@ -257,6 +244,7 @@ static void check_socket_directory(const char *path)
int main(int argc, const char **argv)
{
+ const char *socket_path;
static const char *usage[] = {
"git-credential-cache--daemon [opts] <socket_path>",
NULL
@@ -273,12 +261,11 @@ int main(int argc, const char **argv)
if (!socket_path)
usage_with_options(usage, options);
- check_socket_directory(socket_path);
-
- atexit(cleanup_socket);
- sigchain_push_common(cleanup_socket_on_signal);
+ check_socket_directory(socket_path);
+ register_tempfile(&socket_file, socket_path);
serve_cache(socket_path, debug);
+ delete_tempfile(&socket_file);
return 0;
}