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)8void 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