summaryrefslogtreecommitdiff
path: root/index.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-06-06 12:51:49 -0700
committerJunio C Hamano <junkio@cox.net>2006-06-06 14:30:58 -0700
commit021b6e454944a4fba878651ebf9bfe0a3f6c3077 (patch)
tree125f7ae01b9c959782e345baa03c7c786cc3f4ce /index.c
parentdd8239f997962d94162790039b008acb6068a242 (diff)
downloadgit-021b6e454944a4fba878651ebf9bfe0a3f6c3077.tar.gz
Make index file locking code reusable to others.
The framework to create lockfiles that are removed at exit is first used to reliably write the index file, but it is applicable to other things, so stop calling it "cache_file". This also rewords a few remaining error message that called the index file "cache file". Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'index.c')
-rw-r--r--index.c57
1 files changed, 0 insertions, 57 deletions
diff --git a/index.c b/index.c
deleted file mode 100644
index f92b960ae4..0000000000
--- a/index.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2005, Junio C Hamano
- */
-#include <signal.h>
-#include "cache.h"
-
-static struct cache_file *cache_file_list;
-
-static void remove_lock_file(void)
-{
- while (cache_file_list) {
- if (cache_file_list->lockfile[0])
- unlink(cache_file_list->lockfile);
- cache_file_list = cache_file_list->next;
- }
-}
-
-static void remove_lock_file_on_signal(int signo)
-{
- remove_lock_file();
- signal(SIGINT, SIG_DFL);
- raise(signo);
-}
-
-int hold_index_file_for_update(struct cache_file *cf, const char *path)
-{
- int fd;
- sprintf(cf->lockfile, "%s.lock", path);
- fd = open(cf->lockfile, O_RDWR | O_CREAT | O_EXCL, 0666);
- if (fd >=0 && !cf->next) {
- cf->next = cache_file_list;
- cache_file_list = cf;
- signal(SIGINT, remove_lock_file_on_signal);
- atexit(remove_lock_file);
- }
- return fd;
-}
-
-int commit_index_file(struct cache_file *cf)
-{
- char indexfile[PATH_MAX];
- int i;
- strcpy(indexfile, cf->lockfile);
- i = strlen(indexfile) - 5; /* .lock */
- indexfile[i] = 0;
- i = rename(cf->lockfile, indexfile);
- cf->lockfile[0] = 0;
- return i;
-}
-
-void rollback_index_file(struct cache_file *cf)
-{
- if (cf->lockfile[0])
- unlink(cf->lockfile);
- cf->lockfile[0] = 0;
-}
-