[Pkg-gnupg-commit] [gnupg2] 36/159: gpg: New function to printed a detailed error code.
Daniel Kahn Gillmor
dkg at fifthhorseman.net
Wed Jan 27 13:23:51 UTC 2016
This is an automated email from the git hooks/post-receive script.
dkg pushed a commit to branch master
in repository gnupg2.
commit 2ea1aebc924c3f0b2269f83cb1b80c75d9fa069c
Author: Werner Koch <wk at gnupg.org>
Date: Mon Dec 14 19:35:03 2015 +0100
gpg: New function to printed a detailed error code.
* g10/misc.c (print_reported_error): New.
--
Often the user is only interested in a catch all error code like "not
found" but sometimes it is useful to also see the real reason. By
this function this can easily be achieved. Example:
err = search_for_key (keyid)
if (err)
{
log_info ("error locating key '%s': %s\n",
keyid, gpg_strerror (GPG_ERR_NOT_FOUND));
print_reported_error (err, GPG_ERR_NOT_FOUND);
}
results in
gpg: error locating key 'foobar': not found
gpg: (reported error: no keyring <keybox>)
where the second line is only printed in verbose mode and if ERR is
not GPG_ERR_NOT_FOUND.
Signed-off-by: Werner Koch <wk at gnupg.org>
---
g10/main.h | 1 +
g10/misc.c | 25 +++++++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/g10/main.h b/g10/main.h
index e9f557d..e4c6e8f 100644
--- a/g10/main.h
+++ b/g10/main.h
@@ -89,6 +89,7 @@ void print_pubkey_algo_note (pubkey_algo_t algo);
void print_cipher_algo_note (cipher_algo_t algo);
void print_digest_algo_note (digest_algo_t algo);
void print_digest_rejected_note (enum gcry_md_algos algo);
+void print_reported_error (gpg_error_t err, gpg_err_code_t skip_if_ec);
void additional_weak_digest (const char* digestname);
/*-- armor.c --*/
diff --git a/g10/misc.c b/g10/misc.c
index 547944d..57d5fef 100644
--- a/g10/misc.c
+++ b/g10/misc.c
@@ -358,6 +358,31 @@ print_digest_rejected_note (enum gcry_md_algos algo)
}
+/* Print a message
+ * "(reported error: %s)\n
+ * in verbose mode to further explain an error. If the error code has
+ * the value IGNORE_EC no message is printed. A message is also not
+ * printed if ERR is 0. */
+void
+print_reported_error (gpg_error_t err, gpg_err_code_t ignore_ec)
+{
+ if (!opt.verbose)
+ return;
+
+ if (!gpg_err_code (err))
+ ;
+ else if (gpg_err_code (err) == ignore_ec)
+ ;
+ else if (gpg_err_source (err) == GPG_ERR_SOURCE_DEFAULT)
+ log_info (_("(reported error: %s\n)"),
+ gpg_strerror (err));
+ else
+ log_info (_("(reported error: %s <%s>\n)"),
+ gpg_strerror (err), gpg_strsource (err));
+
+}
+
+
/* Map OpenPGP algo numbers to those used by Libgcrypt. We need to do
this for algorithms we implemented in Libgcrypt after they become
part of OpenPGP. */
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git
More information about the Pkg-gnupg-commit
mailing list