get_locked_file_path(): new function
Add a function to return the path of the file that is locked by a lock_file object. This reduces the knowledge that callers have to have about the lock_file layout. Suggested-by: Ronnie Sahlberg <sahlberg@google.com> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
316683bd37
commit
ec38b4e482
@ -143,6 +143,11 @@ hold_lock_file_for_append::
|
|||||||
the existing contents of the file (if any) to the lockfile and
|
the existing contents of the file (if any) to the lockfile and
|
||||||
position its write pointer at the end of the file.
|
position its write pointer at the end of the file.
|
||||||
|
|
||||||
|
get_locked_file_path::
|
||||||
|
|
||||||
|
Return the path of the file that is locked by the specified
|
||||||
|
lock_file object. The caller must free the memory.
|
||||||
|
|
||||||
commit_lock_file::
|
commit_lock_file::
|
||||||
|
|
||||||
Take a pointer to the `struct lock_file` initialized with an
|
Take a pointer to the `struct lock_file` initialized with an
|
||||||
|
1
cache.h
1
cache.h
@ -590,6 +590,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 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_update(struct lock_file *, const char *path, int);
|
||||||
extern int hold_lock_file_for_append(struct lock_file *, const char *path, int);
|
extern int hold_lock_file_for_append(struct lock_file *, const char *path, int);
|
||||||
|
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_to(struct lock_file *, const char *path);
|
||||||
extern int commit_lock_file(struct lock_file *);
|
extern int commit_lock_file(struct lock_file *);
|
||||||
extern int reopen_lock_file(struct lock_file *);
|
extern int reopen_lock_file(struct lock_file *);
|
||||||
|
@ -257,6 +257,15 @@ int hold_lock_file_for_append(struct lock_file *lk, const char *path, int flags)
|
|||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *get_locked_file_path(struct lock_file *lk)
|
||||||
|
{
|
||||||
|
if (!lk->active)
|
||||||
|
die("BUG: get_locked_file_path() called for unlocked object");
|
||||||
|
if (lk->filename.len <= LOCK_SUFFIX_LEN)
|
||||||
|
die("BUG: get_locked_file_path() called for malformed lock object");
|
||||||
|
return xmemdupz(lk->filename.buf, lk->filename.len - LOCK_SUFFIX_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
int close_lock_file(struct lock_file *lk)
|
int close_lock_file(struct lock_file *lk)
|
||||||
{
|
{
|
||||||
int fd = lk->fd;
|
int fd = lk->fd;
|
||||||
|
4
refs.c
4
refs.c
@ -2606,9 +2606,7 @@ static int delete_ref_loose(struct ref_lock *lock, int flag)
|
|||||||
* loose. The loose file name is the same as the
|
* loose. The loose file name is the same as the
|
||||||
* lockfile name, minus ".lock":
|
* lockfile name, minus ".lock":
|
||||||
*/
|
*/
|
||||||
char *loose_filename = xmemdupz(
|
char *loose_filename = get_locked_file_path(lock->lk);
|
||||||
lock->lk->filename.buf,
|
|
||||||
lock->lk->filename.len - LOCK_SUFFIX_LEN);
|
|
||||||
int err = unlink_or_warn(loose_filename);
|
int err = unlink_or_warn(loose_filename);
|
||||||
free(loose_filename);
|
free(loose_filename);
|
||||||
if (err && errno != ENOENT)
|
if (err && errno != ENOENT)
|
||||||
|
Loading…
Reference in New Issue
Block a user