+2011-04-06 Werner Koch <wk@g10code.com>
+
+ * gpgme.h.in: Use INSERT__TYPEDEFS_FOR_GPGME_H to include platform
+ specific typedefs.
+
+2011-02-03 Werner Koch <wk@g10code.com>
+
+ * extra-stati.h: New.
+ * mkstatus: Extend to also process extra-stati.h
+ * Makefile.am (main_sources): Add extra-stati.h
+ (status-table.h): Depend on extra-stati.h and adjust rule.
+
+2011-02-03 Marcus Brinkmann <marcus@g10code.com>
+
+ * w32-io.c (_gpgme_io_socket): Return fd, not res.
+
+2011-02-02 Marcus Brinkmann <mb@g10code.com>
+
+ * assuan-support.c (my_socket, my_connect): New functions.
+ (_gpgme_assuan_system_hooks): Add my_Socket, my_connect.
+ * priv-io.h (_gpgme_io_socket): New prototype.
+ * w32-io.c (pid_to_handle, handle_to_oid, fd_to_handle): Remove macros.
+ (is_socket): Remove function.
+ (_gpgme_io_spawn) [HAVE_W32CE_SYSTEM]: Remove some dead code.
+ (_gpgme_io_spawn): Translate handles before DuplicateHandle them.
+
+2011-02-02 Marcus Brinkmann <mb@g10code.com>
+
+ * w32-util.c (mkstemp): Don't use CreateFile instead of open (the
+ function is not used on Windows CE, and the callers were not
+ adjusted).
+
+2011-01-21 Marcus Brinkmann <mb@g10code.com>
+
+ * engine-gpgconf.c (_gpgme_conf_opt_change): Fix the case that is
+ not self-assignment.
+
+2010-12-08 Werner Koch <wk@g10code.com>
+
+ * gpgme-tool.c (strcpy_escaped_plus): New.
+ (DIM, xtoi_1, xtoi_2): New.
+ (cmd_keylist): Allow for multiple patterns.
+
+2010-11-23 Marcus Brinkmann <mb@g10code.com>
+
+ * w32-io.c (create_reader, create_writer): Use small stack size on
+ Windows CE.
+
+2010-11-23 Marcus Brinkmann <mb@g10code.com>
+
+ * gpgme.h.in (gpgme_conf_arg_new): Make VALUE arg const void *.
+ * gpgconf.c (_gpgme_conf_arg_new): Likewise.
+ (gpgme_conf_arg_new): Likewise.
+ * engine-gpgconf.c (_gpgme_conf_arg_new): Likewise.
+ (gpgconf_write): Remove debug hack.
+
+2010-11-19 Marcus Brinkmann <mb@g10code.com>
+
+ * engine-gpgconf.c (_gpgme_conf_opt_change): Support
+ self-assignment. Requested by Marc Mutz.
+
+2010-11-17 Marcus Brinkmann <mb@g10code.com>
+
+ * vasprintf.c (int_vasprintf) [HAVE_W32CE_SYSTEM]: Just use a
+ fixed size buffer, as va_copy is not easy to fake.
+
+2010-11-15 Marcus Brinkmann <mb@g10code.com>
+
+ * w32-ce.h (strcasecmp, strdup) [_MSC_VER]: Define.
+ * genkey.c, passphrase.c: Include util.h.
+
+ * w32-util.c (_gpgme_w32ce_get_debug_envvar): Fix return value.
+
+2010-11-15 Werner Koch <wk@g10code.com>
+
+ * data-compat.c (gpgme_data_new_from_filepart)
+ (gpgme_data_new_from_file) [W32CE && _MSC_VER]: Return not
+ GPG_ERR_NOT_IMPLEMENTED.
+
+ * w32-ce.h (HKEY_PERFORMANCE_DATA, HKEY_CURRENT_CONFIG, _IOLBF)
+ (abort) [_MSC_VER]: Provide these macros.
+
+ * ath.h [W32CE && _MSC_VER]: Include winsock2.h.
+
+ * ath.c (ath_read, ath_write) [W32CE && _MSC_VER]: Do not call
+ non-available functions.
+
+2010-11-04 Werner Koch <wk@g10code.com>
+
+ * w32-ce.h [_MSC_VER && W32CE]: Undef leave.
+ * export.c: Include util.h so that we get the above undef.
+
+ * memrchr.c: Remove. Used to be a replacement function required
+ by the formerly included assuan code.
+
+2010-11-03 Werner Koch <wk@g10code.com>
+
+ * debug.c (_gpgme_debug) [W32CE]: Replace locatime by GetLocalTime.
+
+ * signers.c (gpgme_signers_clear): Remove useless return.
+ Reported by Patrick Spendrin.
+
+ * w32-util.c: s/__inline__/GPG_ERR_INLINE/
+
+ * setenv.c: Include string.h due to our strerror replacement.
+
+ * w32-ce.h (access, bsearch): New macros.
+ * w32-ce.c (_gpgme_wince_access): New.
+ (RegQueryValueExA): Change DATA to a void*.
+ (_gpgme_wince_bsearch): New. Taken from glibc 2.6.
+
+ Guard include of sys/stat.h and sys/types.h.
+
+2010-11-02 Werner Koch <wk@g10code.com>
+
+ * data-fd.c (read, write, lseek) [W32CE && ! __MINGW32CE__]: New.
+ Taken from Pedro Alves Public Domain code.
+
+ * w32-ce.h (SHGetSpecialFolderPath): Remove our defines and
+ prototypes. We use the system provided prototypes now.
+ * w32-ce.c: Include shlobj.h
+ (_WIN32_IE): Define to 0x0400
+ (CreateFileA): New.
+ * w32-util.c: Explicitly include windows headers before util.h.
+ (_gpgme_w32ce_get_debug_envvar): Do not use wchar_t strings for
+ read_w32_registry_string.
+ (mkstemp): Use CreateFile instead of open.
+
+ * w32-io.c (handle_to_fd, fd_tohandle): Add. We need them for W32.
+ * w32-util.c (_WIN32_IE): Define to 0x0400.
+
+ * util.h [W32]: Include windows.h.
+ * w32-sema.c: Do not include windows.h directly.
+ * ath.c (ssize_t, pid_t)[_MSC_VER]: Add new types.
+ * gpgme.c (gpgme_result_ref, gpgme_result_unref): Do not use a
+ void pointer in pointer arithmetic.
+ * w32-util.c: Include util.h prior to ath.h. Don't include
+ windows.h directly.
+ (F_OK): Define if not defined.
+ * w32-ce.c: Include string.h.
+ (RegQueryValueExA): Use WINAPI modifier to match the declaration.
+ * vfs-create.c: Include string.h because under W32CE with MSC we
+ get a warning related to our strerror replacement.
+ * encrypt-sign.c: Include stdlib.h, string.h and errno.h.
+ * priv-io.h [W32CE]: Include w32-ce.h
+ * w32-ce.h: Include winsock2.h and ws2tcpip.h.
+ (_MSV_VER): Remove useless macro.
+ (pid_t): Add typedef.
+
+ Guard all includes of unistd.h and sys/time.h.
+
+2010-10-28 Marcus Brinkmann <marcus@g10code.com>
+
+ * opassuan.c (gpgme_op_assuan_transact_ext): Fix uninitialized
+ value use. Reported by Marc Mutz.
+
+2010-10-07 Werner Koch <wk@g10code.com>
+
+ * gpgme-tool.c (ARGP_ERR_UNKNOWN): Use EDEADLK if available.
+
+ * w32-util.c (_gpgme_w32ce_get_debug_envvar) [W32CE]: New.
+ * debug.c (debug_init) [W32CE]: Use new function.
+
+2010-09-16 Werner Koch <wk@g10code.com>
+
+ * import.c: Include "util.h".
+ (parse_import): Return GPG_ERR_MISSING_ISSUER_CERT.
+
+ * util.h: Add fallback define for GPG_ERR_MISSING_ISSUER_CERT.
+ * op-support.c: Include "util.h".
+ (_gpgme_parse_inv_recp): Handle new code 12.
+
+2010-09-02 Marcus Brinkmann <marcus@g10code.de>
+
+ * error.c (gpgme_err_code_to_errno): Fix cut and paste bug (thanks
+ to Marc Mutz).
+
+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.
+
+ * version.c (do_subsystem_inits): Remove superfluous second
+ WSAStartup.
+
+2010-01-22 Werner Koch <wk@g10code.com>
+
+ * w32-io.c (writer): Try to use send first.
+ (reader): Try to use recv first.
+
+2010-01-08 Werner Koch <wk@g10code.com>
+
+ * engine-gpg.c (gpg_passwd): New.
+ (_gpgme_engine_ops_gpg): Register.
+ * passwd.c (parse_error): New.
+ (passwd_status_handler): Use it.
+
+2010-01-07 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme-tool.c (result_xml_write_cb_t, struct result_xml_state):
+ New types.
+ (MAX_TAGS): New macro.
+ (result_init, result_xml_indent, result_xml_tag_start)
+ (result_xml_tag_data, result_xml_tag_end, result_add_error)
+ (result_add_pubkey_algo, result_add_hash_algo, result_add_keyid)
+ (result_add_fpr, result_add_timestamp, result_add_sig_mode)
+ (result_add_value, result_add_string, result_encrypt_to_xml)
+ (result_decrypt_to_xml, result_sign_to_xml)
+ (result_verify_to_xml, result_import_to_xml)
+ (result_genkey_to_xml, result_keylist_to_xml)
+ (result_vfs_mount_to_xml): New functions.
+ (gt_result): Rewritten.
+
+2010-01-05 Werner Koch <wk@g10code.com>
+
+ * gpgme-tool.c (gt_passwd, cmd_passwd): New.
+ (register_commands): Register.
+
+ * gpgme.h.in (gpgme_op_passwd_start, gpgme_op_passwd): New.
+ * libgpgme.vers, gpgme.def: Add new functions.
+ * passwd.c: New.
+ * Makefile.am (main_sources): Add passwd.c
+ * engine.c, engine.h (_gpgme_engine_op_passwd): New.
+ * engine-backend.h (struct engine_ops): Add PASSWD.
+ * engine-gpgsm.c (gpgsm_passwd): New.
+ (_gpgme_engine_ops_gpgsm): Register.
+ (gpgsm_reset): Reset only if we have a conenction.
+
+ * gpgme.h.in (GPGME_PK_ECDSA, GPGME_PK_ECDH): New.
+ * gpgme.c (gpgme_pubkey_algo_name): Add them.
+
+2009-12-22 Marcus Brinkmann <marcus@g10code.de>
+
+ * debug.c: Test for TLS, not __GNUC__
+
+2009-12-15 Marcus Brinkmann <marcus@g10code.de>
+
+ * assuan-support.c (my_spawn): Calloc, not malloc, the fd_items.
+
+2009-12-10 Werner Koch <wk@g10code.com>
+
+ * debug.c (debug_init): Test on sgid process.
+
+2009-12-08 Marcus Brinkmann <marcus@g10code.de>
+
+ * Makefile.am (LTRCCOMPILE): Refactor with ...
+ (RCCOMPILE): ... this new macro.
+ (SUFFIXES): Add .lo.
+ (gpgme_res_ldflag): Removed.
+ (gpgme_res): Use libtool object file name here.
+ (libgpgme_la_LDFLAGS): Remove gpgme_res_ldflag usage.
+ (libgpgme_la_LIBADD): Add gpgme_res.
+
+ * ath.c (ath_self) [HAVE_W32_SYSTEM]: Fix typo.
+
+2009-12-02 Werner Koch <wk@g10code.com>
+
+ * gpgconf.c (gpgme_conf_arg_release): No return in a function
+ returning void. Reported by Wyllys Ingersoll.
+
+2009-12-01 Werner Koch <wk@g10code.com>
+
+ * gpgme-tool.c (cmd_getauditlog): Add flag --html.
+ (hlp_getauditlog): New.
+
+ * gpgme-tool.c (GT_GCC_A_SENTINEL, GT_GCC_A_PRINTF): New.
+ (gt_write_status): Use sentinel.
+ (argp_error, log_error): Use printf attribute.
+ (argp_parse): Remove extra argument to argp_error.
+ (_gt_progress_cb, gt_get_engine_info, gt_get_keylist_mode)
+ (gt_result): Add NULL arg.
+
+2009-11-26 Marcus Brinkmann <marcus@g10code.de>
+
+ * opassuan.c (opassuan_start): Allocate result structure before
+ beginning operation.
+
+2009-11-25 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme-tool.c (gpgme_server): Use assuan_fd_t and assuan_fdopen
+ on fds.
+
+2009-11-13 <wk@g10code.com>
+
+ * sign.c (_gpgme_sign_status_handler): Handle SIG_CREATED_SEEN.
+ * engine-uiserver.c (uiserver_sign): Make sending SENDER optional.
+
+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>
2009-06-16 Werner Koch <wk@g10code.com>
- * version.c: Include stdlib.h.
+ * 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.
* gpgme.c: Include priv-io.h.
(gpgme_io_read, gpgme_io_write): New.
- * libgpgme.vers (GPGME_1.1): Add them.
+ * libgpgme.vers (GPGME_1.1): Add them.
* gpgme.def: Ditto.
* Makefile.am (main_sources): Remove gpgme.h.
* opassuan.c, dirinfo.c, engine-assuan.c: New.
* Makefile.am: Add them.
- * engine-backend.h: Add _gpgme_engine_ops_assuan.
+ * engine-backend.h: Add _gpgme_engine_ops_assuan.
(struct engine_ops): Add field OPASSUAN_TRANSACT. Update all
engine intializers.
* Makefile.am (gpgsm_components): Add engine-assuan.c.
* op-support.c (_gpgme_op_reset): Implement a no-reset flag.
* getauditlog.c (getauditlog_start): Use that flag.
+2007-11-20 Werner Koch <wk@g10code.com>
+
+ * op-support.c (_gpgme_parse_inv_recp): Add new reason code 11.
+
2007-11-22 Werner Koch <wk@g10code.com>
* gpgme.h (gpgme_op_getauditlog_start, gpgme_op_getauditlog): New.
(_gpgme_engine_ops_gpgsm): Insert new function.
(gpgsm_new): Try to enable audit log support.
* rungpg.c (_gpgme_engine_ops_gpg): Insert dummy entry.
-
-2007-11-20 Werner Koch <wk@g10code.com>
-
- * op-support.c (_gpgme_parse_inv_recp): Add new reason code 11.
2007-11-12 Marcus Brinkmann <marcus@g10code.de>
drops to 0.
(find_reader, find_writer, kill_reader, kill_writer): Beautify.
* priv-io.h (_gpgme_io_dup): New prototype.
- * posix-io.c (_gpgme_io_dup): New function.
+ * posix-io.c (_gpgme_io_dup): New function.
* w32-io.c (_gpgme_io_dup): Likewise.
* w32-glib-io.c (_gpgme_io_dup): Likewise.
* engine-gpgsm.c (start): Reverting to version 2007-07-10.
in case of error.
* w32-io.c (_gpgme_io_read): Return C->error_code in ERRNO.
(_gpgme_io_write): Likewise.
-
+
* priv-io.h (_gpgme_io_set_close_notify): Change type of HANDLER
to _gpgme_close_notify_handler.
(_gpgme_close_notify_handler): New type.
2007-07-10 Marcus Brinkmann <marcus@g10code.de>
* priv-io.h (_gpgme_io_dup): New prototype.
- * posix-io.c (_gpgme_io_dup): New function.
+ * posix-io.c (_gpgme_io_dup): New function.
* w32-io.c (_gpgme_io_dup): Likewise.
* w32-glib-io.c (_gpgme_io_dup): Likewise.
* engine-gpgsm.c (start): Use _gpgme_dup() instead of dup().
(fd_cbs): Add fd_get_fd.
* data-stream.c (stream_get_fd): New function.
(stream_cbs): Add stream_get_fd.
- * data-mem.c (mem_cbs): Add NULL for get_fd callback.
+ * data-mem.c (mem_cbs): Add NULL for get_fd callback.
* data-user.c (user_cbs): Likewise.
* engine-gpgsm.c (gpgsm_set_fd) [USE_DESCRIPTOR_PASSING]: Try to
short-cut by passing the data descriptor directly.
* engine-gpgsm.c (gpgsm_new): Move code to dup status_fd to ...
(start): ... here.
* posix-io.c (_gpgme_io_recvmsg, _gpgme_io_sendmsg): New functions.
-
+
* engine.h (_gpgme_engine_new): Remove arguments lc_ctype and
lc_messages from prototype.
(_gpgme_engine_set_locale): New prototype.
(libgpgme_pth_la_SOURCES): Add $(system_components_not_extra).
(libgpgme_glib_la_LDFLAGS, libgpgme_glib_la_DEPENDENCIES,
(libgpgme_glib_la_LIBADD, libgpgme_glib_la_CFLAGS)
- [BUILD_W32_GLIB]: New variables.
+ [BUILD_W32_GLIB]: New variables.
* gpgme-config.in (glib): New option.
* gpgme.m4 (AM_PATH_GPGME_GLIB): New macro.
* w32-io.c (_gpgme_io_read, _gpgme_io_write): Print content in
debug mode too.
-2005-08-19 Werner Koch <wk@g10code.com>
-
- * gpgme.def: New.
- * versioninfo.rc.in: New.
- * Makefile.am: Addes support for building a W32 DLL.
-
- * ttyname_r.c (ttyname_r) [W32]: Return error.
- * ath-compat.c [W32]: select and co are not yet supported; return
- error.
- * data-stream.c (stream_seek): Use ftell if ftello is not available.
-
-2005-08-08 Werner Koch <wk@g10code.com>
-
- * util.h (stpcpy): Renamed to ..
- (_gpgme_stpcpy): .. this and made inline. This avoids duplicate
- definitions when linking statically.
- * stpcpy.c: Removed.
-
2005-07-27 Marcus Brinkmann <marcus@g10code.de>
* gpgme.h (gpgme_status_code_t): Add GPGME_STATUS_PLAINTEXT.
OPD->result.plaintext_filename.
(_gpgme_verify_status_handler): Handle GPGME_STATUS_PLAINTEXT.
+2005-08-08 Werner Koch <wk@g10code.com>
+
+ * util.h (stpcpy): Renamed to ..
+ (_gpgme_stpcpy): .. this and made inline. This avoids duplicate
+ definitions when linking statically.
+ * stpcpy.c: Removed.
+
+2005-08-19 Werner Koch <wk@g10code.com>
+
+ * gpgme.def: New.
+ * versioninfo.rc.in: New.
+ * Makefile.am: Addes support for building a W32 DLL.
+
+ * ttyname_r.c (ttyname_r) [W32]: Return error.
+ * ath-compat.c [W32]: select and co are not yet supported; return
+ error.
+ * data-stream.c (stream_seek): Use ftell if ftello is not available.
+
2005-07-26 Marcus Brinkmann <marcus@g10code.de>
* keylist.c (gpgme_get_key): Allow key IDs.
* data.c, engine-gpgsm.c, posix-io.c, rungpg.c, version.c,
w32-io.c, wait-private.c, wait-global.c, wait-user.c, wait.c:
Change all includes of "io.h" to "priv-io.h"
-
+
2005-03-09 Werner Koch <wk@g10code.com>
* w32-util.c (_gpgme_get_gpg_path, _gpgme_get_gpgsm_path): Do not
files.
2005-03-07 Timo Schulz <twoaday@g10code.de>
-
+
* gpgme.h: [_WIN32] Removed ssize_t typedef.
* ath.h: [_WIN32] Added some (dummy) types.
* io.h: [_WIN32] include stdio.h.
* data.c (_gpgme_data_outbound_handler): Close the file descriptor
if we get an EPIPE.
-
+
* data-stream.c (stream_seek): Call ftello and return the current
offset.
* data.h (struct gpgme_data): Change type of data.mem.offset to
2004-02-17 Werner Koch <wk@gnupg.org>
- * gpgme.h: Add GPGME_KEYLIST_MODE_VALIDATE.
+ * gpgme.h: Add GPGME_KEYLIST_MODE_VALIDATE.
* engine-gpgsm.c (gpgsm_keylist): Send this to gpgsm.
2004-02-15 Werner Koch <wk@gnupg.org>
* engine.c: Rename EngineObject to engine_t in the file. Also
EngineStatusHandler to engine_status_handler_t,
EngineCommandHandler to engine_command_handler_t and
- EngineColonLineHandler to engine_colon_line_handler.
+ EngineColonLineHandler to engine_colon_line_handler.
* rungpg.c (start): Likewise.
* engine-gpgsm.c: Likewise.
* engine-backend.h (struct engine_ops): Likewise
(gpgme_op_sign): Likewise.
* encrypt-sign.c (_gpgme_op_encrypt_sign_start): Call
_gpgme_op_sign_init_result.
-
+
* delete.c: Include <errno.h> and "gpgme.h", but not "util.h" or
"key.h".
(enum delete_problem): Move into function delete_status_handler.
(_gpgme_data_inbound_handler): Expand _gpgme_data_append, because
it will go. Do not assert DH.
(_gpgme_data_outbound_handler): Do not assert DH.
-
+
* export.c: Do not include <stdlib.h>, "debug.h" and "util.h", but
"gpgme.h".
(export_status_handler): Change type of first argument to void *.
* key.c (gpgme_key_get_string_attr): Fix validity attribute.
2003-04-24 Marcus Brinkmann <marcus@g10code.de>
-
+
* gpgme.h (struct _gpgme_op_genkey_result): New structure.
(GpgmeGenKeyResult): New type.
(gpgme_op_genkey): Drop last argument.
fail_on_pending_request.
* util.h: Don't include "types.h" or "debug.h", but include "gpgme.h".
-2003-01-30 Marcus Brinkmann <marcus@g10code.de>
+2003-01-19 Marcus Brinkmann <marcus@g10code.de>
- * types.h (EngineObject): Move typedef to ...
- * engine.h: ... here.
- * types.h (GpgObject): Move typedef to ...
- * rungpg.c: ... here.
- * types.h (GpgsmObject): Move typedef to ...
- * engine-gpgsm.c: ... here.
+ * rungpg.c (_gpgme_engine_ops_gpg): Remove gpg_start.
+ (gpg_start): Rename to ...
+ (start): ... this function. Change arguments to GpgObject.
+ (gpg_decrypt): Call start.
+ (gpg_edit): Likewise.
+ (gpg_encrypt): Likewise.
+ (gpg_encrypt_sign): Likewise.
+ (gpg_export): Likewise.
+ (gpg_import): Likewise.
+ (gpg_keylist): Likewise.
+ (gpg_keylist_ext): Likewise.
+ (gpg_trustlist): Likewise.
+ (gpg_verify): Likewise.
- * util.h (return_if_fail, return_null_if_fail,
- return_val_if_fail): Remove macro.
- * gpgme.c (gpgme_cancel): Don't use return_if_fail.
- * key.c (gpgme_key_ref): Likewise.
- * signers.c (gpgme_signers_enum): Likewise.
- (gpgme_signers_clear): Likewise.
+ * engine-gpgsm.c (_gpgme_engine_ops_encrypt): Remove gpgsm_start.
+ (gpgsm_start): Rename to ...
+ (struct gpgsm_object_s): Remove member command.
+ (gpgsm_release): Don't free command.
+ (start): ... this function. Change arguments to GpgsmObject and
+ const char *.
+ (gpgsm_decrypt): Call start.
+ (gpgsm_delete): Likewise.
+ (gpgsm_encrypt): Likewise.
+ (gpgsm_export): Likewise.
+ (gpgsm_genkey): Likewise.
+ (gpgsm_import): Likewise.
+ (gpgsm_keylist): Likewise.
+ (gpgsm_keylist_ext): Likewise.
+ (gpgsm_verify): Likewise.
- * engine-backend.h (struct engine_ops): Rename get_path to
- get_file_name.
- * gpgme.h (struct _gpgme_engine_info): Rename member path to
- file_name.
- * version.c: Do not include <stdio.h>, <stdlib.h>, context.h and
- util.h. Other clean ups.
- (parse_version_number): Protect more seriously against
- overflow.
- (gpgme_get_engine_info): Move to ...
- * engine.c (gpgme_get_engine_info): ... here.
- (_gpgme_engine_get_info): Function removed.
- (_gpgme_engine_get_path): Make static and rename to ...
- (engine_get_file_name): .. this.
- (_gpgme_engine_get_version): Make static and rename to ...
- (engine_get_version): ... this.
- (_gpgme_engine_get_req_version): Make static and rename to ...
- (engine_get_req_version): ... this.
- * engine.h (_gpgme_engine_get_path, _gpgme_engine_get_version,
- _gpgme_engine_req_version, _gpgme_engine_get_info.): Remove
- prototypes.
+ * decrypt.c (_gpgme_decrypt_start): Don't call
+ _gpgme_engine_start.
+ * delete.c (_gpgme_op_delete_start): Likewise.
+ * edit.c (_gpgme_op_edit_start): Likewise.
+ * encrypt.c (_gpgme_op_encrypt_start):
+ * encrypt-sign.c (_gpgme_op_encrypt_sign_start):
+ * export.c (_gpgme_op_export_start): Likewise.
+ * genkey.c (_gpgme_op_genkey_start): Likewise.
+ * import.c (_gpgme_op_import_start): Likewise.
+ * keylist.c (gpgme_op_keylist_ext_start): Likewise.
+ (gpgme_op_keylist_start): Likewise.
+ * sign.c (_gpgme_op_sign_start): Likewise.
+ * trustlist.c (gpgme_op_trustlist_start): Likewise.
+ * verify.c (_gpgme_op_verify_start): Likewise.
- * gpgme.h (enum GpgmeProtocol): Remove GPGME_PROTOCOL_AUTO.
- * gpgme.c (gpgme_set_protocol): Don't handle GPGME_PROTOCOL_AUTO.
- (gpgme_get_protocol_name): New function.
+ * engine-backend.h (struct engine_ops): Remove member start.
+
+ * engine.h (_gpgme_engine_start): Remove prototype.
+ * engine.c (_gpgme_engine_start): Remove function.
+
+2003-01-19 Miguel Coca <mcoca@gnu.org>
+
+ * w32-io.c (_gpgme_io_select): Add missing argument in calls to
+ DEBUG_BEGIN.
+ * w32-util.c: Include "sema.h".
+ (find_program_in_registry): Change DEBUG1 to DEBUG2, fixes compilation
+ error.
- * engine-backend.h (struct engine_ops): New member
- get_req_version, remove member check_version.
- * engine.h (_gpgme_Engine_get_version): New prototype.
- * rungpg.c (gpg_get_req_version): New function.
- (gpg_check_version): Function removed.
- (_gpgme_engine_ops_gpg): Add gpg_get_req_version, remove
- gpg_check_version.
- * engine-gpgsm.c (gpgsm_get_req_version): New function.
- (gpgsm_check_version): Function removed.
- (_gpgme_engine_ops_gpgsm): Add gpgsm_get_req_version, remove
- gpgsm_check_version.
- * engine.c: Include ops.h.
- (_gpgme_engine_get_req_version): New function.
- (gpgme_engine_check_version): Rewritten.
- * version.c (gpgme_get_engine_info): Rewritten.
- * gpgme.h (gpgme_engine_info): New structure.
- (GpgmeEngineInfo): New type.
-
2003-01-29 Marcus Brinkmann <marcus@g10code.de>
* types.h: Remove byte and ulong types.
* key.c (gpgme_key_sig_get_string_attr): Use validity_to_string
instead otrust_to_string to calculate validity.
-
-2003-01-19 Miguel Coca <mcoca@gnu.org>
-
- * w32-io.c (_gpgme_io_select): Add missing argument in calls to
- DEBUG_BEGIN.
- * w32-util.c: Include "sema.h".
- (find_program_in_registry): Change DEBUG1 to DEBUG2, fixes compilation
- error.
-2003-01-19 Marcus Brinkmann <marcus@g10code.de>
+2003-01-30 Marcus Brinkmann <marcus@g10code.de>
- * rungpg.c (_gpgme_engine_ops_gpg): Remove gpg_start.
- (gpg_start): Rename to ...
- (start): ... this function. Change arguments to GpgObject.
- (gpg_decrypt): Call start.
- (gpg_edit): Likewise.
- (gpg_encrypt): Likewise.
- (gpg_encrypt_sign): Likewise.
- (gpg_export): Likewise.
- (gpg_import): Likewise.
- (gpg_keylist): Likewise.
- (gpg_keylist_ext): Likewise.
- (gpg_trustlist): Likewise.
- (gpg_verify): Likewise.
+ * types.h (EngineObject): Move typedef to ...
+ * engine.h: ... here.
+ * types.h (GpgObject): Move typedef to ...
+ * rungpg.c: ... here.
+ * types.h (GpgsmObject): Move typedef to ...
+ * engine-gpgsm.c: ... here.
- * engine-gpgsm.c (_gpgme_engine_ops_encrypt): Remove gpgsm_start.
- (gpgsm_start): Rename to ...
- (struct gpgsm_object_s): Remove member command.
- (gpgsm_release): Don't free command.
- (start): ... this function. Change arguments to GpgsmObject and
- const char *.
- (gpgsm_decrypt): Call start.
- (gpgsm_delete): Likewise.
- (gpgsm_encrypt): Likewise.
- (gpgsm_export): Likewise.
- (gpgsm_genkey): Likewise.
- (gpgsm_import): Likewise.
- (gpgsm_keylist): Likewise.
- (gpgsm_keylist_ext): Likewise.
- (gpgsm_verify): Likewise.
+ * util.h (return_if_fail, return_null_if_fail,
+ return_val_if_fail): Remove macro.
+ * gpgme.c (gpgme_cancel): Don't use return_if_fail.
+ * key.c (gpgme_key_ref): Likewise.
+ * signers.c (gpgme_signers_enum): Likewise.
+ (gpgme_signers_clear): Likewise.
- * decrypt.c (_gpgme_decrypt_start): Don't call
- _gpgme_engine_start.
- * delete.c (_gpgme_op_delete_start): Likewise.
- * edit.c (_gpgme_op_edit_start): Likewise.
- * encrypt.c (_gpgme_op_encrypt_start):
- * encrypt-sign.c (_gpgme_op_encrypt_sign_start):
- * export.c (_gpgme_op_export_start): Likewise.
- * genkey.c (_gpgme_op_genkey_start): Likewise.
- * import.c (_gpgme_op_import_start): Likewise.
- * keylist.c (gpgme_op_keylist_ext_start): Likewise.
- (gpgme_op_keylist_start): Likewise.
- * sign.c (_gpgme_op_sign_start): Likewise.
- * trustlist.c (gpgme_op_trustlist_start): Likewise.
- * verify.c (_gpgme_op_verify_start): Likewise.
+ * engine-backend.h (struct engine_ops): Rename get_path to
+ get_file_name.
+ * gpgme.h (struct _gpgme_engine_info): Rename member path to
+ file_name.
+ * version.c: Do not include <stdio.h>, <stdlib.h>, context.h and
+ util.h. Other clean ups.
+ (parse_version_number): Protect more seriously against
+ overflow.
+ (gpgme_get_engine_info): Move to ...
+ * engine.c (gpgme_get_engine_info): ... here.
+ (_gpgme_engine_get_info): Function removed.
+ (_gpgme_engine_get_path): Make static and rename to ...
+ (engine_get_file_name): .. this.
+ (_gpgme_engine_get_version): Make static and rename to ...
+ (engine_get_version): ... this.
+ (_gpgme_engine_get_req_version): Make static and rename to ...
+ (engine_get_req_version): ... this.
+ * engine.h (_gpgme_engine_get_path, _gpgme_engine_get_version,
+ _gpgme_engine_req_version, _gpgme_engine_get_info.): Remove
+ prototypes.
- * engine-backend.h (struct engine_ops): Remove member start.
+ * gpgme.h (enum GpgmeProtocol): Remove GPGME_PROTOCOL_AUTO.
+ * gpgme.c (gpgme_set_protocol): Don't handle GPGME_PROTOCOL_AUTO.
+ (gpgme_get_protocol_name): New function.
- * engine.h (_gpgme_engine_start): Remove prototype.
- * engine.c (_gpgme_engine_start): Remove function.
+ * engine-backend.h (struct engine_ops): New member
+ get_req_version, remove member check_version.
+ * engine.h (_gpgme_Engine_get_version): New prototype.
+ * rungpg.c (gpg_get_req_version): New function.
+ (gpg_check_version): Function removed.
+ (_gpgme_engine_ops_gpg): Add gpg_get_req_version, remove
+ gpg_check_version.
+ * engine-gpgsm.c (gpgsm_get_req_version): New function.
+ (gpgsm_check_version): Function removed.
+ (_gpgme_engine_ops_gpgsm): Add gpgsm_get_req_version, remove
+ gpgsm_check_version.
+ * engine.c: Include ops.h.
+ (_gpgme_engine_get_req_version): New function.
+ (gpgme_engine_check_version): Rewritten.
+ * version.c (gpgme_get_engine_info): Rewritten.
+ * gpgme.h (gpgme_engine_info): New structure.
+ (GpgmeEngineInfo): New type.
2003-01-06 Werner Koch <wk@gnupg.org>
(mem_release): Change return type to void.
* data-user.c (user_read): Change return type to ssize_t.
(user_release): Change return type to void.
- * data-compat.c (old_user_read): Change return type to ssize_t.
+ * data-compat.c (old_user_read): Change return type to ssize_t.
* gpgme.h (GpgmeDataReadCb): Likewise.
(gpgme_data_read): Likewise.
(GpgmeDataSeekCb): Change return type to off_t.
_gpgme_data_append_string_for_xml rather than
_gpgme_data_append_string for the field content.
Submitted by Miguel Coca <e970095@zipi.fi.upm.es>.
-
+
2002-10-10 Marcus Brinkmann <marcus@g10code.de>
* rungpg.h, engine-gpgsm.h: File removed.
* import.c (_gpgme_op_import_start): Likewise.
* sign.c (_gpgme_op_sign_start): Likewise.
* verify.c (_gpgme_op_verify_start): Likewise.
-
+
* encrypt.c (gpgme_op_encrypt): Remove hack that returns invalid
no recipient if no data was returned.
* encrypt-sign.c (gpgme_op_encrypt_sign): Remove hack that returns
(build_argv): Use new member INBOUND to determine direction of
file descriptor. Don't check the data type.
* rungpg.h (_gpgme_gpg_add_data): Add new argument to prototype.
-
+
* gpgme.c (gpgme_get_op_info): Don't call
_gpgme_data_get_as_string if CTX->op_info is NULL.
2002-08-23 Werner Koch <wk@gnupg.org>
- * gpgme-config.in: Made --prefix work for --libs.
+ * gpgme-config.in: Made --prefix work for --libs.
2002-08-21 Marcus Brinkmann <marcus@g10code.de>
* gpgme.m4: Replaced with a new and faster version. This does not
anymore try to build test programs. If we really need test
- programs, we should add an option to gpgme-config to do so.
+ programs, we should add an option to gpgme-config to do so.
* vasprintf.c (int_vasprintf): Hack to handle NULL passed for %s.
* gpgme.h (GPGME_KEYLIST_MODE_SIGS): New.
* rungpg.c (_gpgme_gpg_op_keylist): Include sigs in listing depending
non the list mode.
-
+
* key.c (gpgme_key_get_string_attr): Use GPGME_ATTR_TYPE to return
information about the key type (PGP or X.509).
(gpgme_key_get_ulong_attr): Likewise.
* rungpg.c (struct gpg_object_s): Likewise for CMD.code.
These changes add an edit operation to GPGME:
-
+
* context.h (struct gpgme_context_s): New member RESULT.edit. *
ops.h: Add prototype for _gpgme_release_edit_result and
_gpgme_passphrase_command_handler.
* keylist.c (gpgme_op_keylist_ext_start): Always use our own FD
table (eg use synchronous mode).
+2002-06-27 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.h: Fix documentation of key attribute retrieval functions.
+
2002-06-28 Marcus Brinkmann <marcus@g10code.de>
* ops.h (_gpgme_wait_on_condition): Remove HANG argument from
table (eg use synchronous mode).
(gpgme_op_trustlist_next): Remove HANG argument from
_gpgme_wait_on_condition. Check its return value.
-
-2002-06-27 Marcus Brinkmann <marcus@g10code.de>
-
- * gpgme.h: Fix documentation of key attribute retrieval functions.
2002-06-26 Werner Koch <wk@gnupg.org>
2002-06-12 Werner Koch <wk@gnupg.org>
* keylist.c (struct keylist_result_s): New.
- (_gpgme_release_keylist_result): Release it here
+ (_gpgme_release_keylist_result): Release it here
(keylist_status_handler): Handle truncated.
(append_xml_keylistinfo): New.
* gpgme.c (_gpgme_release_result): and use it here.
* verify.c (_gpgme_verify_status_handler): Handle TRUST_* status
lines so that a claim can be made without looking up the key.
- (gpgme_get_sig_string_attr): New.
+ (gpgme_get_sig_string_attr): New.
(gpgme_get_sig_ulong_attr): New.
* gpgme.h (GpgmeAttr): Added GPGME_ATTR_SIG_STATUS.
* gpgme.h (GpgmeSigStat): Add _GOOD_EXP and _GOOD_EXPKEY.
* verify.c (_gpgme_verify_status_handler, finish_sig): Handle
- these new status codes. Store the expiration time
+ these new status codes. Store the expiration time
2002-04-27 Werner Koch <wk@gnupg.org>
* verify.c (_gpgme_verify_status_handler): Fix the last change.
+2002-02-25 Marcus Brinkmann <marcus@g10code.de>
+
+ * verify.c (_gpgme_verify_status_handler): Parse the args line to
+ see if the problem is due to a missing key, and report that back
+ to the user.
+
2002-02-25 Marcus Brinkmann <marcus@g10code.de>
* engine.c (_gpgme_engine_op_encrypt_sign): New function.
* rungpg.c (_gpgme_append_gpg_args_from_signers): New function.
(_gpgme_gpg_op_sign): Use that new function.
(_gpgme_gpg_op_encrypt_sign): New function.
- * rungpg.h (_gpgme_gpg_op_encrypt_sign): New prototype.
+ * rungpg.h (_gpgme_gpg_op_encrypt_sign): New prototype.
* gpgme.h (gpgme_op_encrypt_sign_start): New prototype.
(gpgme_op_encrypt_sign): Likewise.
* Makefile.am (libgpgme_la_SOURCES): Add encrypt-sign.c.
(_gpgme_encrypt_status_handler): ... this and make non-static.
* encrypt.c (gpgme_op_encrypt_start): Use new status handler name.
* sign.c (gpgme_op_sign_start): Likewise.
-
-2002-02-25 Marcus Brinkmann <marcus@g10code.de>
-
- * verify.c (_gpgme_verify_status_handler): Parse the args line to
- see if the problem is due to a missing key, and report that back
- to the user.
2002-02-25 Marcus Brinkmann <marcus@g10code.de>
* wait.c: Include `engine.h'.
(run_idle): Call _gpgme_engine_housecleaning(), not
_gpgme_gpg_housecleaning().
-
+
2001-12-18 Marcus Brinkmann <marcus@g10code.de>
* key.c (_gpgme_key_append_name): Append, not prepend, the uid.
server process from wait queue.
(_gpgme_gpgsm_op_verify, _gpgme_gpgsm_start,
_gpgme_gpgsm_set_status_handler, gpgms_status_handler): New function.
-
+
* engine.c (_gpgme_engine_start): Implement for GPGME_PROTOCOL_CMS.
(_gpgme_engine_set_status_handler): Likewise.
(_gpgme_engine_op_verify): Likewise.
* engine.c: Likewise.
* engine-gpgsm.h: Likewise.
* engine-gpgsm.c: Likewise.
-
+
* rungpg.c (_gpgme_gpg_get_version): New function.
(_gpgme_gpg_check_version): Likewise.
* rungpg.h: Add prototypes for _gpgme_gpg_get_version and
* keylist.c (finish_key): Shortcut for no tmp_key. Changed all
callers to use this function without a check for tmp_key.
-
+
* keylist.c (gpgme_op_keylist_next): Reset the key_cond after
emptying the queue. Bug reported by Stéphane Corthésy.
* keylist.c (keylist_colon_handler): Do a finish key if we receive
an EOF here. This is probably the reason for a lot of bugs
related to keylisting. It is so obvious. Kudos to Enno Cramer
- for pointing that out.
+ for pointing that out.
2001-08-28 Werner Koch <wk@gnupg.org>
* gpgme.c, gpgme.h (gpgme_get_op_info): New.
- (_gpgme_set_op_info): New.
+ (_gpgme_set_op_info): New.
(_gpgme_release_result): Reset the op_info here.
* sign.c (append_xml_siginfo): New.
(sign_status_handler): Store the sig create information.
2001-05-01 José Carlos García Sogo <jose@jaimedelamo.eu.org>
* encrypt.c (gpgme_op_encrypt_start): Deleted the assert ( !c->gpg )
- line, because it gave an error if another operation had been made
+ line, because it gave an error if another operation had been made
before using the same context.
-
- * decrypt.c (gpgme_op_decrypt_start): The same as above. Also added
+
+ * decrypt.c (gpgme_op_decrypt_start): The same as above. Also added
one line to release the gpg object in the context (if any).
-
+
2001-04-26 Werner Koch <wk@gnupg.org>
* key.c, key.h (_gpgme_key_cache_init): New.
* w32-io.c (_gpgme_io_select): Don't select on the writer if there
are still bytes pending. Timo found this not easy to track down
- race condition.
+ race condition.
2001-04-02 Werner Koch <wk@gnupg.org>
* gpgme.h: Add GPGME_ATTR_KEY_{EXPIRED,DISABLED}.
* key.c (gpgme_key_get_ulong_attr): And return those attribs.
- * verify.c (gpgme_get_sig_key): Set keyliosting mode depending on
+ * verify.c (gpgme_get_sig_key): Set keyliosting mode depending on
the mode set in the current context. Suggested by Timo.
* key.c (gpgme_key_get_ulong_attr): Return can_certify and not
2001-03-14 Werner Koch <wk@gnupg.org>
- * w32-io.c (destroy_reader,destroy_writer): Fixed syntax error.
+ * w32-io.c (destroy_reader,destroy_writer): Fixed syntax error.
Thanks to Jan Oliver Wagner.
2001-03-13 Werner Koch <wk@gnupg.org>
* context.h: Add invalid and revoke flags to user_id structure.
* keylist.c (gpgme_op_keylist_start): Use --fixed-list-mode.
(keylist_colon_handler): Adjust for that.
- (set_userid_flags): New.
+ (set_userid_flags): New.
(set_mainkey_trust_info): Handle new key invalid flag
(set_subkey_trust_info): Ditto.
* gpgme.h: Add new attributes for key and user ID flags.
2001-02-20 Werner Koch <wk@gnupg.org>
- * w32-io.c (destroy_reader,kill_reader): New.
+ * w32-io.c (destroy_reader,kill_reader): New.
(create_reader, reader): Add a new event to stop the thread.
(_gpgme_io_close): Kill the reader thread.
- * posix-io.c (_gpgme_io_select): Handle frozen fds here.
+ * posix-io.c (_gpgme_io_select): Handle frozen fds here.
* 32-io.c (_gpgme_io_select): Ditto. Removed a bunch of unused code.
* wait.c: Reworked the whole thing.
* posix-io.c (_gpgme_io_set_close_notify): New.
(_gpgme_io_close): Do the notification.
- * rungpg.c (close_notify_handler): New.
+ * rungpg.c (close_notify_handler): New.
(_gpgme_gpg_new): Register a callback for the fd.
(_gpgme_gpg_set_colon_line_handler): Ditto.
(build_argv): Ditto
* keylist.c (gpgme_op_keylist_start): Cancel a pending request.
- * posix-io.c (_gpgme_io_read): Add some debug output.
+ * posix-io.c (_gpgme_io_read): Add some debug output.
(_gpgme_io_write): Ditto.
(_gpgme_io_select): Increased the timeout.
2001-02-12 Werner Koch <wk@gnupg.org>
Enhanced the signature verification, so that it can how handle
- more than one signature and is able to return more information on
+ more than one signature and is able to return more information on
the signatures.
* verify.c (gpgme_get_sig_key): New.
(gpgme_get_sig_status): New.
- * gpgme.h: Add stdio.h.
+ * gpgme.h: Add stdio.h.
(GpgmeSigStat): New status DIFF.
2001-02-01 Werner Koch <wk@gnupg.org>
* wait.c (_gpgme_wait_on_condition): Removed all exit code processing.
(propagate_term_results,clear_active_fds): Removed.
- (count_active_fds): Renamed to ..
- (count_active_and_thawed_fds): .. this and count only thawed fds.
+ (count_active_fds): Renamed to ..
+ (count_active_and_thawed_fds): .. this and count only thawed fds.
* rungpg.c (gpg_colon_line_handler): Return colon.eof and not
status.eof ;-)
test his fix :-)
* w32-io.c: Does now use reader threads, so that we can use
- WaitForMultipleObjects.
+ WaitForMultipleObjects.
* sema.h, posix-sema.c, w32-sema.c: Support for Critcial sections.
Does currently only work for W32.
* data.c (gpgme_data_rewind): Allow to rewind data_type_none.
- Copyright 2001,2002,2003,2004,2005,2006,2007,2008,2009 g10 Code GmbH
+ Copyright 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,
+ 2011 g10 Code GmbH
This file is free software; as a special exception the author gives
unlimited permission to copy and/or distribute it, with or without