[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[hurd,commited] hurd: Support lockf at offset 0 with size 0 or 1.
From: |
Samuel Thibault |
Subject: |
[hurd,commited] hurd: Support lockf at offset 0 with size 0 or 1. |
Date: |
Mon, 19 Nov 2018 20:27:27 +0100 |
* sysdeps/mach/hurd/f_setlk.c: Include <unistd.h>.
(__f_setlk): When whence is SEEK_CUR, use __lseek64 to convert it to
SEEK_SET.
---
ChangeLog | 6 ++++++
sysdeps/mach/hurd/f_setlk.c | 13 +++++++++++++
2 files changed, 19 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index fdd7bf3081..bb2824c715 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-19 Samuel Thibault <address@hidden>
+
+ * sysdeps/mach/hurd/f_setlk.c: Include <unistd.h>.
+ (__f_setlk): When whence is SEEK_CUR, use __lseek64 to convert it to
+ SEEK_SET.
+
2018-11-19 Mao Han <address@hidden>
* scripts/config.guess: Update to version 2018-08-29.
diff --git a/sysdeps/mach/hurd/f_setlk.c b/sysdeps/mach/hurd/f_setlk.c
index 718af67e32..edfb292dbf 100644
--- a/sysdeps/mach/hurd/f_setlk.c
+++ b/sysdeps/mach/hurd/f_setlk.c
@@ -19,6 +19,7 @@
#include <sys/types.h>
#include <sys/file.h>
#include <fcntl.h>
+#include <unistd.h>
#include <errno.h>
/* XXX
@@ -45,6 +46,18 @@ __f_setlk (int fd, int type, int whence, __off64_t start,
__off64_t len, int wai
if (cmd != LOCK_UN && wait == 0)
cmd |= LOCK_NB;
+ if (whence == SEEK_CUR)
+ {
+ /* In case the target position is 0, we can support it below. */
+ __off64_t cur = __lseek64 (fd, 0, SEEK_CUR);
+
+ if (cur >= 0)
+ {
+ start = cur + start;
+ whence = SEEK_SET;
+ }
+ }
+
switch (whence)
{
case SEEK_SET:
--
2.19.1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [hurd,commited] hurd: Support lockf at offset 0 with size 0 or 1.,
Samuel Thibault <=