diff options
author | Brandon Casey <casey@nrlssc.navy.mil> | 2008-01-16 13:14:30 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-01-16 15:36:10 -0800 |
commit | b531394d5829b22fd40e38e1d3aa6e97cb5b84ef (patch) | |
tree | f7dd355059289985779ba34e451b53dc7b235d76 /refs.c | |
parent | 4ed7cd3ab07f7c721daf4241fe1dac306fefd1fb (diff) | |
download | git-b531394d5829b22fd40e38e1d3aa6e97cb5b84ef.tar.gz |
refs.c: rework ref_locks by abstracting from underlying struct lock_file
Instead of calling close_lock_file() and commit_lock_file() directly,
which take a struct lock_file argument, add two new functions:
close_ref() and commit_ref(), which handle calling the previous
lock_file functions and modifying the ref_lock structure.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -1018,6 +1018,22 @@ int rename_ref(const char *oldref, const char *newref, const char *logmsg) return 1; } +static int close_ref(struct ref_lock *lock) +{ + if (close_lock_file(lock->lk)) + return -1; + lock->lock_fd = -1; + return 0; +} + +static int commit_ref(struct ref_lock *lock) +{ + if (commit_lock_file(lock->lk)) + return -1; + lock->lock_fd = -1; + return 0; +} + void unlock_ref(struct ref_lock *lock) { /* Do not free lock->lk -- atexit() still looks at them */ @@ -1147,7 +1163,7 @@ int write_ref_sha1(struct ref_lock *lock, } if (write_in_full(lock->lock_fd, sha1_to_hex(sha1), 40) != 40 || write_in_full(lock->lock_fd, &term, 1) != 1 - || close_lock_file(lock->lk) < 0) { + || close_ref(lock) < 0) { error("Couldn't write %s", lock->lk->filename); unlock_ref(lock); return -1; @@ -1180,12 +1196,11 @@ int write_ref_sha1(struct ref_lock *lock, !strcmp(head_ref, lock->ref_name)) log_ref_write("HEAD", lock->old_sha1, sha1, logmsg); } - if (commit_lock_file(lock->lk)) { + if (commit_ref(lock)) { error("Couldn't set %s", lock->ref_name); unlock_ref(lock); return -1; } - lock->lock_fd = -1; unlock_ref(lock); return 0; } |