diff options
| author | Marcus Brinkmann <[email protected]> | 2003-01-30 22:40:05 +0000 |
|---|---|---|
| committer | Marcus Brinkmann <[email protected]> | 2003-01-30 22:40:05 +0000 |
| commit | 7618b28f1d8ea4bf90d866bf6dba099ca80c7010 (patch) | |
| tree | a59d0d2e8e9a9ee220da075bfc8dce128a468238 /gpgme/edit.c | |
| parent | Fix comment indentation. (diff) | |
| download | gpgme-7618b28f1d8ea4bf90d866bf6dba099ca80c7010.tar.gz gpgme-7618b28f1d8ea4bf90d866bf6dba099ca80c7010.zip | |
2003-01-30 Marcus Brinkmann <[email protected]>
* 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".
Diffstat (limited to 'gpgme/edit.c')
| -rw-r--r-- | gpgme/edit.c | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/gpgme/edit.c b/gpgme/edit.c index ec898dc9..b6245167 100644 --- a/gpgme/edit.c +++ b/gpgme/edit.c @@ -28,47 +28,52 @@ #include "ops.h" -struct edit_result_s +struct edit_result { GpgmeEditCb fnc; void *fnc_value; }; - -void -_gpgme_release_edit_result (EditResult result) -{ - if (!result) - return; - free (result); -} - +typedef struct edit_result *EditResult; static GpgmeError edit_status_handler (GpgmeCtx ctx, GpgmeStatusCode status, char *args) { + EditResult result; GpgmeError err = _gpgme_passphrase_status_handler (ctx, status, args); if (err) return err; - return (*ctx->result.edit->fnc) (ctx->result.edit->fnc_value, status, - args, NULL); + err = _gpgme_op_data_lookup (ctx, OPDATA_EDIT, (void **) &result, + -1, NULL); + if (err) + return err; + assert (result); + + return (*result->fnc) (result->fnc_value, status, args, NULL); } static GpgmeError command_handler (void *opaque, GpgmeStatusCode status, const char *args, - const char **result) + const char **result_r) { + EditResult result; GpgmeError err; GpgmeCtx ctx = opaque; - err = _gpgme_passphrase_command_handler (ctx, status, args, result); + *result_r = NULL; + err = _gpgme_passphrase_command_handler (ctx, status, args, result_r); + if (err) + return err; + + err = _gpgme_op_data_lookup (ctx, OPDATA_EDIT, (void **) &result, + -1, NULL); if (err) return err; + assert (result); - if (!result) - err = (*ctx->result.edit->fnc) (ctx->result.edit->fnc_value, status, - args, result); + if (!*result_r) + err = (*result->fnc) (result->fnc_value, status, args, result_r); return err; } @@ -80,6 +85,7 @@ _gpgme_op_edit_start (GpgmeCtx ctx, int synchronous, GpgmeEditCb fnc, void *fnc_value, GpgmeData out) { + EditResult result; GpgmeError err = 0; if (!fnc) @@ -89,15 +95,13 @@ _gpgme_op_edit_start (GpgmeCtx ctx, int synchronous, if (err) goto leave; - assert (!ctx->result.edit); - ctx->result.edit = malloc (sizeof *ctx->result.edit); - if (!ctx->result.edit) - { - err = GPGME_Out_Of_Core; - goto leave; - } - ctx->result.edit->fnc = fnc; - ctx->result.edit->fnc_value = fnc_value; + err = _gpgme_op_data_lookup (ctx, OPDATA_EDIT, (void **) &result, + sizeof (*result), NULL); + if (err) + goto leave; + + result->fnc = fnc; + result->fnc_value = fnc_value; /* Check the supplied data. */ if (!out) |
