From 7be57d4b973a2280de50cdac7167692d73280e45 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Fri, 17 Jul 2009 01:53:19 +0000 Subject: 2009-07-17 Marcus Brinkmann * 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. --- ChangeLog | 4 ++++ README | 26 +++++++++++++++++++------- src/mkerrnos.awk | 7 +++++++ 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 + * 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 "; + print "#ifdef _WIN32"; + print "#include "; + 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 "};"; -- cgit v1.2.3