From 38fb7dd00b959eb0f7b017ca02af7313d9241eb4 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Thu, 27 Sep 2007 13:01:54 +0000 Subject: [PATCH] 2007-09-27 Marcus Brinkmann * assuan-pipe-connect.c (pipe_connect_gpgme): Do not close process handle here. Use this function also on Unix systems. gpgme/ 2007-09-27 Marcus Brinkmann * w32-glib-io.c (_gpgme_io_spawn), w32-qt-io.cpp (_gpgme_io_spawn), w32-io.c (_gpgme_io_spawn): Close the process handle, return 0. tests/ 2007-09-27 Marcus Brinkmann * t-engine-info.c (check_engine_info): Fix debug output. * gpg/Makefile.am (tests_unix): New variable. (TESTS): Use it. * gpg/t-support.h (passphrase_cb) [HAVE_W32_SYSTEM]: Use WriteFile instead of write. * gpg/t-wait.c [HAVE_W32_SYSTEM]: Define sleep as _sleep. --- trunk/ChangeLog | 3 +++ trunk/assuan/assuan-pipe-connect.c | 14 +++++++------- trunk/gpgme/ChangeLog | 4 ++++ trunk/gpgme/gpgme.h | 2 +- trunk/gpgme/w32-glib-io.c | 6 +++++- trunk/gpgme/w32-io.c | 6 +++++- trunk/gpgme/w32-qt-io.cpp | 6 +++++- trunk/tests/ChangeLog | 8 ++++++++ trunk/tests/gpg/Makefile.am | 16 +++++++++++----- trunk/tests/gpg/t-support.h | 10 ++++++++++ trunk/tests/gpg/t-wait.c | 6 +++++- trunk/tests/t-engine-info.c | 6 +++--- 12 files changed, 67 insertions(+), 20 deletions(-) diff --git a/trunk/ChangeLog b/trunk/ChangeLog index 553dda1..5cb11bc 100644 --- a/trunk/ChangeLog +++ b/trunk/ChangeLog @@ -1,5 +1,8 @@ 2007-09-27 Marcus Brinkmann + * assuan-pipe-connect.c (pipe_connect_gpgme): Do not close process + handle here. Use this function also on Unix systems. + * assuan-pipe-connect.c (pipe_connect_gpgme): Fix last change. * assuan-pipe-connect.c (pipe_connect_gpgme): New function, use it diff --git a/trunk/assuan/assuan-pipe-connect.c b/trunk/assuan/assuan-pipe-connect.c index 359eb49..e38b787 100644 --- a/trunk/assuan/assuan-pipe-connect.c +++ b/trunk/assuan/assuan-pipe-connect.c @@ -181,6 +181,8 @@ initial_handshake (assuan_context_t *ctx) } +#ifndef _ASSUAN_IN_GPGME_BUILD_ASSUAN + #ifndef HAVE_W32_SYSTEM #define pipe_connect pipe_connect_unix /* Unix version of the pipe connection code. We use an extra macro to @@ -365,6 +367,7 @@ pipe_connect_unix (assuan_context_t *ctx, return initial_handshake (ctx); } #endif /*!HAVE_W32_SYSTEM*/ +#endif /* _ASSUAN_IN_GPGME_BUILD_ASSUAN */ #ifndef HAVE_W32_SYSTEM @@ -550,6 +553,7 @@ socketpair_connect (assuan_context_t *ctx, + #ifdef _ASSUAN_IN_GPGME_BUILD_ASSUAN #define pipe_connect pipe_connect_gpgme @@ -570,7 +574,7 @@ pipe_connect_gpgme (assuan_context_t *ctx, void *atforkvalue) { assuan_error_t err; - int pid; + int res; int rp[2]; int wp[2]; char mypidstr[50]; @@ -631,8 +635,8 @@ pipe_connect_gpgme (assuan_context_t *ctx, child_fds[2].fd = -1; /* Start the process. */ - pid = _gpgme_io_spawn (name, argv, child_fds, child_fds); - if (pid == -1) + res = _gpgme_io_spawn (name, argv, child_fds, child_fds); + if (res == -1) { _assuan_log_printf ("CreateProcess failed: %s\n", strerror (errno)); _gpgme_io_close (rp[0]); @@ -642,12 +646,8 @@ pipe_connect_gpgme (assuan_context_t *ctx, return _assuan_error (ASSUAN_General_Error); } - /* ERR contains the PID. */ (*ctx)->pid = 0; /* We don't use the PID. */ - /* FIXME: Should be done by GPGME. */ - CloseHandle ((HANDLE) pid); /* We don't need to wait for the process. */ - return initial_handshake (ctx); } diff --git a/trunk/gpgme/ChangeLog b/trunk/gpgme/ChangeLog index d8e1f96..87557d8 100644 --- a/trunk/gpgme/ChangeLog +++ b/trunk/gpgme/ChangeLog @@ -1,5 +1,9 @@ 2007-09-27 Marcus Brinkmann + * w32-glib-io.c (_gpgme_io_spawn), + w32-qt-io.cpp (_gpgme_io_spawn), w32-io.c (_gpgme_io_spawn): Close + the process handle, return 0. + * gpgme.h (gpgme_protocol_t): Add GPGME_PROTOCOL_UNKNOWN. * gpgme.c (gpgme_get_protocol_name): Implement support for GPGME_PROTOCOL_UNKNOWN. diff --git a/trunk/gpgme/gpgme.h b/trunk/gpgme/gpgme.h index 57bb011..c0bc8e3 100644 --- a/trunk/gpgme/gpgme.h +++ b/trunk/gpgme/gpgme.h @@ -73,7 +73,7 @@ extern "C" { AM_PATH_GPGME macro) check that this header matches the installed library. Warning: Do not edit the next line. configure will do that for you! */ -#define GPGME_VERSION "1.1.6-svn1258" +#define GPGME_VERSION "1.1.6-svn1264" diff --git a/trunk/gpgme/w32-glib-io.c b/trunk/gpgme/w32-glib-io.c index 9d7eaf6..3bd162f 100644 --- a/trunk/gpgme/w32-glib-io.c +++ b/trunk/gpgme/w32-glib-io.c @@ -576,7 +576,11 @@ _gpgme_io_spawn (const char *path, char **argv, (int) GetLastError ()); TRACE_SUC1 ("process=%p", pi.hProcess); - return 0; + + /* We don't need to wait for the process. */ + CloseHandle (pi.hProcess); + + return TRACE_SYSRES (0); } diff --git a/trunk/gpgme/w32-io.c b/trunk/gpgme/w32-io.c index e83a278..4af1b68 100644 --- a/trunk/gpgme/w32-io.c +++ b/trunk/gpgme/w32-io.c @@ -1156,7 +1156,11 @@ _gpgme_io_spawn (const char *path, char **argv, (int) GetLastError ()); TRACE_SUC1 ("process=%p", pi.hProcess); - return handle_to_pid (pi.hProcess); + + /* We don't need to wait for the process. */ + CloseHandle (pi.hProcess); + + return TRACE_SYSRES (0); } diff --git a/trunk/gpgme/w32-qt-io.cpp b/trunk/gpgme/w32-qt-io.cpp index 50c4a97..20b537b 100644 --- a/trunk/gpgme/w32-qt-io.cpp +++ b/trunk/gpgme/w32-qt-io.cpp @@ -525,7 +525,11 @@ _gpgme_io_spawn (const char *path, char **argv, (int) GetLastError ()); TRACE_SUC1 ("process=%p", pi.hProcess); - return 0; + + /* We don't need to wait for the process. */ + CloseHandle (pi.hProcess); + + return TRACE_SYSRES (0); } diff --git a/trunk/tests/ChangeLog b/trunk/tests/ChangeLog index 9e115e4..f57a447 100644 --- a/trunk/tests/ChangeLog +++ b/trunk/tests/ChangeLog @@ -1,3 +1,11 @@ +2007-09-27 Marcus Brinkmann + + * t-engine-info.c (check_engine_info): Fix debug output. + * gpg/Makefile.am (tests_unix): New variable. + (TESTS): Use it. + * gpg/t-support.h (passphrase_cb) [HAVE_W32_SYSTEM]: Use WriteFile instead of write. + * gpg/t-wait.c [HAVE_W32_SYSTEM]: Define sleep as _sleep. + 2007-09-14 Marcus Brinkmann * gpgsm/t-verify.c (main): Release TEXT and SIG. diff --git a/trunk/tests/gpg/Makefile.am b/trunk/tests/gpg/Makefile.am index 023d2aa..e5d9de9 100644 --- a/trunk/tests/gpg/Makefile.am +++ b/trunk/tests/gpg/Makefile.am @@ -25,11 +25,17 @@ TESTS_ENVIRONMENT = GNUPGHOME=. GPG_AGENT_INFO= # The keylist tests must come after the import and the edit test. noinst_HEADERS = t-support.h -TESTS = t-encrypt t-encrypt-sym t-encrypt-sign t-sign t-signers \ - t-decrypt t-verify t-decrypt-verify t-sig-notation \ - t-export t-import t-trustlist t-eventloop t-edit \ - t-keylist t-keylist-sig t-thread1 t-wait t-encrypt-large \ - t-file-name + +if HAVE_W32_SYSTEM +tests_unix = +else +tests_unix = t-eventloop t-thread1 +endif + +TESTS = t-encrypt t-encrypt-sym t-encrypt-sign t-sign t-signers \ + t-decrypt t-verify t-decrypt-verify t-sig-notation t-export \ + t-import t-trustlist t-edit t-keylist t-keylist-sig t-wait \ + t-encrypt-large t-file-name $(tests_unix) CLEANFILES = secring.gpg pubring.gpg trustdb.gpg DISTCLEANFILES = pubring.gpg~ random_seed gpg.conf diff --git a/trunk/tests/gpg/t-support.h b/trunk/tests/gpg/t-support.h index 0ed1ac8..362b857 100644 --- a/trunk/tests/gpg/t-support.h +++ b/trunk/tests/gpg/t-support.h @@ -24,6 +24,10 @@ #include #include +#ifdef HAVE_W32_SYSTEM +#include +#endif + #include #ifndef DIM @@ -65,7 +69,13 @@ gpgme_error_t passphrase_cb (void *opaque, const char *uid_hint, const char *passphrase_info, int last_was_bad, int fd) { +#ifdef HAVE_W32_SYSTEM + DWORD written; + WriteFile ((HANDLE) fd, "abc\n", 4, &written, 0); +#else write (fd, "abc\n", 4); +#endif + return 0; } diff --git a/trunk/tests/gpg/t-wait.c b/trunk/tests/gpg/t-wait.c index c12835d..eec4d96 100644 --- a/trunk/tests/gpg/t-wait.c +++ b/trunk/tests/gpg/t-wait.c @@ -1,6 +1,6 @@ /* t-wait.c - Regression test. Copyright (C) 2000 Werner Koch (dd9jn) - Copyright (C) 2001, 2002, 2003, 2004, 2005 g10 Code GmbH + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 g10 Code GmbH This file is part of GPGME. @@ -29,6 +29,10 @@ #include #include +#ifdef HAVE_W32_SYSTEM +#define sleep _sleep +#endif + #include #include "t-support.h" diff --git a/trunk/tests/t-engine-info.c b/trunk/tests/t-engine-info.c index 4af2d4a..3864fe5 100644 --- a/trunk/tests/t-engine-info.c +++ b/trunk/tests/t-engine-info.c @@ -1,5 +1,5 @@ /* t-engine-info.c - Regression test for gpgme_get_engine_info. - Copyright (C) 2003, 2004 g10 Code GmbH + Copyright (C) 2003, 2004, 2007 g10 Code GmbH This file is part of GPGME. @@ -54,13 +54,13 @@ check_engine_info (gpgme_engine_info_t info, gpgme_protocol_t protocol, } if (strcmp (info->file_name, file_name)) { - fprintf (stderr, "Unexpected file name to executable %s (expected %s instead)", + fprintf (stderr, "Unexpected file name to executable %s (expected %s instead)\n", info->file_name, file_name); exit (1); } if (strcmp (info->req_version, req_version)) { - fprintf (stderr, "Unexpected required version %s (expected %s instead)", + fprintf (stderr, "Unexpected required version %s (expected %s instead)\n", info->req_version, req_version); exit (1); } -- 2.26.2