summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/flock.c
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/flock.c')
-rw-r--r--winsup/cygwin/flock.c89
1 files changed, 0 insertions, 89 deletions
diff --git a/winsup/cygwin/flock.c b/winsup/cygwin/flock.c
deleted file mode 100644
index 09ea2b6db..000000000
--- a/winsup/cygwin/flock.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* One of many ways to emulate flock() on top of real (good) POSIX locks.
- *
- * This flock() emulation is based upon source taken from the Red Hat
- * implementation used in their imap-2002d SRPM.
- *
- * $RH: flock.c,v 1.2 2000/08/23 17:07:00 nalin Exp $
- */
-/* flock.c
-
- Copyright 2003 Red Hat, Inc.
-
- This file is part of Cygwin.
-
- This software is a copyrighted work licensed under the terms of the
- Cygwin license. Please consult the file "CYGWIN_LICENSE" for
- details. */
-
-#include <sys/file.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-int
-flock (int fd, int operation)
-{
- int i, cmd;
- struct flock l = { 0, 0, 0, 0, 0 };
- if (operation & LOCK_NB)
- {
- cmd = F_SETLK;
- }
- else
- {
- cmd = F_SETLKW;
- }
- l.l_whence = SEEK_SET;
- switch (operation & (~LOCK_NB))
- {
- case LOCK_EX:
- l.l_type = F_WRLCK;
- i = fcntl (fd, cmd, &l);
- if (i == -1)
- {
- if ((errno == EAGAIN) || (errno == EACCES))
- {
- errno = EWOULDBLOCK;
- }
- }
- break;
- case LOCK_SH:
- l.l_type = F_RDLCK;
- i = fcntl (fd, cmd, &l);
- if (i == -1)
- {
- if ((errno == EAGAIN) || (errno == EACCES))
- {
- errno = EWOULDBLOCK;
- }
- }
- break;
- case LOCK_UN:
- l.l_type = F_UNLCK;
- i = fcntl (fd, cmd, &l);
- if (i == -1)
- {
- if ((errno == EAGAIN) || (errno == EACCES))
- {
- errno = EWOULDBLOCK;
- }
- }
- break;
- default:
- i = -1;
- errno = EINVAL;
- break;
- }
- return i;
-}
-
-#ifdef FLOCK_EMULATE_IS_MAIN
-int
-main (int argc, char **argv)
-{
- int fd = open (argv[1], O_WRONLY);
- flock (fd, LOCK_EX);
- return 0;
-}
-#endif