rendered paste bodyvoid insert_list (list_ref list, list_item item, list_ins insert) { char *str = strdup(item); listnode_ref nodref = malloc(sizeof(struct listnode)); assert (nodref != NULL); assert (is_list (list)); switch (insert) { case INS_AFTER: if (curr != last) { nodref->next = curr->next; curr->next->prev = nodref; curr->next = nodref; } else { nodref->next = NULL; curr->next = nodref; } nodref->prev = curr; curr = nodref; nodref->item = str; nodref->tag = listnode_tag; break; case INS_BEFORE: if (curr != head) { nodref->prev = curr->prev; curr->prev = nodref; curr->prev->next = nodref; } else { nodref->prev = NULL; curr->prev = nodref; } nodref->next = curr; curr = nodref; nodref->item = str; nodref->tag = listnode_tag; break; default: printf ("Invalid operation: insert_list (%d)\n", insert); };}