diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2014-10-01 13:14:47 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-10-01 14:08:10 -0700 |
commit | 013870cd2cb1b0d6719a7a9123e126a62426520b (patch) | |
tree | 235000196a837c275d3e7d72d06cd3cf197bc9f3 /lockfile.h | |
parent | 697cc8efd944a32ca472337cd6640004c474b788 (diff) | |
download | git-013870cd2cb1b0d6719a7a9123e126a62426520b.tar.gz |
fdopen_lock_file(): access a lockfile using stdio
Add a new function, fdopen_lock_file(), which returns a FILE pointer
open to the lockfile. If a stream is open on a lock_file object, it is
closed using fclose() on commit, rollback, or close_lock_file().
This change will allow callers to use stdio to write to a lockfile
without having to muck around in the internal representation of the
lock_file object (callers will be rewritten in upcoming commits).
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'lockfile.h')
-rw-r--r-- | lockfile.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lockfile.h b/lockfile.h index 9059e8958f..dc066d1783 100644 --- a/lockfile.h +++ b/lockfile.h @@ -34,6 +34,8 @@ * - active is set * - filename holds the filename of the lockfile * - fd holds a file descriptor open for writing to the lockfile + * - fp holds a pointer to an open FILE object if and only if + * fdopen_lock_file() has been called on the object * - owner holds the PID of the process that locked the file * * - Locked, lockfile closed (after successful close_lock_file()). @@ -56,6 +58,7 @@ struct lock_file { struct lock_file *volatile next; volatile sig_atomic_t active; volatile int fd; + FILE *volatile fp; volatile pid_t owner; char on_list; struct strbuf filename; @@ -74,6 +77,7 @@ extern void unable_to_lock_message(const char *path, int err, extern NORETURN void unable_to_lock_die(const char *path, int err); extern int hold_lock_file_for_update(struct lock_file *, const char *path, int); extern int hold_lock_file_for_append(struct lock_file *, const char *path, int); +extern FILE *fdopen_lock_file(struct lock_file *, const char *mode); extern char *get_locked_file_path(struct lock_file *); extern int commit_lock_file_to(struct lock_file *, const char *path); extern int commit_lock_file(struct lock_file *); |