1 /* ISC license. */
2 
3 #include <errno.h>
4 #include <skalibs/djbunix.h>
5 #include <skalibs/textmessage.h>
6 #include <skalibs/textclient.h>
7 
textclient_end(textclient_t * a)8 void textclient_end (textclient_t *a)
9 {
10   fd_close(textmessage_sender_fd(&a->syncout)) ;
11   if (textmessage_receiver_fd(&a->syncin) != textmessage_sender_fd(&a->syncout))
12     fd_close(textmessage_receiver_fd(&a->syncin)) ;
13   fd_close(textmessage_receiver_fd(&a->asyncin)) ;
14   textmessage_sender_free(&a->syncout) ;
15   textmessage_receiver_free(&a->syncin) ;
16   textmessage_receiver_free(&a->asyncin) ;
17   if (a->pid && a->options & TEXTCLIENT_OPTION_WAITPID)
18   {
19     int e = errno ;
20     int wstat ;
21     waitpid_nointr(a->pid, &wstat, 0) ;
22     errno = e ;
23   }
24   *a = textclient_zero ;
25 }
26