+2009-11-10 Marcus Brinkmann <marcus@g10code.de>
+
+ * op-support.c (_gpgme_op_reset): Instead of last change, only set
+ sub protocol if it is not the default.
+
+2009-11-10 Werner Koch <wk@g10code.com>
+
+ * op-support.c (_gpgme_op_reset): Ignore GPG_ERR_NOT_IMPLEMENTED
+ while setting the sub protocol.
+
+ * engine-uiserver.c (uiserver_new): Pass fdpassing flag to
+ assuan_socket_connect.
+ (set_recipients): Replace fingerprint by user id.
+
+ * engine-gpgsm.c (set_recipients): Fix non-terminating loop in
+ case of a missing key.
+
+2009-11-10 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.c (gpgme_new): Set default sub protocol.
+ * gpgme-tool.c: Implement get sub protocol.
+
+ * gpgme.h.in (gpgme_get_sub_protocol): Add prototype.
+ * gpgme.def, libgpgme.vers: Add gpgme_get_sub_protocol.
+ * context.h (struct gpgme_context): New member sub_protocol.
+ * gpgme.c (gpgme_set_sub_protocol): Set CTX->sub_protocol.
+ (gpgme_get_sub_protocol): New function.
+ * op-support.c (_gpgme_op_reset): Set sub protocol.
+
+ * Makefile.am (uiserver_components): New variable.
+ (main_sources): Add it.
+ * ops.h, key.c (_gpgme_key_append_name): Take CONVERT argument,
+ implement it. Adjust callers.
+ (gpgme_key_from_uid): New function.
+ * gpgme.h.in (gpgme_protocol_t): Add GPGME_PROTOCOL_DEFAULT.
+ (gpgme_encrypt_flags_t): Add GPGME_ENCRYPT_PREPARE,
+ GPGME_ENCRYPT_EXPECT_SIGN.
+ (gpgme_set_sub_protocol, gpgme_key_from_uid): New functions.
+ * libgpgme.vers, gpgme.def: Add new functions.
+ * gpgme.c (gpgme_set_protocol): Add UIServer protocol.
+ (gpgme_set_sub_protocol): New function.
+ (gpgme_get_protocol_name): Add UIServer and default protocol.
+ * assuan-support.c: Return correct error values, implement
+ socketpair for POSIX.
+ * priv-io.h, posix-io.c, w32-io.c, w32-glib-io.c,
+ w32-qt-io.cpp (_gpgme_io_spawn): Add ATFORK and ATFORKVALUE
+ arguments. Implement it for POSIX. Adjust all callers.
+ * engine.h, engine-backend.h (_gpgme_engine_set_protocol)
+ (_gpgme_engine_op_decrypt_verify): New prototypes. Adjust all
+ users.
+ * engine.c (engine_ops, gpgme_get_engine_info): Add UIServer
+ engine.
+ (_gpgme_engine_set_protocol, _gpgme_engine_op_decrypt_verify): New
+ function.
+ * decrypt-verify.c (decrypt_verify_start): Call
+ _gpgme_engine_op_decrypt_verify.
+ * util.h, posix-util.c,
+ w32-util.c (_gpgme_get_uiserver_socket_path): New function.
+ * engine-gpgsm.c (gpgsm_set_fd): Fix _gpgme_io_pipe invocation.
+ * gpgme-tool.c: Some support for UIServer protocol.
+ * engine-uiserver.c: New file.
+
+2009-11-09 Marcus Brinkmann <marcus@g10code.de>
+
+ * engine-gpgsm.c (gpgsm_new): Close server side FDs.
+
+2009-11-06 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme-tool.c (struct gpgme_tool): New members write_data and
+ write_data_hook.
+ (gt_write_data): New function.
+ (gt_result): Output vfs_mount result.
+ (server_write_data): New function.
+ (gpgme_server): Initialize write_data members.
+
+2009-11-05 Marcus Brinkmann <marcus@g10code.de>
+
+ * engine-g13.c (struct engine_g13): Remove members RESULT_CB and
+ RESULT_CB_VALUE.
+ (g13_assuan_simple_command, status_handler): Don't use those anymore.
+ (g13_transact): Remove them from argument list, too.
+ * vfs-mount.c (_gpgme_vfs_mount_status_handler): New function.
+ (_gpgme_op_vfs_mount): Pass it to transact.
+
+ * engine-assuan.c (llass_new): Update use of assuan_socket_connect.
+ * engine-gpgsm.c (gpgsm_new): Update use of assuan_pipe_connect.
+ * engine-g13.c (g13_new): Likewise.
+
+ * priv-io.h (IOSPAWN_FLAG_NOCLOSE): New flag.
+ * w32-io.c (_gpgme_io_spawn): Implement this flag.
+ * posix-io.c (_gpgme_io_spawn): Likewise.
+ * w32-glib-io.c (_gpgme_io_spawn): Likewise.
+ * assuan-support.c (my_spawn): Set this flag.
+
+ * decrypt.c (gpgme_op_decrypt_start): Fix use of debug macro.
+ * decrypt-verify.c (gpgme_op_decrypt_verify_start): Likewise.
+ * delete.c (gpgme_op_delete_start): Likewise.
+ * edit.c (gpgme_op_edit_start, gpgme_op_card_edit_start):
+ Likewise.
+ * encrypt.c (gpgme_op_encrypt_start): Likewise.
+ * encrypt-sign.c (gpgme_op_encrypt_sign_start): Likewise.
+ * export.c (gpgme_op_export_start, gpgme_op_export_ext_start)
+ (gpgme_op_export_keys_start, gpgme_op_export_keys): Likewise.
+ * genkey.c (gpgme_op_genkey_start): Likewise.
+ * getauditlog.c (gpgme_op_getauditlog_start): Likewise.
+ * import.c (gpgme_op_import_start, gpgme_op_import_keys_start):
+ Likewise.
+ * opassuan.c (gpgme_op_assuan_transact_start): Likewise.
+ * sign.c (gpgme_op_sign_start): Likewise.
+ * verify.c (gpgme_op_verify_start): Likewise.
+ * vfs-create.c (gpgme_op_vfs_create): Likewise.
+ * vfs-mount.c (gpgme_op_vfs_mount): Likewise.
+
+2009-11-04 Marcus Brinkmann <marcus@g10code.de>
+
+ * ath.h (ath_self): New prototype. Include <stdint.h>
+ * ath.c, ath-pth.c, ath-pthread.c (ath_self): New function.
+ * debug.h: Rewrite most macros to beautify debug output.
+ (_gpgme_debug_buffer): Remove tagname and tag argument.
+ (_gpgme_debug_frame_begin, _gpgme_debug_frame_end): New prototypes.
+ * debug.c: Include <time.h>. Don't include assuan.h.
+ (frame_nr, FRAME_NR): New thread-specific variable and macro.
+ (debug_init): Do not initialize assuan. Call _gpgme_debug after
+ initialization instead using printf directly.
+ (_gpgme_debug): Do not call debug_init (we now ensure proper
+ initialization by user). Add timestamp and thread/process ID.
+ (_gpgme_debug_buffer): Do not take tagname and tag argument.
+ (_gpgme_debug_frame_begin, _gpgme_debug_frame_end): New functions.
+ * version.c (gpgme_check_version_internal, gpgme_check_version):
+ Fix debug string. Do not initialize assuan.
+ * posix-io.c (get_max_fds): Use 0 not NULL (nicer debug output).
+
+2009-11-04 Werner Koch <wk@g10code.com>
+
+ * gpgme-tool.c (register_commands): Add HELP feature.
+
+2009-11-03 Werner Koch <wk@g10code.com>
+
+ * gpgme.h.in (GPGME_PROTOCOL_UISERVER): New.
+
+2009-11-03 Marcus Brinkmann <marcus@g10code.de>
+
+ * Makefile.am (main_sources): Change g13.c to vfs-mount.c. Add
+ vfs-create.c
+ * vfs-create.c: New file.
+ * g13.c: Renamed to ...
+ * vfs-mount.c: ... this new file.
+ * gpgme.h.in (gpgme_op_vfs_create): New prototype.
+ * gpgme.def, libgpgme.vers: Add gpgme_op_vfs_create.
+ * gpgme-tool.c (gt_vfs_create, cmd_vfs_create): New functions.
+ (register_commands): Add VFS_CREATE and CREAET.
+
+2009-11-02 Marcus Brinkmann <marcus@g10code.de>
+
+ * debug.h (_gpgme_debug_buffer): Make TAG argument const const.
+ * debug.c (_gpgme_debug_buffer): Likewise.
+ * gpgme-tool.c (input_notify, output_notify): Adjust type to new
+ assuan interface.
+ * decrypt.c (gpgme_op_decrypt_result): Remove unused variable.
+ * opassuan.c (gpgme_op_assuan_transact): Fix return value.
+
+2009-10-30 Marcus Brinkmann <marcus@g10code.de>
+
+ * Makefile.am (noinst_PROGRAMS): New target gpgme-tool.
+ (gpgme_tool_LDADD): New variable.
+ * gpgme-tool.c: New file.
+ * ops.h (_gpgme_sig_notation_clearm _gpgme_signers_clear): New
+ prototypes.
+ * gpgme.c (gpgme_set_protocol): Allow GPGME_PROTOCOL_GPGCONF (when
+ had that gone missing?).
+ (_gpgme_sig_notation_clear): New function without debug output.
+ (gpgme_release): Call it and _gpgme_signers_clear.
+ * signers.c (_gpgme_signers_clear): New function without debug output.
+ * g13.c (gpgme_op_vfs_mount): Add debug output.
+ * assuan-support.c (my_spawn): Allow fd_child_list to be NULL.
+ * conversion.c (_gpgme_encode_percent_string): Fix infinite loop.
+ * debug.h: Put tag in front of debug lines, should make for nicer
+ output.
+ * engine-assuan.c (llass_new): Use our new system hooks for libassuan.
+ * engine-g13.c (g13_new): Remove redundant assuan context allocation.
+ * version.c (gpgme_check_version_internal): Delay debug output
+ until after gpgme_check_version was called.
+
+2009-10-28 Marcus Brinkmann <marcus@g10code.de>
+
+ * signers.c, encrypt-sign.c, encrypt.c, delete.c, keylist.c,
+ edit.c, import.c, export.c: Fix last change in debug output.
+
+2009-10-27 Marcus Brinkmann <marcus@g10code.de>
+
+ * edit.c (gpgme_op_edit_start, gpgme_op_edit)
+ (gpgme_op_card_edit_start, gpgme_op_card_edit): Add debug output.
+ * encrypt-sign.c (gpgme_op_encrypt_sign_start)
+ (gpgme_op_encrypt_sign): Likewise.
+ * encrypt.c (gpgme_op_encrypt_start, gpgme_op_encrypt)
+ (gpgme_op_encrypt_result): Likewise.
+ * export.c (gpgme_op_export_start, gpgme_op_export)
+ (gpgme_op_export_ext_start, gpgme_op_export_ext)
+ (gpgme_op_export_keys_start, gpgme_op_export_keys): Likewise.
+ * genkey.c (gpgme_op_genkey_start, gpgme_op_genkey)
+ (gpgme_op_genkey_result): Likewise.
+ * getauditlog.c (gpgme_op_getauditlog_start)
+ (gpgme_op_getauditlog): Likewise.
+ * import.c (gpgme_op_import_result, gpgme_op_import_start)
+ (gpgme_op_import): Likewise.
+ * keylist.c (gpgme_op_keylist_result, keylist_colon_handler)
+ (gpgme_op_keylist_start, gpgme_op_keylist_ext_start)
+ (gpgme_op_keylist_next, gpgme_op_keylist_end, gpgme_get_key): Likewise.
+ * opassuan.c (gpgme_op_assuan_transact_start)
+ (gpgme_op_assuan_transact_ext, gpgme_op_assuan_result)
+ (gpgme_op_assuan_transact): Likewise.
+ * signers.c (gpgme_signers_add, gpgme_signers_clear): Likewise.
+ * trustlist.c (gpgme_op_trustlist_start)
+ (gpgme_op_trustlist_next, gpgme_op_trustlist_end): Likewise.
+ * verify.c (gpgme_op_verify_start, gpgme_op_verify)
+ (gpgme_op_verify_result): Likewise.
+
+2009-10-26 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.h.in (struct gpgme_io_event_done_data)
+ (gpgme_io_event_done_data_t): New types.
+ (struct _gpgme_op_assuan_result): Deprecate the err member.
+ (gpgme_op_assuan_result): Deprecate (for now).
+ (gpgme_op_assuan_transact_ext): New prototype.
+ (gpgme_op_assuan_transact): Deprecate.
+ (struct _gpgme_op_g13_result): Replace with ...
+ (struct _gpgme_op_vfs_mount_result): ... this.
+ (gpgme_op_g13_mount): Replace with ...
+ (gpgme_op_vfs_mount): ... this.
+ * gpgme.def (gpgme_op_assuan_transact_ext, gpgme_wait_ext)
+ (gpgme_op_vfs_mount_result, gpgme_op_vfs_mount): New.
+ (gpgme_op_g13_mount): Remove.
+ * libgpgme.vers: Likewise.
+ * engine-backend.h (struct engine_ops): Remove RESULT_CB and
+ RESULT_CB_VALUE args in opassuan_transact member. Add CANCEL_OP
+ member.
+ * ops.h (_gpgme_cancel_with_err, _gpgme_wait_on_condition): Add
+ OP_ERR argument.
+ (_gpgme_wait_one_ext): New prototype.
+ * context.h (ctx_op_data_id_t): Add OPDATA_VFS_MOUNT.
+ * engine-g13.c (g13_cancel_op): New function.
+ (parse_status): Remove declaration.
+ (g13_assuan_simple_command): Do nothing with status lines for now.
+ (status_handler): Update opaque value access.
+ (_gpgme_engine_ops_g13): Add new cancel_op member.
+ * gpgme.c (_gpgme_cancel_with_err): Add new parameter OP_ERR.
+ Handle operational errors.
+ (gpgme_cancel, gpgme_io_read, gpgme_io_write): Add debug output.
+ * data.c (_gpgme_data_inbound_handler)
+ (_gpgme_data_outbound_handler): Adjust opaque value access.
+ * engine-gpg.c (command_handler, status_handler)
+ (colon_line_handler): Likewise.
+ * engine-gpgsm.c (status_handler): Likewise.
+ * engine-gpg.c (_gpgme_engine_ops_gpg): Add cancel_op member.
+ * engine-gpgsm.c (_gpgme_engine_ops_gpgsm): Likewise.
+ * g13.c: Rewritten (and will be rewritten again).
+ * engine.h (_gpgme_engine_op_assuan_transact): Remove result_cb
+ and result_cb_value parameters from prototype.
+ (_gpgme_engine_cancel_op): New prototype.
+ * engine.c (engine_ops) [! ENABLE_ASSUAN]: Add missing comma.
+ (_gpgme_engine_op_assuan_transact): Remove result_cb and
+ result_cb_value parameter.
+ (_gpgme_engine_cancel_op): New function.
+ * wait.h (_gpgme_run_io_cb): Add new argument OP_ERR.
+ (struct io_cb_data): New struct to pass opaque data and get a
+ op_err return value. Needed because we can't modify I/O callback
+ handler signature because it is exposed to the user.
+ * wait.c (_gpgme_run_io_cb): Add OP_ERR parameter. Handle
+ operational errors.
+ * wait-user.c (_gpgme_user_io_cb_handler): Handle operational
+ errors.
+ * wait-private.c (_gpgme_wait_on_condition): New argument to
+ retrieve the operational result. Handle operational errors in
+ session based protocols.
+ (_gpgme_wait_one_ext): New function.
+ (_gpgme_wait_one): Pass argument in invocation of
+ _gpgme_wait_on_condition.
+ * wait-global.c (struct ctx_list_item): Add member OP_ERR.
+ (ctx_done): New argument OP_ERR.
+ (ctx_wait): New argument OP_ERR.
+ (gpgme_wait_ext): New function based on gpgme_wait but handling
+ operational errors.
+ (gpgme_wait): Implement in term of gpgme_wait_ext.
+ * keylist.c (gpgme_op_keylist_next): Pass argument in invocation
+ of _gpgme_wait_on_condition.
+ * trustlist.c (gpgme_op_trustlist_next): Pass argument in
+ invocation of _gpgme_wait_on_condition.
+ * engine-assuan.c (struct engine_llass): Replace members RESULT_CB
+ and RESULT_CB_VALUE by LAST_OP_ERR.
+ (_gpgme_engine_assuan_last_op_err): Add this hack function.
+ (llass_cancel_op): New function.
+ (_gpgme_engine_llass_ops): Add cancel_op member.
+ (llass_status_handler): Update opaque value access.
+ (llass_transact): Remove RESULT_CB and RESULT_CB_VALUE arguments.
+ * opassuan.c: Move compat hacks to the end of file.
+ (opassuan_start): Do not set OPD->result.err.
+ Do not pass RESULT_Cb and CTX to _gpgme_engine_op_assuan_transact.
+ (gpgme_op_assuan_transact_ext): New function.
+
+ * debug.h (DEBUG_GLOBAL): New debug level.
+ * conversion.c (gnupg_errors, _gpgme_map_gnupg_error): Removed.
+ * data-user.c (gpgme_data_new_from_cbs): Add debug output.
+ * data-fd.c (gpgme_data_new_from_fd): Likewise.
+ * data-stream.c (gpgme_data_new_from_stream): Likewise.
+ * decrypt.c (gpgme_op_decrypt_result, gpgme_op_decrypt_start)
+ (gpgme_op_decrypt): Likewise.
+ * delete.c (gpgme_op_delete_start, gpgme_op_delete): Likewise.
+ * decrypt-verify.c (gpgme_op_decrypt_verify_start)
+ (gpgme_op_decrypt_verify): Likewise.
+ * sign.c (gpgme_op_sign_result): Fix debug message.
+ * data-mem.c (gpgme_data_new): Improve debug output.
+ * verify.c (parse_trust): Use atoi instead of
+ _gpgme_map_gnupg_error.
+ * decrypt.c (_gpgme_decrypt_status_handler): Likewise.
+
+2009-10-22 Marcus Brinkmann <marcus@g10code.de>
+
+ * Makefile.am: Remove @NETLIBS@ from LIBADDs.
+ (g13_components): New variable.
+ (main_sources): Add $(g13_components).
+ * g13.c, engine-g13.c: New files.
+ * engine.c (engine_ops): Check for assuan for assuan engine, add
+ g13 engine.
+ * util.h (_gpgme_get_g13_path, _gpgme_encode_percent_string): New
+ prototypes.
+ * conversion.c (_gpgme_encode_percent_string): New function.
+ * gpgme.h.in (gpgme_protocol_t): Add GPGME_PROTOCOL_G13.
+ (struct _gpgme_op_g13_result, gpgme_g13_result_t): New types.
+ (gpgme_op_g13_mount): New function.
+ * gpgme.def, libgpgme.vers: Add gpgme_op_g13_mount.
+ * gpgme.c (gpgme_set_protocol): Allow GPGME_PROTOCOL_G13.
+ (gpgme_get_protocol_name): Add GPGME_PROTOCOL_G13.
+ * posix-util.c (_gpgme_get_g13_path): New function.
+ * w32-util.c (_gpgme_get_g13_path): New function.
+ * engine-backend.h (_gpgme_engine_ops_g13): New declaration.
+
+2009-10-20 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme-config.in (netlibs): Remove.
+ (assuan_cflags, assuan_libs): Add.
+
+ * Makefile.am (assuan_cppflags, assuan_libobjs): Removed.
+ (gpgsm_components): Move engine-assuan.c to ...
+ (assuan_components): ... this new variable.
+ (main_sources): Add this new variable.
+ (AM_CPPFLAGS): Remove $(assuan_cppflags).
+ (AM_CFLAGS): Add @LIBASSUAN_CFLAGS@.
+ (libgpgme_la_DEPENDENCIES, libgpgme_pth_la_DEPENDENCIES)
+ (libgpgme_glib_la_DEPENDENCIES, libgpgme_qt_la_DEPENDENCIES)
+ (libgpgme_pthread_la_DEPENDENCIES): Remove $(assuan_libobjs).
+ (libgpgme_la_LIBADD, libgpgme_pth_la_LIBADD)
+ (libgpgme_glib_la_LIBADD, libgpgme_qt_la_LIBADD))
+ (libgpgme_pthread_la_LIBADD): Replace $(assuan_libobjs) by
+ @LIBASSUAN_LIBS@.
+ * priv-io.h [!HAVE_W32_SYSTEM]: Declare _gpgme_io_recvmsg,
+ _gpgme_io_sendmsg, _gpgme_io_waitpid.
+ * engine-backend.h: Define with [ENABLE_ASSUAN] instead
+ of [ENABLE_GPGSM].
+ * posix-io.c (_gpgme_io_waitpid): Make non-static.
+ * util.h (ENABLE_ASSUAN): Declar _gpgme_assuan_system_hooks,
+ _gpgme_assuan_malloc_hooks, _gpgme_assuan_log_cb.
+ * engine-gpgsm.c: Don't map assuan error codes. Use
+ assuan_release instead of assuan_disconnect.
+ (map_assuan_error): Remove function.
+ (gpgsm_new): Use new assuan context interface.
+ * engine-assuan.c: Use assuan_release instead of
+ assuan_disconnect.
+ (llass_new): Use new assuan context interface.
+
+2009-10-07 <wk@g10code.com>
+
+ * priv-io.h [W32]: Include windows.h instead of sys/socket.h.
+
+2009-08-06 Werner Koch <wk@g10code.com>
+
+ * op-support.c (_gpgme_parse_inv_recp): Allow for no fingerprint.
+
+ * engine-gpgsm.c (gpgsm_sign): Hook up the status func for the
+ SIGNER command.
+ * gpgme.h.in (GPGME_STATUS_INV_SGNR, GPGME_STATUS_NO_SGNR): New.
+ * sign.c (op_data_t): Add fields IGNORE_INV_RECP and INV_SGNR_SEEN.
+ (_gpgme_op_sign_init_result): Factor code out to ...
+ (sign_init_result): .. new. Init new fields.
+ (sign_start): Use sign_init_result.
+ (_gpgme_sign_status_handler): Take care of the new INV_SGNR.
+ Return an error if no signature has been created.
+
+2009-07-07 Werner Koch <wk@g10code.com>
+
+ * engine-gpgsm.c (struct engine_gpgsm): Add fields
+ input_helper_data and input_helper_memory.
+ (close_notify_handler): Release these new fields.
+ (gpgsm_import): Implement the keyarray feature.
+
+ * engine-gpg.c (gpg_import): Actually return GPG_ERR_INV_VALUE.
+
+ * engine-gpgsm.c (gpgsm_import): Return an error for unknown data
+ encodings.
+
+2009-06-22 Marcus Brinkmann <marcus@g10code.de>
+
+ * debug.h: Everywhere, use %p instead of 0x%x to print pointer.
+ [HAVE_STDINT_H]: Include <stdint.h>.
+ (_TRACE, TRACE, TRACE0, TRACE1, TRACE2, TRACE3, TRACE6): Cast tag
+ to (uintptr_t) before casting it to (void*) to silence GCC
+ warning.
+
+ * gpgme.h.in (_GPGME_DEPRECATED_OUTSIDE_GPGME): New macro.
+ * sign.c (_GPGME_IN_GPGME): Define it.
+ * keylist.c (_GPGME_IN_GPGME): Define it.
+
+ * debug.c (_gpgme_debug_begin, _gpgme_debug_add): Handle error in
+ vasprintf and asprintf.
+
+ * priv-io.h: Include <sys/socket.h>. Declare _gpgme_io_connect.
+
+2009-06-18 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.h.in (GPGME_CONF_PATHNAME): Revert last change, it's
+ back! (GPA still uses it...).
+
+ * gpgme.def: Fix stupid typo.
+ * w32-io.c (_gpgme_io_pipe): Add missing declaration.
+
+ * gpgme.h.in (GPGME_CONF_PATHNAME): Remove obsolete macro.
+
+ * w32-io.c (_gpgme_io_pipe): Allocate reader/writer thread right
+ away.
+ (_gpgme_io_read, _gpgme_io_write, _gpgme_io_select)
+ (_gpgme_io_dup): Never allocate threads here.
+ (find_writer, find_reader): Check return value of thread creation
+ function.
+
+ * context.h (CTX_OP_DATA_MAGIC): New macro.
+ (struct ctx_op_data): New member MAGIC.
+ * op-support.c (_gpgme_op_data_lookup): Initialize magic.
+ * gpgme.c (gpgme_result_unref, gpgme_result_ref): Check magic.
+
+2009-06-16 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.c (gpgme_result_unref): Hot fix to release a lock.
+
+ * gpgme.c (result_ref_lock): New global variable.
+ (gpgme_result_ref, gpgme_result_unref): use it.
+
+2009-06-16 Werner Koch <wk@g10code.com>
+
+ * version.c: Include stdlib.h.
+
+ * gpgme.h.in (gpgme_data_encoding_t): Add GPGME_DATA_ENCODING_URL,
+ GPGME_DATA_ENCODING_URLESC, GPGME_DATA_ENCODING_URL0.
+ * data.c (gpgme_data_set_encoding): Adjust for new values.
+ * engine-gpg.c (string_from_data): New.
+ (gpg_import): Implement --fetch-key feature.
+
+ * gpgme.h.in (gpgme_op_export_keys_start, gpgme_op_export_keys): New.
+ * gpgme.def, libgpgme.vers: Add them.
+ * export.c (gpgme_op_export_keys_start, gpgme_op_export_keys): New.
+ (export_keys_start): New.
+
+ * gpgme.h.in (gpgme_export_mode_t, GPGME_EXPORT_MODE_EXTERN): New.
+ (gpgme_op_export_start, gpgme_op_export, gpgme_op_export_ext_start)
+ (gpgme_op_export_ext): Change arg RESERVED to MODE of new
+ compatible type.
+ * export.c (gpgme_export_ext_start, gpgme_op_export)
+ (gpgme_op_export_ext_start, gpgme_op_export_ext): Ditto.
+ (export_start): Ditto.
+ * engine.c (_gpgme_engine_op_export): Ditto.
+ * engine-backend.h (struct engine_ops): Ditto.
+ * engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Ditto.
+ * engine-gpg.c (gpg_export, gpg_export_ext): Ditto. Implement
+ mode EXTERN.
+ (gpg_export, gpg_export_ext): Factor common code out to ..
+ (export_common): .. this.
+
+ * gpgme.h.in (gpgme_op_import_keys_start, gpgme_op_import_keys): New.
+ * gpgme.def, libgpgme.vers: Add them.
+ * import.c (gpgme_op_import_keys_start, gpgme_op_import_keys): New.
+ (_gpgme_op_import_keys_start): New.
+ * engine.c (_gpgme_engine_op_import): Add arg KEYARRAY.
+ * engine-backend.h (struct engine_ops): Ditto.
+ * engine-gpgsm.c (gpgsm_import): Ditto. Not functional.
+ * engine-gpg.c (gpg_import): Ditto. Implement it.
+
+2009-06-15 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.h.in (gpgme_result_ref, gpgme_result_unref): Add
+ prototypes.
+ * gpgme.def, libgpgme.vers (gpgme_result_ref, gpgme_result_unref):
+ Add these.
+ * context.h (struct ctx_op_data): Add member "references".
+ * gpgme.c (gpgme_result_ref, gpgme_result_unref): New functions.
+ (_gpgme_release_result): Use gpgme_result_unref.
+ * op-support.c (_gpgme_op_data_lookup): Initialize references.
+
+2009-06-12 Werner Koch <wk@g10code.com>
+
+ * gpgme-w32spawn.c (translate_get_from_file): Parse optional spawn
+ flags. Add new arg R_FLAGS. Fix segv on file w/o LF.
+ (translate_handles): Add new arg R_FLAGS. Avoid possible segv.
+ (main): Pass flags for my_spawn.
+ (my_spawn): Add arg FLAGS and implement AllowSetForegroundWindow.
+
+ * priv-io.h (IOSPAWN_FLAG_ALLOW_SET_FG): New.
+ * w32-io.c (_gpgme_io_spawn): Add arg FLAGS and implement it.
+ * w32-glib-io.c (_gpgme_io_spawn): Ditto.
+ * w32-qt-io.cpp (_gpgme_io_spawn): Ditto.
+ * posix-io.c (_gpgme_io_spawn): Add dummy arg FLAGS.
+ * engine-gpg.c (start): Call spawn with new flag.
+
+ * w32-util.c (_gpgme_allow_set_foregound_window): Rename to
+ _gpgme_allow_set_foreground_window. Change all callers.
+ * posix-util.c (_gpgme_allow_set_foreground_window): Ditto.
+
+2009-06-10 Werner Koch <wk@g10code.com>
+
+ * w32-util.c (_gpgme_allow_set_foregound_window): Add trace support.
+
+2009-06-09 Werner Koch <wk@g10code.com>
+
+ * engine-gpg.c (gpg_io_event): Test for cmd.fd.
+
+ * version.c (gpgme_check_version_internal): Make result const.
+
+ * gpgme.c: Include priv-io.h.
+ (gpgme_io_read, gpgme_io_write): New.
+ * libgpgme.vers (GPGME_1.1): Add them.
+ * gpgme.def: Ditto.
+
+ * Makefile.am (main_sources): Remove gpgme.h.
+ (include_HEADERS): Rename to nodist_include_HEADERS so that a
+ VPATH build won't use the distributed one.
+
+ * util.h (GPG_ERR_NOT_OPERATIONAL): Define.
+
+2009-05-28 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.h.in (gpgme_check_version_internal): New prototype.
+ (gpgme_check_version): New macro, overriding function of the same
+ name.
+ * libgpgme.vers, gpgme.def: Add gpgme_check_version_internal.o
+ * context.h (_gpgme_selftest): New variable declaration.
+ * version.c: Include "context.h".
+ (gpgme_check_version): Set _gpgme_selftest on success.
+ (gpgme_check_version_internal): New function.
+ * gpgme.c (_gpgme_selftest): Define it.
+ (gpgme_new): Check the selftest result.
+
+2009-05-18 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.h.in (gpgme_encrypt_flags_t): Add
+ GPGME_ENCRYPT_NO_ENCRYPT_TO.
+ * engine-gpg.c (gpg_encrypt): Pass --no-encrypt-to to gpg if
+ GPGME_ENCRYPT_NO_ENCRYPT_TO flag is set.
+
+2009-05-14 Werner Koch <wk@g10code.com>
+
+ * gpgme.h.in (gpgme_status_code_t): Explicitly initialize for
+ better maintainability and to help debugging.
+
+2009-05-05 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.h.in: Add compile time check for _FILE_OFFSET_BITS.
+
+2009-04-15 Marcus Brinkmann <marcus@g10code.de>
+
+ * posix-io.c (_gpgme_io_socket, _gpgme_io_connect): New functions.
+ * w32-io.c (_gpgme_io_connect): Fix stupid error.
+
+2009-04-08 Marcus Brinkmann <marcus@g10code.de>
+
+ * w32-glib-io.c (giochannel_table): New members used, fd, socket.
+ (find_channel): Drop CREATE argument.
+ (new_dummy_channel_from_fd, new_channel_from_fd)
+ (new_channel_from_socket): New functions.
+ (_gpgm_io_fd2str): Implement for sockets.
+ (_gpgme_io_write, _gpgme_io_read): Translate EAGAIN errors
+ correctly.
+ (_gpgme_io_pipe): Fix for new channel bookkeeping.
+ (_gpgme_io_close, _gpgme_io_dup): Likewise.
+ (wsa2errno, _gpgme_io_socket, _gpgme_io_connect): New.
+ * w32-io.c (MAX_READERS, MAX_WRITERS): Bump up to 40.
+ (wsa2errno, _gpgme_io_socket, _gpgme_io_connect): New.
+ * w32-qt-io.cpp (_gpgme_io_socket, _gpgme_io_connect): New stubs.
+ * version.c [HAVE_W32_SYSTEM]: Include "windows.h.
+ (do_subsystem_inits) [HAVE_W32_SYSTEM]: Call WSAStartup.
+ * engine-assuan.c (llass_status_handler): Ignore EAGAIN errors.
+
2009-03-18 Werner Koch <wk@g10code.com>
* gpgme.h.in (GPGME_KEYLIST_MODE_EPHEMERAL): New.