2007-09-27 Marcus Brinkmann <marcus@g10code.de>

* 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  <marcus@g10code.de>

	* 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  <marcus@g10code.de>

	* 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.
This commit is contained in:
Marcus Brinkmann 2007-09-27 13:01:54 +00:00
parent 30df62122d
commit 37ac53e74c
12 changed files with 67 additions and 20 deletions

View File

@ -1,5 +1,8 @@
2007-09-27 Marcus Brinkmann <marcus@g10code.de> 2007-09-27 Marcus Brinkmann <marcus@g10code.de>
* 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): Fix last change.
* assuan-pipe-connect.c (pipe_connect_gpgme): New function, use it * assuan-pipe-connect.c (pipe_connect_gpgme): New function, use it

View File

@ -181,6 +181,8 @@ initial_handshake (assuan_context_t *ctx)
} }
#ifndef _ASSUAN_IN_GPGME_BUILD_ASSUAN
#ifndef HAVE_W32_SYSTEM #ifndef HAVE_W32_SYSTEM
#define pipe_connect pipe_connect_unix #define pipe_connect pipe_connect_unix
/* Unix version of the pipe connection code. We use an extra macro to /* 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); return initial_handshake (ctx);
} }
#endif /*!HAVE_W32_SYSTEM*/ #endif /*!HAVE_W32_SYSTEM*/
#endif /* _ASSUAN_IN_GPGME_BUILD_ASSUAN */
#ifndef HAVE_W32_SYSTEM #ifndef HAVE_W32_SYSTEM
@ -550,6 +553,7 @@ socketpair_connect (assuan_context_t *ctx,
#ifdef _ASSUAN_IN_GPGME_BUILD_ASSUAN #ifdef _ASSUAN_IN_GPGME_BUILD_ASSUAN
#define pipe_connect pipe_connect_gpgme #define pipe_connect pipe_connect_gpgme
@ -570,7 +574,7 @@ pipe_connect_gpgme (assuan_context_t *ctx,
void *atforkvalue) void *atforkvalue)
{ {
assuan_error_t err; assuan_error_t err;
int pid; int res;
int rp[2]; int rp[2];
int wp[2]; int wp[2];
char mypidstr[50]; char mypidstr[50];
@ -631,8 +635,8 @@ pipe_connect_gpgme (assuan_context_t *ctx,
child_fds[2].fd = -1; child_fds[2].fd = -1;
/* Start the process. */ /* Start the process. */
pid = _gpgme_io_spawn (name, argv, child_fds, child_fds); res = _gpgme_io_spawn (name, argv, child_fds, child_fds);
if (pid == -1) if (res == -1)
{ {
_assuan_log_printf ("CreateProcess failed: %s\n", strerror (errno)); _assuan_log_printf ("CreateProcess failed: %s\n", strerror (errno));
_gpgme_io_close (rp[0]); _gpgme_io_close (rp[0]);
@ -642,12 +646,8 @@ pipe_connect_gpgme (assuan_context_t *ctx,
return _assuan_error (ASSUAN_General_Error); return _assuan_error (ASSUAN_General_Error);
} }
/* ERR contains the PID. */
(*ctx)->pid = 0; /* We don't use 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); return initial_handshake (ctx);
} }

View File

@ -1,5 +1,9 @@
2007-09-27 Marcus Brinkmann <marcus@g10code.de> 2007-09-27 Marcus Brinkmann <marcus@g10code.de>
* 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.h (gpgme_protocol_t): Add GPGME_PROTOCOL_UNKNOWN.
* gpgme.c (gpgme_get_protocol_name): Implement support for * gpgme.c (gpgme_get_protocol_name): Implement support for
GPGME_PROTOCOL_UNKNOWN. GPGME_PROTOCOL_UNKNOWN.

View File

@ -73,7 +73,7 @@ extern "C" {
AM_PATH_GPGME macro) check that this header matches the installed AM_PATH_GPGME macro) check that this header matches the installed
library. Warning: Do not edit the next line. configure will do library. Warning: Do not edit the next line. configure will do
that for you! */ that for you! */
#define GPGME_VERSION "1.1.6-svn1258" #define GPGME_VERSION "1.1.6-svn1264"

View File

@ -576,7 +576,11 @@ _gpgme_io_spawn (const char *path, char **argv,
(int) GetLastError ()); (int) GetLastError ());
TRACE_SUC1 ("process=%p", pi.hProcess); TRACE_SUC1 ("process=%p", pi.hProcess);
return 0;
/* We don't need to wait for the process. */
CloseHandle (pi.hProcess);
return TRACE_SYSRES (0);
} }

View File

@ -1156,7 +1156,11 @@ _gpgme_io_spawn (const char *path, char **argv,
(int) GetLastError ()); (int) GetLastError ());
TRACE_SUC1 ("process=%p", pi.hProcess); 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);
} }

View File

@ -525,7 +525,11 @@ _gpgme_io_spawn (const char *path, char **argv,
(int) GetLastError ()); (int) GetLastError ());
TRACE_SUC1 ("process=%p", pi.hProcess); TRACE_SUC1 ("process=%p", pi.hProcess);
return 0;
/* We don't need to wait for the process. */
CloseHandle (pi.hProcess);
return TRACE_SYSRES (0);
} }

View File

@ -1,3 +1,11 @@
2007-09-27 Marcus Brinkmann <marcus@g10code.de>
* 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 <marcus@g10code.de> 2007-09-14 Marcus Brinkmann <marcus@g10code.de>
* gpgsm/t-verify.c (main): Release TEXT and SIG. * gpgsm/t-verify.c (main): Release TEXT and SIG.

View File

@ -25,11 +25,17 @@ TESTS_ENVIRONMENT = GNUPGHOME=. GPG_AGENT_INFO=
# The keylist tests must come after the import and the edit test. # The keylist tests must come after the import and the edit test.
noinst_HEADERS = t-support.h 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 \ if HAVE_W32_SYSTEM
t-export t-import t-trustlist t-eventloop t-edit \ tests_unix =
t-keylist t-keylist-sig t-thread1 t-wait t-encrypt-large \ else
t-file-name 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 CLEANFILES = secring.gpg pubring.gpg trustdb.gpg
DISTCLEANFILES = pubring.gpg~ random_seed gpg.conf DISTCLEANFILES = pubring.gpg~ random_seed gpg.conf

View File

@ -24,6 +24,10 @@
#include <stdlib.h> #include <stdlib.h>
#include <locale.h> #include <locale.h>
#ifdef HAVE_W32_SYSTEM
#include <windows.h>
#endif
#include <gpgme.h> #include <gpgme.h>
#ifndef DIM #ifndef DIM
@ -65,7 +69,13 @@ gpgme_error_t
passphrase_cb (void *opaque, const char *uid_hint, const char *passphrase_info, passphrase_cb (void *opaque, const char *uid_hint, const char *passphrase_info,
int last_was_bad, int fd) 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); write (fd, "abc\n", 4);
#endif
return 0; return 0;
} }

View File

@ -1,6 +1,6 @@
/* t-wait.c - Regression test. /* t-wait.c - Regression test.
Copyright (C) 2000 Werner Koch (dd9jn) 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. This file is part of GPGME.
@ -29,6 +29,10 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#ifdef HAVE_W32_SYSTEM
#define sleep _sleep
#endif
#include <gpgme.h> #include <gpgme.h>
#include "t-support.h" #include "t-support.h"

View File

@ -1,5 +1,5 @@
/* t-engine-info.c - Regression test for gpgme_get_engine_info. /* 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. 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)) 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); info->file_name, file_name);
exit (1); exit (1);
} }
if (strcmp (info->req_version, req_version)) 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); info->req_version, req_version);
exit (1); exit (1);
} }