/** * Create a string representation of the magnet resource. * * @return A newly allocated string via halloc(). */ char * magnet_to_string(const struct magnet_resource *res) { GSList *sl; str_t *s; g_return_val_if_fail(res, NULL); s = str_new(0); if (res->display_name) { magnet_append_item(s, TRUE, "dn", res->display_name); } if (0 != res->size) { char buf[UINT64_DEC_BUFLEN]; uint64_to_string_buf(res->size, buf, sizeof buf); magnet_append_item(s, FALSE, "xl", buf); } if (res->sha1) { magnet_append_item(s, FALSE, "xt", bitprint_to_urn_string(res->sha1, res->tth)); } if (res->parq_id) { magnet_append_item(s, TRUE, "x.parq-id", res->parq_id); } if (res->vendor) { magnet_append_item(s, TRUE, "x.vndr", res->vendor); } if (res->guid) { magnet_append_item(s, TRUE, "x.guid", res->guid); } if (res->dht) { magnet_append_item(s, TRUE, "x.dht", "1"); } for (sl = res->sources; NULL != sl; sl = g_slist_next(sl)) { char *url; url = magnet_source_to_string(sl->data); magnet_append_item(s, TRUE, "xs", url); G_FREE_NULL(url); } for (sl = res->searches; NULL != sl; sl = g_slist_next(sl)) { magnet_append_item(s, TRUE, "kt", sl->data); } return str_s2c_null(&s); }
/** * @return A halloc()ed string. */ static char * proxy_sequence_to_string(const sequence_t *s) { str_t *str; str = str_new(0); if (!sequence_is_empty(s)) { sequence_iter_t *iter; iter = sequence_forward_iterator(s); while (sequence_iter_has_next(iter)) { gnet_host_t *host = sequence_iter_next(iter); str_putc(str, ':'); str_cat(str, gnet_host_to_string(host)); } sequence_iterator_release(&iter); } return str_s2c_null(&str); }
/* * @return stringified host vector as newly allocated string via halloc() */ char * gnet_host_vec_to_string(const gnet_host_vec_t *hvec) { str_t *s; uint i, n; g_return_val_if_fail(hvec, NULL); s = str_new(0); n = gnet_host_vec_count(hvec); for (i = 0; i < n; i++) { gnet_host_t host; gchar buf[128]; if (i > 0) { STR_CAT(s, ", "); } host = gnet_host_vec_get(hvec, i); host_addr_port_to_string_buf(gnet_host_get_addr(&host), gnet_host_get_port(&host), buf, sizeof buf); str_cat(s, buf); } return str_s2c_null(&s); }