static void thex_dump_dime_records(const pslist_t *records) { const pslist_t *iter; PSLIST_FOREACH(records, iter) { const struct dime_record *record = iter->data; g_assert(record); dump_hex(stderr, "THEX DIME record type", dime_record_type(record), dime_record_type_length(record)); dump_hex(stderr, "THEX DIME record ID", dime_record_id(record), dime_record_id_length(record)); } }
static void thex_dump_dime_records(const GSList *records) { const GSList *iter; for (iter = records; NULL != iter; iter = g_slist_next(iter)) { const struct dime_record *record; record = iter->data; g_assert(record); dump_hex(stderr, "THEX DIME record type", dime_record_type(record), dime_record_type_length(record)); dump_hex(stderr, "THEX DIME record ID", dime_record_id(record), dime_record_id_length(record)); } }
static const struct dime_record * dime_find_record(const GSList *records, const char *type, const char *id) { size_t type_length, id_length; const GSList *iter; g_return_val_if_fail(type, NULL); type_length = type ? strlen(type) : 0; g_return_val_if_fail(type_length > 0, NULL); id_length = id ? strlen(id) : 0; for (iter = records; NULL != iter; iter = g_slist_next(iter)) { const struct dime_record *record; record = iter->data; g_assert(record); if (dime_record_type_length(record) != type_length) continue; if (0 != ascii_strncasecmp(dime_record_type(record), type, type_length)) continue; if (id) { if (dime_record_id_length(record) != id_length) continue; if (0 != strncasecmp(dime_record_id(record), id, id_length)) continue; } return record; } if (GNET_PROPERTY(tigertree_debug)) { g_debug("TTH could not find record (type=\"%s\", id=%s%s%s)", type, id ? "\"" : "", id ? id : "<none>", id ? "\"" : ""); thex_dump_dime_records(records); } return NULL; }