common/
authorMarcus Brinkmann <mb@g10code.com>
Thu, 10 Jun 2010 23:17:33 +0000 (23:17 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 10 Jun 2010 23:17:33 +0000 (23:17 +0000)
2010-06-11  Marcus Brinkmann  <marcus@g10code.de>

* sysutils.c (translate_sys2libc_fd): Revert last change.
(translate_sys2libc_fd_int): Revert last change.

sm/
2010-06-11  Marcus Brinkmann  <marcus@g10code.de>

* server.c (cmd_message) [HAVE_W32CE_SYSTEM]: Finish pipe.

common/ChangeLog
common/sysutils.c
sm/ChangeLog
sm/server.c

index 0a4f573..5aa3991 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-11  Marcus Brinkmann  <marcus@g10code.de>
+
+       * sysutils.c (translate_sys2libc_fd): Revert last change.
+       (translate_sys2libc_fd_int): Revert last change.
+
 2010-06-10  Marcus Brinkmann  <marcus@g10code.de>
 
        * sysutils.c (translate_sys2libc_fd) [HAVE_W32CE_SYSTEM]:
index ef18022..82d9959 100644 (file)
@@ -280,7 +280,8 @@ int
 translate_sys2libc_fd (gnupg_fd_t fd, int for_write)
 {
 #if defined(HAVE_W32CE_SYSTEM)
-  return (int) _assuan_w32ce_finish_pipe ((int)fd, for_write);
+  (void)for_write;
+  return (int) fd;
 #elif defined(HAVE_W32_SYSTEM)
   int x;
 
@@ -307,7 +308,8 @@ int
 translate_sys2libc_fd_int (int fd, int for_write)
 {
 #if HAVE_W32CE_SYSTEM
-  return (int) _assuan_w32ce_finish_pipe (fd, for_write);
+  fd = (int) _assuan_w32ce_finish_pipe (fd, for_write);
+  return translate_sys2libc_fd ((void*)fd, for_write);
 #elif HAVE_W32_SYSTEM
   if (fd <= 2)
     return fd; /* Do not do this for error, stdin, stdout, stderr. */
index 1b836b7..ebcd305 100644 (file)
@@ -1,3 +1,7 @@
+2010-06-11  Marcus Brinkmann  <marcus@g10code.de>
+
+       * server.c (cmd_message) [HAVE_W32CE_SYSTEM]: Finish pipe.
+
 2010-06-10  Marcus Brinkmann  <marcus@g10code.de>
 
        * server.c (SERVER_STDIN, SERVER_STDOUT): New macros.
index d8a30ac..22ddb5f 100644 (file)
@@ -163,6 +163,7 @@ close_message_fd (ctrl_t ctrl)
 {
   if (ctrl->server_local->message_fd != -1)
     {
+#warning Is this correct for W32/W32CE?
       close (ctrl->server_local->message_fd);
       ctrl->server_local->message_fd = -1;
     }
@@ -839,6 +840,14 @@ cmd_message (assuan_context_t ctx, char *line)
   rc = assuan_command_parse_fd (ctx, line, &sysfd);
   if (rc)
     return rc;
+
+#ifdef HAVE_W32CE_SYSTEM
+  sysfd = _assuan_w32ce_finish_pipe ((int)sysfd, 0);
+  if (sysfd == INVALID_HANDLE_VALUE)
+    return set_error (gpg_err_code_from_syserror (),
+                     "rvid conversion failed");
+#endif
+
   fd = translate_sys2libc_fd (sysfd, 0);
   if (fd == -1)
     return set_error (GPG_ERR_ASS_NO_INPUT, NULL);