| 335 | } |
| 336 | |
| 337 | static int __bencode_iovec_dump(struct iovec *out, bencode_item_t *item) { |
| 338 | bencode_item_t *child; |
| 339 | struct iovec *orig = out; |
| 340 | |
| 341 | assert(item->iov[0].iov_base != NULL); |
| 342 | out += __bencode_iovec_cpy(out, &item->iov[0], 1); |
| 343 | |
| 344 | child = item->child; |
| 345 | while (child) { |
| 346 | out += __bencode_iovec_dump(out, child); |
| 347 | child = child->sibling; |
| 348 | } |
| 349 | |
| 350 | if (item->type == BENCODE_IOVEC) |
| 351 | out += __bencode_iovec_cpy(out, item->iov[1].iov_base, item->iov[1].iov_len); |
| 352 | else if (item->iov[1].iov_base) |
| 353 | out += __bencode_iovec_cpy(out, &item->iov[1], 1); |
| 354 | |
| 355 | assert((out - orig) == item->iov_cnt); |
| 356 | return item->iov_cnt; |
| 357 | } |
| 358 | |
| 359 | static int __bencode_str_dump(char *out, bencode_item_t *item) { |
| 360 | char *orig = out; |
no test coverage detected