X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Famflock-posix.c;fp=common-src%2Famflock-posix.c;h=4e2af7bb6b12ef894574753bdebd2eb68620566c;hb=94a044f90357edefa6f4ae9f0b1d5885b0e34aee;hp=0000000000000000000000000000000000000000;hpb=d3b2175e084f88c8736ad7073eacbf4670147aec;p=debian%2Famanda diff --git a/common-src/amflock-posix.c b/common-src/amflock-posix.c new file mode 100644 index 0000000..4e2af7b --- /dev/null +++ b/common-src/amflock-posix.c @@ -0,0 +1,78 @@ +/* + * Amanda, The Advanced Maryland Automatic Network Disk Archiver + * Copyright (c) 1991-1998 University of Maryland at College Park + * All Rights Reserved. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of U.M. not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. U.M. makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M. + * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Authors: the Amanda Development Team. Its members are listed in a + * file named AUTHORS, in the root directory of this distribution. + */ + +/* moved from amflock.c by Dustin J. Mitchell */ + +#include "amanda.h" + +static int +posix_lock( + int fd, + G_GNUC_UNUSED char *resource) +{ + struct flock lock; + + lock.l_type = F_WRLCK; + lock.l_start = 0; + lock.l_whence = SEEK_SET; + lock.l_len = 0; /* to EOF */ + return fcntl(fd, F_SETLKW, &lock); +} + +static int +posix_rolock( + int fd, + G_GNUC_UNUSED char *resource) +{ + struct flock lock; + + lock.l_type = F_RDLCK; + lock.l_start = 0; + lock.l_whence = SEEK_SET; + lock.l_len = 0; /* to EOF */ + return fcntl(fd, F_SETLKW, &lock); +} + +static int +posix_unlock( + int fd, + G_GNUC_UNUSED char *resource) +{ + struct flock lock; + + lock.l_type = F_UNLCK; + lock.l_start = 0; + lock.l_whence = SEEK_SET; + lock.l_len = 0; /* to EOF */ + return fcntl(fd, F_SETLK, &lock); +} + +amflock_impl_t amflock_posix_impl = { + posix_lock, + posix_rolock, + posix_unlock, + "posix" +};