diff options
Diffstat (limited to 'src/os/unix/ngx_errno.c')
-rw-r--r-- | src/os/unix/ngx_errno.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/src/os/unix/ngx_errno.c b/src/os/unix/ngx_errno.c index 0c93d23a1..ced0eafcb 100644 --- a/src/os/unix/ngx_errno.c +++ b/src/os/unix/ngx_errno.c @@ -10,32 +10,29 @@ #if (NGX_STRERROR_R) -ngx_int_t ngx_strerror_r(int err, char *errstr, size_t size) +u_char *ngx_strerror_r(int err, u_char *errstr, size_t size) { - size_t len; - if (size == 0) { return 0; } errstr[0] = '\0'; - strerror_r(err, errstr, size); + strerror_r(err, (char *) errstr, size); - for (len = 0; len < size; len++) { - if (errstr[len] == '\0') { - break; - } + while (*errstr && size) { + errstr++; + size--; } - return len; + return errstr; } #elif (NGX_GNU_STRERROR_R) /* Linux strerror_r() */ -ngx_int_t ngx_strerror_r(int err, char *errstr, size_t size) +u_char *ngx_strerror_r(int err, u_char *errstr, size_t size) { char *str; size_t len; @@ -46,20 +43,18 @@ ngx_int_t ngx_strerror_r(int err, char *errstr, size_t size) errstr[0] = '\0'; - str = strerror_r(err, errstr, size); + str = strerror_r(err, (char *) errstr, size); - if (str != errstr) { - return ngx_cpystrn((u_char *) errstr, (u_char *) str, size) - - (u_char *) errstr; + if (str != (char *) errstr) { + return ngx_cpystrn(errstr, (u_char *) str, size); } - for (len = 0; len < size; len++) { - if (errstr[len] == '\0') { - break; - } + while (*errstr && size) { + errstr++; + size--; } - return len; + return errstr; } #endif |