Изменение функции tld_list_add

Есть ли способ сократить эту часть кода? Для этого добавьте функцию. Возникли некоторые трудности. В основном я хочу сделать список, который генерирует TLD доменов и отображать его в соответствии с тем, как пользователь вводит даты. но я чувствую, что мой код довольно длинный и я хочу его сократить. Это одна из функций, которую я хочу сократить.

int tldlist_add(TLDList *tld, char *hostname, Date *d) {
    // check if it's within the tld dates
    if (date_compare(tld->begin, d) > 0 ||
            date_compare(tld->end, d) < 0)
        return 0;

    // capture the actual tld
    char *tld_start = strrchr(hostname, '.') + 1;
    int tld_len = strlen(tld_start);
    char *tld_s = (char *)malloc(sizeof(char) * (tld_len + 1));
    tld_s[tld_len] = '\0'; // make sure there is a null end
    strcpy(tld_s, tld_start);

    if (tld->root == NULL) {
        // list is empty, just add to root
        TLDNode *node = tldnode_create(tld_s);
        node->count++;
        tld->root = node;
        tld->size++; // new node
    } else {
        // add to list. do we need to free the string?
        if (!tldlist_add_r(tld, tld_s, tld->root))
            free(tld_s);
        else {
            tld->size++; // new node, so increase size

            // we must now rebalance the tree
            tldlist_rebalance(tld);
        }
    }

    tld->count++;
    return 1; // maximum success
}

0 ответов

Другие вопросы по тегам