This series applies on top of the series "Lockfile correctness and refactoring" (Junio's branch mh/lockfile). There are already two callers that write to lockfiles using stdio. But they currently need intimate knowledge of the lockfile implementation to work correctly; for example, they have to call fclose() themselves and set lk->fd to -1 to prevent the file from being closed again. This is awkward and error-prone. So provide official API support for stdio-based access to lockfiles. Add a new function fdopen_lock_file(), which returns a (FILE *) associated with an open lockfile, and teach close_lock_file() (and therefore also commit_lock_file(), rollback_lock_file(), etc.) to use fclose() instead of close() on lockfiles for which fdopen_lock_file() has been called. ...except in the signal handler, where calling fclose() is not permitted. In the signal handler call close() on any still-open lockfiles regardless of whether they have been fdopen()ed. Since the very next step is to delete the file, this should be OK. The second and third patches rewrite the two callers who currently fdopen() lockfiles to use the new function. I didn't look around for other lockfile users that might be simplified and/or sped up by converting them to use stdio; probably there are some. This improvement was initially discussed when the second fdopen() callsite was added [1] and also when discussing inconsistencies between the documentation and real life in the context of the mh/lockfile patch series [2]. Michael [1] http://thread.gmane.org/gmane.comp.version-control.git/256729/focus=256734 [2] http://thread.gmane.org/gmane.comp.version-control.git/257504/focus=257553 Michael Haggerty (3): fdopen_lock_file(): access a lockfile using stdio dump_marks(): reimplement using fdopen_lock_file() commit_packed_refs(): reimplement using fdopen_lock_file() Documentation/technical/api-lockfile.txt | 34 +++++++++++++++-------- fast-import.c | 21 ++------------- lockfile.c | 46 ++++++++++++++++++++++++++++---- lockfile.h | 4 +++ refs.c | 5 +--- 5 files changed, 71 insertions(+), 39 deletions(-) -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html