diff --git a/common/ChangeLog b/common/ChangeLog index 0a4f57385..5aa39914c 100644 --- a/common/ChangeLog +++ b/common/ChangeLog @@ -1,3 +1,8 @@ +2010-06-11 Marcus Brinkmann + + * sysutils.c (translate_sys2libc_fd): Revert last change. + (translate_sys2libc_fd_int): Revert last change. + 2010-06-10 Marcus Brinkmann * sysutils.c (translate_sys2libc_fd) [HAVE_W32CE_SYSTEM]: diff --git a/common/sysutils.c b/common/sysutils.c index ef180220a..82d9959d8 100644 --- a/common/sysutils.c +++ b/common/sysutils.c @@ -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. */ diff --git a/sm/ChangeLog b/sm/ChangeLog index 1b836b797..ebcd30589 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,3 +1,7 @@ +2010-06-11 Marcus Brinkmann + + * server.c (cmd_message) [HAVE_W32CE_SYSTEM]: Finish pipe. + 2010-06-10 Marcus Brinkmann * server.c (SERVER_STDIN, SERVER_STDOUT): New macros. diff --git a/sm/server.c b/sm/server.c index d8a30acf3..22ddb5f18 100644 --- a/sm/server.c +++ b/sm/server.c @@ -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);