dump_marks(): reimplement using fdopen_lock_file()
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
013870cd2c
commit
f70f0565b3
@ -1794,20 +1794,18 @@ static void dump_marks_helper(FILE *f,
|
|||||||
static void dump_marks(void)
|
static void dump_marks(void)
|
||||||
{
|
{
|
||||||
static struct lock_file mark_lock;
|
static struct lock_file mark_lock;
|
||||||
int mark_fd;
|
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
if (!export_marks_file)
|
if (!export_marks_file)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mark_fd = hold_lock_file_for_update(&mark_lock, export_marks_file, 0);
|
if (hold_lock_file_for_update(&mark_lock, export_marks_file, 0) < 0) {
|
||||||
if (mark_fd < 0) {
|
|
||||||
failure |= error("Unable to write marks file %s: %s",
|
failure |= error("Unable to write marks file %s: %s",
|
||||||
export_marks_file, strerror(errno));
|
export_marks_file, strerror(errno));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
f = fdopen(mark_fd, "w");
|
f = fdopen_lock_file(&mark_lock, "w");
|
||||||
if (!f) {
|
if (!f) {
|
||||||
int saved_errno = errno;
|
int saved_errno = errno;
|
||||||
rollback_lock_file(&mark_lock);
|
rollback_lock_file(&mark_lock);
|
||||||
@ -1816,22 +1814,7 @@ static void dump_marks(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Since the lock file was fdopen()'ed, it should not be close()'ed.
|
|
||||||
* Assign -1 to the lock file descriptor so that commit_lock_file()
|
|
||||||
* won't try to close() it.
|
|
||||||
*/
|
|
||||||
mark_lock.fd = -1;
|
|
||||||
|
|
||||||
dump_marks_helper(f, 0, marks);
|
dump_marks_helper(f, 0, marks);
|
||||||
if (ferror(f) || fclose(f)) {
|
|
||||||
int saved_errno = errno;
|
|
||||||
rollback_lock_file(&mark_lock);
|
|
||||||
failure |= error("Unable to write marks file %s: %s",
|
|
||||||
export_marks_file, strerror(saved_errno));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (commit_lock_file(&mark_lock)) {
|
if (commit_lock_file(&mark_lock)) {
|
||||||
failure |= error("Unable to commit marks file %s: %s",
|
failure |= error("Unable to commit marks file %s: %s",
|
||||||
export_marks_file, strerror(errno));
|
export_marks_file, strerror(errno));
|
||||||
|
Loading…
Reference in New Issue
Block a user