summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Brinkmann <mb@g10code.com>2009-07-17 01:53:19 +0000
committerMarcus Brinkmann <mb@g10code.com>2009-07-17 01:53:19 +0000
commit7be57d4b973a2280de50cdac7167692d73280e45 (patch)
treed8cabda821b7568e0cf28e7e94b4c81a221430da
parenteea21ee9383f652b446d60208620590860621556 (diff)
downloadlibgpg-error-7be57d4b973a2280de50cdac7167692d73280e45.tar.gz
2009-07-17 Marcus Brinkmann <marcus@g10code.de>
* src/mkerrnos.awk: Output code to cause WSA Errors to be found from gpg error codes. * README: Add problem of translating error codes back and forth.
-rw-r--r--ChangeLog4
-rw-r--r--README26
-rw-r--r--src/mkerrnos.awk7
3 files changed, 30 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 552eb31..042c99e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2009-07-17 Marcus Brinkmann <marcus@g10code.de>
+ * src/mkerrnos.awk: Output code to cause WSA Errors to be found
+ from gpg error codes.
+ * README: Add problem of translating error codes back and forth.
+
* src/mkerrcodes1.awk: Output code to cause WSA Errors to be
transparently translated.
* src/code-from-errno.c [HAVE_W32_SYSTEM]: Don't include winsock2.h.
diff --git a/README b/README
index 3cec868..505f28c 100644
--- a/README
+++ b/README
@@ -81,10 +81,22 @@ Known Problems
On Windows, WSA Error Codes can be provided as system error codes and
will be transparently converted to the corresponding gpg error codes.
-However, not all of them have detailed description when printed with
-gpg_strerror, but will default to "Unknown system error (NUMBER)" for
-pretty printing. For example, WSAEHOSTDOWN will be translated to
-GPG_ERR_EHOSTDOWN, but there is no corresponding EHOSTDOWN in Windows
-and thus gpg_strerror will default to "Unknown system error (8029)".
-(This could be fixed by adding our own error strings replacing or
-extending the system error strings, including their translations).
+There are two problems with this support:
+
+* Not all error codes corresponding to WSA Error codes have a detailed
+ description when printed with gpg_strerror. Some will default to
+ "Unknown error" for pretty printing. For example, WSAEHOSTDOWN will
+ be translated to GPG_ERR_EHOSTDOWN, but there is no corresponding
+ EHOSTDOWN in Windows and thus gpg_strerror will default to "Unknown
+ error" as printed by the system's strerror function for the argument
+ WSAEHOSTDOWN. (This could be fixed by adding our own error strings
+ replacing or extending the system error strings, including their
+ translations).
+
+* The translation to a gpg error code and back to a system error code
+ in some cases does not preserve information. For example, the error code
+ WSAEACCES translates to GPG_ERR_EACCES, which translates back to
+ EACCES.
+
+Any WSA Error code has either the first problem or the second (but not
+both), depending on if there is a corresponding Windows error code.
diff --git a/src/mkerrnos.awk b/src/mkerrnos.awk
index c4bbf81..f79df66 100644
--- a/src/mkerrnos.awk
+++ b/src/mkerrnos.awk
@@ -71,6 +71,9 @@ header {
if ($1 ~ /^[0-9]/)
{
print "#include <errno.h>";
+ print "#ifdef _WIN32";
+ print "#include <winsock2.h>";
+ print "#endif";
print "";
print "static const int err_code_to_errno [] = {";
header = 0;
@@ -89,8 +92,12 @@ header {
print "#ifdef " $errnoidx;
print " " $errnoidx ",";
print "#else";
+ print "#ifdef WSA" $errnoidx;
+ print " WSA" $errnoidx ",";
+ print "#else";
print " 0,";
print "#endif";
+ print "#endif";
}
END {
print "};";