summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2021-11-29 13:46:48 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2021-11-29 13:46:48 +0900
commit858bcd4343ac40566825cfa861ee60bcc54cb6c8 (patch)
tree427b03a81f3a5f0518746488b441ab74169d7da3 /tests
parent50e0f32b19356fd7c64c799192379ff2204cd8a3 (diff)
downloadlibgpg-error-858bcd4343ac40566825cfa861ee60bcc54cb6c8.tar.gz
tests,w32: Use CreatePipe and es_sysopen.
* tests/t-poll.c (create_pipe): Use CreatePipe. -- Since POSIX pipe with file descriptor is not supported on Windows as pollable, use Win32 Pipe instead. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/t-poll.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/tests/t-poll.c b/tests/t-poll.c
index ec79416..11e6d51 100644
--- a/tests/t-poll.c
+++ b/tests/t-poll.c
@@ -177,28 +177,45 @@ static void
create_pipe (estream_t *r_in, estream_t *r_out)
{
gpg_error_t err;
+#ifdef _WIN32
+ HANDLE pipe_r;
+ HANDLE pipe_w;
+#else
int filedes[2];
+#endif
+ es_syshd_t syshd[2];
#ifdef _WIN32
- if (_pipe (filedes, 512, 0) == -1)
+ if (CreatePipe (&pipe_r, &pipe_w, NULL, 512) == 0)
+ die ("error creating a pipe: rc=%d\n", (int)GetLastError ());
+
+ syshd[0].type = syshd[1].type = ES_SYSHD_HANDLE;
+ syshd[0].u.handle = pipe_r;
+ syshd[1].u.handle = pipe_w;
+
+ show ("created pipe [%p, %p]\n", pipe_r, pipe_w);
#else
if (pipe (filedes) == -1)
-#endif
{
err = gpg_error_from_syserror ();
die ("error creating a pipe: %s\n", gpg_strerror (err));
}
+ syshd[0].type = syshd[1].type = ES_SYSHD_FD;
+ syshd[0].u.fd = filedes[0];
+ syshd[1].u.fd = filedes[1];
+
show ("created pipe [%d, %d]\n", filedes[0], filedes[1]);
+#endif
- *r_in = es_fdopen (filedes[0], "r,pollable");
+ *r_in = es_sysopen (&syshd[0], "r,pollable");
if (!*r_in)
{
err = gpg_error_from_syserror ();
die ("error creating a stream for a pipe: %s\n", gpg_strerror (err));
}
- *r_out = es_fdopen (filedes[1], "w,pollable");
+ *r_out = es_sysopen (&syshd[1], "w,pollable");
if (!*r_out)
{
err = gpg_error_from_syserror ();