Mercurial > hg > audiodb
view lock.cpp @ 497:9d8aee621afb api-inversion
More libtests fixups.
Include audiodb_close() calls everywhere (whoops).
Add the facility to run tests under valgrind. Unfortunately the
error-exitcode flag doesn't actually cause an error exit if the only
thing wrong is memory leaks, but it will if there are actual memory
errors, which is a start.
author | mas01cr |
---|---|
date | Sat, 10 Jan 2009 16:07:43 +0000 |
parents | 8fb85fbcaba6 |
children | cc2b97d020b1 |
line wrap: on
line source
#include "audioDB.h" int acquire_lock(int fd, bool exclusive) { struct flock lock; int status; lock.l_type = exclusive ? F_WRLCK : F_RDLCK; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; /* "the whole file" */ retry: do { status = fcntl(fd, F_SETLKW, &lock); } while (status != 0 && errno == EINTR); if (status) { if (errno == EAGAIN) { sleep(1); goto retry; } else { return status; } } return 0; } int divest_lock(int fd) { struct flock lock; lock.l_type = F_UNLCK; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; return fcntl(fd, F_SETLKW, &lock); }