[newlib-cygwin] Cygwin: mq_open: set filesize using ftruncate
Corinna Vinschen
corinna@sourceware.org
Fri Apr 30 18:32:59 GMT 2021
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=715c4208e47395bbe021c67f5bf86d08cb802905
commit 715c4208e47395bbe021c67f5bf86d08cb802905
Author: Corinna Vinschen <corinna@vinschen.de>
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 <corinna@vinschen.de>
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 */
More information about the Cygwin-cvs
mailing list