diff options
Diffstat (limited to 'src/os/unix/ngx_errno.c')
-rw-r--r-- | src/os/unix/ngx_errno.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/os/unix/ngx_errno.c b/src/os/unix/ngx_errno.c index c50da8251..410cfde5c 100644 --- a/src/os/unix/ngx_errno.c +++ b/src/os/unix/ngx_errno.c @@ -25,4 +25,34 @@ ngx_int_t ngx_strerror_r(int err, char *errstr, size_t size) return len; } +#elif (HAVE_GNU_STRERROR_R) + +/* Linux strerror_r() */ + +ngx_int_t ngx_strerror_r(int err, char *errstr, size_t size) +{ + char *str; + size_t len; + + if (size == 0) { + return 0; + } + + errstr[0] = '\0'; + + str = strerror_r(err, errstr, size); + + if (str != errstr) { + return ngx_cpystrn(errstr, str, size) - errstr; + } + + for (len = 0; len < size; len++) { + if (errstr[len] == '\0') { + break; + } + } + + return len; +} + #endif |