* src/ttt-client.h:
* src/ttt-client.c: (ttt_client_create), (ttt_client_destroy),
(_append_to_request), (ttt_client_read_into_request_until),
(ttt_client_read_line), (ttt_client_send): Add support to do a
buffering read within the client and to reuse the buffer (which
grows by doubling) from one request to the next. Add function to
send a message to a client.
* src/ttt-server.c: (ttt_server_init), (ttt_server_create_client):
Add support for a client idea. Resize the server's client list by
doubling.
* src/ttt-server.c: (ttt_server_destroy_client): Add support to
destroy a client.
* src/ttt-server.c: (_handle_client_requests_thread),
(_accept_client): Move handling of client requests up to
ttt-server.c from ttt-client.c. Use threads rather than a fork per
client.
* src/ttt-server.h:
* src/ttt-server.h: (ttt_server_broadcast): Add function to send a
message to all connected clients.
* src/ttt-socket.h:
* src/ttt-socket.c: (ttt_socket_read),
(ttt_socket_write): Add functions to do blocking read or write of
the specified number of bytes.
* src/ttt-socket.c: (ttt_socket_accept): Remove fork, so that the
accept function call can take care of anything like that itself.
* src/x.h:
* src/x.c: (xread), (xwrite): New wrappers for read and write.
* src/ttt.h: Add TTT_STATUS_EOF, TRUE, and FALSE.
* src/ttt.c: Need to include ttt-args.h explicitly now.