diff options
author | Igor Sysoev <igor@sysoev.ru> | 2004-02-10 16:23:38 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2004-02-10 16:23:38 +0000 |
commit | c7a2f6860669f45f5abe342163de5bc68e344816 (patch) | |
tree | 08755593cd5f7537d0b63cf2a6c8b835e1082792 /src/os/unix/ngx_errno.c | |
parent | e9b2cb1b9d286cffa8053e41c87b12ce265c4f25 (diff) | |
download | nginx-c7a2f6860669f45f5abe342163de5bc68e344816.tar.gz nginx-c7a2f6860669f45f5abe342163de5bc68e344816.zip |
nginx-0.0.2-2004-02-10-19:23:38 import
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 |