https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=715c4208e47395bbe021c67f5bf86d08cb802905
commit 715c4208e47395bbe021c67f5bf86d08cb802905 Author: Corinna Vinschen <[email protected]> Date: Fri Apr 30 18:15:20 2021 +0200 Cygwin: mq_open: set filesize using ftruncate ftruncate is leaner than lseek/write. Signed-off-by: Corinna Vinschen <[email protected]> Diff: --- winsup/cygwin/posix_ipc.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/posix_ipc.cc b/winsup/cygwin/posix_ipc.cc index 89ec7dbef..fdecbca75 100644 --- a/winsup/cygwin/posix_ipc.cc +++ b/winsup/cygwin/posix_ipc.cc @@ -23,6 +23,8 @@ details. */ #include <mqueue.h> #include <semaphore.h> +extern "C" int ftruncate64 (int fd, off_t length); + /* The prefix_len is the length of the path prefix ncluding trailing "/" (or "/sem." for semaphores) as well as the trailing NUL. */ static struct @@ -471,9 +473,7 @@ mq_open (const char *name, int oflag, ...) msgsize = MSGSIZE (attr->mq_msgsize); filesize = sizeof (struct mq_hdr) + (attr->mq_maxmsg * (sizeof (struct msg_hdr) + msgsize)); - if (lseek64 (fd, filesize - 1, SEEK_SET) == -1) - __leave; - if (write (fd, "", 1) == -1) + if (ftruncate64 (fd, filesize) == -1) __leave; /* Memory map the file */
