2007-09-27 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Thu, 27 Sep 2007 13:01:54 +0000 (13:01 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 27 Sep 2007 13:01:54 +0000 (13:01 +0000)
* 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.

12 files changed:
ChangeLog
assuan/assuan-pipe-connect.c
gpgme/ChangeLog
gpgme/gpgme.h
gpgme/w32-glib-io.c
gpgme/w32-io.c
gpgme/w32-qt-io.cpp
tests/ChangeLog
tests/gpg/Makefile.am
tests/gpg/t-support.h
tests/gpg/t-wait.c
tests/t-engine-info.c

index 553dda1..5cb11bc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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): New function, use it
        * assuan-pipe-connect.c (pipe_connect_gpgme): Fix last change.
 
        * assuan-pipe-connect.c (pipe_connect_gpgme): New function, use it
index 359eb49..e38b787 100644 (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
 #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*/
   return initial_handshake (ctx);
 }
 #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
 
 #define pipe_connect pipe_connect_gpgme
 #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;
                    void *atforkvalue)
 {
   assuan_error_t err;
-  int pid;
+  int res;
   int rp[2];
   int wp[2];
   char mypidstr[50];
   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.  */
   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]);
     {
       _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);
     }
 
       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);
 }
 
index d8e1f96..87557d8 100644 (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.c (gpgme_get_protocol_name): Implement support for
        GPGME_PROTOCOL_UNKNOWN.
        * gpgme.h (gpgme_protocol_t): Add GPGME_PROTOCOL_UNKNOWN.
        * gpgme.c (gpgme_get_protocol_name): Implement support for
        GPGME_PROTOCOL_UNKNOWN.
index 57bb011..c0bc8e3 100644 (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!  */
    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"
 
 
 \f
 
 
 \f
index 9d7eaf6..3bd162f 100644 (file)
@@ -576,7 +576,11 @@ _gpgme_io_spawn (const char *path, char **argv,
                (int) GetLastError ());
 
   TRACE_SUC1 ("process=%p", pi.hProcess);
                (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);
 }
 
 
 }
 
 
index e83a278..4af1b68 100644 (file)
@@ -1156,7 +1156,11 @@ _gpgme_io_spawn (const char *path, char **argv,
                (int) GetLastError ());
 
   TRACE_SUC1 ("process=%p", pi.hProcess);
                (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);
 }
 
 
 }
 
 
index 50c4a97..20b537b 100644 (file)
@@ -525,7 +525,11 @@ _gpgme_io_spawn (const char *path, char **argv,
                (int) GetLastError ());
 
   TRACE_SUC1 ("process=%p", pi.hProcess);
                (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);
 }
 
 
 }
 
 
index 9e115e4..f57a447 100644 (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.
 2007-09-14  Marcus Brinkmann  <marcus@g10code.de>
 
        * gpgsm/t-verify.c (main): Release TEXT and SIG.
index 023d2aa..e5d9de9 100644 (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
 
 # 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
 
 CLEANFILES = secring.gpg pubring.gpg trustdb.gpg
 DISTCLEANFILES = pubring.gpg~ random_seed gpg.conf
index 0ed1ac8..362b857 100644 (file)
 #include <stdlib.h>
 #include <locale.h>
 
 #include <stdlib.h>
 #include <locale.h>
 
+#ifdef HAVE_W32_SYSTEM
+#include <windows.h>
+#endif
+
 #include <gpgme.h>
 
 #ifndef DIM
 #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)
 {
 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);
   write (fd, "abc\n", 4);
+#endif
+
   return 0;
 }
 
   return 0;
 }
 
index c12835d..eec4d96 100644 (file)
@@ -1,6 +1,6 @@
 /* t-wait.c - Regression test.
    Copyright (C) 2000 Werner Koch (dd9jn)
 /* 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.
  
 
    This file is part of GPGME.
  
 #include <stdio.h>
 #include <string.h>
 
 #include <stdio.h>
 #include <string.h>
 
+#ifdef HAVE_W32_SYSTEM
+#define sleep _sleep
+#endif
+
 #include <gpgme.h>
 
 #include "t-support.h"
 #include <gpgme.h>
 
 #include "t-support.h"
index 4af2d4a..3864fe5 100644 (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);
       exit (1);
     }
   if (strcmp (info->req_version, req_version))
     {
               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);
     }
               info->req_version, req_version);
       exit (1);
     }