Mercurial > hg > nginx
comparison src/core/ngx_inet.c @ 1830:cac010479ea0
change order
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 04 Jan 2008 11:54:55 +0000 |
parents | 8075179cae21 |
children | 04b04e6d60f4 |
comparison
equal
deleted
inserted
replaced
1829:81831a2bc67a | 1830:cac010479ea0 |
---|---|
4 */ | 4 */ |
5 | 5 |
6 | 6 |
7 #include <ngx_config.h> | 7 #include <ngx_config.h> |
8 #include <ngx_core.h> | 8 #include <ngx_core.h> |
9 | |
10 | |
11 static size_t ngx_sprint_uchar(u_char *text, u_char c, size_t len); | |
9 | 12 |
10 | 13 |
11 /* AF_INET only */ | 14 /* AF_INET only */ |
12 | 15 |
13 in_addr_t | 16 in_addr_t |
61 * | 64 * |
62 * By the way, the implementation using ngx_sprintf() is faster by 2.5-3 times | 65 * By the way, the implementation using ngx_sprintf() is faster by 2.5-3 times |
63 * than using FreeBSD libc's snprintf(). | 66 * than using FreeBSD libc's snprintf(). |
64 */ | 67 */ |
65 | 68 |
66 | |
67 static ngx_inline size_t | |
68 ngx_sprint_uchar(u_char *text, u_char c, size_t len) | |
69 { | |
70 size_t n; | |
71 ngx_uint_t c1, c2; | |
72 | |
73 n = 0; | |
74 | |
75 if (len == n) { | |
76 return n; | |
77 } | |
78 | |
79 c1 = c / 100; | |
80 | |
81 if (c1) { | |
82 *text++ = (u_char) (c1 + '0'); | |
83 n++; | |
84 | |
85 if (len == n) { | |
86 return n; | |
87 } | |
88 } | |
89 | |
90 c2 = (c % 100) / 10; | |
91 | |
92 if (c1 || c2) { | |
93 *text++ = (u_char) (c2 + '0'); | |
94 n++; | |
95 | |
96 if (len == n) { | |
97 return n; | |
98 } | |
99 } | |
100 | |
101 c2 = c % 10; | |
102 | |
103 *text++ = (u_char) (c2 + '0'); | |
104 n++; | |
105 | |
106 return n; | |
107 } | |
108 | |
109 | |
110 /* AF_INET only */ | 69 /* AF_INET only */ |
111 | 70 |
112 size_t | 71 size_t |
113 ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text, size_t len) | 72 ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text, size_t len) |
114 { | 73 { |
161 text[n] = '\0'; | 120 text[n] = '\0'; |
162 | 121 |
163 return n; | 122 return n; |
164 } | 123 } |
165 | 124 |
125 | |
166 size_t | 126 size_t |
167 ngx_inet_ntop(int family, void *addr, u_char *text, size_t len) | 127 ngx_inet_ntop(int family, void *addr, u_char *text, size_t len) |
168 { | 128 { |
169 u_char *p; | 129 u_char *p; |
170 size_t n; | 130 size_t n; |
209 text[n] = '\0'; | 169 text[n] = '\0'; |
210 return n; | 170 return n; |
211 } | 171 } |
212 | 172 |
213 text[n] = '\0'; | 173 text[n] = '\0'; |
174 | |
175 return n; | |
176 } | |
177 | |
178 | |
179 static size_t | |
180 ngx_sprint_uchar(u_char *text, u_char c, size_t len) | |
181 { | |
182 size_t n; | |
183 ngx_uint_t c1, c2; | |
184 | |
185 n = 0; | |
186 | |
187 if (len == n) { | |
188 return n; | |
189 } | |
190 | |
191 c1 = c / 100; | |
192 | |
193 if (c1) { | |
194 *text++ = (u_char) (c1 + '0'); | |
195 n++; | |
196 | |
197 if (len == n) { | |
198 return n; | |
199 } | |
200 } | |
201 | |
202 c2 = (c % 100) / 10; | |
203 | |
204 if (c1 || c2) { | |
205 *text++ = (u_char) (c2 + '0'); | |
206 n++; | |
207 | |
208 if (len == n) { | |
209 return n; | |
210 } | |
211 } | |
212 | |
213 c2 = c % 10; | |
214 | |
215 *text++ = (u_char) (c2 + '0'); | |
216 n++; | |
214 | 217 |
215 return n; | 218 return n; |
216 } | 219 } |
217 | 220 |
218 | 221 |