/* * Close this socket for reading and writing. * (flush pending data) */ void a_Dpip_dsh_close(Dsh *dsh) { int st; /* flush internal buffer */ a_Dpip_dsh_write(dsh, 1, "", 0); /* close fds */ st = dClose(dsh->fd_in); if (st < 0) MSG_ERR("[a_Dpip_dsh_close] close: %s\n", dStrerror(errno)); if (dsh->fd_out != dsh->fd_in) { st = dClose(dsh->fd_out); if (st < 0) MSG_ERR("[a_Dpip_dsh_close] close: %s\n", dStrerror(errno)); } }
/* * Close this socket for reading and writing. * (flush pending data) */ void a_Dpip_dsh_close(Dsh *dsh) { int st; /* flush internal buffer */ a_Dpip_dsh_write(dsh, 1, "", 0); /* close fds */ while((st = close(dsh->fd_in)) < 0 && errno == EINTR) ; if (st < 0) MSG_ERR("[a_Dpip_dsh_close] close: %s\n", dStrerror(errno)); if (dsh->fd_out != dsh->fd_in) { while((st = close(dsh->fd_out)) < 0 && errno == EINTR) ; if (st < 0) MSG_ERR("[a_Dpip_dsh_close] close: %s\n", dStrerror(errno)); } }
/* * Convenience function. */ int a_Dpip_dsh_write_str(Dsh *dsh, int flush, const char *str) { return a_Dpip_dsh_write(dsh, flush, str, (int)strlen(str)); }