From acc1eb6ac92b7742f7662dd70c0536c91fa708ad Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Tue, 3 Nov 2015 16:43:36 +0100 Subject: [PATCH] mx_flock: export mx_flock_free() to free without releasing lock --- mx_flock.c | 12 +++++++----- mx_flock.h | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/mx_flock.c b/mx_flock.c index bdbbaf30..f6939f22 100644 --- a/mx_flock.c +++ b/mx_flock.c @@ -58,11 +58,7 @@ static inline void _flock_free(struct mx_flock *lock) if (!lock) return; - if (lock->fname) - mx_free_null(lock->fname); - - if (lock->fd >= 0) - _flock_close(lock); + mx_free_null(lock->fname); free(lock); } @@ -112,6 +108,7 @@ struct mx_flock *mx_flock(int operation, char *fmt, ...) if (errno == EWOULDBLOCK) return lock; mx_log_err("flock(): %m"); + _flock_close(lock); _flock_free(lock); return NULL; } @@ -155,3 +152,8 @@ int mx_funlock(struct mx_flock *lock) return res; } + +void mx_flock_free(struct mx_flock *lock) +{ + _flock_free(lock); +} diff --git a/mx_flock.h b/mx_flock.h index 22725383..34ab4e8d 100644 --- a/mx_flock.h +++ b/mx_flock.h @@ -10,5 +10,6 @@ struct mx_flock { struct mx_flock *mx_flock(int operation, char *fmt, ...); int mx_funlock(struct mx_flock *lock); +void mx_flock_free(struct mx_flock *lock); #endif