| |
| ngx_int_t |
| ndk_copy_chain_to_str (ngx_pool_t *pool, ngx_chain_t *in, ngx_str_t *str) |
| { |
| ngx_chain_t *cl; |
| size_t len; |
| u_char *p; |
| ngx_buf_t *b; |
| |
| len = 0; |
| for (cl = in; cl; cl = cl->next) |
| len += ngx_buf_size (cl->buf); |
| |
| ndk_palloc_re (p, pool, len + 1); |
| |
| str->data = p; |
| str->len = len; |
| |
| for (cl = in; cl; cl = cl->next) { |
| |
| b = cl->buf; |
| |
| if (ngx_buf_in_memory (b)) { |
| p = ngx_cpymem (p, b->pos, b->last - b->pos); |
| } |
| } |
| |
| *p = '\0'; |
| |
| return NGX_OK; |
| } |
| |
| |
| char * |
| ndk_copy_chain_to_charp (ngx_pool_t *pool, ngx_chain_t *in) |
| { |
| ngx_str_t str; |
| |
| if (ndk_copy_chain_to_str (pool, in, &str) != NGX_OK) |
| return NULL; |
| |
| return (char *) str.data; |
| } |