- if ((nntp_data = (NNTP_DATA *) hash_find (serv->newsgroups, buf)) == NULL) {
- nntp_data = xmalloc(sizeof(NNTP_DATA) + m_strlen(buf) + 1);
- nntp_data->group = (char *) nntp_data + sizeof (NNTP_DATA);
- strcpy (nntp_data->group, buf);
- hash_insert (serv->newsgroups, nntp_data->group, nntp_data);
- nntp_add_to_list (serv, nntp_data);
+ if ((nntp_data = hash_find(serv->newsgroups, buf)) == NULL) {
+ nntp_data = nntp_data_new();
+ nntp_data->group = m_strdup(buf);
+ hash_insert(serv->newsgroups, nntp_data->group, nntp_data);
+ nntp_data_list_append(&serv->list, nntp_data);