comparison src/os/unix/ngx_errno.c @ 0:f0b350454894 NGINX_0_1_0

nginx 0.1.0 *) The first public version.
author Igor Sysoev <http://sysoev.ru>
date Mon, 04 Oct 2004 00:00:00 +0400
parents
children cc9f381affaa
comparison
equal deleted inserted replaced
-1:000000000000 0:f0b350454894
1
2 /*
3 * Copyright (C) Igor Sysoev
4 */
5
6
7 #include <ngx_config.h>
8 #include <ngx_core.h>
9
10
11 #if (HAVE_STRERROR_R)
12
13 ngx_int_t ngx_strerror_r(int err, char *errstr, size_t size)
14 {
15 size_t len;
16
17 if (size == 0) {
18 return 0;
19 }
20
21 errstr[0] = '\0';
22
23 strerror_r(err, errstr, size);
24
25 for (len = 0; len < size; len++) {
26 if (errstr[len] == '\0') {
27 break;
28 }
29 }
30
31 return len;
32 }
33
34 #elif (HAVE_GNU_STRERROR_R)
35
36 /* Linux strerror_r() */
37
38 ngx_int_t ngx_strerror_r(int err, char *errstr, size_t size)
39 {
40 char *str;
41 size_t len;
42
43 if (size == 0) {
44 return 0;
45 }
46
47 errstr[0] = '\0';
48
49 str = strerror_r(err, errstr, size);
50
51 if (str != errstr) {
52 return ngx_cpystrn(errstr, str, size) - (u_char *) errstr;
53 }
54
55 for (len = 0; len < size; len++) {
56 if (errstr[len] == '\0') {
57 break;
58 }
59 }
60
61 return len;
62 }
63
64 #endif