2004-05-21 Marcus Brinkmann <marcus@g10code.de>
[gpgme.git] / gpgme / ChangeLog
index fb14e56..1aa370f 100644 (file)
@@ -1,3 +1,591 @@
+2004-05-21  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme-config.in (Options): Support --api-version.
+
+       * libgpgme.vers: List all gpgme symbols under version GPGME_1.0.
+
+       * decrypt.c (_gpgme_decrypt_status_handler): Fix last change.
+       * verify.c (parse_error): Likewise.
+
+       * verify.c (parse_error): Do not skip location of where token.
+
+       * gpgme.h (gpgme_status_code_t): Add GPGME_STATUS_REVKEYSIG.
+       * verify.c (_gpgme_verify_status_handler): Add handling of
+       GPGME_STATUS_REVKEYSIG.
+       (parse_trust): Likewise.
+
+2004-05-21  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_decrypt_result): New fields
+       wrong_key_usage and _unused.
+       * decrypt.c (_gpgme_decrypt_status_handler): Don't skip over
+       character after a matched string, as in a protocol error this
+       could skip over the trailing binary zero.
+       Handle decrypt.keyusage error notifications.
+
+       * gpgme.h (struct _gpgme_key): New member keylist_mode.
+       * keylist.c (keylist_colon_handler): Set the keylist_mode of KEY.
+
+2004-04-29  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_signature): Change member WRONG_KEY_USAGE
+       to unsigned int.  Same for member _unused.
+
+       * keylist.c (set_mainkey_trust_info): Rewritten.
+       (set_subkey_capability): Handle 'd' (disabled).
+       (set_mainkey_capability): Rewritten.
+
+2004-04-22  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.m4: Quote first argument to AC_DEFUN.
+
+2004-04-21  Werner Koch  <wk@gnupg.org>
+
+       * key.c (gpgme_key_unref): Allow passing NULL like free does.
+       The rule of least surprise.
+
+2004-04-15  Werner Koch  <wk@gnupg.org>
+
+       * verify.c (prepare_new_sig, _gpgme_verify_status_handler): Remove
+       unused result.signatures items.
+
+       * keylist.c (gpgme_get_key): Return an error if FPR is NULL.
+
+2004-04-08  Werner Koch  <wk@gnupg.org>
+
+       * verify.c (_gpgme_verify_status_handler): Ignore the error status
+       if we can't process it.
+       * decrypt-verify.c (decrypt_verify_status_handler): Backed out
+       yesterday's hack.  It is not any longer required.
+
+2004-04-07  Werner Koch  <wk@gnupg.org>
+
+       * decrypt-verify.c (decrypt_verify_status_handler): Hack to cope
+       with meaningless error codes from the verify status function.
+
+2004-04-05  Werner Koch  <wk@gnupg.org>
+
+       * gpgme.h: Add GPGME_STATUS_NEWSIG.
+
+       * verify.c (parse_error): Compare only the last part of the where
+       token.
+       (prepare_new_sig): New.
+       (parse_new_sig): Use prepare_new_sig when required.
+       (_gpgme_verify_status_handler): Handle STATUS_NEWSIG.
+
+       * engine-gpgsm.c (gpgsm_keylist_ext): Send with-validation
+       option.  Fixed pattern construction.
+       (status_handler): Add debugging output.
+
+2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c (gpgsm_new): Protect _only_ tty related code with
+       isatty().  Submitted by Bernhard Herzog.
+
+2004-03-11  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c (gpgsm_new): Protect all tty related code with
+       isatty().
+
+       * rungpg.c (gpg_cancel): Set GPG->fd_data_map to NULL after
+       releasing it.
+       * engine-gpgsm.c (gpgsm_cancel): Only call assuan_disconnect if
+       GPGSM->assuan_ctx is not NULL.  Set it to NULL afterwards.
+
+2004-03-07  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme-config.in: Do not emit include and lib directory for
+       prefix "/usr" or "".
+
+2004-03-03  Werner Koch  <wk@gnupg.org>
+
+       * engine-gpgsm.c (gpgsm_export_ext): Properly insert a space
+       beween patterns.
+
+2004-02-18  Werner Koch  <wk@gnupg.org>
+
+       * gpgme-config.in: Ignore setting of --prefix.
+
+2004-02-25  Marcus Brinkmann  <marcus@g10code.de>
+
+       * rungpg.c (gpg_cancel): New function.
+       (gpg_release): Call it here.
+       (_gpgme_engine_ops_gpg): Add it here.
+       * engine-gpgsm.c (gpgsm_cancel): Fix last change.
+
+2004-02-24  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.c (gpgme_cancel): New function.
+       * engine-backend.h (struct engine_ops): New member cancel.
+       * engine.h (_gpgme_engine_cancel): New prototype.
+       * engine.c (_gpgme_engine_cancel): New function.
+       * engine-gpgsm.c (_gpgme_engine_ops_gpgsm): Add new member cancel.
+       (gpgsm_cancel): New function.
+       (gpgsm_release): Use it.
+       * rungpg.c (_gpgme_engine_ops_gpg): Add new member cancel.
+
+2004-02-17  Werner Koch  <wk@gnupg.org>
+
+       * gpgme.h: Add GPGME_KEYLIST_MODE_VALIDATE. 
+       * engine-gpgsm.c (gpgsm_keylist): Send this to gpgsm.
+
+2004-02-15  Werner Koch  <wk@gnupg.org>
+
+       * memrchr.c (memrchr): Fixed implementation.  Problem pointed out
+       by Adriaan de Groot.
+
+2004-02-01  Marcus Brinkmann  <marcus@g10code.de>
+
+       * rungpg.c (build_argv): Use --no-comment, not --comment "".
+
+       * data-compat.c (gpgme_data_new_from_filepart): Call fseeko if
+       available.
+       * data-stream.c (stream_seek): Likewise.
+
+2004-01-16  Werner Koch  <wk@gnupg.org>
+
+       * conversion.c (_gpgme_map_gnupg_error): Handle numerical codes as
+       used by GnuPG 1.9.x
+
+2004-01-13  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_key_sig): Fix comment on REVOKED.
+
+2004-01-12  Werner Koch  <wk@gnupg.org>
+
+       * sign.c: Include util.h for prototype of _gpgme_parse_timestamp.
+
+2003-12-25  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (_GPGME_D_CLASS): Revert this change.
+       (struct _gpgme_key_sig): For C++ compilers, rename class
+       member to _obsolete_class.  Add new member sig_class.
+       (struct _gpgme_new_signature): Same here.
+       * key.c (gpgme_key_sig_get_ulong_attr): Use CERTSIG->sig_class,
+       not CERTSIG->class.
+       * keylist.c (keylist_colon_handler): Likewise for KEYSIG, but keep
+       setting KEYSIG->class, too.  Rename variable CLASS to SIG_CLASS.
+       * sign.c (parse_sig_created): Set SIG->sig_class.
+
+2003-12-22  Werner Koch  <wk@gnupg.org>
+
+       * gpgme.h (_GPGME_D_CLASS): Kludge for C++ compatibility without
+       changing the C API.
+
+2003-11-19  Werner Koch  <wk@gnupg.org>
+
+       * conversion.c (_gpgme_parse_timestamp): New.
+       (atoi_1, atoi_2, atoi_4): New.
+       * keylist.c (parse_timestamp): Removed. Changed all callers to use
+       the new function.
+       * verify.c (parse_valid_sig): Ditto.  Repalced the errno check.
+       * sign.c (parse_sig_created): Ditto.
+
+2003-10-31  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (parse_timestamp): Detect ISO 8601 timestamps and try
+       to convert them.
+
+2003-10-10  Marcus Brinkmann  <marcus@g10code.de>
+
+       * genkey.c (get_key_parameter): Make a copy of the key parameters.
+       Submitted by Miguel Coca <e970095@zipi.fi.upm.es>.
+
+2003-10-06  Marcus Brinkmann  <marcus@g10code.de>
+
+       * data-compat.c: Include <sys/time.h> before <sys/stat.h> for
+       broken systems.
+
+       * engine-gpgsm.c (map_assuan_error): If ERR is -1, return sensible
+       error.
+
+       * io.h (_gpgme_io_subsystem_init): New prototype.
+       * posix-io.c (_gpgme_io_subsystem_init): Add function.
+       (_gpgme_io_spawn): Do not fixup signal handler here.
+       * version.c (do_subsystem_inits): Call _gpgme_io_subsystem_init.
+
+       * debug.c (debug_init): Drop const qualifier from E.
+
+       * ath.h (struct ath_ops): Make ADDR argument of CONNECT prototype
+       const.
+       (ath_connect): Make ADDR argument const.
+       * ath-pthread.c (ath_connect): Likewise.
+       * ath-pth.c (ath_connect): Likewise.
+       * ath-compat.c (ath_connect): Likewise.
+       * ath.c (ath_connect): Likewise.
+
+       * ath.h [HAVE_SYS_SELECT_H]: Include <sys/select.h> for fd_set.
+       [!HAVE_SYS_SELECT_H]: Include <sys/time.h>.
+
+       * conversion.c (_gpgme_hextobyte): Drop "unsigned" from type of
+       SRC argument.
+       * util.h (_gpgme_hextobyte): Likewise for prototype.
+
+       * gpgme.h: Remove trailing comma in enum.
+
+       * rungpg.c: Do not include <time.h>, <sys/time.h>, <sys/types.h>,
+       <signal.h>, <fcntl.h>, or "unistd.h".
+
+2003-10-02  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-backend.h (struct engine_ops): Add argument TYPE.
+       * engine.c (_gpgme_engine_op_edit): Likewise.
+       * engine.h: Likewise.
+       * rungpg.c (gpg_edit): Likewise.  Use it.
+       * edit.c (edit_start): Likewise.  Pass it on.
+       (gpgme_op_edit_start, gpgme_op_edit): Likewise.
+       (gpgme_op_card_edit_start, gpgme_op_card_edit): New functions.
+
+2003-09-30  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpg_strerror_r): Change prototype to match
+       gpg_strerror_r change.
+       * error.c (gpg_strerror_r): Likewise, also update implementation.
+
+       * gpgme.c (gpgme_hash_algo_name): Change name of RMD160 to
+       RIPEMD160, name of TIGER to TIGER192, name of CRC32-RFC1510 to
+       CRC32RFC1510, and name of CRC24-RFC2440 to CRC24RFC2440.
+
+2003-09-14  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h: Add prototype for gpgme_set_locale.
+
+       * gpgme.h: Define macro _GPGME_INLINE depending on the compiler
+       characteristics and use that instead __inline__.
+
+       * context.h (struct gpgme_context): New members lc_ctype and
+       lc_messages.
+       * gpgme.c: Include <locale.h>.
+       (def_lc_lock, def_lc_ctype, def_lc_messages): New static
+       variables.
+       (gpgme_set_locale): New function.
+       * engine.c (_gpgme_engine_new): Add arguments lc_ctype and
+       lc_messages.
+       * engine.h (_gpgme_engine_new): Likewise.
+       * engine-gpgsm.c (gpgsm_new): Likewise.
+       * rungpg.c (gpg_new): Likewise.
+       * engine-backend.h (struct engine_ops): Likewise to NEW.
+       * op-support.c (_gpgme_op_reset): Likewise to invocation of
+       _gpgme_engine_new.
+
+2003-09-13  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_strerror_r): New prototype.
+       * error.c (gpgme_strerror_r): New function.
+
+       * get-env.c: New file.
+       * util.h (_gpgme_getenv): Add prototype.
+       * Makefile.am (libgpgme_real_la_SOURCES): Add get-env.c.
+       * rungpg.c (build_argv): Use _gpgme_getenv.
+       * debug.c (debug_init): Likewise.
+       * engine-gpgsm.c (gpgsm_new): Likewise.
+       (gpgsm_new): Use ttyname_r.
+       * w32-io.c (_gpgme_io_spawn): Disable debugging for now.
+
+2003-09-03  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme-config.in: Use $libdir, not @libdir@, for the echo
+       command.
+
+       * gpgme-config.in: Rewritten.
+       * gpgme.m4: Rewritten.
+
+2003-08-19  Marcus Brinkmann  <marcus@g10code.de>
+
+       The ath files (ath.h, ath.c, ath-pth.c, ath-pthread.c,
+       ath-compat.c, ath-pth-compat.c and ath-pthread-compat.c) have been
+       updated to have better thread support, and the Makefile.am was
+       changed to reflect that.
+
+       * util.h [!HAVE_FOPENCOOKIE]: Remove fopencookie declaration.
+       * engine-gpgsm.c (gpgsm_assuan_simple_command): Set ERR to return
+       value of status_fnc.
+       * rungpg.c (start): Return SAVED_ERRNO, not errno.
+
+2003-08-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * rungpg.c (start): Use saved_errno instead errno.
+
+2003-08-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * funopen.c, putc_unlocked.c, isascii.c, memrchr.c: New files.
+       * fopencookie.c: File removed.
+
+2003-08-15  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme-config.in: Put gpg-error related flags after gpgme's.
+
+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.
        * data.c (gpgme_data_rewind): Allow to rewind data_type_none.
 
 
- Copyright 2001, 2002 g10 Code GmbH
+ Copyright 2001, 2002, 2003, 2004 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