0
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
|
4 */
|
|
5
|
|
6
|
|
7 #include <ngx_config.h>
|
|
8 #include <ngx_core.h>
|
|
9
|
|
10
|
18
|
11 #if (NGX_HAVE_STRERROR_R)
|
0
|
12
|
431
|
13 u_char *
|
|
14 ngx_strerror_r(int err, u_char *errstr, size_t size)
|
0
|
15 {
|
|
16 if (size == 0) {
|
431
|
17 return errstr;
|
0
|
18 }
|
|
19
|
|
20 errstr[0] = '\0';
|
|
21
|
10
|
22 strerror_r(err, (char *) errstr, size);
|
0
|
23
|
10
|
24 while (*errstr && size) {
|
|
25 errstr++;
|
|
26 size--;
|
0
|
27 }
|
|
28
|
10
|
29 return errstr;
|
0
|
30 }
|
|
31
|
18
|
32 #elif (NGX_HAVE_GNU_STRERROR_R)
|
0
|
33
|
|
34 /* Linux strerror_r() */
|
|
35
|
431
|
36 u_char *
|
|
37 ngx_strerror_r(int err, u_char *errstr, size_t size)
|
0
|
38 {
|
50
|
39 char *str;
|
0
|
40
|
|
41 if (size == 0) {
|
431
|
42 return errstr;
|
0
|
43 }
|
|
44
|
|
45 errstr[0] = '\0';
|
|
46
|
10
|
47 str = strerror_r(err, (char *) errstr, size);
|
0
|
48
|
10
|
49 if (str != (char *) errstr) {
|
|
50 return ngx_cpystrn(errstr, (u_char *) str, size);
|
0
|
51 }
|
|
52
|
10
|
53 while (*errstr && size) {
|
|
54 errstr++;
|
|
55 size--;
|
0
|
56 }
|
|
57
|
10
|
58 return errstr;
|
0
|
59 }
|
|
60
|
|
61 #endif
|