Mercurial > hg > nginx
diff src/core/ngx_string.c @ 409:8ac40cae79f0
nginx-0.0.10-2004-08-29-07:55:41 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 29 Aug 2004 03:55:41 +0000 |
parents | d6e2b445c1b8 |
children | da8c5707af39 |
line wrap: on
line diff
--- a/src/core/ngx_string.c +++ b/src/core/ngx_string.c @@ -123,20 +123,16 @@ void ngx_md5_text(u_char *text, u_char * } -ngx_int_t ngx_encode_base64(ngx_pool_t *pool, ngx_str_t *src, ngx_str_t *dst) +void ngx_encode_base64(ngx_str_t *src, ngx_str_t *dst) { u_char *d, *s; size_t len; static u_char basis64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - if (!(d = ngx_palloc(pool, ((src->len + 2) / 3) * 4 + 1))) { - return NGX_ERROR; - } - - dst->data = d; + len = src->len; s = src->data; - len = src->len; + d = dst->data; while (len > 2) { *d++ = basis64[(s[0] >> 2) & 0x3f]; @@ -164,13 +160,10 @@ ngx_int_t ngx_encode_base64(ngx_pool_t * } dst->len = d - dst->data; - *d++ = '\0'; - - return NGX_OK; } -ngx_int_t ngx_decode_base64(ngx_pool_t *pool, ngx_str_t *src, ngx_str_t *dst) +ngx_int_t ngx_decode_base64(ngx_str_t *src, ngx_str_t *dst) { size_t len; u_char *d, *s; @@ -207,33 +200,27 @@ ngx_int_t ngx_decode_base64(ngx_pool_t * return NGX_ERROR; } - if (!(d = ngx_palloc(pool, ((len + 3) / 4) * 3 + 1))) { - return NGX_ABORT; - } - - dst->data = d; - s = src->data; + d = dst->data; while (len > 3) { - *d++ = basis64[s[0]] << 2 | basis64[s[1]] >> 4; - *d++ = basis64[s[1]] << 4 | basis64[s[2]] >> 2; - *d++ = basis64[s[2]] << 6 | basis64[s[3]]; + *d++ = (u_char) (basis64[s[0]] << 2 | basis64[s[1]] >> 4); + *d++ = (u_char) (basis64[s[1]] << 4 | basis64[s[2]] >> 2); + *d++ = (u_char) (basis64[s[2]] << 6 | basis64[s[3]]); s += 4; len -= 4; } if (len > 1) { - *d++ = basis64[s[0]] << 2 | basis64[s[1]] >> 4; + *d++ = (u_char) (basis64[s[0]] << 2 | basis64[s[1]] >> 4); } if (len > 2) { - *d++ = basis64[s[1]] << 4 | basis64[s[2]] >> 2; + *d++ = (u_char) (basis64[s[1]] << 4 | basis64[s[2]] >> 2); } dst->len = d - dst->data; - *d++ = '\0'; return NGX_OK; }