diff options
Diffstat (limited to 'lang/cpp/src/context.cpp')
-rw-r--r-- | lang/cpp/src/context.cpp | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index 11080cfa..4e66d3b9 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -23,7 +23,6 @@ #include <context.h> #include <eventloopinteractor.h> #include <trustitem.h> -#include <assuanresult.h> #include <keylistresult.h> #include <keygenerationresult.h> #include <importresult.h> @@ -801,26 +800,36 @@ static gpgme_error_t assuan_transaction_status_callback(void *opaque, const char return t->status(status, a.c_str()).encodedError(); } -AssuanResult Context::assuanTransact(const char *command) +Error Context::assuanTransact(const char *command) { return assuanTransact(command, std::unique_ptr<AssuanTransaction>(new DefaultAssuanTransaction)); } -AssuanResult Context::assuanTransact(const char *command, std::unique_ptr<AssuanTransaction> transaction) +Error Context::assuanTransact(const char *command, std::unique_ptr<AssuanTransaction> transaction) { + gpgme_error_t err, operr; + d->lastop = Private::AssuanTransact; d->lastAssuanTransaction = std::move(transaction); if (!d->lastAssuanTransaction.get()) { - return AssuanResult(Error(d->lasterr = make_error(GPG_ERR_INV_ARG))); + return Error(d->lasterr = make_error(GPG_ERR_INV_ARG)); } - d->lasterr = gpgme_op_assuan_transact(d->ctx, command, - assuan_transaction_data_callback, - d->lastAssuanTransaction.get(), - assuan_transaction_inquire_callback, - d, // sic! - assuan_transaction_status_callback, - d->lastAssuanTransaction.get()); - return AssuanResult(d->ctx, d->lasterr); + err = gpgme_op_assuan_transact_ext + (d->ctx, + command, + assuan_transaction_data_callback, + d->lastAssuanTransaction.get(), + assuan_transaction_inquire_callback, + d, + assuan_transaction_status_callback, + d->lastAssuanTransaction.get(), + &operr); + + if (!err) + err = operr; + d->lasterr = err; + + return Error(d->lasterr); } Error Context::startAssuanTransaction(const char *command) @@ -830,27 +839,26 @@ Error Context::startAssuanTransaction(const char *command) Error Context::startAssuanTransaction(const char *command, std::unique_ptr<AssuanTransaction> transaction) { + gpgme_error_t err; + d->lastop = Private::AssuanTransact; d->lastAssuanTransaction = std::move(transaction); if (!d->lastAssuanTransaction.get()) { return Error(d->lasterr = make_error(GPG_ERR_INV_ARG)); } - return Error(d->lasterr = gpgme_op_assuan_transact_start(d->ctx, command, - assuan_transaction_data_callback, - d->lastAssuanTransaction.get(), - assuan_transaction_inquire_callback, - d, // sic! - assuan_transaction_status_callback, - d->lastAssuanTransaction.get())); -} + err = gpgme_op_assuan_transact_start + (d->ctx, + command, + assuan_transaction_data_callback, + d->lastAssuanTransaction.get(), + assuan_transaction_inquire_callback, + d, + assuan_transaction_status_callback, + d->lastAssuanTransaction.get()); -AssuanResult Context::assuanResult() const -{ - if (d->lastop & Private::AssuanTransact) { - return AssuanResult(d->ctx, d->lasterr); - } else { - return AssuanResult(); - } + d->lasterr = err; + + return Error(d->lasterr); } AssuanTransaction *Context::lastAssuanTransaction() const |