liblistserv is reentrant library. You can use it in threads, if each thread calls its own listserv_init and listserv_destroy.
liblistserv frees all the memory allocated by it, the latest when liblistserv_destroy is called.
You can use the returned value of a liblistserv funcion until another listserv function is called. More concrete, the returned value of...
listserv_getsubscriberlistserv_getsubscriebrslistserv_getsubscriptionslistserv_getsieve_scripts.
listserv_content_filterlistserv_getsieve_scripts.
listserv_getowned_listslistserv_getsieve_scriptslistserv_commandlistserv_getlist_keywordlistserv_getsieve_scripts.
Example:
char **owners = listserv_getlist_keyword (l, "ABC-L", "Owner");
char **notebook = listserv_getlist_keyword (l, "ABC-L", "Notebook");
//at this time owners[0], owners[1]... are valid and contain the listowners of ABC-L
char **sizelim = listserv_getlist_keyword (l, "DEF-L", "SizeLim");
//here the values pointed by owners and notebook are invalid