Mercurial > hg > nginx-quic
comparison src/core/ngx_string.c @ 1544:998c44b19e30
ngx_escape_html()
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 27 Sep 2007 09:36:50 +0000 |
parents | f5bd1a7ed2cd |
children | d0bdd5f2276e |
comparison
equal
deleted
inserted
replaced
1543:8596627c4cc5 | 1544:998c44b19e30 |
---|---|
1297 *dst = d; | 1297 *dst = d; |
1298 *src = s; | 1298 *src = s; |
1299 } | 1299 } |
1300 | 1300 |
1301 | 1301 |
1302 uintptr_t | |
1303 ngx_escape_html(u_char *dst, u_char *src, size_t size) | |
1304 { | |
1305 u_char ch; | |
1306 ngx_uint_t i, len; | |
1307 | |
1308 if (dst == NULL) { | |
1309 | |
1310 len = 0; | |
1311 | |
1312 for (i = 0; i < size; i++) { | |
1313 switch (*src++) { | |
1314 | |
1315 case '<': | |
1316 len += sizeof("<") - 2; | |
1317 break; | |
1318 | |
1319 case '>': | |
1320 len += sizeof(">") - 2; | |
1321 break; | |
1322 | |
1323 case '&': | |
1324 len += sizeof("&") - 2; | |
1325 break; | |
1326 | |
1327 default: | |
1328 break; | |
1329 } | |
1330 } | |
1331 | |
1332 return (uintptr_t) len; | |
1333 } | |
1334 | |
1335 for (i = 0; i < size; i++) { | |
1336 ch = *src++; | |
1337 | |
1338 switch (ch) { | |
1339 | |
1340 case '<': | |
1341 *dst++ = '&'; *dst++ = 'l'; *dst++ = 't'; *dst++ = ';'; | |
1342 break; | |
1343 | |
1344 case '>': | |
1345 *dst++ = '&'; *dst++ = 'g'; *dst++ = 't'; *dst++ = ';'; | |
1346 break; | |
1347 | |
1348 case '&': | |
1349 *dst++ = '&'; *dst++ = 'a'; *dst++ = 'm'; *dst++ = 'p'; | |
1350 *dst++ = ';'; | |
1351 break; | |
1352 | |
1353 default: | |
1354 *dst++ = ch; | |
1355 break; | |
1356 } | |
1357 } | |
1358 | |
1359 return (uintptr_t) dst; | |
1360 } | |
1361 | |
1362 | |
1302 /* ngx_sort() is implemented as insertion sort because we need stable sort */ | 1363 /* ngx_sort() is implemented as insertion sort because we need stable sort */ |
1303 | 1364 |
1304 void | 1365 void |
1305 ngx_sort(void *base, size_t n, size_t size, | 1366 ngx_sort(void *base, size_t n, size_t size, |
1306 int (*cmp)(const void *, const void *)) | 1367 int (*cmp)(const void *, const void *)) |