diff src/os/win32/ngx_errno.c @ 103:6dfda4cf5200

nginx-0.0.1-2003-06-11-19:28:34 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 11 Jun 2003 15:28:34 +0000
parents c9b243802a17
children b5be4b0448d3
line wrap: on
line diff
--- a/src/os/win32/ngx_errno.c
+++ b/src/os/win32/ngx_errno.c
@@ -9,9 +9,29 @@
 #include <ngx_core.h>
 
 
+ngx_str_t wsa_errors[] = {
+    ngx_string("Invalid argument"),                          /* 10022 */
+    ngx_null_string,                                         /* 10023 */
+    ngx_null_string,                                         /* 10024 */
+    ngx_null_string,                                         /* 10025 */
+    ngx_null_string,                                         /* 10026 */
+    ngx_null_string,                                         /* 10027 */
+    ngx_null_string,                                         /* 10028 */
+    ngx_null_string,                                         /* 10029 */
+    ngx_null_string,                                         /* 10030 */
+    ngx_null_string,                                         /* 10031 */
+    ngx_null_string,                                         /* 10032 */
+    ngx_null_string,                                         /* 10033 */
+    ngx_null_string,                                         /* 10034 */
+    ngx_string("Resource temporarily unavailable")           /* 10035 */
+};
+
+
 int ngx_strerror_r(ngx_err_t err, char *errstr, size_t size)
 {
-    int len;
+    int        n;
+    u_int      len;
+    ngx_err_t  format_error;
 
     len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
                         | FORMAT_MESSAGE_IGNORE_INSERTS,
@@ -19,12 +39,28 @@ int ngx_strerror_r(ngx_err_t err, char *
                         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                         errstr, size, NULL);
 
-    /* add WSA error messages */
+    if (len == 0) {
+        format_error = GetLastError();
+
+        if (format_error == ERROR_MR_MID_NOT_FOUND) {
+            n = err - WSABASEERR - 22;
+
+            if (n >= 0 && n < 14) {
+                len = wsa_errors[n].len;
 
-    if (len == 0) {
+                if (len) {
+                    if (len > size) {
+                        len = size;
+                    }
+
+                    ngx_memcpy(errstr, wsa_errors[n].data, len);
+                    return len;
+                }
+            }
+        }
 
         len = ngx_snprintf(errstr, size,
-                           "FormatMessage error:(%d)", GetLastError());
+                           "FormatMessage() error:(%d)", format_error);
         return len;
 
     }