aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2010-08-18 14:14:27 +0000
committerMarcus Brinkmann <[email protected]>2010-08-18 14:14:27 +0000
commit15a3f59481e6b134e80cbb9e88fffa0c9f67c8b4 (patch)
treec21242c4088d8cbcfa5024df49ed95be7c2bf0e5
parentAre you ready already? (diff)
downloadgpgme-15a3f59481e6b134e80cbb9e88fffa0c9f67c8b4.tar.gz
gpgme-15a3f59481e6b134e80cbb9e88fffa0c9f67c8b4.zip
2010-08-18 Marcus Brinkmann <[email protected]>
* 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.
-rw-r--r--NEWS6
-rw-r--r--src/ChangeLog13
-rw-r--r--src/error.c21
-rw-r--r--src/gpgme.def3
-rw-r--r--src/gpgme.h.in25
-rw-r--r--src/libgpgme.vers3
6 files changed, 62 insertions, 9 deletions
diff --git a/NEWS b/NEWS
index fd1fefb0..958053a1 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 73588ab0..612a9640 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,16 @@
+2010-08-18 Marcus Brinkmann <[email protected]>
+
+ * 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 <[email protected]>
* gpgme-tool.c (result_encrypt_to_xml, result_sign_to_xml)
diff --git a/src/error.c b/src/error.c
index 6f37ef7d..f970e682 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 1a685ffe..9990b334 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 eed9daa4..f84cd465 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 9d927cef..3477d318 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:
*;