2009-11-05 Marcus Brinkmann <marcus@g10code.de>
* engine-g13.c (struct engine_g13): Remove members RESULT_CB and RESULT_CB_VALUE. (g13_assuan_simple_command, status_handler): Don't use those anymore. (g13_transact): Remove them from argument list, too. * vfs-mount.c (_gpgme_vfs_mount_status_handler): New function. (_gpgme_op_vfs_mount): Pass it to transact.
This commit is contained in:
parent
4babea46e7
commit
8acf819d40
@ -1,5 +1,12 @@
|
|||||||
2009-11-05 Marcus Brinkmann <marcus@g10code.de>
|
2009-11-05 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* engine-g13.c (struct engine_g13): Remove members RESULT_CB and
|
||||||
|
RESULT_CB_VALUE.
|
||||||
|
(g13_assuan_simple_command, status_handler): Don't use those anymore.
|
||||||
|
(g13_transact): Remove them from argument list, too.
|
||||||
|
* vfs-mount.c (_gpgme_vfs_mount_status_handler): New function.
|
||||||
|
(_gpgme_op_vfs_mount): Pass it to transact.
|
||||||
|
|
||||||
* engine-assuan.c (llass_new): Update use of assuan_socket_connect.
|
* engine-assuan.c (llass_new): Update use of assuan_socket_connect.
|
||||||
* engine-gpgsm.c (gpgsm_new): Update use of assuan_pipe_connect.
|
* engine-gpgsm.c (gpgsm_new): Update use of assuan_pipe_connect.
|
||||||
* engine-g13.c (g13_new): Likewise.
|
* engine-g13.c (g13_new): Likewise.
|
||||||
|
@ -69,10 +69,6 @@ struct engine_g13
|
|||||||
|
|
||||||
struct gpgme_io_cbs io_cbs;
|
struct gpgme_io_cbs io_cbs;
|
||||||
|
|
||||||
/* Internal callbacks. */
|
|
||||||
engine_assuan_result_cb_t result_cb;
|
|
||||||
void *result_cb_value;
|
|
||||||
|
|
||||||
/* User provided callbacks. */
|
/* User provided callbacks. */
|
||||||
struct {
|
struct {
|
||||||
gpgme_assuan_data_cb_t data_cb;
|
gpgme_assuan_data_cb_t data_cb;
|
||||||
@ -398,8 +394,8 @@ g13_set_locale (void *engine, int category, const char *value)
|
|||||||
|
|
||||||
static gpgme_error_t
|
static gpgme_error_t
|
||||||
g13_assuan_simple_command (assuan_context_t ctx, char *cmd,
|
g13_assuan_simple_command (assuan_context_t ctx, char *cmd,
|
||||||
engine_status_handler_t status_fnc,
|
engine_status_handler_t status_fnc,
|
||||||
void *status_fnc_value)
|
void *status_fnc_value)
|
||||||
{
|
{
|
||||||
gpg_error_t err;
|
gpg_error_t err;
|
||||||
char *line;
|
char *line;
|
||||||
@ -480,17 +476,13 @@ status_handler (void *opaque, int fd)
|
|||||||
"fd 0x%x: ERR line: %s",
|
"fd 0x%x: ERR line: %s",
|
||||||
fd, err ? gpg_strerror (err) : "ok");
|
fd, err ? gpg_strerror (err) : "ok");
|
||||||
|
|
||||||
/* In g13, command execution errors are not fatal, as we use
|
/* Command execution errors are not fatal, as we use
|
||||||
a session based protocol. */
|
a session based protocol. */
|
||||||
if (g13->result_cb)
|
data->op_err = err;
|
||||||
err = g13->result_cb (g13->result_cb_value, err);
|
|
||||||
else
|
/* The caller will do the rest (namely, call cancel_op,
|
||||||
err = 0;
|
which closes status_fd). */
|
||||||
if (!err)
|
return 0;
|
||||||
{
|
|
||||||
_gpgme_io_close (g13->status_cb.fd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (linelen >= 2
|
else if (linelen >= 2
|
||||||
&& line[0] == 'O' && line[1] == 'K'
|
&& line[0] == 'O' && line[1] == 'K'
|
||||||
@ -498,15 +490,9 @@ status_handler (void *opaque, int fd)
|
|||||||
{
|
{
|
||||||
TRACE1 (DEBUG_CTX, "gpgme:status_handler", g13,
|
TRACE1 (DEBUG_CTX, "gpgme:status_handler", g13,
|
||||||
"fd 0x%x: OK line", fd);
|
"fd 0x%x: OK line", fd);
|
||||||
if (g13->result_cb)
|
|
||||||
err = g13->result_cb (g13->result_cb_value, 0);
|
_gpgme_io_close (g13->status_cb.fd);
|
||||||
else
|
return 0;
|
||||||
err = 0;
|
|
||||||
if (!err)
|
|
||||||
{
|
|
||||||
_gpgme_io_close (g13->status_cb.fd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (linelen > 2
|
else if (linelen > 2
|
||||||
&& line[0] == 'D' && line[1] == ' ')
|
&& line[0] == 'D' && line[1] == ' ')
|
||||||
@ -704,8 +690,6 @@ g13_reset (void *engine)
|
|||||||
static gpgme_error_t
|
static gpgme_error_t
|
||||||
g13_transact (void *engine,
|
g13_transact (void *engine,
|
||||||
const char *command,
|
const char *command,
|
||||||
engine_assuan_result_cb_t result_cb,
|
|
||||||
void *result_cb_value,
|
|
||||||
gpgme_assuan_data_cb_t data_cb,
|
gpgme_assuan_data_cb_t data_cb,
|
||||||
void *data_cb_value,
|
void *data_cb_value,
|
||||||
gpgme_assuan_inquire_cb_t inq_cb,
|
gpgme_assuan_inquire_cb_t inq_cb,
|
||||||
@ -719,8 +703,6 @@ g13_transact (void *engine,
|
|||||||
if (!g13 || !command || !*command)
|
if (!g13 || !command || !*command)
|
||||||
return gpg_error (GPG_ERR_INV_VALUE);
|
return gpg_error (GPG_ERR_INV_VALUE);
|
||||||
|
|
||||||
g13->result_cb = result_cb;
|
|
||||||
g13->result_cb_value = result_cb_value;
|
|
||||||
g13->user.data_cb = data_cb;
|
g13->user.data_cb = data_cb;
|
||||||
g13->user.data_cb_value = data_cb_value;
|
g13->user.data_cb_value = data_cb_value;
|
||||||
g13->user.inq_cb = inq_cb;
|
g13->user.inq_cb = inq_cb;
|
||||||
|
@ -55,6 +55,30 @@ gpgme_op_vfs_mount_result (gpgme_ctx_t ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gpgme_error_t
|
||||||
|
_gpgme_vfs_mount_status_handler (void *priv, const char *code, const char *args)
|
||||||
|
{
|
||||||
|
gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
|
||||||
|
gpgme_error_t err;
|
||||||
|
void *hook;
|
||||||
|
op_data_t opd;
|
||||||
|
|
||||||
|
err = _gpgme_op_data_lookup (ctx, OPDATA_VFS_MOUNT, &hook, -1, NULL);
|
||||||
|
opd = hook;
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
if (! strcasecmp ("MOUNTPOINT", code))
|
||||||
|
{
|
||||||
|
if (opd->result.mount_dir)
|
||||||
|
free (opd->result.mount_dir);
|
||||||
|
opd->result.mount_dir = strdup (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static gpgme_error_t
|
static gpgme_error_t
|
||||||
vfs_start (gpgme_ctx_t ctx, int synchronous,
|
vfs_start (gpgme_ctx_t ctx, int synchronous,
|
||||||
const char *command,
|
const char *command,
|
||||||
@ -190,7 +214,7 @@ _gpgme_op_vfs_mount (gpgme_ctx_t ctx, const char *container_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = gpgme_op_vfs_transact (ctx, cmd, NULL, NULL, NULL, NULL,
|
err = gpgme_op_vfs_transact (ctx, cmd, NULL, NULL, NULL, NULL,
|
||||||
NULL, NULL, op_err);
|
_gpgme_vfs_mount_status_handler, ctx, op_err);
|
||||||
free (cmd);
|
free (cmd);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
Loading…
Reference in New Issue
Block a user