| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
* Makefile.am (gpgme_TEXINFOS): Remove fdl.texi.
* gpgme.texi: Do not include fdl.texi. Change license to GPL.
* fdl.texi: File removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2004-09-29 Marcus Brinkmann <[email protected]>
* gpgme.texi (Key Management): Change type of keylist_mode in
gpgme_key_t to gpgme_keylist_mode_t.
gpgme/
2004-09-29 Marcus Brinkmann <[email protected]>
* gpgme.h (GPGME_IMPORT_NEW, GPGME_IMPORT_UID, GPGME_IMPORT_SIG,
GPGME_IMPORT_SUBKEY, GPGME_IMPORT_SECRET,
(GPGME_KEYLIST_MODE_LOCAL, GPGME_KEYLIST_MODERN_EXTERN,
GPGME_KEYLIST_MODE_SIGS, GPGME_KEYLIST_MODE_VALIDATE): Change from
enum to macros.
(gpgme_keylist_mode_t): Define as unsigned int.
(gpgme_key_t): Change type of keylist_mode to
gpgme_keylist_mode_t.
|
|
|
|
|
| |
* gpgme.texi (Passphrase Callback): Fix last change.
|
|
|
|
|
|
| |
* gpgme.texi (Passphrase Callback): Document
GPG_ERR_NOT_IMPLEMENTED.
|
|
|
|
|
| |
* gpgme.texi: Update copyright year for tex version.
|
|
|
|
|
|
| |
* gpgme.texi (Verify): Fix gpgme_get_key example (ancient
force_update argument was still there).
|
|
|
|
|
|
| |
* gpgme.texi (Listing Keys): Elaborate on the length restrictions
on search patterns.
|
|
|
|
|
|
|
|
| |
* gpgme.texi (Decrypt and Verify): Document the NO_DATA error
code.
(Verify): Document the relationship between gpgme_op_verify_result
and the decrypt and verify operations.
|
|
|
|
|
| |
* gpgme.text (Verify): Document GPG_ERR_CERT_REVOKED status.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2004-05-21 Marcus Brinkmann <[email protected]>
* gpgme.texi (Decrypt): Add note about new field wrong_key_usage
of gpgme_decrypt_result_t.
gpgme/
2004-05-21 Marcus Brinkmann <[email protected]>
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2004-05-21 Marcus Brinkmann <[email protected]>
* gpgme.texi (Key Management): Add note about new field
keylist_mode of gpgme_key_t.
gpgme/
2004-05-21 Marcus Brinkmann <[email protected]>
* gpgme.h (struct _gpgme_key): New member keylist_mode.
* keylist.c (keylist_colon_handler): Set the keylist_mode of KEY.
|
|
|
|
|
| |
* gpgme.texi (Verify): Correct type of member wrong_key_usage.
|
|
|
|
|
|
| |
* gpgme.texi (Verify): Fix type of gpgme_op_verify_result.
* gpgme.texi (Key Listing Mode): Typo fix.
|
|
|
|
|
|
| |
* gpgme.texi (Library Version Check): Fix the instruction when to
set the locale.
|
|
|
|
|
| |
* gpgme.texi (I/O Callback Example Qt): New section by Marc Mutz.
|
|
|
|
|
| |
* gpgme.texi (I/O Callback Example Qt): New section by Marc Mutz.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2004-02-24 Marcus Brinkmann <[email protected]>
* gpgme.texi (cancellation): New section.
gpgme/
2004-02-24 Marcus Brinkmann <[email protected]>
* 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: Add new member cancel.
(gpgsm_cancel): New function.
(gpgsm_release): Use it.
* rungpg.c: Add new member cancel.
|
|
|
|
|
|
| |
* gpgme.h: Add GPGME_KEYLIST_MODE_VALIDATE.
* engine-gpgsm.c (gpgsm_keylist): Send this to gpgsm.
|
|
|
|
|
|
| |
* gpgme.texi: A couple of small fixes regarding the Largfile
Support section.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Add invocation of AC_SYS_LARGEFILE, AC_TYPE_OFF_T
and AC_FUNC_FSEEKO.
doc/
2004-02-01 Marcus Brinkmann <[email protected]>
* gpgme.texi (Largefile Support): New section.
gpgme/
2004-02-01 Marcus Brinkmann <[email protected]>
* data-compat.c (gpgme_data_new_from_filepart): Call fseeko if
available.
* data-stream.c (stream_seek): Likewise.
|
|
|
|
|
| |
* gpgme.texi (Key Management): Fix exportable field.
|
|
|
|
|
| |
from now on.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-12-25 Marcus Brinkmann <[email protected]>
* gpgme.texi (Key Management): Rename member class in
gpgme_key_sig_t to sig_class.
(Creating a Signature): Likewise for gpgme_signature_t.
gpgme/
2003-12-25 Marcus Brinkmann <[email protected]>
* 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.
|
|
|
|
|
|
| |
* gpgme.texi (Listing Keys): Minor clarification for
gpgme_get_key.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-10-06 Marcus Brinkmann <[email protected]>
* gpgme.texi (Signal Handling): New section.
gpgme/
2003-10-06 Marcus Brinkmann <[email protected]>
* 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.
tests/
2003-10-06 Marcus Brinkmann <[email protected]>
* gpg/t-thread1.c (thread_one): Do not call initialize_gpgme.
Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-09-14 Marcus Brinkmann <[email protected]>
* gpgme.texi (Multi Threading): Correct documentation on memory
synchronization requirement.
tests/
2003-09-14 Marcus Brinkmann <[email protected]>
* gpg/t-thread1.c (main): Call init_gpgme here.
(initialize_gpgme): Function removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-09-14 Marcus Brinkmann <[email protected]>
* gpgme.texi (Locale): New section.
(Multi Threading): Set locale in example.
gpgme/
2003-09-14 Marcus Brinkmann <[email protected]>
* 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 <[email protected]>
* gpgme.texi (Error Strings): Add gpgme_strerror_r.
gpgme/
2003-09-13 Marcus Brinkmann <[email protected]>
* gpgme.h (gpgme_strerror_r): New prototype.
* error.c (gpgme_strerror_r): New function.
|
|
|
|
|
| |
* gpgme.texi (Multi Threading): Update documentation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Remove GPGME_CONFIG_LIBS and GPGME_CONFIG_CFLAGS.
doc/
2003-09-03 Marcus Brinkmann <[email protected]>
* gpgme.texi (Header): We don't use the assuan namespace anymore.
Document new thread options.
gpgme/
2003-09-03 Marcus Brinkmann <[email protected]>
* gpgme-config.in: Rewritten.
* gpgme.m4: Rewritten.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-08-14 Marcus Brinkmann <[email protected]>
* gpgme.texi (Creating a Signature): Change type of member class
to unsigned int.
gpgme/
2003-08-14 Marcus Brinkmann <[email protected]>
* 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.
tests/
2003-08-14 Marcus Brinkmann <[email protected]>
* gpg/t-sign.c (check_result): Change output format for signature
class to unsigned int.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-08-04 Marcus Brinkmann <[email protected]>
* gpgme.texi (Verify): Get error code from SIG->status in the code
for gpgme_get_sig_status.
gpgme/
2003-08-04 Marcus Brinkmann <[email protected]>
* verify.c (parse_new_sig): Fix status parsing case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-07-31 Marcus Brinkmann <[email protected]>
* gpgme.texi (Key Management): Add can_authenticate flag.
gpgme/
2003-07-31 Marcus Brinkmann <[email protected]>
* 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'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-07-31 Marcus Brinkmann <[email protected]>
* gpgme.texi (Listing Keys): Document GPG_ERR_AMBIGUOUS_NAME for
gpgme_get_key.
gpgme/
2003-07-31 Marcus Brinkmann <[email protected]>
* keylist.c (gpgme_get_key): Check if there is more than one key
listed, and return GPG_ERR_AMBIGUOUS_NAME in that case.
|
|
|
|
|
| |
* Makefile.am (EXTRA_DIST): Remove variable.
|
|
|
|
|
|
|
|
|
|
| |
* gpgme.texi (Encrypting a Plaintext): Bad passphrase is only
possible with symmetric encryption, change the wording to reflect
that.
* gpgme.texi (Creating a Signature): Document
GPG_ERR_UNUSABLE_SECKEY.
|
|
|
|
|
|
| |
* gpgme.texi (Creating a Signature): Document
GPG_ERR_UNUSABLE_SECKEY.
|
|
|
|
|
|
|
| |
* gpgme.texi (Encrypting a Plaintext): Mention encrypt and sign
operations in result function.
(Creating a Signature): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* gpgme.texi (Key Listing Mode): Remove word duplication.
(Listing Keys): Remove mentioning of force argument.
(Verify): Don't mention r_stat. Fix some typos.
(Decrypt and Verify): Correct info how to get the result. Don't
mention r_stat.
(Manipulating Data Buffers): Fix documentation of return value.
(Listing Keys): Update examples.
(Decrypt): Result might also be available when operation failed.
(Verify): Result might also be available when operation failed.
All spotted by St�phane Corth�sy.
|
|
|
|
|
| |
* gpgme.texi (Error Sources): Fix cut and paste error.
|
|
|
|
|
|
|
|
| |
* gpgme.texi (Key Management): Clarify difference between can_sign
and can_certify.
(Information About Keys): Likewise for GPGME_ATTR_CAN_SIGN and
GPGME_ATTR_CAN_CERTIFY.
|
|
|
|
|
|
| |
* gpgme.texi (Progress Meter Callback): Change return type of
gpgme_progress_cb_t to void.
|
|
|
|
|
|
|
|
| |
* gpgme.texi: Add 2003 to copyright notice.
* gpgme.texi (Header): Fix name space documentation on
libgpg-error.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-06-22 Marcus Brinkmann <[email protected]>
* gpgme.texi (Multi Threading): Remove reference to
gpgme_recipients_t.
gpgme/
2003-06-22 Marcus Brinkmann <[email protected]>
* gpgme.h (gpgme_user_ids_release, gpgme_user_ids_append): Remove
prototypes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-06-06 Marcus Brinkmann <[email protected]>
* gpgme.texi (Crypto Operations): Rename gpgme_invalid_user_id_t
to gpgme_invalid_key_t.
gpgme/
2003-06-06 Marcus Brinkmann <[email protected]>
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-06-06 Marcus Brinkmann <[email protected]>
* gpgme.texi: Change error codes to GPG_ERR_* variants.
(Error Handling): Rewritten.
gpgme/
2003-06-05 Marcus Brinkmann <[email protected]>
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.
tests/
2003-06-06 Marcus Brinkmann <[email protected]>
Everywhere: Use libgpg-error error codes.
* gpg/Makefile.am (noinst_HEADERS): New variable.
* gpg/t-support.h: New file.
* gpgsm/Makefile.am (noinst_HEADERS): New variable.
* gpgsm/t-support.h: New file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-05-29 Marcus Brinkmann <[email protected]>
* gpgme.texi (Exporting Keys): Change and document prototypes.
Add new gpgme_op_export_ext and gpgme_op_export_ext_start
variants.
(Selecting Recipients): Section removed.
(Encrypting a Plaintext): Change prototypes and document the
changes.
gpgme/
2003-05-29 Marcus Brinkmann <[email protected]>
* 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.
tests/
2003-05-29 Marcus Brinkmann <[email protected]>
* gpg/t-encrypt-sym.c (main): Adapt to new syntax.
* gpg/t-encrypt.c (main): Likewise.
* gpg/t-eventloop.c (main): Likewise.
* gpg/t-encrypt-sign.c (main): Likewise.
* gpgsm/t-export.c (main): Likewise.
* gpgsm/t-encrypt.c (main): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-05-28 Marcus Brinkmann <[email protected]>
* gpgme.texi (Exporting Keys): Change argument type from
gpgme_recipient_t to gpgme_user_id_t.
(Encrypting a Plaintext): Likewise.
(Selecting Recipients): Rewritten.
gpgme/
2003-05-28 Marcus Brinkmann <[email protected]>
* 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.
tests/
2003-05-28 Marcus Brinkmann <[email protected]>
* gpg/t-eventloop.c (main): Rewrite recipient management.
* gpg/t-encrypt-sign.c (main): Likewise.
* gpg/t-encrypt.c (main): Likewise.
* gpg/t-export.c (main): Likewise.
|
| |
|
|
|
|
|
|
| |
* gpgme.texi (Protocol Selection): Do not use @acronym in @node
because that breaks texi2dvi.
|