summaryrefslogtreecommitdiff
path: root/lockfile.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-08-12 01:03:47 -0700
committerJunio C Hamano <junkio@cox.net>2006-08-12 17:08:25 -0700
commit40aaae88adfe05be435b7bd17093d49869f3276f (patch)
treecbc2c6410884604c15a4301841b23e658cf2096a /lockfile.c
parentfd7bcfb524a3313ef5361bdd8493ba50635f50f0 (diff)
downloadgit-40aaae88adfe05be435b7bd17093d49869f3276f.tar.gz
Better error message when we are unable to lock the index file
Most of the callers except the one in refs.c use the function to update the index file. Among the index writers, everybody except write-tree dies if they cannot open it for writing. This gives the function an extra argument, to tell it to die when it cannot create a new file as the lockfile. The only caller that does not have to die is write-tree, because updating the index for the cache-tree part is optional and not being able to do so does not affect the correctness. I think we do not have to be so careful and make the failure into die() the same way as other callers, but that would be a different patch. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'lockfile.c')
-rw-r--r--lockfile.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/lockfile.c b/lockfile.c
index 2346e0e9ef..2a2fea3cb6 100644
--- a/lockfile.c
+++ b/lockfile.c
@@ -22,7 +22,7 @@ static void remove_lock_file_on_signal(int signo)
raise(signo);
}
-int hold_lock_file_for_update(struct lock_file *lk, const char *path)
+static int lock_file(struct lock_file *lk, const char *path)
{
int fd;
sprintf(lk->filename, "%s.lock", path);
@@ -41,6 +41,14 @@ int hold_lock_file_for_update(struct lock_file *lk, const char *path)
return fd;
}
+int hold_lock_file_for_update(struct lock_file *lk, const char *path, int die_on_error)
+{
+ int fd = lock_file(lk, path);
+ if (fd < 0 && die_on_error)
+ die("unable to create '%s': %s", path, strerror(errno));
+ return fd;
+}
+
int commit_lock_file(struct lock_file *lk)
{
char result_file[PATH_MAX];