doc/
[gpgme.git] / gpgme / ChangeLog
index 869354b..a69c048 100644 (file)
+2003-08-14  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_new_signature): Rename member CLASS to
+       _OBSOLETE_CLASS, add member CLASS with type unsigned int.
+       * sign.c (parse_sig_created): Also set SIG->_unused_class for
+       backward compatibility.
+
+2003-08-04  Marcus Brinkmann  <marcus@g10code.de>
+
+       * verify.c (parse_new_sig): Fix status parsing case.
+
+2003-07-31  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_subkey): Add flag CAN_AUTHENTICATE.
+       Lower _UNUSED to 23 bits.
+       (struct _gpgme_key): Likewise.
+       * keylist.c (set_mainkey_capability): Support 'a' and 'A'.
+       (set_subkey_capability): Support 'a'.
+
+       * keylist.c (gpgme_get_key): Check if there is more than one key
+       listed, and return GPG_ERR_AMBIGUOUS_NAME in that case.
+
+       * util.h (_gpgme_decode_c_string): Change type of LEN argument to
+       size_t.
+       (_gpgme_decode_percent_string): Likewise.
+       * conversion.c (_gpgme_decode_c_string): Likewise.
+       (_gpgme_decode_percent_string): Likewise.
+       (_gpgme_map_gnupg_error): Change type of I to unsigned int.
+       * signers.c (gpgme_signers_clear): Likewise.
+       (gpgme_signers_enum): New unsigned variable SEQNO, set to SEQ.
+       Use SEQNO instead SEQ.
+       * wait.c (fd_table_put): Change type of I and J to unsigned int.
+       * wait-global.c (_gpgme_wait_global_event_cb): Change type of IDX
+       to unsigned int.
+       (gpgme_wait): Change type of I and IDX to unsigned int.
+       * wait-private.c (_gpgme_wait_on_condition): Change type of IDX
+       and I to unsigned int.
+       * posix-io.c (_gpgme_io_close): Cast return value of macro DIM to
+       int to suppress gcc warning.
+       (_gpgme_io_set_close_notify): Likewise.
+       (_gpgme_io_select): Change type of I to unsigned int.
+       * engine.c (gpgme_get_engine_info): Change type of PROTO to
+       unsigned int.
+       * wait-user.c (_gpgme_user_io_cb_handler): Change type of IDX and
+       I to unsigned int.
+
+2003-07-29  Marcus Brinkmann  <marcus@g10code.de>
+
+       * decrypt-verify.c (decrypt_verify_status_handler): Expand silly
+       and wrong expression.
+       * encrypt-sign.c (encrypt_sign_status_handler): Likewise.
+       * encrypt.c (encrypt_sym_status_handler): Likewise.
+       * sign.c (sign_status_handler): Likewise.
+       * verify.c (verify_status_handler): Likewise.
+       * decrypt.c (decrypt_status_handler): Likewise.
+
+       * engine.c (gpgme_get_engine_info): Initialize NULL.
+
+2003-07-23  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme-config.in (gpg_error_libs): Quote GPG_ERROR_CFLAGS and
+       GPG_ERROR_LIBS when setting the corresponding variables.
+       Reported by St├ęphane Corth├ęsy.
+
+2003-07-22  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c (set_recipients): Move declaration of NEWLEN to
+       the beginning of the block.
+
+2003-06-22  Marcus Brinkmann  <marcus@g10code.de>
+
+       * data-mem.c (mem_write): Copy original buffer content.
+
+2003-06-22  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_user_ids_release, gpgme_user_ids_append): Remove
+       prototypes.
+
+2003-06-06  Marcus Brinkmann  <marcus@g10code.de>
+
+       * Makefile.am (AM_CPPFLAGS): Add @GPG_ERROR_CFLAGS@.
+       * gpgme-config.in (gpg_error_libs, gpg_error_cflags): New variables.
+       Print them.
+
+       * op-support.c (_gpgme_parse_inv_userid): Rename to
+       _gpgme_parse_inv_recp and change to new datatype.
+       * ops.h (_gpgme_parse_inv_key): Fix prototype.
+       * gpgme.h (struct _gpgme_invalid_user_id): Rename to
+       __gpgme_invalid_key.  Rename field ID to KEY.
+       (gpgme_invalid_user_id_t): Rename to gpgme_invalid_key_t.
+       (struct _gpgme_op_encrypt_result): Here, too.
+       (struct _gpgme_op_sign_result): Likewise.
+       * encrypt.c (struct op_data): Likewise.
+       (release_op_data): Likewise.
+       * sign.c (struct op_data): Likewise.
+       (release_op_data): Likewise.
+
+       * posix-io.c (_gpgme_io_read): Save errno across debug calls.
+       (_gpgme_io_write): Likewise.
+       (_gpgme_io_pipe): Likewise.
+       (_gpgme_io_select): Likewise.
+
+       * rungpg.c (struct engine_gpg): Remove arg_error.
+       (add_arg): Don't set arg_error.
+       (add_data): Likewise.
+       (start): Don't check arg_error.
+       (gpg_new): Check return value of add_arg.
+       * verify.c (parse_notation): Free allocated memory at error.
+
+2003-06-05  Marcus Brinkmann  <marcus@g10code.de>
+
+       Everywhere: Use libgpg-error error codes.
+
+       * Makefile.am (EXTRA_DIST): Remove mkerrors.
+       (BUILT_SOURCES): Remove errors.c.
+       (MOSTLYCLEANFILES): Likewise.
+       (libgpgme_la_SOURCES): Likewise.  Add error.c.
+       (errors.c): Remove target.
+       * mkerrors: File removed.
+       * error.c: New file.
+
+       * gpgme.h (gpgme_error_t): Change to type gpg_error_t.
+       (gpgme_err_code_t, gpgme_err_source_t): New types.
+       (gpgme_err_code, gpgme_err_source, gpgme_error, gpgme_err_make):
+       New static inline functions.
+       (gpgme_strsource, gpgme_err_code_from_errno,
+       gpgme_err_code_to_errno, gpgme_err_make_from_errno,
+       gpgme_error_from_errno): New prototypes.
+
+2003-05-29  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_op_export_start): Change second arg to const char *.
+       (gpgme_op_export): Likewise.
+       (gpgme_op_export_ext_start): New prototype.
+       (gpgme_op_export_ext): Likewise.
+       * engine.h: Likewise for _gpgme_engine_op_export and
+       _gpgme_engine_op_export_ext.
+       * engine-backend.h (struct engine_ops): Change second argument of
+       prototype of export to const char *, and add reserverd int as
+       third argument.  Add prototype for export_ext.
+       * engine.c (_gpgme_engine_op_export_ext): New function.
+       (_gpgme_engine_op_export): Change second argument of prototype of
+       export to const char *, and add reserverd int as third argument.
+       * rungpg.c (gpg_export): Change second argument of prototype of
+       export to const char *, and add reserverd int as third argument.
+       (gpg_export_ext): New function.
+       (gpg_keylist_ext): Break loop at error.
+       (_gpgme_engine_ops_gpg): Add gpg_export_ext.
+       * engine-gpgsm.c (gpgsm_export): Change second argument of
+       prototype of export to const char *, and add reserverd int as
+       third argument.
+       (gpgsm_export_ext): New function.
+       (_gpgme_engine_ops_gpgsm): Add gpgsm_export_ext.
+       * export.c (export_start): Change second argument of prototype of
+       export to const char *, and add reserverd int as third argument.
+       (gpgme_op_export_start): Likewise.
+       (export_ext_start): New function.
+       (gpgme_op_export_ext_start): Likewise.
+       (gpgme_op_export_ext): Likewise.
+
+       * gpgme.h (gpgme_keylist_mode_t): New type for anonymous enum.
+       (gpgme_sigsum_t): New type for anonymous enum.
+
+       * encrypt-sign.c (encrypt_sign_start): Check for errors earlier,
+       and return an error if RECP is not set.
+
+       * Makefile.am (libgpgme_la_SOURCES): Remove user-id.c.
+       * user-id.c: Remove file.
+       * ops.h: Remove prototype for _gpgme_user_ids_all_valid.
+       * gpgme.h (gpgme_encrypt_flags_t): New type.
+       (gpgme_op_encrypt_start): Change second parameter to type
+       gpgme_key_t[], and add third parameter.
+       (gpgme_op_encrypt): Likewise.
+       (gpgme_op_encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign): Likewise.
+       * encrypt.c (encrypt_start): Likewise.
+       (gpgme_op_encrypt_start): Likewise.
+       (gpgme_op_encrypt): Likewise.  Pass flags to engine.
+       * encrypt-sign.c (encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign): Likewise.
+       * engine-backend.h (struct engine_ops): Likewise for prototypes of
+       encrypt and encrypt_sign.
+       * engine.h: Likewise for prototypes of _gpgme_engine_op_encrypt
+       and _gpgme_engine_op_encrypt_sign.
+       * engine.c (_gpgme_engine_op_encrypt): Likewise.
+       (_gpgme_engine_op_encrypt_sign): Likewise.
+       * rungpg.c (gpg_encrypt): Likewise.
+       (gpg_encrypt_sign): Likewise.
+       * rungpg.c (gpg_encrypt): Check flags for always trust option.
+       * engine-gpgsm.c (gpgsm_encrypt): Likewise.
+       (set_recipients): Rewritten to use keys instead user IDs.
+       * rungpg.c (append_args_from_recipients): Rewritten to use keys
+       instead user IDs.
+       * encrypt.c (_gpgme_encrypt_status_handler): Change errors
+       returned to GPGME_Invalid_Key and GPGME_General_Error.
+
+2003-05-28  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c: Rename GpgsmObject to engine_gpgsm_t.
+       (struct gpgsm_object_s): Rename to struct engine_gpgsm.
+       * rungpg.c: Rename GpgObject to engine_gpg_t.
+       (struct gpg_object_s): Rename to struct engine_gpg.
+
+       * context.h (struct gpgme_context): Change EngineObject to
+       engine_object_t.
+       (enum ctx_op_data_type): Rename to ctx_op_data_id_t.
+       (ctx_op_data_t): New type.
+       (struct gpgme_context): Use it.
+       * ops.h (_gpgme_op_data_lookup): Use new type name.
+       * op-support.c (_gpgme_op_data_lookup): Likewise.
+       * 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.    
+       * rungpg.c (start): Likewise.
+       * engine-gpgsm.c: Likewise.
+       * engine-backend.h (struct engine_ops): Likewise
+       * engine.h (struct engine_object_s): Rename to struct engine.
+       (EngineObject): Rename to engine_t.  Also everywhere else in the
+       file.
+       (EngineStatusHandler): Rename to engine_status_handler_t.
+       (EngineColonLineHandler): Rename to engine_colon_line_handler_t.
+       (EngineCommandHandler): Rename to engine_command_handler_t.
+
+       * engine-gpgsm.c (gpgsm_export): Fix bug in last change.
+
+       * Makefile.am (libgpgme_la_SOURCES): Remove recipient.c, add
+       user-id.c.
+       * gpgme.h (gpgme_recipients_t): Removed.
+       (gpgme_recipients_new, gpgme_recipients_release,
+       gpgme_recipients_add_name,
+       gpgme_recipients_add_name_with_validity, gpgme_recipients_count,
+       gpgme_recipients_enum_open, gpgme_recipients_enum_read,
+       gpgme_recipients_enum_close): Removed.
+       (gpgme_op_encrypt, gpgme_op_encrypt_start, gpgme_op_encrypt_sign,
+       gpgme_op_encrypt_sign_start, gpgme_op_export_start,
+       gpgme_op_export): Change second argument to gpgme_user_id_t.
+       (gpgme_user_ids_release): New prototype.
+       (gpgme_user_ids_append): Likewise.
+       * ops.h (_gpgme_recipients_all_valid): Remove.
+       (_gpgme_user_ids_all_valid): Add.
+       * context.h (struct gpgme_recipients): Removed.
+       * user-id.c: New file.
+       * recipient.c: Removed file.
+       * rungpg.c (append_args_from_recipients): Change last arg to
+       gpgme_user_id_t.  Reimplement.
+       (gpg_encrypt): Change second arg to gpgme_user_id_t.
+       (gpg_encrypt_sign): Likewise.
+       (gpg_export): Likewise.  Rewrite user ID list code.
+       * engine.c (_gpgme_engine_op_encrypt): Change second arg to
+       gpgme_user_id_t.
+       (_gpgme_engine_op_encrypt_sign): Likewise.
+       (_gpgme_engine_op_export): Likewise.
+       * engine.h (_gpgme_engine_op_encrypt, _gpgme_engine_op_encrypt_sign,
+       _gpgme_engine_op_export): Likewise.
+       * engine-gpgsm.c (set_recipients): Likewise.  Rewrite loop code.
+       (gpgsm_encrypt): Likewise.
+       (gpgsm_export): Likewise.
+       * engine-backend.h (struct engine_ops): Likewise for members
+       ENCRYPT, ENCRYPT_SIGN and EXPORT.
+       * export.c (export_start, gpgme_op_export_start, gpgme_op_export):
+       Likewise.
+       * encrypt.c (encrypt_start): Likewise.  Don't check for count of
+       recipients.
+       (gpgme_op_encrypt_start): Likewise.
+       (gpgme_op_encrypt): Likewise.
+       * encrypt-sign.c (encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign): Likewise.
+       (gpgme_op_encrypt_sign_start): Likewise.
+
+2003-05-27  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_op_import_result): Add skipped_new_keys.
+       * import.c (parse_import_res): Add skipped_new_keys parser.
+
+       * op-support.c (_gpgme_parse_inv_userid): Add missing break
+       statements.
+       * encrypt.c (gpgme_op_encrypt): Use gpgme_error_t instead of int.
+
+2003-05-27  Marcus Brinkmann  <marcus@g10code.de>
+
+       * encrypt.c (gpgme_op_encrypt_result): Use intermediate variable
+       HOOK to avoid compiler warning.  Don't ask, you don't want to know.
+       (_gpgme_encrypt_status_handler): Likewise.
+       (_gpgme_op_encrypt_init_result): Likewise.
+       * decrypt.c (gpgme_op_decrypt_result): Likewise.
+       (_gpgme_decrypt_status_handler): Likewise.
+       (_gpgme_op_decrypt_init_result): Likewise.
+       * verify.c (gpgme_op_verify_result): Likewise.
+       (_gpgme_verify_status_handler): Likewise.
+       (_gpgme_op_verify_init_result): Likewise.
+       * edit.c (edit_status_handler): Likewise.
+       (command_handler): Likewise.
+       (edit_start): Likewise.
+       * genkey.c (gpgme_op_genkey_result): Likewise.
+       (genkey_status_handler): Likewise.
+       (genkey_start): Likewise.
+       * import.c (gpgme_op_import_result): Likewise.
+       (import_status_handler): Likewise.
+       (_gpgme_op_import_start): Likewise.
+       * trustlist.c (gpgme_op_trustlist_next): Likewise.
+       (_gpgme_op_trustlist_event_cb): Likewise.
+       (gpgme_op_trustlist_start): Likewise.
+       * keylist.c (gpgme_op_keylist_result): Likewise.
+       (keylist_colon_handler): Likewise.
+       (keylist_status_handler): Likewise.
+       (_gpgme_op_keylist_event_cb): Likewise.
+       (gpgme_op_keylist_start): Likewise.
+       (gpgme_op_keylist_ext_start): Likewise.
+       (gpgme_op_keylist_next): Likewise.
+       * passphrase.c (_gpgme_passphrase_status_handler): Likewise.
+       (_gpgme_passphrase_command_handler_internal): Likewise.
+       * sign.c (gpgme_op_sign_result): Likewise.
+       (_gpgme_sign_status_handler): Likewise.
+       (_gpgme_op_sign_init_result): Likewise.
+
+       * passphrase.c (_gpgme_passphrase_command_handler_internal): Fix
+       access to pointer type.
+
+2003-05-26  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine.h (EngineCommandHandler): Change last argument to int fd.
+       * gpgme.h (gpgme_passphrase_cb_t): Rewritten to take parts of the
+       description and fd.
+       (gpgme_edit_cb_t): Change last argument to int fd.
+       * ops.h (_gpgme_passphrase_command_handler_internal): New prototype.
+       * passphrase.c: Include <assert.h>.
+       (op_data_t): Rename userid_hint to uid_hint, remove last_pw_handle.
+       (release_op_data): Check values before calling free.
+       (_gpgme_passphrase_status_handler): Likewise.
+       (_gpgme_passphrase_command_handler_internal): New function.
+       (_gpgme_passphrase_command_handler): Rewritten.
+       * edit.c (edit_status_handler): Pass -1 as fd argument.
+       (command_handler): Update prototype.  New variable processed.  Use
+       it to store return value of
+       _gpgme_passphrase_command_handler_internal which is now used
+       instead _gpgme_passphrase_command_handler.  Use it also to check
+       if we should call the user's edit function.  Pass fd to user's
+       edit function.
+       * rungpg.c (struct gpg_object_s): Change type of cmd.cb_data to
+       void *.
+       (gpg_release): Check value before calling free.  Do not release
+       cmd.cb_data.
+       (command_cb): Function removed.
+       (command_handler): New function.  Thus we don't use a data object
+       for command handler stuff anymore, but handle it directly.  This
+       allows proper error reporting (cancel of passphrase requests, for
+       example).  Also all callbacks work via direct writes to the file
+       descriptor (so that passphrases are not kept in insecure memory).
+       (gpg_set_command_handler): Rewritten to use even more ugly hacks.
+       (read_status): Check cmd.keyword before calling free.  Install
+       command_handler as the I/O callback handler with GPG as private
+       data.
+
+       * rungpg.c (gpg_new): Add --enable-progress-filter to gpg
+       invocation.
+       * decrypt-verify.c (_gpgme_op_decrypt_verify_start): Rename to
+       decrypt_verify_start.
+       (gpgme_op_decrypt_verify_start): Call decrypt_verify_start.
+       (gpgme_op_decrypt_verify): Likewise.
+       * verify.c (verify_status_handler): New function that also calls
+       progress status handler.
+       (_gpgme_op_verify_start): Set status handler to verify_status_handler.
+       Rename to (verify_start).
+       (gpgme_op_verify_start): Call verify_start.
+       (gpgme_op_verify): Likewise.
+       * encrypt.c (encrypt_status_handler): New function.
+       (_gpgme_encrypt_sym_status_handler): Call progress status handler.
+       Make static.  Rename to encrypt_sym_status_handler.
+       (encrypt_start): Set status handler to encrypt_sym_status_handler
+       or encrypt_status_handler.
+       * sign.c (sign_status_handler): New function.
+       (sign_start): Set status handler to sign_status_handler.
+       * decrypt.c (decrypt_status_handler): New function that also calls
+       progress status handler.
+       (decrypt_start): Set status handler to decrypt_status_handler.
+       * encrypt-sign.c (encrypt_sign_status_handler): Likewise.
+       * decrypt-verify.c (decrypt_verify_status_handler): Call
+       _gpgme_progress_status_handler.
+
+       * conversion.c (_gpgme_decode_c_string): Add missing break
+       statement.
+
+       * recipient.c (gpgme_recipients_add_name_with_validity): Add one
+       to buffer to allocate.
+
+2003-05-19  Marcus Brinkmann  <marcus@g10code.de>
+
+       * verify.c (parse_new_sig): Fix ERRSIG case.
+       Submitted by Benjamin Lee <benjaminlee@users.sf.net>.
+
+2003-05-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h: The following types are renamed.  The old name is kept
+       as a deprecated typedef.
+       (GpgmeCtx): Rename to gpgme_ctx_t.
+       (GpgmeData): Rename to gpgme_data_t.
+       (GpgmeRecipients): Rename to gpgme_recipients_t.
+       (GpgmeError): Rename to gpgme_error_t.
+       (GpgmeDataEncoding): Rename to gpgme_data_encoding_t.
+       (GpgmePubKeyAlgo): Rename to gpgme_pubkey_algo_t.
+       (GpgmeHashAlgo): Rename to gpgme_hash_algo_t.
+       (GpgmeSigStat): Rename to gpgme_sig_stat_t.
+       (GpgmeSigMode): Rename to gpgme_sig_mode_t.
+       (GpgmeAttr): Rename to gpgme_attr_t.
+       (GpgmeValidity): Rename to gpgme_validity_t.
+       (GpgmeProtocol): Rename to gpgme_protocol_t.
+       (GpgmeStatusCode): Rename to gpgme_status_code_t.
+       (GpgmeEngineInfo): Rename to gpgme_engine_info_t.
+       (GpgmeSubkey): Rename to gpgme_subkey_t.
+       (GpgmeKeySig): Rename to gpgme_keysig_t.
+       (GpgmeUserID): Rename to gpgme_user_id_t.
+       (GpgmePassphraseCb): Rename to gpgme_passphrase_cb_t.
+       (GpgmeProgressCb): Rename to gpgme_progress_cb_t.
+       (GpgmeEditCb): Rename to gpgme_edit_cb_t.
+       (GpgmeIOCb): Rename to gpgme_io_cb_t.
+       (GpgmeRegisterIOCb): Rename to gpgme_register_io_cb_t.
+       (GpgmeRemoveIOCb): Rename to gpgme_remove_io_cb_t.
+       (GpgmeEventIO): Rename to gpgme_event_io_t.
+       (GpgmeEventIOCb): Rename to gpgme_event_io_cb_t.
+       (GpgmeIOCbs): Rename to gpgme_io_cbs.
+       (gpgme_io_cbs_t): New type.
+       (GpgmeDataReadCb): Rename to gpgme_data_read_cb_t.
+       (GpgmeDataWriteCb): Rename to gpgme_data_write_cb_t.
+       (GpgmeDataSeekCb): Rename to gpgme_data_seek_cb_t.
+       (GpgmeDataReleaseCb): Rename to gpgme_data_release_cb_t.
+       (GpgmeDataCbs): Rename to gpgme_data_cbs.
+       (gpgme_data_cbs_t): New type.
+       (GpgmeInvalidUserID): Rename to gpgme_invalid_user_id_t.
+       (GpgmeEncryptResult): Rename to gpgme_encrypt_result_t.
+       (GpgmeDecryptResult): Rename to gpgme_decrypt_result_t.
+       (GpgmeNewSignature): Rename to gpgme_new_signature_t.
+       (GpgmeSignResult): Rename to gpgme_sign_result_t.
+       (GpgmeSigNotation): Rename to gpgme_sig_notation_t.
+       (GpgmeSignature): Rename to gpgme_signature_t.
+       (GpgmeVerifyResult): Rename to gpgme_verify_result_t.
+       (GpgmeImportStatus): Rename to gpgme_import_status_t.
+       (GpgmeImportResult): Rename to gpgme_import_result_t.
+       (GpgmeGenKeyResult): Rename to gpgme_genkey_result_t.
+       (GpgmeKeyListResult): Rename to gpgme_keylist_result_t.
+       (GpgmeTrustItem): Rename to gpgme_trust_item_t.
+       * gpgme.h (gpgme_deprecated_error_t): New type, swallowing macros
+       GPGME_No_Recipients, GPGME_Invalid_Recipient and
+       GPGME_No_Passphrase.
+       * data.h (struct gpgme_data_s): Rename to struct gpgme_data.
+       * context.h (struct gpgme_context_s): Rename to struct
+       gpgme_context.
+       (struct gpgme_recipients_s): Rename to gpgme_recipients.
+
+2003-05-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * keylist.c (finish_key): Clear OPD->tmp_uid.
+
+2003-05-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * verify.c (_gpgme_verify_status_handler): Return GPGME_No_Data
+       for NODATA status without signatures.
+
+2003-05-05  Marcus Brinkmann  <marcus@g10code.de>
+
+       * key.c (_gpgme_key_append_name): Use decoded string to parse user id.
+       (_gpgme_key_add_sig): Likewise.
+
+2003-05-04  Marcus Brinkmann  <marcus@g10code.de>
+
+       * context.h (struct gpgme_context_s): Remove member op_info.
+
+       * key.c (_gpgme_key_add_sig): Initialize SIG->uid.
+
+       * gpgme.h (GpgmeError): Add deprecated values for
+       GPGME_Invalid_Type and GPGME_Invalid_Mode.
+
+2003-04-30  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_get_op_info): Remove prototype.
+       * ops.h (_gpgme_set_op_info,
+       _gpgme_data_release_and_return_string, _gpgme_data_get_as_string,
+       _gpgme_data_append, _gpgme_data_append_string,
+       _gpgme_data_append_string_for_xml, _gpgme_data_append_for_xml,
+       _gpgme_data_append_percentstring_for_xml): Likewise.
+       (_gpgme_progress_status_handler): Change first arg to void *.
+       * progress.c (_gpgme_progress_status_handler): Likewise.
+       * conversion.c: Do not include <string.h>, <errno.h>, <ctype.h>,
+       and <sys/types.h>, but <string.h>.
+       (_gpgme_data_append): Remove function.
+       (_gpgme_data_append_string): Likewise.
+       (_gpgme_data_append_for_xml): Likewise.
+       (_gpgme_data_append_string_for_xml): Likewise.
+       (_gpgme_data_append_percentstring_for_xml): Likewise.
+       * data-mem.c (_gpgme_data_get_as_string): Likewise.
+       (_gpgme_data_release_and_return_string): Likewise.
+       * gpgme.c (gpgme_get_op_info): Likewise.
+       (_gpgme_set_op_info): Likewise.
+
+       * gpgme.h (struct _gpgme_key): New structure.
+       (GpgmeKey): Define using _gpgme_key.
+       (struct _gpgme_subkey): New structure.
+       (GpgmeSubKey): New type.
+       (struct _gpgme_key_sig): New structure.
+       (GpgmeKeySig): New type.
+       (struct _gpgme_user_id): New structure.
+       (GpgmeUserID): New type.
+       (struct _gpgme_op_keylist_result): New structure.
+       (GpgmeKeyListResult): New type.
+       (gpgme_op_keylist_result): New function.
+       (gpgme_key_get_as_xml): Remove prototype.
+       * context.h (struct gpgme_context_s): Remove members tmp_key,
+       tmp_uid, key_cond and key_queue.
+       (struct key_queue_item_s): Remove structure.
+       (struct user_id_s): Remove structure.
+       (struct gpgme_recipients_s): Replace with simple
+       GpgmeUserID list.
+       * gpgme.c (gpgme_release): Do not release CTX->tmp_key.
+       * ops.h (_gpgme_key_add_subkey, _gpgme_key_append_name,
+       _gpgme_key_add_sig, _gpgme_trust_item_new): New prototypes.
+       * rungpg.c (command_cb): Return GpgmeError instead int.
+       New variable ERR.  Use it to hold return value of cmd handler.
+       (gpg_delete): Access fingerprint of key directly.
+       (append_args_from_signers): Likewise.
+       (gpg_edit): Likewise.
+       (append_args_from_recipients): Use GpgmeUserID for recipient list.
+       * engine-gpgsm.c: Do not include "key.h".
+       (gpgsm_delete): Access fingerprint of key directly.
+       (gpgsm_sign): Likewise.
+       (set_recipients): Use GpgmeUserID for recipients.  Invert invalid
+       user ID flag.
+       * key.h: File removed.
+       * key.c: Completely reworked to use exposed GpgmeKey data types.
+       * keylist.c: Likewise.
+       * recipient.c: Completely reworked to use GpgmeUserID.
+
+2003-04-29  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_get_key): Remove force_update argument.
+       * key-cache.c: File removed.
+       * Makefile.am (libgpgme_la_SOURCES): Remove key-cache.c.
+       * ops.h (_gpgme_key_cache_add, _gpgme_key_cache_get): Remove
+       prototypes.
+       * keylist.c (_gpgme_op_keylist_event_cb): Don't call
+       _gpgme_key_cache_add.
+       (gpgme_get_key): New function.
+       * verify.c (gpgme_get_sig_key): Remove last argument to
+       gpgme_get_key invocation.
+
+       * gpgme.h (struct _gpgme_trust_item): New structure.
+       (GpgmeTrustItem): New type.
+       (gpgme_trust_item_ref, gpgme_trust_item_unref): New prototypes.
+       * context.h (struct trust_queue_item_s): Remove structure.
+       (struct gpgme_context_s): Remove trust_queue member.
+       * Makefile.am (libgpgme_la_SOURCES): Add trust-item.c.
+       * trust-item.c: New file.
+       * trustlist.c: Do not include <stdio.h> or <time.h>, but
+       "gpgme.h".
+       (struct trust_queue_item_s): Change to new type op_data_t.
+       (trust_status_handler): Change first argument to void *.
+       (trust_colon_handler): Likewise.
+       (_gpgme_op_trustlist_event_cb): Use op_data_t type.
+       (gpgme_op_trustlist_start): Use op_data_t and rework error
+       handling.
+       (gpgme_op_trustlist_next): Use op_data_t.
+       (gpgme_trust_item_release): Remove function.
+       (gpgme_trust_item_get_string_attr): Likewise.
+       (gpgme_trust_item_get_int_attr): Likewise.
+
+       * verify.c (calc_sig_summary): Do not set GPGME_SIGSUM_SYS_ERROR
+       for bad signatures.
+
+2003-04-28  Marcus Brinkmann  <marcus@g10code.de>
+
+       * context.h: Remove OPDATA_VERIFY_COLLECTING.
+       (struct gpgme_context_s): Remove member notation.
+       * gpgme.h: Make enum for GPGME_KEYLIST_MODE_* values.
+
+       * gpgme.h (struct _gpgme_sig_notation): New structure.
+       (GpgmeSigNotation): New type.
+       (struct _gpgme_signature): New structure.
+       (GpgmeSignature): New type.
+       (struct _gpgme_op_verify_result): New structure.
+       (GpgmeVerifyResult): New type.
+       (gpgme_op_verify_result): New prototype.
+       (gpgme_get_notation): Remove prototype.
+       * ops.h (_gpgme_op_verify_init_result): New prototype.
+       (_gpgme_verify_status_handler): Change first argument to void *.
+       * util.h (_gpgme_decode_percent_string, _gpgme_map_gnupg_error):
+       New prototypes.
+       * conversion.c (_gpgme_decode_percent_string): New function.
+       (gnupg_errors): New static global.
+       (_gpgme_map_gnupg_error): New function.
+       * gpgme.c (gpgme_release): Don't release CTX->notation.
+       (gpgme_get_notation): Remove function.
+       * decrypt-verify.c (_gpgme_op_decrypt_verify_start): Call
+       _gpgme_op_verify_init_result.
+       * verify.c: Do not include <stdio.h>, <assert.h> and "key.h", but
+       do include "gpgme.h".
+       (struct verify_result): Replace with ...
+       (op_data_t): ... this type.
+       (release_verify_result): Remove function.
+       (release_op_data): New function.
+       (is_token): Remove function.
+       (skip_token): Remove function.
+       (copy_token): Remove function.
+       (gpgme_op_verify_result): New function.
+       (calc_sig_summary): Rewritten.
+       (finish_sig): Remove function.
+       (parse_new_sig): New function.
+       (parse_valid_sig): New function.
+       (parse_notation): New function.
+       (parse_trust): New function.
+       (parse_error): New function.
+       (_gpgme_verify_status_handler): Rewritten.  Change first argument
+       to void *.
+       (_gpgme_op_verify_start): Rework error handling.  Call
+       _gpgme_op_verify_init_result.
+       (gpgme_op_verify): Do not release or clear CTX->notation.
+       (gpgme_get_sig_status): Rewritten.
+       (gpgme_get_sig_string_attr): Likewise.
+       (gpgme_get_sig_ulong_attr): Likewise.
+       (gpgme_get_sig_key): Likewise.
+
+       * gpgme.h (struct _gpgme_op_decrypt_result): New structure.
+       (GpgmeDecryptResult): New type.
+       (gpgme_op_decrypt_result): New prototype.
+       * ops.h (_gpgme_op_decrypt_init_result): New prototype.
+       (_gpgme_decrypt_status_handler): Fix prototype.
+       (_gpgme_decrypt_start): Remove prototype.
+       * decrypt-verify.c: Do not include <stdio.h>, <stdlib.h>,
+       <string.h> and <assert.h>, "util.h" and "context.h", but
+       "gpgme.h".
+       (decrypt_verify_status_handler): Change first argument to void *,
+       and rework error handling.
+       (_gpgme_op_decrypt_verify_start): New function.
+       (gpgme_op_decrypt_verify_start): Rewrite using
+       _gpgme_op_decrypt_verify_start.
+       (gpgme_op_decrypt_verify): Likewise.
+       * decrypt.c: Include <string.h>, "gpgme.h" and "util.h".
+       (struct decrypt_result): Change to typedef op_data_t, rewritten.
+       (is_token): Remove function.
+       (release_op_data): New function.
+       (skip_token): Remove function.
+       (gpgme_op_decrypt_result): New function.
+       (_gpgme_decrypt_status_handler): Change first argument to void *.
+       Rework error handling.
+       (_gpgme_decrypt_start): Rename to ...
+       (decrypt_start): ... this.  Call _gpgme_op_decrypt_init_result.
+       (_gpgme_op_decrypt_init_result): New function.
+       (gpgme_op_decrypt_start): Use decrypt_start.
+       (gpgme_op_decrypt): Likewise.
+
+2003-04-27  Marcus Brinkmann  <marcus@g10code.de>
+
+       * encrypt-sign.c: Do not include <stddef.h>, <stdio.h>,
+       <stdlib.h>, <string.h>, <assert.h> and "util.h", but "gpgme.h".
+       (_gpgme_op_encrypt_sign_start): Rename to ...
+       (encrypt_sign_start): ... this.
+       (gpgme_op_encrypt_sign_start): Use encrypt_sign_start, not
+       _gpgme_op_encrypt_sign_start.
+       (gpgme_op_encrypt_sign): Likewise.
+
+       * gpgme.h (GpgmeEncryptResult): New data type.
+       (gpgme_op_encrypt_result): New prototype.
+       * ops.h (_gpgme_op_encrypt_init_result): New prototype.
+       (_gpgme_op_encrypt_status_handler): Fix prototype.
+       * encrypt-sign.c (_gpgme_op_encrypt_sign_start): Call
+       _gpgme_op_encrypt_init_result.
+       * encrypt.c: Do not include <stdio.h>, <assert.h>, "util.h" and
+       "wait.h".  Include <errno.h> and "gpgme.h".
+       (SKIP_TOKEN_OR_RETURN): Remove macro.
+       (struct encrypt_result): Rename to ...
+       (op_data_t): ... new data type.  Rewrite for user result data.
+       (append_xml_encinfo): Remove function.
+       (release_op_data): New function.
+       (gpgme_op_encrypt_result): New function.
+       (_gpgme_op_encrypt_status_handler): Change first argument to void *.
+       Rewrite result parsing.
+       (_gpgme_op_encrypt_sym_status_handler): Change first argument to
+       void *.
+       (_gpgme_op_encrypt_init_result): New function.
+       (_gpgme_op_encrypt_start): Rename to ...
+       (encrypt_start): ... this.
+       (gpgme_op_encrypt_start): Use encrypt_start, not
+       gpgme_op_encrypt_start.
+       (gpgme_op_encrypt): Likewise.
+
+       * gpgme.h (GpgmePubKeyAlgo, GpgmeHashAlgo, GpgmeInvalidUserID,
+       GpgmeNewSignature, GpgmeSignResult): New data types.
+       (gpgme_op_sign_result, gpgme_pubkey_algo_name,
+       gpgme_hash_algo_name): New prototypes.
+       * gpgme.c (gpgme_pubkey_algo_name): New function.
+       (gpgme_hash_algo_name): Likewise.
+       * ops.h (_gpgme_parse_inv_userid, _gpgme_op_sign_init_result): New
+       prototype.
+       (_gpgme_op_sign_status_handler): Fix prototype.
+       * op-support.c: Include <errno.h> and <string.h>.
+       (_gpgme_parse_inv_userid): New function.
+       * sign.c: Include <errno.h> and "gpgme.h", but not <stdio.h>,
+       <assert.h> and "util.h".
+       (SKIP_TOKEN_OR_RETURN): Remove macro.
+       (struct sign_result): Change to op_data_t type and rework it.
+       (release_sign_result): Rename to ...
+       (release_op_data): ... this and rewrite it.
+       (append_xml_info): Remove function.
+       (gpgme_op_sign_result): New function.
+       (parse_sig_created): New function.
+       (_gpgme_sign_status_handler): Change first argument to void *.
+       Rewrite the function to use the new result structure and functions.
+       (_gpgme_op_sign_init_result): New function.
+       (_gpgme_op_sign_start): Rename to ...
+       (sign_start): ... this.  Call _gpgme_op_sign_init_result.
+       (gpgme_op_sign_start): Use sign_start instead _gpgme_op_sign_start.
+       (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.
+       (delete_status_handler): Change first argument to void *.  Parse
+       delete problem with strtol instead atoi.  Return better error
+       values.
+       (_gpgme_op_delete_start): Rename to ...
+       (delete_start): ... this.  Rework error handling.
+       (gpgme_op_delete_start): Use delete_start instead
+       _gpgme_op_delete_start.
+       (gpgme_op_delete): Likewise.
+       * gpgme.h (GpgmeDataType): Removed.
+
+2003-04-25  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h: Change GPGME_IMPORT_PRIVATE to GPGME_IMPORT_SECRET.
+       * import.c (parse_import_res): Parse unchanged field.
+
+       * gpgme.h: New enum for GPGME_IMPORT_NEW, GPGME_IMPORT_UID,
+       GPGME_IMPORT_SIG, GPGME_IMPORT_SUBKEY, GPGME_IMPORT_PRIVATE.
+       (GpgmeError): GPGME_Unknown_Reason, GPGME_Not_Found,
+       GPGME_Ambiguous_Specification, GPGME_Wrong_Key_Usage,
+       GPGME_Key_Revoked, GPGME_Key_Expired, GPGME_No_CRL_Known,
+       GPGME_CRL_Too_Old, GPGME_Policy_Mismatch, GPGME_No_Secret_Key,
+       GPGME_Key_Not_Trusted, GPGME_Issuer_Missing, GPGME_Chain_Too_Long,
+       GPGME_Unsupported_Algorithm, GPGME_Sig_Expired,
+       GPGME_Bad_Signature, GPGME_No_Public_Key added as new error codes.
+       (struct _gpgme_import_status): New structure.
+       (GpgmeImportStatus): New type.
+       (struct _gpgme_op_import_result): New structure.
+       (GpgmeImportResult): New type.
+       (gpgme_op_import_result): New function.
+       * import.c: Include <errno.h> and "gpgme.h", but not "util.h".
+       (struct import_result): Change to type op_data_t.
+       (release_import_result): Rename to ...
+       (release_op_data): ... this.
+       (append_xml_impinfo): Function removed.
+       (gpgme_op_import_result): New function.
+       (parse_import): New function.
+       (parse_import_res): Likewise.
+       (import_status_handler): Change first argument to void *.  Rewrite
+       to use new functions.
+       (_gpgme_op_import_start): Rework error handling.
+
+       * edit.c: Do not include <assert.h>, "util.h", but "gpgme.h".
+       (edit_resut): Change to typedef for op_data_t.
+       (edit_status_handler): Change first argument to void *.
+       Rework error handling.
+       (command_handler): Rework error handling.
+       (_gpgme_op_edit_start): Rename to ...
+       (edit_start): ... this.  Rework error handling.
+       (gpgme_op_edit_start): Rewrite using edit_start.
+       (gpgme_op_edit): Likewise.
+
+       * ops.h (_gpgme_passphrase_start): Remove prototype.
+       * passphrase.c: Do not include <assert.h>, "util.h" or
+       "debug.h", but "gpgme.h".
+       (struct passphrase_result): Change to typedef for op_data_t.
+       (release_passphrase_result): Rename to release_op_data.
+       (_gpgme_passphrase_status_handler): Change first argument to void *.
+       Use new op_data_t type.
+       (_gpgme_passphrase_command_handler): Use new op_data_t type.
+       (_gpgme_passphrase_start): Remove function.
+       * decrypt.c (_gpgme_decrypt_start): Rewrite error handling.  Do
+       not call _gpgme_passphrase_start, but install command handler.
+       * encrypt.c (_gpgme_op_encrypt_start): Likewise.
+       * encrypt-sign.c (_gpgme_op_encrypt_sign_start): Likewise.
+       * sign.c (_gpgme_op_sign_start): Likewise.
+
+       * context.h (struct gpgme_context_s): Remove member initialized,
+       use_cms and help_data_1.  Add member protocol.  Make use_armor and
+       use_textmode bit flags.  Make keylist_mode, include_certs,
+       signers_len and signers_size unsigned.
+       * gpgme.c (gpgme_new): Initialize CTX->protocol.
+       (gpgme_set_protocol): Do not check CTX.  Use CTX->protocol.
+       (gpgme_get_protocol): Likewise.
+       (gpgme_release): Do not release CTX->help_data_1.
+       * op-support.c (_gpgme_op_reset): Use CTX->protocol.
+
+       * wait-private.c (_gpgme_wait_private_event_cb): Remove variable CTX.
+
+       * data.c: Do not include <assert.h>, but "gpgme.h".
+       (_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 *.
+       (_gpgme_op_export_start): Rename to ...
+       (export_start): ... this.  Rework error handling.
+       (gpgme_op_export_start): Rewritten to use export_start instead
+       _gpgme_op_export_start.
+       (gpgme_op_export): Likewise.
+
+       * gpgme.h (GpgmeError): Add GPGME_Busy, GPGME_No_Request.
+       (GPGME_No_Recipients, GPGME_Invalid_Recipient,
+       GPGME_No_Passphrase): New macros.
+
+       * 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.
+       (gpgme_op_genkey_result): New function.
+       * genkey.c: Do not include "util.h", but "gpgme.h".
+       (struct genkey_result): Replace with ...
+       (op_data_t): ... this new type.
+       (release_genkey_result): Replace with ...
+       (release_op_data): ... this new function.
+       (gpgme_op_genkey_result): New function.
+       (genkey_status_handler): Rewritten using new op_data_t type.
+       (get_key_parameter): New function.
+       (_gpgme_op_genkey_start): Renamed to
+       (genkey_start): ... this and rewritten.
+       (gpgme_op_genkey_start): Use genkey_start instead
+       _gpgme_op_genkey_start.
+       (gpgme_op_genkey): Rewritten.  Remove FPR argument.
+
+       * context.h (struct gpgme_context_s): Remove member verbosity.
+       * gpgme.c (gpgme_new): Do not set member verbosity.
+       * engine.h (_gpgme_engine_set_verbosity): Remove prototype.
+       * engine.c (_gpgme_engine_set_verbosity): Remove function.
+       * engine-backend.h (struct engine_ops): Remove set_verbosity.
+       * engine-gpgsm.c (_gpgme_engine_ops_gpgsm): Remove set_verbosity member.
+       * rungpg.c (_gpgme_engine_ops_gpg): Likewise.
+       (gpg_set_verbosity): Remove function.
+       * decrypt.c (_gpgme_decrypt_start): Don't call
+       _gpgme_engine_set_verbosity.
+       * delete.c (_gpgme_op_delete_start): Likewise.
+       * edit.c (_gpgme_op_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): Likewise.
+       * genkey.c (_gpgme_op_genkey_start): Likewise.
+       * import.c (_gpgme_op_import_start): Likewise.
+       * keylist.c (gpgme_op_keylist_start): Likewise.
+       (gpgme_op_keylist_ext_start): Likewise.
+       * sign.c (_gpgme_op_sign_start): Likewise.
+       * verify.c (_gpgme_op_verify_start): Likewise.
+
+       * Makefile.am (libgpgme_la_SOURCES): Add key-cache.c.
+       * key.c (key_cache_initialized, key_cache_size,
+       key_cache_max_chain_length, ): Removed.
+       (struct key_cache_item_s, key_cache_lock, key_cache,
+       key_cache_unused_items, hash_key, _gpgme_key_cache_add,
+       _gpgme_key_cache_get, gpgme_get_key): Moved to ...
+       * key-cache.c: ... here.  New file.
+       * key.h (_gpgme_key_cache_init): Remove prototypes.
+       (_gpgme_key_cache_add,_gpgme_key_cache_get): Move to ...
+       * ops.h: ... here.
+       * version.c: Do not include "key.h".
+       (do_subsystem_inits): Do not call _gpgme_key_cache_init.
+
+       * mkstatus: Strip trailing comma.
+       * gpgme.h (GpgmeStatus): Pretty print.
+
+       * gpgme.h (GpgmeError): Rename GPGME_No_Passphrase to
+       GPGME_Bad_Passphrase.
+       * passphrase.c (_gpgme_passphrase_status_handler): Use
+       GPGME_Bad_Passphrase instead GPGME_No_Passphrase.
+
+       * gpgme.h (GpgmeError): Rename GPGME_No_Recipients to
+       GPGME_No_UserID and GPGME_Invalid_Recipient to
+       GPGME_Invalid_UserID.
+       * encrypt.c (_gpgme_encrypt_status_handler): Use GPGME_No_UserID
+       instead GPGME_No_Recipients and GPGME_Invalid_UserID instead
+       GPGME_Invalid_Recipient.
+       (_gpgme_op_encrypt_start): Likewise.
+
+       * gpgme.h (GpgmeError): Remove GPGME_Busy and GPGME_No_Request.
+       * wait-user.c (_gpgme_wait_user_event_cb): Don't clear CTX->pending.
+       * wait-private.c (_gpgme_wait_private_event_cb): Likewise.
+       * wait-global.c (gpgme_wait): Likewise.
+       * verify.c (_gpgme_op_verify_start): Likewise.
+       (gpgme_get_sig_status): Don't check pending flag.
+       (gpgme_get_sig_string_attr): Likewise.
+       (gpgme_get_sig_ulong_attr): Likewise.
+       (gpgme_get_sig_key): Likewise.
+       * op-support.c (_gpgme_op_reset): Likewise.
+       * trustlist.c (gpgme_op_trustlist_start): Don't clear pending flag.
+       (gpgme_op_trustlist_next): Don't check or clear pending flag.
+       (gpgme_op_trustlist_end): Likewise.
+       * sign.c (_gpgme_op_sign_start): Likewise.
+       * context.h (struct gpgme_context_s): Remove member PENDING.
+       * decrypt.c (_gpgme_decrypt_start): Likewise.
+       * delete.c (_gpgme_op_delete_start): Likewise.
+       * edit.c (_gpgme_op_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): Likewise.
+       * genkey.c (_gpgme_op_genkey_start): Likewise.
+       * import.c (_gpgme_op_import_start): Likewise.
+       * key.c (gpgme_get_key): Likewise.
+       * keylist.c (gpgme_op_keylist_start): Likewise.
+       (gpgme_op_keylist_ext_start): Likewise.
+       (gpgme_op_keylist_next): Likewise.
+       (gpgme_op_keylist_end): Likewise.
+       * data-compat.c (gpgme_error_to_errno): Don't convert EBUSY.
+
+2003-02-06  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (GpgmePassphraseCb): Change type to return GpgmeError,
+       and add argument for returning the result string.
+       (gpgme_cancel): Remove prototype.
+       * gpgme.c (gpgme_cancel): Remove function.
+       * context.h (struct gpgme_context_s): Remove member cancel.
+       * passphrase.c (_gpgme_passphrase_command_handler): Call the
+       passphrase callback in the new way.
+
+2003-01-30  Marcus Brinkmann  <marcus@g10code.de>
+
+       * edit.c (_gpgme_edit_status_handler): Call the progress status
+       handler.
+
+2003-02-05  Marcus Brinkmann  <marcus@g10code.de>
+
+       * wait-user.c (_gpgme_wait_user_remove_io_cb): Move check for no
+       I/O handlers left to ...
+       (_gpgme_user_io_cb_handler): ... here.
+
+2003-02-04  Marcus Brinkmann  <marcus@g10code.de>
+
+       * trustlist.c (trustlist_colon_handler): Release ITEM if name
+       could not be allocated.
+       (gpgme_trust_item_release): Only release name if it is allocated.
+       Reported by Marc Mutz <Marc.Mutz@uni-bielefeld.de>.
+
+2003-02-04  Marcus Brinkmann  <marcus@g10code.de>
+
+       * rungpg.c (read_status): If he status handler returns an error,
+       return it.
+       (status_handler): If read_status fails, just return the error.
+
+2003-02-01  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c (start): Handle all errors, not only most of
+       them.
+       (xtoi_1, xtoi_2): Remove macro.
+       (status_handler): Replace use of xtoi_2 with _gpgme_hextobyte.
+
+2003-02-01  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c (map_assuan_error): Replace
+       ASSUAN_Bad_Certificate_Path with ASSUAN_Bad_Certificate_Chain.
+       (gpgsm_new): Use assuan_pipe_connect instead assuan_pipe_connect2.
+
+       * util.h (DIMof): Remove macro.
+
+       * ops.h (_gpgme_op_event_cb, _gpgme_op_event_cb_user,
+       _gpgme_data_unread): Prototypes removed.
+
+2003-01-30  Marcus Brinkmann  <marcus@g10code.de>
+
+       * types.h: File removed.
+       * Makefile.am (libgpgme_la_SOURCES): Remove types.h.
+       * io.h (struct spawn_fd_item_s): Do not include "types.h".
+       * key.h: Likewise.
+       * context.h: Likewise.
+       * cengine-gpgsm.h: Likewise.
+       * engine.h: Include "gpgme.h" instead "types.h".  Add prototypes
+       for EngineStatusHandler, EngineColonLineHandler and
+       EngineCommandHandler.
+       (_gpgme_engine_set_status_handler): Change parameter type from
+       GpgmeStatusHandler to EngineStatusHandler.
+       (_gpgme_engine_set_command_handler): Change parameter type from
+       GpgmeCommandHandler to EngineCommandHandler.
+       (_gpgme_engine_set_colon_line_handler): Change parameter type from
+       GpgmeColonLineHandler to EngineColonLineHandler.
+       * engine-backend.h: Include "engine.h" instead "types.h".
+       (struct engine_ops): Change Gpgme*Handler parameters in members
+       set_command_handler, set_colon_line_handler and set_status_handler
+       to Engine*Handler.
+       * engine.c (_gpgme_engine_set_status_handler): Change parameter
+       type from GpgmeStatusHandler to EngineStatusHandler.
+       (_gpgme_engine_set_command_handler): Change parameter type from
+       GpgmeCommandHandler to EngineCommandHandler.
+       (_gpgme_engine_set_colon_line_handler): Change parameter type from
+       GpgmeColonLineHandler to EngineColonLineHandler.
+       * rungpg.c (struct gpg_object_s): Change type of member status.fnc
+       from GpgmeStatusHandler to EngineStatusHandler.  Change type of
+       member colon.fnc from GpgmeColonLineHandler to
+       EngineColonLineHandler.  Change type of member cmd.fnc from
+       GpgmeCommandHandler to EngineCommandHandler.
+       * engine-gpgsm.c (struct gpgsm_object_s): Likewise.
+       * rungpg.c (gpg_set_status_handler): Change parameter type from
+       GpgmeStatusHandler to EngineStatusHandler.
+       * engine-gpgsm.c (gpgsm_set_status_handler): Likewise.
+       (assuan_simple_command): Likewise.
+       * rungpg.c (gpg_set_colon_line_handler): Change parameter type
+       from GpgmeColonLineHandler to EngineColonLineHandler.
+       * engine-gpgsm.c (gpgsm_set_colon_line_handler): Likewise.
+       * rungpg.c (gpg_set_command_handler): Change parameter type from
+       GpgmeCommandHandler to EngineCommandHandler.
+
+       * engine-gpgsm.c (status_handler): Do not close status fd at end
+       of function.
+
+       * ops.h (_gpgme_op_data_lookup): Add prototype.
+       * op-support.c: Include <stdlib.h>.
+       (_gpgme_op_data_lookup): New function.
+       * decrypt.c (_gpgme_release_decrypt_result): Function removed.
+       (struct decrypt_result_s): Rename to ...
+       (struct decrypt_resul): ... this.
+       (DecryptResult): New type.
+       (_gpgme_decrypt_status_handler): Don't use
+       test_and_allocate_result, but use _gpgme_op_data_lookup to
+       retrieve result data object.
+       * sign.c (_gpgme_release_sign_result): Function removed.
+       (release_sign_result): New function.
+       (struct sign_result_s): Rename to ...
+       (struct sign_result): ... this.
+       (SignResult): New type.
+       (_gpgme_sign_status_handler): Don't use
+       test_and_allocate_result, but use _gpgme_op_data_lookup to
+       retrieve result data object.
+       * encrypt.c (struct encrypt_result_s): Rename to ...
+       (struct encrypt_result): ... this.
+       (_gpgme_release_encrypt_result): Function removed.
+       (release_encrypt_result): New function.
+       (_gpgme_encrypt_status_handler): Don't use
+       test_and_allocate_result, but use _gpgme_op_data_lookup to
+       retrieve result data object.
+       * verify.c (struct verify_result_s): Rename to ...
+       (struct verify_result): ... this.  Remove member next.
+       (VerifyResult): New type.
+       (_gpgme_release_verify_result): Function removed.
+       (release_verify_result): New function.
+       (finish_sig): Change first argument to type VerifyResult.  Diddle
+       the type of the op_data structure.
+       (add_notation): Change first argument to type VerifyResult.
+       (_gpgme_verify_status_handler): Don't use
+       test_and_allocate_result, but use _gpgme_op_data_lookup to
+       retrieve result data object.
+       * passphrase.c (struct passphrase_result_s): Rename to ...
+       (struct passphrase_result): ... this.  Remove member next.
+       (PassphraseResult): New type.
+       (_gpgme_release_passphrase_result): Function removed.
+       (release_passphrase_result): New function.
+       (_gpgme_passphrase_status_handler): Don't use
+       test_and_allocate_result, but use _gpgme_op_data_lookup to
+       retrieve result data object.
+       (_gpgme_passphrase_command_handler): Likewise.
+       * keylist.c (struct keylist_result_s): Rename to ...
+       (struct keylist_result): ... this.  Remove member next.
+       (KeylistResult): New type.
+       (_gpgme_release_keylist_result): Function removed.
+       (release_keylist_result): New function.
+       (keylist_status_handler): Don't use
+       test_and_allocate_result, but use _gpgme_op_data_lookup to
+       retrieve result data object.
+       * edit.c (struct edit_result_s): Rename to ...
+       (struct edit_result): ... this.  Remove member next.
+       (EditResult): New type.
+       (_gpgme_release_edit_result): Function removed.
+       (release_edit_result): New function.
+       (edit_status_handler): Don't use
+       test_and_allocate_result, but use _gpgme_op_data_lookup to
+       retrieve result data object.
+       (command_handler): Likewise.
+       * types.h (DecryptResult, SignResult, EncryptResult,
+       PassphraseResult, ImportResult, DeleteResult, GenKeyResult,
+       KeylistResult, EditResult): Types removed.
+       * ops.h: Don't include "types.h", but "gpgme.h" and "context.h".
+       (test_and_allocate_result): Remove macro.
+       (_gpgme_release_decrypt_result): Remove prototype.
+       (_gpgme_decrypt_result): Remove prototype.
+       (_gpgme_release_sign_result): Remove prototype.
+       (_gpgme_release_encrypt_result): Remove prototype.
+       (_gpgme_release_passphrase_result): Remove prototype.
+       (_gpgme_release_import_result): Remove prototype.
+       (_gpgme_release_delete_result): Remove prototype.
+       (_gpgme_release_genkey_result): Remove prototype.
+       (_gpgme_release_keylist_result): Remove prototype.
+       (_gpgme_release_edit_result): Remove prototype.
+       (_gpgme_release_verify_result): Remove prototype.
+       * gpgme.c (_gpgme_release_result): Rewritten.
+       * context.h (enum ctx_op_data_type): New enum.
+       (struct ctx_op_data): New structure.
+       (struct gpgme_context_s): Replace the member result with a member
+       op_data.
+       (fail_on_pending_request): Remove macro.
+       * op-support.c (_gpgme_op_reset): Expand macro
+       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>
+
+       * 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.
+
+       * 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-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.
+
+       * 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): 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.
+       * util.h (_gpgme_hextobyte): Change prototype to unsigned char
+       instead byte.
+       * conversion.c (_gpgme_hextobyte): Change argument to unsigned
+       char instead byte.
+       (_gpgme_decode_c_string): Likewise, and beautify.  Also support a
+       few more escaped characters.  Be more strict about buffer size.
+       (_gpgme_data_append_percentstring_for_xml): Change type of SRC,
+       BUF and DST to unsigned char instead byte.
+       * progress.c (_gpgme_progress_status_handler): Use unsigned char
+       instead byte.
+       * debug.c (trim_spaces): Likewise.
+
+       * util.h (mk_error): Remove macro.
+       * conversion.c, data.c, data-compat.c, decrypt.c, delete.c,
+       edit.c, encrypt.c, encrypt-sign.c, engine.c, engine-gpgsm.c,
+       export.c, genkey.c, gpgme.c, import.c, key.c, keylist.c,
+       passphrase.c, progress.c, recipient.c, rungpg.c, sign.c,
+       signers.c, trustlist.c, verify.c, wait.c, wait-global.c,
+       wait-private (literally everywhere): Expand the mk_error macro.
+
        * context.h (wait_on_request_or_fail): Remove macro.
 
        * context.h (gpgme_context_s): Remove member ERROR.
  This file is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-