]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: clean error mapping
authorCorinna Vinschen <corinna@vinschen.de>
Tue, 20 Feb 2018 16:59:45 +0000 (17:59 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Tue, 20 Feb 2018 16:59:53 +0000 (17:59 +0100)
- Move definition of windows to POSIX error mapping struct into
  cygerrno.h
- Move declaration of winsock errno functions to cygerrno.h
- Input to error mapping functions is DWORD

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
winsup/cygwin/cygerrno.h
winsup/cygwin/errno.cc
winsup/cygwin/net.cc
winsup/cygwin/winsup.h

index ce33d971a3e06d410024a2b850be45fbc61595cb..afcae4cb087de699e0c6f9967ff26f9f0342e9ac 100644 (file)
@@ -11,6 +11,13 @@ details. */
 #include <errno.h>
 #include "regparm.h"
 
+struct errmap_t
+{
+  DWORD w;              /* windows version of error */
+  const char *s;        /* text of windows version */
+  int e;                /* errno version of error */
+};
+
 void __reg3 seterrno_from_win_error (const char *file, int line, DWORD code);
 void __reg3 seterrno_from_nt_status (const char *file, int line, NTSTATUS status);
 int __reg2 geterrno_from_win_error (DWORD code = GetLastError (), int deferrno = 13 /*EACCESS*/);
@@ -34,6 +41,9 @@ __set_errno (const char *fn, int ln, int val)
 }
 #define set_errno(val) __set_errno (__PRETTY_FUNCTION__, __LINE__, (val))
 
+void __reg2 __set_winsock_errno (const char *fn, int ln);
+#define set_winsock_errno() __set_winsock_errno (__FUNCTION__, __LINE__)
+
 #define get_errno()  (errno)
 extern "C" void __stdcall set_sig_errno (int e);
 
index 9168e9b4d965abf3e85b2015e879947096b9bbbd..4203265664c818f0b1c170cd336d597ba775c58a 100644 (file)
@@ -31,12 +31,7 @@ details. */
 
 #define X(w, e) {ERROR_##w, #w, e}
 
-static const struct
-{
-  DWORD w;              /* windows version of error */
-  const char *s;        /* text of windows version */
-  int e;                /* errno version of error */
-} errmap[] =
+static const errmap_t errmap[] =
 {
   /* FIXME: Some of these choices are arbitrary! */
   X (ACCESS_DENIED,            EACCES),
index d0e4d3b578d0715cd43c765296de52f1eb51b61c..7d73790a6b258c0261708afe7e51a7e230a80767 100644 (file)
@@ -150,14 +150,7 @@ inet_makeaddr (int net, int lna)
   return in;
 }
 
-struct tl
-{
-  int w;
-  const char *s;
-  int e;
-};
-
-static const struct tl errmap[] = {
+static const errmap_t wsock_errmap[] = {
   {WSA_INVALID_HANDLE, "WSA_INVALID_HANDLE", EBADF},
   {WSA_NOT_ENOUGH_MEMORY, "WSA_NOT_ENOUGH_MEMORY", ENOMEM},
   {WSA_INVALID_PARAMETER, "WSA_INVALID_PARAMETER", EINVAL},
@@ -206,11 +199,11 @@ static const struct tl errmap[] = {
 };
 
 static int
-find_winsock_errno (int why)
+find_winsock_errno (DWORD why)
 {
-  for (int i = 0; errmap[i].s != NULL; ++i)
-    if (why == errmap[i].w)
-      return errmap[i].e;
+  for (int i = 0; wsock_errmap[i].s != NULL; ++i)
+    if (why == wsock_errmap[i].w)
+      return wsock_errmap[i].e;
 
   return EPERM;
 }
@@ -229,7 +222,7 @@ __set_winsock_errno (const char *fn, int ln)
  * Since the member `s' isn't used for debug output we can use it
  * for the error text returned by herror and hstrerror.
  */
-static const struct tl host_errmap[] = {
+static const errmap_t host_errmap[] = {
   {WSAHOST_NOT_FOUND, "Unknown host", HOST_NOT_FOUND},
   {WSATRY_AGAIN, "Host name lookup failure", TRY_AGAIN},
   {WSANO_RECOVERY, "Unknown server error", NO_RECOVERY},
@@ -242,7 +235,7 @@ set_host_errno ()
 {
   int i;
 
-  int why = WSAGetLastError ();
+  DWORD why = WSAGetLastError ();
 
   for (i = 0; host_errmap[i].w != 0; ++i)
     if (why == host_errmap[i].w)
index 1b3fbfeee894eb14f482823fa26db99e2d4287fe..d2b37181a6e0cd4a0f9f1d4043c122dea865299a 100644 (file)
@@ -212,9 +212,6 @@ bool timeval_to_ms (const struct timeval *, DWORD &);
 void __stdcall set_console_title (char *);
 void init_console_handler (bool);
 
-void __reg2 __set_winsock_errno (const char *fn, int ln);
-#define set_winsock_errno() __set_winsock_errno (__FUNCTION__, __LINE__)
-
 extern bool wsock_started;
 
 /* Printf type functions */
This page took 0.037682 seconds and 5 git commands to generate.