2005-08-26 Marcus Brinkmann <marcus@g10code.de>
* engine.h (engine_command_handler_t): Add new argument processed. * ops.h (_gpgme_passphrase_command_handler_internal): Rename prototype to ... (_gpgme_passphrase_command_handler): ... this one. * passphrase.c (_gpgme_passphrase_command_handler_internal): Rename to ... (_gpgme_passphrase_command_handler): ... this one. * edit.c (command_handler): Add new argument processed. Remove local variable with the same name. Always return processed as true. * rungpg.c (command_handler): Send a newline character if the handler did not.
This commit is contained in:
parent
82a0c97250
commit
9f952a5a0b
2
TODO
2
TODO
@ -6,6 +6,8 @@ Hey Emacs, this is -*- outline -*- mode!
|
|||||||
** Add notation data to key signatures.
|
** Add notation data to key signatures.
|
||||||
|
|
||||||
* ABI's to break:
|
* ABI's to break:
|
||||||
|
** gpgme_edit_cb_t: Add "processed" return argument
|
||||||
|
(see edit.c::command_handler).
|
||||||
** I/O and User Data could be made extensible. But this can be done
|
** I/O and User Data could be made extensible. But this can be done
|
||||||
without breaking the ABI hopefully.
|
without breaking the ABI hopefully.
|
||||||
* All enums that should be enums need to have a maximum value to ensure
|
* All enums that should be enums need to have a maximum value to ensure
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
2005-08-26 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* engine.h (engine_command_handler_t): Add new argument processed.
|
||||||
|
* ops.h (_gpgme_passphrase_command_handler_internal): Rename
|
||||||
|
prototype to ...
|
||||||
|
(_gpgme_passphrase_command_handler): ... this one.
|
||||||
|
* passphrase.c (_gpgme_passphrase_command_handler_internal):
|
||||||
|
Rename to ...
|
||||||
|
(_gpgme_passphrase_command_handler): ... this one.
|
||||||
|
* edit.c (command_handler): Add new argument processed. Remove
|
||||||
|
local variable with the same name. Always return processed as
|
||||||
|
true.
|
||||||
|
* rungpg.c (command_handler): Send a newline character if the
|
||||||
|
handler did not.
|
||||||
|
|
||||||
2005-08-26 Werner Koch <wk@g10code.com>
|
2005-08-26 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* w32-util.c (read_w32_registry_string): Updated from code used by
|
* w32-util.c (read_w32_registry_string): Updated from code used by
|
||||||
|
15
gpgme/edit.c
15
gpgme/edit.c
@ -63,21 +63,20 @@ edit_status_handler (void *priv, gpgme_status_code_t status, char *args)
|
|||||||
|
|
||||||
static gpgme_error_t
|
static gpgme_error_t
|
||||||
command_handler (void *priv, gpgme_status_code_t status, const char *args,
|
command_handler (void *priv, gpgme_status_code_t status, const char *args,
|
||||||
int fd)
|
int fd, int *processed)
|
||||||
{
|
{
|
||||||
gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
|
gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
|
||||||
gpgme_error_t err;
|
gpgme_error_t err;
|
||||||
int processed = 0;
|
|
||||||
|
|
||||||
if (ctx->passphrase_cb)
|
if (ctx->passphrase_cb)
|
||||||
{
|
{
|
||||||
err = _gpgme_passphrase_command_handler_internal (ctx, status, args,
|
err = _gpgme_passphrase_command_handler (ctx, status, args,
|
||||||
fd, &processed);
|
fd, processed);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!processed)
|
if (!*processed)
|
||||||
{
|
{
|
||||||
void *hook;
|
void *hook;
|
||||||
op_data_t opd;
|
op_data_t opd;
|
||||||
@ -87,8 +86,14 @@ command_handler (void *priv, gpgme_status_code_t status, const char *args,
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
/* FIXME: We expect the user to handle _all_ status codes.
|
||||||
|
Later, we may fix the callback interface to allow the user
|
||||||
|
indicate if it processed the status code or not. */
|
||||||
|
*processed = 1;
|
||||||
|
|
||||||
return (*opd->fnc) (opd->fnc_value, status, args, fd);
|
return (*opd->fnc) (opd->fnc_value, status, args, fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ typedef gpgme_error_t (*engine_colon_line_handler_t) (void *priv, char *line);
|
|||||||
typedef gpgme_error_t (*engine_command_handler_t) (void *priv,
|
typedef gpgme_error_t (*engine_command_handler_t) (void *priv,
|
||||||
gpgme_status_code_t code,
|
gpgme_status_code_t code,
|
||||||
const char *keyword,
|
const char *keyword,
|
||||||
int fd);
|
int fd, int *processed);
|
||||||
|
|
||||||
/* Get a deep copy of the engine info and return it in INFO. */
|
/* Get a deep copy of the engine info and return it in INFO. */
|
||||||
gpgme_error_t _gpgme_engine_info_copy (gpgme_engine_info_t *r_info);
|
gpgme_error_t _gpgme_engine_info_copy (gpgme_engine_info_t *r_info);
|
||||||
|
@ -103,9 +103,6 @@ gpgme_error_t _gpgme_passphrase_status_handler (void *priv,
|
|||||||
gpgme_status_code_t code,
|
gpgme_status_code_t code,
|
||||||
char *args);
|
char *args);
|
||||||
gpgme_error_t _gpgme_passphrase_command_handler (void *opaque,
|
gpgme_error_t _gpgme_passphrase_command_handler (void *opaque,
|
||||||
gpgme_status_code_t code,
|
|
||||||
const char *key, int fd);
|
|
||||||
gpgme_error_t _gpgme_passphrase_command_handler_internal (void *opaque,
|
|
||||||
gpgme_status_code_t code,
|
gpgme_status_code_t code,
|
||||||
const char *key, int fd,
|
const char *key, int fd,
|
||||||
int *processed);
|
int *processed);
|
||||||
|
@ -116,10 +116,8 @@ _gpgme_passphrase_status_handler (void *priv, gpgme_status_code_t code,
|
|||||||
|
|
||||||
|
|
||||||
gpgme_error_t
|
gpgme_error_t
|
||||||
_gpgme_passphrase_command_handler_internal (void *priv,
|
_gpgme_passphrase_command_handler (void *priv, gpgme_status_code_t code,
|
||||||
gpgme_status_code_t code,
|
const char *key, int fd, int *processed)
|
||||||
const char *key, int fd,
|
|
||||||
int *processed)
|
|
||||||
{
|
{
|
||||||
gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
|
gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
|
||||||
gpgme_error_t err;
|
gpgme_error_t err;
|
||||||
@ -153,12 +151,3 @@ _gpgme_passphrase_command_handler_internal (void *priv,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gpgme_error_t
|
|
||||||
_gpgme_passphrase_command_handler (void *priv, gpgme_status_code_t code,
|
|
||||||
const char *key, int fd)
|
|
||||||
{
|
|
||||||
return _gpgme_passphrase_command_handler_internal (priv, code, key, fd,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
@ -478,15 +478,21 @@ command_handler (void *opaque, int fd)
|
|||||||
{
|
{
|
||||||
gpgme_error_t err;
|
gpgme_error_t err;
|
||||||
engine_gpg_t gpg = (engine_gpg_t) opaque;
|
engine_gpg_t gpg = (engine_gpg_t) opaque;
|
||||||
|
int processed = 0;
|
||||||
|
|
||||||
assert (gpg->cmd.used);
|
assert (gpg->cmd.used);
|
||||||
assert (gpg->cmd.code);
|
assert (gpg->cmd.code);
|
||||||
assert (gpg->cmd.fnc);
|
assert (gpg->cmd.fnc);
|
||||||
|
|
||||||
err = gpg->cmd.fnc (gpg->cmd.fnc_value, gpg->cmd.code, gpg->cmd.keyword, fd);
|
err = gpg->cmd.fnc (gpg->cmd.fnc_value, gpg->cmd.code, gpg->cmd.keyword, fd,
|
||||||
|
&processed);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
/* We always need to send at least a newline character. */
|
||||||
|
if (!processed)
|
||||||
|
write (fd, "\n", 1);
|
||||||
|
|
||||||
gpg->cmd.code = 0;
|
gpg->cmd.code = 0;
|
||||||
/* And sleep again until read_status will wake us up again. */
|
/* And sleep again until read_status will wake us up again. */
|
||||||
/* XXX We must check if there are any more fds active after removing
|
/* XXX We must check if there are any more fds active after removing
|
||||||
|
Loading…
Reference in New Issue
Block a user