X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=src%2Fttt-socket.c;h=5bf36712a6f3b92ffb102e7eeb0328403a8af912;hb=509e7fd528db9f7b1224b82aa955c978076dc2e5;hp=199535f300e200d0970341ea6177e53cf35bbf70;hpb=15672ac8305a1c5ba0d9bf6edabb0a194c30628e;p=ttt diff --git a/src/ttt-socket.c b/src/ttt-socket.c index 199535f..5bf3671 100644 --- a/src/ttt-socket.c +++ b/src/ttt-socket.c @@ -157,8 +157,37 @@ ttt_socket_accept (int listen_socket, (accept) (closure, connected_socket); } +/* Exported: see wdo-socket.h for documentation. */ +ttt_status_t +ttt_socket_create_client (const char *host, + const char *port, + int *socket_ret) +{ + ttt_status_t status; + struct sockaddr_in addr; + int socket; + int flags; + + *socket_ret = -1; + + socket = xsocket (PF_INET, SOCK_STREAM, 0); + + _sockaddr_init (&addr, host, port); + + status = xconnect (socket, (struct sockaddr *) &addr, sizeof (addr)); + if (status) { + shutdown (socket, SHUT_RDWR); + return status; + } + flags = fcntl(socket, F_GETFL); + flags |= O_NONBLOCK; + fcntl(socket, F_SETFL, flags); + *socket_ret = socket; + return TTT_STATUS_SUCCESS; +} + /* Exported: see ttt-socket.h for documentation. */ -void +ssize_t ttt_socket_read (int socket, void *buf, size_t count) @@ -166,11 +195,8 @@ ttt_socket_read (int socket, int bytes_read; char *cbuf = buf; - while (count) { bytes_read = xread (socket, cbuf, count); - cbuf += bytes_read; - count -= bytes_read; - } + return(bytes_read); } /* Exported: see ttt-socket.h for documentation. */