| |
| /* |
| * Copyright (C) Igor Sysoev |
| */ |
| |
| |
| #include <ngx_config.h> |
| #include <ngx_core.h> |
| |
| |
| #if (NGX_HAVE_STRERROR_R) |
| |
| u_char * |
| ngx_strerror_r(int err, u_char *errstr, size_t size) |
| { |
| if (size == 0) { |
| return errstr; |
| } |
| |
| errstr[0] = '\0'; |
| |
| strerror_r(err, (char *) errstr, size); |
| |
| while (*errstr && size) { |
| errstr++; |
| size--; |
| } |
| |
| return errstr; |
| } |
| |
| #elif (NGX_HAVE_GNU_STRERROR_R) |
| |
| /* Linux strerror_r() */ |
| |
| u_char * |
| ngx_strerror_r(int err, u_char *errstr, size_t size) |
| { |
| char *str; |
| |
| if (size == 0) { |
| return errstr; |
| } |
| |
| errstr[0] = '\0'; |
| |
| str = strerror_r(err, (char *) errstr, size); |
| |
| if (str != (char *) errstr) { |
| return ngx_cpystrn(errstr, (u_char *) str, size); |
| } |
| |
| while (*errstr && size) { |
| errstr++; |
| size--; |
| } |
| |
| return errstr; |
| } |
| |
| #endif |