Mercurial > hg > nginx-vendor-0-8
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 |