void TestBencodeCloneClones( CuTest * tc ) { bencode_t ben, ben2; char *str = strdup("d3:keyl4:test3:fooe3:foo3:bare"); bencode_init(&ben, str, strlen(str)); bencode_clone(&ben, &ben2); CuAssertTrue(tc, !strcmp(ben.str, ben2.str)); CuAssertTrue(tc, !strcmp(ben.start, ben2.start)); CuAssertTrue(tc, ben.len == ben2.len); free(str); }
int BencodeParser::bencode_dict_get_start_and_len( bencode_t * be, const char **start, int *len ) { bencode_t ben, ben2; const char *ren; int tmplen; bencode_clone(be, &ben); *start = ben.str; while (bencode_dict_has_next(&ben)) bencode_dict_get_next(&ben, &ben2, &ren, &tmplen); *len = ben.str - *start + 1; return 0; }