| 270 | } |
| 271 | |
| 272 | bencode_item_t *bencode_integer(bencode_buffer_t *buf, long long int i) { |
| 273 | bencode_item_t *ret; |
| 274 | int alen, rlen; |
| 275 | |
| 276 | alen = 8; |
| 277 | while (1) { |
| 278 | ret = __bencode_item_alloc(buf, alen + 3); |
| 279 | if (!ret) |
| 280 | return NULL; |
| 281 | rlen = snprintf(ret->__buf, alen, "i%llde", i); |
| 282 | if (rlen < alen) |
| 283 | break; |
| 284 | alen <<= 1; |
| 285 | } |
| 286 | |
| 287 | ret->type = BENCODE_INTEGER; |
| 288 | ret->iov[0].iov_base = ret->__buf; |
| 289 | ret->iov[0].iov_len = rlen; |
| 290 | ret->iov[1].iov_base = NULL; |
| 291 | ret->iov[1].iov_len = 0; |
| 292 | ret->iov_cnt = 1; |
| 293 | ret->str_len = rlen; |
| 294 | |
| 295 | return ret; |
| 296 | } |
| 297 | |
| 298 | bencode_item_t *bencode_dictionary_add_len(bencode_item_t *dict, const char *key, int keylen, bencode_item_t *val) { |
| 299 | bencode_item_t *str; |
no test coverage detected