rem: if (strncmp(list->uri.s, uri->s, uri->len) == 0) return head;
add: if (str_strcmp(&list->uri, uri) == 0) return head;
context: resource_list_t *resource_list_append_unique(resource_list_t *list, str *uri){	resource_list_t *head = list;	resource_list_t *last = NULL;	fprintf(stderr, "resource_lists_append_unique: list=%p uri=%.*s\n", list, uri->len, uri->s);	while (list) {		if (strncmp(list->uri.s, uri->s, uri->len) == 0)			return head;		last = list;		list = list->next;	}	list = (resource_list_t *)shm_malloc(sizeof(resource_list_t) + uri->len + 1);	list->uri.len = uri->len;	list->uri.s = ((char*)list) + sizeof(resource_list_t);	strncpy(list->uri.s, uri->s, uri->len);	list->uri.s[uri->len] = 0;	if (last) {		list->prev = last;		last->next = list;	}	if (head) {		return head;	} else {		return list;	}}