aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/edit.c
diff options
context:
space:
mode:
Diffstat (limited to 'gpgme/edit.c')
-rw-r--r--gpgme/edit.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/gpgme/edit.c b/gpgme/edit.c
index a12486c6..219e657e 100644
--- a/gpgme/edit.c
+++ b/gpgme/edit.c
@@ -1,4 +1,4 @@
-/* edit.c - key edit functions
+/* edit.c - Key edit functions.
Copyright (C) 2002 g10 Code GmbH
This file is part of GPGME.
@@ -20,9 +20,7 @@
#if HAVE_CONFIG_H
#include <config.h>
#endif
-#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <assert.h>
#include "util.h"
@@ -44,31 +42,38 @@ _gpgme_release_edit_result (EditResult result)
free (result);
}
-void
-_gpgme_edit_status_handler (GpgmeCtx ctx, GpgmeStatusCode status, char *args)
-{
- _gpgme_passphrase_status_handler (ctx, status, args);
- if (ctx->error)
- return;
+static GpgmeError
+edit_status_handler (GpgmeCtx ctx, GpgmeStatusCode status, char *args)
+{
+ GpgmeError err = _gpgme_passphrase_status_handler (ctx, status, args);
+ if (err)
+ return err;
- ctx->error = (*ctx->result.edit->fnc) (ctx->result.edit->fnc_value, status, args, NULL);
+ return (*ctx->result.edit->fnc) (ctx->result.edit->fnc_value, status,
+ args, NULL);
}
-static const char *
-command_handler (void *opaque, GpgmeStatusCode status, const char *args)
+
+static GpgmeError
+command_handler (void *opaque, GpgmeStatusCode status, const char *args,
+ const char **result)
{
+ GpgmeError err;
GpgmeCtx ctx = opaque;
- const char *result;
- result = _gpgme_passphrase_command_handler (ctx, status, args);
+ err = _gpgme_passphrase_command_handler (ctx, status, args, result);
+ if (err)
+ return err;
if (!result)
- ctx->error = (*ctx->result.edit->fnc) (ctx->result.edit->fnc_value, status, args, &result);
+ err = (*ctx->result.edit->fnc) (ctx->result.edit->fnc_value, status,
+ args, result);
- return result;
+ return err;
}
+
static GpgmeError
_gpgme_op_edit_start (GpgmeCtx ctx, int synchronous,
GpgmeKey key,
@@ -106,8 +111,7 @@ _gpgme_op_edit_start (GpgmeCtx ctx, int synchronous,
if (err)
goto leave;
- _gpgme_engine_set_status_handler (ctx->engine, _gpgme_edit_status_handler,
- ctx);
+ _gpgme_engine_set_status_handler (ctx->engine, edit_status_handler, ctx);
_gpgme_engine_set_verbosity (ctx->engine, ctx->verbosity);