From: Samuel Thibault Date: Mon, 19 Nov 2018 19:22:30 +0000 (+0100) Subject: hurd: Support lockf at offset 0 with size 0 or 1. X-Git-Tag: glibc-2.29~290 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b15b1a959040fe8cdfbc51092a7b72032f6c9b86;p=thirdparty%2Fglibc.git hurd: Support lockf at offset 0 with size 0 or 1. * sysdeps/mach/hurd/f_setlk.c: Include . (__f_setlk): When whence is SEEK_CUR, use __lseek64 to convert it to SEEK_SET. --- diff --git a/ChangeLog b/ChangeLog index fdd7bf30810..bb2824c715b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2018-11-19 Samuel Thibault + + * sysdeps/mach/hurd/f_setlk.c: Include . + (__f_setlk): When whence is SEEK_CUR, use __lseek64 to convert it to + SEEK_SET. + 2018-11-19 Mao Han * 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 718af67e328..edfb292dbf1 100644 --- a/sysdeps/mach/hurd/f_setlk.c +++ b/sysdeps/mach/hurd/f_setlk.c @@ -19,6 +19,7 @@ #include #include #include +#include #include /* 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: