+2010-09-01 Marcus Brinkmann <marcus@g10code.de>
+
+ * w32-io.c: Revert change from 2009-06-18, as it created a race
+ condition.
+
+2010-08-18 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.def: Add gpgme_err_code_from_syserror and gpgme_err_set_errno.
+ * libgpgme.vers: Likewise.
+ * gpgme.h.in (gpgme_error_from_errno): Fix return type to
+ gpgme_error_t.
+ (gpgme_err_code_from_syserror, gpgme_err_set_errno): New prototype.
+ (gpgme_error_from_syserror): New inline function (why are
+ gpgme_err_make_from_errno and gpgme_error_from_errno not inline
+ functions?).
+ * error.c (gpgme_error_from_errno): Fix return type to gpgme_error_t.
+ (gpgme_err_set_errno, gpgme_err_code_from_syserror): New functions.
+
+2010-08-03 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme-tool.c (result_encrypt_to_xml, result_sign_to_xml)
+ (result_verify_to_xml, result_import_to_xml)
+ (result_genkey_to_xml): Check vigorously for null pointers.
+
+ * w32-io.c (GPGCEDEV_IOCTL_ASSIGN_RVID): New macro.
+ (_gpgme_io_spawn): Use ASSIGN_RVID.
+
+2010-06-11 Marcus Brinkmann <marcus@g10code.de>
+
+ * w32-io.c (_gpgme_io_spawn): Remove debug printf.
+
+2010-06-10 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme-tool.c (gpgme_server): Use special hack for Windows CE to
+ get at stdin and stdout.
+
+ * engine-gpgsm.c (gpgsm_new): Translate returned achild_fds back
+ to child_fds.
+
+ * debug.h (TRACE_SUC6): New macro.
+ * w32-io.c (MAX_SLAFD): New macro.
+ (fd_table): New static variable.
+ (new_fd, release_fd): New functions.
+ (fd_to_handle, handle_to_fd, handle_to_socket): Remove macros.
+ (MAX_READERS, MAX_WRITERS): Increase to 64.
+ (notify_table): Increase to MAX_SLAFD.
+ (struct reader_context_s, struct writer_context_s): Add member
+ file_sock.
+ (reader, writer): Use file_hd vs file_sock to decide if socket
+ operations to use. Remove auto-detect mode.
+ (create_reader, create_writer): Set file_sock. Unblock pending
+ thread only if this is a pipe fd.
+ (_gpgme_io_pipe): Allocate fds from table and return slot indices
+ instead of windows handles. This allows to properly handle RVIDs.
+ (_gpgme_io_close): Handle dup'ed file descriptors.
+ (build_commandline) [HAVE_W32_SYSTEM]: Use RVID from fd table now.
+ (_gpgme_io_spawn): Use fd table now.
+ (_gpgme_io_fd2str): Use RVID from fd table now.
+ (_gpgme_io_dup): Implement using fd table.
+ (_gpgme_io_socket): Allocate fds from table.
+ (_gpgme_io_connect): Use fd from table.
+
+ * w32-glib-io.c (find_channel): Check that the slot is used.
+
+2010-06-09 Marcus Brinkmann <marcus@g10code.de>
+
+ * w32-io.c [HAVE_W32CE_SYSTEM]: Include assuan.h and winioctl.h.
+ (GPGCEDEV_IOCTL_UNBLOCK) [HAVE_W32CE_SYSTEM]: Define.
+ (set_synchronize) [HAVE_W32CE_SYSTEM]: Stub it out.
+ (is_socket): Allow to return -1 for auto-detect (old behaviour).
+ (is_socket) [HAVE_W32CE_SYSTEM]: Return -1.
+ (reader): Handle auto-detect case. Handle ctx->stop_me before
+ checking for EOF.
+ (destroy_reader) [HAVE_W32CE_SYSTEM]: Unblock a pending reader.
+ (writer): Handle auto-detect case. Handle ctx->stop_me with
+ ERROR_BUSY.
+ (destroy_writer) [HAVE_W32CE_SYSTEM]: Unblock a pending writer.
+ (_gpgme_io_pipe) [HAVE_W32CE_SYSTEM]: Implement in terms of a
+ half-pipe.
+ (build_commandline) [HAVE_W32CE_SYSTEM]: New function.
+ (_gpgme_io_spawn) [HAVE_W32CE_SYSTEM]: Implement it differently
+ for this platform.
+ (_gpgme_io_fd2str) [HAVE_W32CE_SYSTEM]: Implement it for RVIDs.
+ (_gpgme_io_dup) [HAVE_W32CE_SYSTEM]: Stub it out.
+
+ * gpgme-tool.c (result_add_timestamp): Add missing NULL argument.
+ (result_sign_to_xml): Protect against NULL fingerprint.
+ (struct server): New members input_fd, input_filename,
+ input_stream output_fd, output_filename, output_stream,
+ message_filename, message_stream.
+ (server_reset_fds): Deallocate those.
+ (server_parse_fd): New function.
+ (server_data_obj): Take optional filename argument and direction
+ argument. Also take new argument to return a filestream that
+ needs to be closed after destroying the data object.
+ Change all callers, too.
+ (input_notify, output_notify): Removed.
+ (cmd_input, cmd_output): New functions.
+ (gpgme_server): Do not register input and output notifier.
+ (register_commands): Use cmd_input and cmd_output.
+ (cmd_message): Rewritten to use server_parse_fd.
+ (cmd_delete, cmd_keylist): Fix inverted option check.
+ (main) [HAVE_W32CE_SYSTEM]: Sleep a bit to work around bug in ssh.
+
+ * genkey.c (gpgme_op_genkey): Return err with TRACE_ERR.
+
+2010-05-12 Marcus Brinkmann <marcus@g10code.de>
+
+ * conversion.c (_gpgme_timegm) [HAVE_W32_SYSTEM]: New static
+ function.
+ (_gpgme_parse_timestamp) [HAVE_W32_SYSTEM]: Use it.
+
+ * gpgme-tool.c (main): Protect call to setlocale with
+ HAVE_SETLOCALE.
+
+ * Makefile.am (system_components): Remove custom cppflags from
+ RCCOMPILE (because gpg-error adds -idirafter that makes RC bail.
+ [HAVE_W32CE_SYSTEM]: Add w32-ce.h and w32-ce.c, clear
+ libexec_PROGRAMS.
+ * w32-ce.h, w32-ce.c: New files.
+
+ * priv-io.h: Include <sys/types.h>
+ * util.h: Likewise.
+
+2010-05-11 Marcus Brinkmann <marcus@g10code.de>
+
+ * w32-util.c: Include ath.h
+ (HAVE_ALLOW_SET_FOREGROUND_WINDOW) [!HAVE_W32CE_SYSTEM]: Define
+ it.
+ (RTLD_LAZY, dlopen, dlsym,
+ dlclose) [!HAVE_ALLOW_SET_FORGROUND_WINDOW]: Don't define anymore.
+ (_gpgme_allow_set_foreground_window) [!HAVE_ALLOW_SET_FOREGROUND_WINDOW]:
+ Make it a stub.
+ (read_w32_registry_string): Use FooA variants of Windows functions
+ instead of Foo (which dispatches depending on UNICODE).
+ [!HAVE_W32CE_SYSTEM]: Don't check environment.
+ (w32_shgetfolderpath): Remove.
+ (find_program_at_standard_place): Call
+ SHGetSpecialFolderPath (which is available on all Windows systems
+ and also Windows CE).
+ (mkstemp): Use ath_self instead of getpid.
+ (_gpgme_mkstemp): Use GetTempPathA instead of GetTempPath.
+
+ * gpgme.h.in: Use _WIN32 instead of _MSC_VER. Include time.h for
+ time_t.
+
+2010-05-07 Marcus Brinkmann <marcus@g10code.de>
+
+ * engine-g13.c, gpgme.c, engine-gpgsm.c, engine-gpg.c,
+ op-support.c, engine-assuan.c, gpgme-tool.c: Include <locale.h>
+ only if available with HAVE_LOCALE_H and conditionalize use of
+ LC_CTYPE on its definition.
+ * engine-gpgconf.c: Do not include <locale.h>.
+
+ * engine-gpgsm.c (gpgsm_new, start): Cast between int and
+ assuan_fd_t.
+ * assuan-support.c (my_pipe, my_close, my_read, my_write): Likewise.
+ * gpgme-tool.c (server_data_obj, server_reset_fds, gpgme_server),
+ (my_recvmsg, my_sendmsg, my_spawn): Likewise.
+ * engine-assuan.c (start): Likewise.
+ * engine-g13.c (start): Likewise.
+
+2010-05-06 Marcus Brinkmann <marcus@g10code.de>
+
+ * w32-glib-io.c, w32-io.c, w32-qt-io.cpp, w32-sema.c, w32-util.c:
+ Do not include <signal.h>.
+
+ * sign.c, data-user.c, conversion.c, debug.c, verify.c, data.c,
+ decrypt.c, delete.c, assuan-support.c, import.c, engine-gpgsm.c,
+ data-mem.c, op-support.c, w32-io.c, w32-util.c, data-compat.c: Use
+ gpg_error_from_syserror instead gpg_error_from_errno, and use
+ gpg_err_set_errno to set error number.
+ * setenv.c: Include <gpg-error.h> and define __set_errno to use
+ gpg_err_set_errno.
+ * gpgme-tool.c (ARGP_ERR_UNKNOWN): Define to EDEADLOCK (which is
+ mapped in Windows CE) instead of E2BIG (which is not).
+ (gt_import_keys): Initialize err.
+
+2010-04-19 Marcus Brinkmann <marcus@g10code.de>
+
+ * assuan-support.c (my_spawn): Cast to avoid warning.
+ * engine-g13.c (g13_new): Make ARGV array of pointer to const
+ char.
+ (g13_assuan_simple_command) [!USE_DESCRIPTOR_FUNCTION]: Don't define.
+ * ops.h (_gpgme_key_append_name): Same in prototype.
+ * key.c (_gpgme_key_append_name): Make SRC argument pointer to
+ const char.
+ * posix-util.c (_gpgme_get_uiserver_socket_path): Make HOMEDIR
+ const.
+ * vfs-mount.c (gpgme_op_vfs_transact_start): Never define this
+ potentially useful but currently unused function.
+ * vfs-create.c (gpgme_op_vfs_transact_start): Likewise.
+
+2010-04-16 Werner Koch <wk@g10code.com>
+
+ * w32-io.c (is_socket): New.
+ (reader, writer): Use it to figure out the API to use.
+
+2010-03-15 Werner Koch <wk@g10code.com>
+
+ * gpgme.h.in: Add autoconf template to set generated file to
+ read-only in an emacs buffer.
+
+2010-03-12 Werner Koch <wk@g10code.com>
+
+ * gpgme.h.in (GPGME_STATUS_SUCCESS): Use the right file for the
+ change; see below.
+
+ * passwd.c (op_data_t): New.
+ (passwd_start): Setup OPD.
+ (passwd_status_handler): Return GPG_ERR_NOT_SUPPORTED if needed.
+ * context.h (OPDATA_PASSWD): New.
+ * gpgme.h (GPGME_STATUS_SUCCESS): New.
+
+2010-03-09 Werner Koch <wk@g10code.com>
+
+ * engine-gpgsm.c (gpgsm_keylist): Try to start the agent.
+
+2010-02-17 Werner Koch <wk@g10code.com>
+
+ * posix-io.c (notify_table): Change implementation.
+ (notify_table_item_t, notify_table_size, notify_table_lock): New.
+ (_gpgme_io_close, _gpgme_io_set_close_notify): Adjust for new
+ implementation.
+
+2010-02-16 Werner Koch <wk@g10code.com>
+
+ * gpgme-tool.c (spacep, has_option, skip_options): New.
+ (cmd_export): Implement option --minimal.
+
+ * gpgme.h.in (GPGME_EXPORT_MODE_MINIMAL): New.
+ * export.c (export_start, export_ext_start): Implement it.
+ * engine-gpg.c (export_common): Ditto.
+
2010-01-25 Werner Koch <wk@g10code.com>
* w32-io.c (_gpgme_io_connect): Fix return code check to make it work.