core: Use a better name for the internal synchronous wait.
* src/wait.c (_gpgme_wait_on_condition): Rename to ... (_gpgme_sync_wait): this. Small code refactoring. (_gpgme_wait_one, _gpgme_wait_one_ext): Remove and change all callers to use _gpgme_sync_wait. * src/fdtable.c (_gpgme_fdtable_run_io_cbs): Move TRACE up. -- Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
28e620fa16
commit
153f1128f8
@ -126,7 +126,7 @@ gpgme_op_decrypt_verify (gpgme_ctx_t ctx, gpgme_data_t cipher,
|
|||||||
|
|
||||||
err = decrypt_verify_start (ctx, 1, GPGME_DECRYPT_VERIFY, cipher, plain);
|
err = decrypt_verify_start (ctx, 1, GPGME_DECRYPT_VERIFY, cipher, plain);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
ctx->ignore_mdc_error = 0; /* Always reset. */
|
ctx->ignore_mdc_error = 0; /* Always reset. */
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
@ -177,7 +177,7 @@ gpgme_op_decrypt_ext (gpgme_ctx_t ctx,
|
|||||||
else
|
else
|
||||||
err = _gpgme_decrypt_start (ctx, 1, flags, cipher, plain);
|
err = _gpgme_decrypt_start (ctx, 1, flags, cipher, plain);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
ctx->ignore_mdc_error = 0; /* Always reset. */
|
ctx->ignore_mdc_error = 0; /* Always reset. */
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
@ -613,7 +613,7 @@ gpgme_op_decrypt (gpgme_ctx_t ctx, gpgme_data_t cipher, gpgme_data_t plain)
|
|||||||
|
|
||||||
err = _gpgme_decrypt_start (ctx, 1, 0, cipher, plain);
|
err = _gpgme_decrypt_start (ctx, 1, 0, cipher, plain);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
ctx->ignore_mdc_error = 0; /* Always reset. */
|
ctx->ignore_mdc_error = 0; /* Always reset. */
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ gpgme_op_delete (gpgme_ctx_t ctx, const gpgme_key_t key, int allow_secret)
|
|||||||
err = delete_start (ctx, 1, key,
|
err = delete_start (ctx, 1, key,
|
||||||
allow_secret ? GPGME_DELETE_ALLOW_SECRET : 0);
|
allow_secret ? GPGME_DELETE_ALLOW_SECRET : 0);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,6 +204,6 @@ gpgme_op_delete_ext (gpgme_ctx_t ctx, const gpgme_key_t key,
|
|||||||
|
|
||||||
err = delete_start (ctx, 1, key, flags);
|
err = delete_start (ctx, 1, key, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -186,7 +186,7 @@ gpgme_op_interact (gpgme_ctx_t ctx, gpgme_key_t key, unsigned int flags,
|
|||||||
|
|
||||||
err = interact_start (ctx, 1, key, flags, fnc, fnc_value, out);
|
err = interact_start (ctx, 1, key, flags, fnc, fnc_value, out);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,7 +266,7 @@ gpgme_op_edit (gpgme_ctx_t ctx, gpgme_key_t key,
|
|||||||
err = edit_start (ctx, 1, 0, key, fnc, fnc_value, out);
|
err = edit_start (ctx, 1, 0, key, fnc, fnc_value, out);
|
||||||
|
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,6 +309,6 @@ gpgme_op_card_edit (gpgme_ctx_t ctx, gpgme_key_t key,
|
|||||||
|
|
||||||
err = edit_start (ctx, 1, 1, key, fnc, fnc_value, out);
|
err = edit_start (ctx, 1, 1, key, fnc, fnc_value, out);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ gpgme_op_encrypt_sign_ext (gpgme_ctx_t ctx, gpgme_key_t recp[],
|
|||||||
|
|
||||||
err = encrypt_sign_start (ctx, 1, recp, recpstring, flags, plain, cipher);
|
err = encrypt_sign_start (ctx, 1, recp, recpstring, flags, plain, cipher);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,7 +319,7 @@ gpgme_op_encrypt_ext (gpgme_ctx_t ctx, gpgme_key_t recp[],
|
|||||||
|
|
||||||
err = encrypt_start (ctx, 1, recp, recpstring, flags, plain, cipher);
|
err = encrypt_start (ctx, 1, recp, recpstring, flags, plain, cipher);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +202,7 @@ gpgme_op_export (gpgme_ctx_t ctx, const char *pattern,
|
|||||||
|
|
||||||
err = export_start (ctx, 1, pattern, mode, keydata);
|
err = export_start (ctx, 1, pattern, mode, keydata);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,7 +319,7 @@ gpgme_op_export_ext (gpgme_ctx_t ctx, const char *pattern[],
|
|||||||
err = export_ext_start (ctx, 1, pattern, mode, keydata);
|
err = export_ext_start (ctx, 1, pattern, mode, keydata);
|
||||||
if (!err)
|
if (!err)
|
||||||
{
|
{
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
if (!err)
|
if (!err)
|
||||||
{
|
{
|
||||||
/* For this synchronous operation we check for operational
|
/* For this synchronous operation we check for operational
|
||||||
@ -459,7 +459,7 @@ gpgme_op_export_keys (gpgme_ctx_t ctx,
|
|||||||
err = export_keys_start (ctx, 1, keys, mode, keydata);
|
err = export_keys_start (ctx, 1, keys, mode, keydata);
|
||||||
if (!err)
|
if (!err)
|
||||||
{
|
{
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
if (!err)
|
if (!err)
|
||||||
{
|
{
|
||||||
/* For this synchronous operation we check for operational
|
/* For this synchronous operation we check for operational
|
||||||
@ -478,4 +478,3 @@ gpgme_op_export_keys (gpgme_ctx_t ctx,
|
|||||||
|
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,11 +481,11 @@ _gpgme_fdtable_run_io_cbs (uint64_t owner, gpg_error_t *r_op_err)
|
|||||||
unsigned int cb_count;
|
unsigned int cb_count;
|
||||||
gpgme_ctx_t actx;
|
gpgme_ctx_t actx;
|
||||||
|
|
||||||
|
TRACE_BEG (DEBUG_SYSIO, __func__, NULL, "ctx=%lu", owner);
|
||||||
|
|
||||||
if (r_op_err)
|
if (r_op_err)
|
||||||
*r_op_err = 0;
|
*r_op_err = 0;
|
||||||
|
|
||||||
TRACE_BEG (DEBUG_SYSIO, __func__, NULL, "ctx=%lu", owner);
|
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
fd = -1;
|
fd = -1;
|
||||||
|
12
src/genkey.c
12
src/genkey.c
@ -316,7 +316,7 @@ gpgme_op_genkey (gpgme_ctx_t ctx, const char *parms, gpgme_data_t pubkey,
|
|||||||
|
|
||||||
err = genkey_start (ctx, 1, parms, pubkey, seckey);
|
err = genkey_start (ctx, 1, parms, pubkey, seckey);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,7 +400,7 @@ gpgme_op_createkey (gpgme_ctx_t ctx, const char *userid, const char *algo,
|
|||||||
err = createkey_start (ctx, 1,
|
err = createkey_start (ctx, 1,
|
||||||
userid, algo, reserved, expires, anchorkey, flags);
|
userid, algo, reserved, expires, anchorkey, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,7 +487,7 @@ gpgme_op_createsubkey (gpgme_ctx_t ctx, gpgme_key_t key, const char *algo,
|
|||||||
|
|
||||||
err = createsubkey_start (ctx, 1, key, algo, reserved, expires, flags);
|
err = createsubkey_start (ctx, 1, key, algo, reserved, expires, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -571,7 +571,7 @@ gpgme_op_adduid (gpgme_ctx_t ctx,
|
|||||||
|
|
||||||
err = addrevuid_start (ctx, 1, 0, key, userid, flags);
|
err = addrevuid_start (ctx, 1, 0, key, userid, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -608,7 +608,7 @@ gpgme_op_revuid (gpgme_ctx_t ctx,
|
|||||||
|
|
||||||
err = addrevuid_start (ctx, 1, GENKEY_EXTRAFLAG_REVOKE, key, userid, flags);
|
err = addrevuid_start (ctx, 1, GENKEY_EXTRAFLAG_REVOKE, key, userid, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -640,7 +640,7 @@ set_uid_flag (gpgme_ctx_t ctx, int synchronous,
|
|||||||
return err = gpg_error (GPG_ERR_UNKNOWN_NAME);
|
return err = gpg_error (GPG_ERR_UNKNOWN_NAME);
|
||||||
|
|
||||||
if (synchronous && !err)
|
if (synchronous && !err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +99,6 @@ gpgme_op_getauditlog (gpgme_ctx_t ctx, gpgme_data_t output, unsigned int flags)
|
|||||||
|
|
||||||
err = getauditlog_start (ctx, 1, output, flags);
|
err = getauditlog_start (ctx, 1, output, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ gpgme_op_import (gpgme_ctx_t ctx, gpgme_data_t keydata)
|
|||||||
|
|
||||||
err = _gpgme_op_import_start (ctx, 1, keydata);
|
err = _gpgme_op_import_start (ctx, 1, keydata);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -433,7 +433,7 @@ gpgme_op_import_keys (gpgme_ctx_t ctx, gpgme_key_t *keys)
|
|||||||
|
|
||||||
err = _gpgme_op_import_keys_start (ctx, 1, keys);
|
err = _gpgme_op_import_keys_start (ctx, 1, keys);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1216,7 +1216,7 @@ gpgme_op_keylist_next (gpgme_ctx_t ctx, gpgme_key_t *r_key)
|
|||||||
|
|
||||||
if (!opd->key_queue)
|
if (!opd->key_queue)
|
||||||
{
|
{
|
||||||
err = _gpgme_wait_on_condition (ctx, &opd->key_cond, NULL);
|
err = _gpgme_sync_wait (ctx, &opd->key_cond, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
|
|
||||||
|
@ -214,6 +214,6 @@ gpgme_op_keysign (gpgme_ctx_t ctx, gpgme_key_t key, const char *userid,
|
|||||||
|
|
||||||
err = keysign_start (ctx, 1, key, userid, expires, flags);
|
err = keysign_start (ctx, 1, key, userid, expires, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ gpgme_op_assuan_transact_ext (gpgme_ctx_t ctx,
|
|||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
err = _gpgme_wait_one_ext (ctx, &op_err);
|
err = _gpgme_sync_wait (ctx, NULL, &op_err);
|
||||||
if (op_err)
|
if (op_err)
|
||||||
{
|
{
|
||||||
TRACE_LOG ("op_err = %s <%s>", gpgme_strerror (op_err),
|
TRACE_LOG ("op_err = %s <%s>", gpgme_strerror (op_err),
|
||||||
|
@ -33,10 +33,9 @@ void _gpgme_release_result (gpgme_ctx_t ctx);
|
|||||||
|
|
||||||
|
|
||||||
/* From wait.c. */
|
/* From wait.c. */
|
||||||
gpgme_error_t _gpgme_wait_one (gpgme_ctx_t ctx);
|
gpgme_error_t _gpgme_sync_wait (gpgme_ctx_t ctx,
|
||||||
gpgme_error_t _gpgme_wait_one_ext (gpgme_ctx_t ctx, gpgme_error_t *op_err);
|
volatile int *cond,
|
||||||
gpgme_error_t _gpgme_wait_on_condition (gpgme_ctx_t ctx, volatile int *cond,
|
gpg_error_t *op_err);
|
||||||
gpgme_error_t *op_err);
|
|
||||||
|
|
||||||
|
|
||||||
/* From data.c. */
|
/* From data.c. */
|
||||||
|
@ -199,7 +199,6 @@ gpgme_op_passwd (gpgme_ctx_t ctx, gpgme_key_t key, unsigned int flags)
|
|||||||
|
|
||||||
err = passwd_start (ctx, 1, key, flags);
|
err = passwd_start (ctx, 1, key, flags);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -495,6 +495,6 @@ gpgme_op_sign (gpgme_ctx_t ctx, gpgme_data_t plain, gpgme_data_t sig,
|
|||||||
|
|
||||||
err = sign_start (ctx, 1, plain, sig, mode);
|
err = sign_start (ctx, 1, plain, sig, mode);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
@ -101,6 +101,6 @@ gpgme_op_spawn (gpgme_ctx_t ctx, const char *file, const char *argv[],
|
|||||||
err = spawn_start (ctx, 1, file, argv, datain, dataout, dataerr, flags);
|
err = spawn_start (ctx, 1, file, argv, datain, dataout, dataerr, flags);
|
||||||
|
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
@ -180,6 +180,6 @@ gpgme_op_tofu_policy (gpgme_ctx_t ctx,
|
|||||||
|
|
||||||
err = tofu_policy_start (ctx, 1, key, policy);
|
err = tofu_policy_start (ctx, 1, key, policy);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,7 @@ gpgme_op_trustlist_next (gpgme_ctx_t ctx, gpgme_trust_item_t *r_item)
|
|||||||
|
|
||||||
if (!opd->trust_queue)
|
if (!opd->trust_queue)
|
||||||
{
|
{
|
||||||
err = _gpgme_wait_on_condition (ctx, &opd->trust_cond, NULL);
|
err = _gpgme_sync_wait (ctx, &opd->trust_cond, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
if (!opd->trust_cond)
|
if (!opd->trust_cond)
|
||||||
|
@ -1194,7 +1194,7 @@ gpgme_op_verify (gpgme_ctx_t ctx, gpgme_data_t sig, gpgme_data_t signed_text,
|
|||||||
|
|
||||||
err = verify_start (ctx, 1, sig, signed_text, plaintext);
|
err = verify_start (ctx, 1, sig, signed_text, plaintext);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one (ctx);
|
err = _gpgme_sync_wait (ctx, NULL, NULL);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ gpgme_op_vfs_transact (gpgme_ctx_t ctx,
|
|||||||
err = vfs_start (ctx, 1, command, data_cb, data_cb_value,
|
err = vfs_start (ctx, 1, command, data_cb, data_cb_value,
|
||||||
inq_cb, inq_cb_value, status_cb, status_cb_value);
|
inq_cb, inq_cb_value, status_cb, status_cb_value);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one_ext (ctx, op_err);
|
err = _gpgme_sync_wait (ctx, NULL, op_err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,4 +202,3 @@ gpgme_op_vfs_create (gpgme_ctx_t ctx, gpgme_key_t recp[],
|
|||||||
err = _gpgme_op_vfs_create (ctx, recp, container_file, flags, op_err);
|
err = _gpgme_op_vfs_create (ctx, recp, container_file, flags, op_err);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ gpgme_op_vfs_transact (gpgme_ctx_t ctx,
|
|||||||
err = vfs_start (ctx, 1, command, data_cb, data_cb_value,
|
err = vfs_start (ctx, 1, command, data_cb, data_cb_value,
|
||||||
inq_cb, inq_cb_value, status_cb, status_cb_value);
|
inq_cb, inq_cb_value, status_cb, status_cb_value);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = _gpgme_wait_one_ext (ctx, op_err);
|
err = _gpgme_sync_wait (ctx, NULL, op_err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,4 +244,3 @@ gpgme_op_vfs_mount (gpgme_ctx_t ctx, const char *container_file,
|
|||||||
err = _gpgme_op_vfs_mount (ctx, container_file, mount_dir, flags, op_err);
|
err = _gpgme_op_vfs_mount (ctx, container_file, mount_dir, flags, op_err);
|
||||||
return TRACE_ERR (err);
|
return TRACE_ERR (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
59
src/wait.c
59
src/wait.c
@ -385,25 +385,29 @@ gpgme_wait (gpgme_ctx_t ctx, gpgme_error_t *status, int hang)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* If COND is a null pointer, wait until the blocking operation in CTX
|
/* Wait until the blocking operation in context CTX has finished and
|
||||||
finished and return its error value. Otherwise, wait until COND is
|
* return the error value. If COND is not NULL return early if COND
|
||||||
satisfied or the operation finished. */
|
* is satisfied. A session based error will be returned at R_OP_ERR
|
||||||
|
* if it is not NULL. */
|
||||||
gpgme_error_t
|
gpgme_error_t
|
||||||
_gpgme_wait_on_condition (gpgme_ctx_t ctx, volatile int *cond,
|
_gpgme_sync_wait (gpgme_ctx_t ctx, volatile int *cond, gpg_error_t *r_op_err)
|
||||||
gpgme_error_t *r_op_err)
|
|
||||||
{
|
{
|
||||||
gpgme_error_t err = 0;
|
gpgme_error_t err = 0;
|
||||||
int hang = 1;
|
int hang = 1;
|
||||||
io_select_t fds = NULL;
|
io_select_t fds = NULL;
|
||||||
unsigned int nfds;
|
unsigned int nfds;
|
||||||
int op_err;
|
|
||||||
int nr;
|
int nr;
|
||||||
|
|
||||||
|
TRACE_BEG (DEBUG_SYSIO, __func__, NULL, "ctx=%lu", CTXSERIAL (ctx));
|
||||||
|
|
||||||
if (r_op_err)
|
if (r_op_err)
|
||||||
*r_op_err = 0;
|
*r_op_err = 0;
|
||||||
|
|
||||||
if (!ctx)
|
if (!ctx)
|
||||||
return gpg_error (GPG_ERR_INV_VALUE);
|
{
|
||||||
|
err = gpg_error (GPG_ERR_INV_VALUE);
|
||||||
|
goto leave;
|
||||||
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -415,14 +419,10 @@ _gpgme_wait_on_condition (gpgme_ctx_t ctx, volatile int *cond,
|
|||||||
{
|
{
|
||||||
err = gpg_error_from_syserror ();
|
err = gpg_error_from_syserror ();
|
||||||
if (gpg_err_code (err) != GPG_ERR_MISSING_ERRNO)
|
if (gpg_err_code (err) != GPG_ERR_MISSING_ERRNO)
|
||||||
|
goto leave;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
free (fds);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
/* Nothing to select. Run the select anyway, so that we use
|
|
||||||
* its timeout. */
|
|
||||||
}
|
|
||||||
|
|
||||||
nr = _gpgme_io_select (fds, nfds, 0);
|
nr = _gpgme_io_select (fds, nfds, 0);
|
||||||
if (nr < 0)
|
if (nr < 0)
|
||||||
{
|
{
|
||||||
@ -430,20 +430,18 @@ _gpgme_wait_on_condition (gpgme_ctx_t ctx, volatile int *cond,
|
|||||||
signal it. */
|
signal it. */
|
||||||
err = gpg_error_from_syserror ();
|
err = gpg_error_from_syserror ();
|
||||||
_gpgme_cancel_with_err (ctx->serial, err, 0);
|
_gpgme_cancel_with_err (ctx->serial, err, 0);
|
||||||
free (fds);
|
goto leave;
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
_gpgme_fdtable_set_signaled (fds, nfds);
|
_gpgme_fdtable_set_signaled (fds, nfds);
|
||||||
|
|
||||||
err = _gpgme_fdtable_run_io_cbs (ctx->serial, r_op_err);
|
err = _gpgme_fdtable_run_io_cbs (ctx->serial, r_op_err);
|
||||||
if (err || (r_op_err && *r_op_err))
|
if (err || (r_op_err && *r_op_err))
|
||||||
{
|
goto leave;
|
||||||
free (fds);
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_gpgme_fdtable_io_cb_count (ctx->serial))
|
if (!_gpgme_fdtable_io_cb_count (ctx->serial))
|
||||||
{
|
{
|
||||||
|
/* No more matching fds with IO callbacks. */
|
||||||
struct gpgme_io_event_done_data data = {0, 0};
|
struct gpgme_io_event_done_data data = {0, 0};
|
||||||
_gpgme_engine_io_event (ctx->engine, GPGME_EVENT_DONE, &data);
|
_gpgme_engine_io_event (ctx->engine, GPGME_EVENT_DONE, &data);
|
||||||
hang = 0;
|
hang = 0;
|
||||||
@ -452,26 +450,9 @@ _gpgme_wait_on_condition (gpgme_ctx_t ctx, volatile int *cond,
|
|||||||
hang = 0;
|
hang = 0;
|
||||||
}
|
}
|
||||||
while (hang);
|
while (hang);
|
||||||
|
err = 0;
|
||||||
|
|
||||||
|
leave:
|
||||||
free (fds);
|
free (fds);
|
||||||
return 0;
|
return TRACE_ERR (err);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Wait until the blocking operation in context CTX has finished and
|
|
||||||
return the error value. This variant can not be used for
|
|
||||||
session-based protocols. */
|
|
||||||
gpgme_error_t
|
|
||||||
_gpgme_wait_one (gpgme_ctx_t ctx)
|
|
||||||
{
|
|
||||||
return _gpgme_wait_on_condition (ctx, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Wait until the blocking operation in context CTX has finished and
|
|
||||||
return the error value. This is the right variant to use for
|
|
||||||
sesion-based protocols. */
|
|
||||||
gpgme_error_t
|
|
||||||
_gpgme_wait_one_ext (gpgme_ctx_t ctx, gpgme_error_t *op_err)
|
|
||||||
{
|
|
||||||
return _gpgme_wait_on_condition (ctx, NULL, op_err);
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user