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>
* 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

View File

@ -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);
}

View File

@ -1,5 +1,9 @@
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.c (gpgme_get_protocol_name): Implement support for
GPGME_PROTOCOL_UNKNOWN.

View File

@ -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"

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

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>
* 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.
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

View File

@ -24,6 +24,10 @@
#include <stdlib.h>
#include <locale.h>
#ifdef HAVE_W32_SYSTEM
#include <windows.h>
#endif
#include <gpgme.h>
#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;
}

View File

@ -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 <stdio.h>
#include <string.h>
#ifdef HAVE_W32_SYSTEM
#define sleep _sleep
#endif
#include <gpgme.h>
#include "t-support.h"

View File

@ -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);
}