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>maint
							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
	
	 Michael Haggerty
						Michael Haggerty