* gpgme.c (_gpgme_set_op_info): Append data on subsequent calls.
* encrypt-sign.c (encrypt_sign_status_handler): Remove op_info
handling.
+2002-08-20 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.c (_gpgme_set_op_info): Append data on subsequent calls.
+ * encrypt-sign.c (encrypt_sign_status_handler): Remove op_info
+ handling.
+
2002-08-19 Werner Koch <wk@gnupg.org>
* decrypt.c (is_token,skip_token): Duplicated from verify.c
size_t encrypt_info_len;
_gpgme_encrypt_status_handler (ctx, code, args);
-
- if (code == GPGME_STATUS_EOF)
- {
- encrypt_info = gpgme_data_release_and_get_mem (ctx->op_info,
- &encrypt_info_len);
- ctx->op_info = NULL;
- }
_gpgme_sign_status_handler (ctx, code, args);
- if (code == GPGME_STATUS_EOF && encrypt_info)
- _gpgme_data_append (ctx->op_info, encrypt_info, encrypt_info_len);
}
}
-/*
- * Store the data object with the operation info in the
- * context. Caller should not use that object anymore.
- */
+/* Store the data object INFO with the operation info in the context
+ CTX. INFO is consumed. Subsequent calls append the data. */
void
_gpgme_set_op_info (GpgmeCtx ctx, GpgmeData info)
{
assert (ctx);
- gpgme_data_release (ctx->op_info);
- ctx->op_info = NULL;
-
- if (info)
+ if (!ctx->op_info)
ctx->op_info = info;
+ else
+ {
+ char *info_mem = 0;
+ size_t info_len;
+
+ info_mem = gpgme_data_release_and_get_mem (info, &info_len);
+ _gpgme_data_append (ctx->op_info, info_mem, info_len);
+ }
}