]> git.saurik.com Git - apple/libc.git/blame - gen/FreeBSD/lockf.c.patch
Libc-763.12.tar.gz
[apple/libc.git] / gen / FreeBSD / lockf.c.patch
CommitLineData
1f2f436a
A
1--- lockf.c.orig 2009-11-07 15:52:44.000000000 -0800
2+++ lockf.c 2009-11-07 16:04:57.000000000 -0800
3@@ -31,6 +31,13 @@
224c7076 4 #include <sys/cdefs.h>
1f2f436a 5 __FBSDID("$FreeBSD: src/lib/libc/gen/lockf.c,v 1.10 2009/03/04 01:01:26 delphij Exp $");
224c7076
A
6
7+#ifdef VARIANT_CANCELABLE
8+int __fcntl(int, int, void *);
9+#else /* !VARIANT_CANCELABLE */
10+int __fcntl_nocancel(int, int, void *);
11+#endif /* VARIANT_CANCELABLE */
12+
13+
14 #include "namespace.h"
15 #include <errno.h>
16 #include <fcntl.h>
1f2f436a 17@@ -62,9 +69,14 @@ lockf(int filedes, int function, off_t s
224c7076
A
18 break;
19 case F_TEST:
20 fl.l_type = F_WRLCK;
21- if (_fcntl(filedes, F_GETLK, &fl) == -1)
22+#ifdef VARIANT_CANCELABLE
23+ if (__fcntl(filedes, F_GETLK, &fl) == -1)
24 return (-1);
1f2f436a 25- if (fl.l_type == F_UNLCK || (fl.l_sysid == 0 && fl.l_pid == getpid()))
224c7076
A
26+#else /* !VARIANT_CANCELABLE */
27+ if (__fcntl_nocancel(filedes, F_GETLK, &fl) == -1)
28+ return (-1);
29+#endif /* VARIANT_CANCELABLE */
1f2f436a 30+ if (fl.l_type == F_UNLCK || fl.l_pid == getpid())
224c7076
A
31 return (0);
32 errno = EAGAIN;
1f2f436a
A
33 return (-1);
34@@ -75,5 +87,10 @@ lockf(int filedes, int function, off_t s
224c7076
A
35 /* NOTREACHED */
36 }
37
38- return (_fcntl(filedes, cmd, &fl));
39+#ifdef VARIANT_CANCELABLE
1f2f436a 40+ return (__fcntl(filedes, cmd, &fl));
224c7076 41+#else /* !VARIANT_CANCELABLE */
1f2f436a 42+ return (__fcntl_nocancel(filedes, cmd, &fl));
224c7076
A
43+#endif /* VARIANT_CANCELABLE */
44 }
45+