aboutsummaryrefslogtreecommitdiff
path: root/src/os/win32/ngx_errno.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/win32/ngx_errno.c')
-rw-r--r--src/os/win32/ngx_errno.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/os/win32/ngx_errno.c b/src/os/win32/ngx_errno.c
new file mode 100644
index 000000000..ef91e883c
--- /dev/null
+++ b/src/os/win32/ngx_errno.c
@@ -0,0 +1,38 @@
+
+/*
+ TODO:
+ add WSA error messages
+ test for English only messages
+*/
+
+#include <ngx_config.h>
+#include <ngx_string.h>
+#include <ngx_errno.h>
+
+int ngx_strerror_r(ngx_err_t err, char *errstr, size_t size)
+{
+ int len;
+
+ len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
+ | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, err,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ errstr, size, NULL);
+
+ /* add WSA error messages */
+
+ if (len == 0) {
+
+ len = ngx_snprintf(errstr, size,
+ "FormatMessage error:(%d)", GetLastError());
+ return len;
+
+ }
+
+ /* remove ".\r\n\0" */
+ while (errstr[len] == '\0' || errstr[len] == CR
+ || errstr[len] == LF || errstr[len] == '.')
+ --len;
+
+ return ++len;
+}