From 15a3f59481e6b134e80cbb9e88fffa0c9f67c8b4 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Wed, 18 Aug 2010 14:14:27 +0000 Subject: [PATCH] 2010-08-18 Marcus Brinkmann * gpgme.def: Add gpgme_err_code_from_syserror and gpgme_err_set_errno. * libgpgme.vers: Likewise. * gpgme.h.in (gpgme_error_from_errno): Fix return type to gpgme_error_t. (gpgme_err_code_from_syserror, gpgme_err_set_errno): New prototype. (gpgme_error_from_syserror): New inline function (why are gpgme_err_make_from_errno and gpgme_error_from_errno not inline functions?). * error.c (gpgme_error_from_errno): Fix return type to gpgme_error_t. (gpgme_err_set_errno, gpgme_err_code_from_syserror): New functions. --- NEWS | 6 +++++- src/ChangeLog | 13 +++++++++++++ src/error.c | 21 ++++++++++++++++++++- src/gpgme.def | 3 +++ src/gpgme.h.in | 25 ++++++++++++++++++------- src/libgpgme.vers | 3 +++ 6 files changed, 62 insertions(+), 9 deletions(-) diff --git a/NEWS b/NEWS index fd1fefb..958053a 100644 --- a/NEWS +++ b/NEWS @@ -7,7 +7,11 @@ Noteworthy changes in version 1.3.1 (unreleased) * Interface changes relative to the 1.3.0 release: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - GPGME_EXPORT_MODE_MINIMAL NEW. + GPGME_EXPORT_MODE_MINIMAL NEW + gpgme_err_code_from_syserror NEW + gpgme_err_set_errno NEW + gpgme_error_from_errno CHANGED: Return gpgme_error_t (compatible type). + gpgme_error_from_syserror NEW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/src/ChangeLog b/src/ChangeLog index 73588ab..612a964 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,16 @@ +2010-08-18 Marcus Brinkmann + + * gpgme.def: Add gpgme_err_code_from_syserror and gpgme_err_set_errno. + * libgpgme.vers: Likewise. + * gpgme.h.in (gpgme_error_from_errno): Fix return type to + gpgme_error_t. + (gpgme_err_code_from_syserror, gpgme_err_set_errno): New prototype. + (gpgme_error_from_syserror): New inline function (why are + gpgme_err_make_from_errno and gpgme_error_from_errno not inline + functions?). + * error.c (gpgme_error_from_errno): Fix return type to gpgme_error_t. + (gpgme_err_set_errno, gpgme_err_code_from_syserror): New functions. + 2010-08-03 Marcus Brinkmann * gpgme-tool.c (result_encrypt_to_xml, result_sign_to_xml) diff --git a/src/error.c b/src/error.c index 6f37ef7..f970e68 100644 --- a/src/error.c +++ b/src/error.c @@ -74,6 +74,25 @@ gpgme_err_code_to_errno (gpgme_err_code_t code) return gpg_err_code_from_errno (code); } + +/* Retrieve the error code directly from the ERRNO variable. This + returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped + (report this) and GPG_ERR_MISSING_ERRNO if ERRNO has the value 0. */ +gpgme_err_code_t +gpgme_err_code_from_syserror (void) +{ + return gpg_err_code_from_syserror (); +} + + +/* Set the ERRNO variable. This function is the preferred way to set + ERRNO due to peculiarities on WindowsCE. */ +void +gpgme_err_set_errno (int err) +{ + gpg_err_set_errno (err); +} + /* Return an error value with the error source SOURCE and the system error ERR. */ @@ -85,7 +104,7 @@ gpgme_err_make_from_errno (gpg_err_source_t source, int err) /* Return an error value with the system error ERR. */ -gpgme_err_code_t +gpgme_error_t gpgme_error_from_errno (int err) { return gpgme_error (gpg_err_code_from_errno (err)); diff --git a/src/gpgme.def b/src/gpgme.def index 1a685ff..9990b33 100644 --- a/src/gpgme.def +++ b/src/gpgme.def @@ -199,5 +199,8 @@ EXPORTS gpgme_op_passwd_start @152 gpgme_op_passwd @153 + gpgme_err_code_from_syserror @154 + gpgme_err_set_errno @155 + ; END diff --git a/src/gpgme.h.in b/src/gpgme.h.in index eed9daa..f84cd46 100644 --- a/src/gpgme.h.in +++ b/src/gpgme.h.in @@ -164,30 +164,41 @@ const char *gpgme_strerror (gpgme_error_t err); beginning of the error string as fits into the buffer. */ int gpgme_strerror_r (gpg_error_t err, char *buf, size_t buflen); - /* Return a pointer to a string containing a description of the error source in the error value ERR. */ const char *gpgme_strsource (gpgme_error_t err); - /* Retrieve the error code for the system error ERR. This returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped (report this). */ gpgme_err_code_t gpgme_err_code_from_errno (int err); - /* Retrieve the system error for the error code CODE. This returns 0 if CODE is not a system error code. */ int gpgme_err_code_to_errno (gpgme_err_code_t code); - +/* Retrieve the error code directly from the ERRNO variable. This + returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped + (report this) and GPG_ERR_MISSING_ERRNO if ERRNO has the value 0. */ +gpgme_err_code_t gpgme_err_code_from_syserror (void); + +/* Set the ERRNO variable. This function is the preferred way to set + ERRNO due to peculiarities on WindowsCE. */ +void gpgme_err_set_errno (int err); + /* Return an error value with the error source SOURCE and the system - error ERR. */ + error ERR. FIXME: Should be inline. */ gpgme_error_t gpgme_err_make_from_errno (gpgme_err_source_t source, int err); +/* Return an error value with the system error ERR. FIXME: Should be inline. */ +gpgme_error_t gpgme_error_from_errno (int err); + -/* Return an error value with the system error ERR. */ -gpgme_err_code_t gpgme_error_from_errno (int err); +static _GPGME_INLINE gpgme_error_t +gpgme_error_from_syserror (void) +{ + return gpgme_error (gpgme_err_code_from_syserror ()); +} /* The possible encoding mode of gpgme_data_t objects. */ diff --git a/src/libgpgme.vers b/src/libgpgme.vers index 9d927ce..3477d31 100644 --- a/src/libgpgme.vers +++ b/src/libgpgme.vers @@ -204,6 +204,9 @@ GPGME_1.0 { gpgme_trust_item_get_string_attr; gpgme_trust_item_release; + gpgme_err_code_from_syserror; + gpgme_err_set_errno; + local: *; -- 2.26.2