
/*
   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;
}
