+2005-12-13 Bryan Worth <bryan@theworths.org>
+ * src/ttt-curses-client: Cleaned up text-entry code. Added support
+ for HOME, END, DELETE, and ARROW keys
+
+
+2005-12-13 Carl Worth <cworth@cworth.org>
+
+ * TODO: Note that ttt-server should retry a couple times if its
+ port is not available.
+
+ * src/test-board.c: (main): Remove debug print messages.
+
+ * src/ttt-board.c: (ttt_board_make_move): Tighten up the code just
+ a little bit more.
+
+2005-12-10 Richard D. Worth <richard@theworths.org>
+
+ * TODO: check off INVITE, RETRACT, DECLINE, Game Invitation
+ notices, Connection setup errors, NO_INVITE, User information
+ errors.
+
+ * src/ttt-client.c: (_ttt_client_execute_helo),
+ (_ttt_client_execute_statistics), (_ttt_client_execute_message),
+ (_ttt_client_execute_help), (_ttt_client_execute_version),
+ (_ttt_client_execute_quit), (_ttt_client_execute_invite),
+ (_ttt_client_execute_accept), (_ttt_client_execute_retract),
+ (_ttt_client_execute_decline), (_read_request),
+ (_execute_request),
+ (_handle_requests_thread): Whitespace changes. Use exported get
+ methods (get_username, get_num_wins). Use strcasecmp in place of
+ toupper. Finish RETRACT, DECLINE.
+
+ * src/ttt.h:
+ * src/ttt-server.h:
+ * src/ttt-server.c: (ttt_server_init),
+ (ttt_server_register_client), (ttt_server_unregister_client),
+ (ttt_server_verify_username),
+ (ttt_server_get_client_from_username), (ttt_server_add_invite),
+ (ttt_server_remove_invite): Add invite struct. Make username case
+ insensitive (missed in register_client). Implement add_invite,
+ remove_invite. Moved statistics to ttt-client.c
+
+2005-12-09 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-server.c (ttt_server_unregister_client): Move client has
+ left message to stderr so it makes it to the log file too.
+
+2005-12-09 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-server.c (main): Put the initial server started message
+ in the log file as well.
+
+2005-12-09 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-args.h:
+ * src/ttt-args.c: (ttt_args_help), (ttt_args_parse): Add a -u,
+ --user option for controlling the uid under which the server
+ process runs.
+
+ * src/ttt.h:
+ * src/ttt-server.c: (ttt_server_register_client), (main): Recert
+ the dup of stdout which wasn't working. Instead just print client
+ join information on stderr so that it goes into the log. Implement
+ support for the user option by calling setuid to drop root
+ privileges the process might start out with.
+
+2005-12-09 Bryan Worth <bryan@theworths.org>
+ * src/ttt-curses-client.c: added error checking to ttt_create_client
+ call. Added ability to escape server commands by prepending with "/".
+ Added ability so override port number with port=xxxx entry in
+ ~/.ttt/client.conf.
+
+2005-12-08 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-server.c (main): When detached dup stdout to stderr so
+ that everything appears in the log file.
+
+2005-12-08 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-args.h:
+ * src/ttt-args.c: (ttt_args_help), (ttt_args_parse): Add
+ -d,--detach and --pid-file=FILE options for running the server as
+ a daemon.
+
+ * src/ttt-server.c: (ttt_server_statistics),
+ (ttt_server_verify_username), (_detach_and_write_child_pid_to),
+ (main): Add support for detaching and writing out the child PID to
+ a file.
+
+ * src/x.h:
+ * src/x.c: (xfopen), (xdup2): Two new x-functions.
+
+2005-12-08 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-args.c: (ttt_args_help), (ttt_args_parse):
+ * src/ttt-args.h:
+ * src/ttt-server.c: (ttt_server_statistics),
+ (ttt_server_verify_username), (_detach_and_write_child_pid_to),
+ (main):
+ * src/x.c: (xfopen), (xdup2):
+ * src/x.h:
+
+2005-12-08 Bryan Worth <bryan@theworths.org>
+ * src/ttt-curses-client.c: Multiple improvements!
+ Username taken from USER environment variable and stored as
+ preference in ~/.ttt/client.conf (username=xxxxxx). Backspace
+ should now work correctly with all term types. Status messages
+ display in seperate area. "MESSAGE" reply from server is
+ suppressed. Eliminated most global variables.
+
+
+2005-12-08 Carl Worth <cworth@cworth.org>
+
+ * src/Makefile.am: Fix rule to auto-generate ttt-lex.h.
+
+ * src/ttt-lex.h: Remove generated file from revision control.
+
+ * src/ttt-lex.l: Add copyright/license blurb.
+
+ * src/ttt-lex.l:
+ * src/ttt-client.c: (yy_init_globals), (use_yy_init_globals):
+ Shut off some annoying compiler warnings due to flex bugs (only
+ one still remains).
+
+2005-12-07 Richard D. Worth <richard@theworths.org>
+
+ * PROTOCOL: Remove unused error NOT_IN_GAME. Add error
+ NOT_VALID_MOVE.
+
+ * TODO: Add error NOT_VALID_MOVE.
+
+ * src/ttt-error.h:
+ * src/ttt-error.c: (ttt_error_string): Add section comments. Add
+ error NOT_VALID_MOVE.
+
+2005-12-06 Bryan Worth <bryan@theworths.org>
+ * src/ttt-error.c: fixed missing errors (NO_INVITE, NO_GAME)
+
+2005-12-06 Richard D. Worth <richard@theworths.org>
+
+ * PROTOCOL: Add error NO_INVITE
+
+ * TODO: Uncheck INVITE, ACCEPT
+
+ * src/ttt-error.c: (ttt_error_string): Add errors NO_INVITE,
+ NO_GAME
+
+ * src/ttt-client.c: (_ttt_client_execute_message),
+ (_ttt_client_execute_help), (_ttt_client_execute_version),
+ (_ttt_client_execute_invite), (_ttt_client_execute_accept),
+ (_ttt_client_execute_retract), (_ttt_client_execute_decline):
+ Whitespace changes. Partially implement RETRACT, DECLINE.
+
+2005-12-05 Richard D. Worth <richard@theworths.org>
+
+ * PROTOCOL: Fill some missing possible error occurrences.
+
+ * TODO: Check off INVITE, ACCEPT, ERROR COMMAND, ERROR NO_USER
+
+ * src/ttt-server.h:
+ * src/ttt-server.c: (ttt_server_verify_username):
+ * src/ttt-client.c: (_ttt_client_execute_help),
+ (_ttt_client_execute_invite), (_ttt_client_execute_accept):
+ Implement INVITE, ACCEPT
+
+2005-12-05 Richard D. Worth <richard@theworths.org>
+
+ * src/ttt-curses-client.c: (mvprintstr), (mvwprintstr), (wprint),
+ (main), (finish): Whitespace changes.
+
+2005-12-04 Bryan Worth <bryan@theworths.org>
+ * src/ttt-socket.c: (ttt_socket_create_client) fixed socket to be
+ non-blocking. (ttt_socket_read) added return value for number
+ of bytes read
+ * Makefile.am: added necessary code for new curses-client program.
+ * src/ttt-curses-client: new ncurses based client
+
+2005-12-03 Richard D. Worth <richard@theworths.org>
+
+ * PROTOCOL: Add RETRACT, DECLINE. Add game identifier for all game
+ commands.
+
+ * TODO: Add RETRACT, DECLINE, notices.
+
+2005-12-03 Richard D. Worth <richard@theworths.org>
+
+ * PROTOCOL: Add underscores to error codes. Add STATISTICS
+ command. Remove statistics from WHO.
+
+ * TODO: Add STATISTICS. Check off STATISTICS.
+
+ * src/ttt.h: Define TTT_SERVER_PROTOCOL_VERSION for VERSION.
+
+ * src/ttt-error.c: (ttt_error_string): Add underscores to error
+ codes.
+
+ * src/ttt-client.h:
+ * src/ttt-client.c: (_ttt_client_execute_helo),
+ (_ttt_client_execute_statistics), (_ttt_client_execute_message),
+ (_ttt_client_execute_version), (_ttt_client_execute_quit),
+ (_ttt_client_init), (_ttt_client_fini), (ttt_client_get_username),
+ (ttt_client_set_username): Rename client->name to
+ client->username. Implement STATISTICS. Complete implementation of
+ VERSION.
+
+ * src/ttt-server.h:
+ * src/ttt-server.c: (ttt_server_register_client),
+ (ttt_server_unregister_client), (ttt_server_who),
+ (ttt_server_statistics): Track rename of client->name to
+ client->username. Add server helper for STATISTICS.
+
+2005-12-02 Richard D. Worth <richard@theworths.org>
+
+ * TODO: Check off Global commands, HELP, VERSION.
+
+ * src/ttt-client.c: (_ttt_client_execute_message),
+ (_ttt_client_execute_help), (_execute_request): Whitespace
+ changes. Implement HELP with usage and short description.
+
+ * src/ttt-server.c: Update the server welcome message.
+
+2005-12-01 Richard D. Worth <richard@theworths.org>
+
+ * TODO: Check off NOTICE MESSAGE, ERROR NONAMESET.
+
+ * PROTOCOL: Add NONAMESET error in possible errors where
+ applicable. Add description for MESSAGE.
+
+ * src/ttt-token.h: Add token typedef. Rename token type enum.
+
+ * src/ttt-lex.l: Add support for quoted string as single token.
+ * src/ttt-lex.h: Autogenerated.
+
+ * src/ttt-client.c: (_ttt_client_execute_helo),
+ (_ttt_client_execute_who), (_ttt_client_execute_message),
+ (_ttt_client_execute_help), (_ttt_client_execute_version),
+ (_ttt_client_execute_quit), (_ttt_client_init), (_read_request),
+ (_execute_request): Whitespace changes. Implement VERSION,
+ HELP. Change args_required back to args_min and args_max (see
+ PROTOCOL\HELP). Modify MESSAGE to accept one token arg and quote
+ output. Return NONAMESET error where applicable.
+
+2005-11-29 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-socket.h:
+ * src/ttt-socket.c: (ttt_socket_create_client): New function for
+ creating a client socket.
+
+ * src/x.h:
+ * src/x.c: (xconnect): Add xconnect. Return a couple of useful
+ error status values so that callers can recover on connection
+ refused or host unreachable.
+
+ * src/ttt.h: Add TTT_STATUS_CONNECTION_REFUSED and
+ TTT_STATUS_NETWORK_UNREACHABLE.
+
+2005-11-28 Kevin Worth <kevin@theworths.org>
+
+ * PROTOCOL: Changed board cell numbering to start with zero
+ instead of one.
+
+ * src/Makefile.am:
+ * src/test-board.c: (main): Added new file for testing.
+
+ * src/ttt-board.c: (ttt_board_init), (ttt_board_to_string):
+ * src/ttt-board.h: Implemented board_to_string.
+
+2005-11-28 kevin worth <kevin@theworths.org>
+
+ * src/ttt-board.c:
+ * src/ttt-board.h: Moved struct def from ttt-board.h into
+ ttt-board.c to make it private
+
+ * src/ttt-lex.h:
+ Autogenerated
+
+2005-11-28 Carl Worth <cworth@cworth.org>
+
+ * TODO: Add instructions on using the first letter of our names to
+ indicate we are working on something.
+
+2005-11-25 Bryan Worth <bryan@theworths.org>
+ * ttt-client.c, ttt-server.c, ttt-error.c changed line breaks to
+ <crlf> (\r\n) for network compatibility
+
+2005-11-25 Bryan Worth <bryan@theworths.org>
+ * TODO: checked off NOTICE USER and NOTICE QUIT
+ *src/ttt-client.c: (_ttt_client_execute_helo): implement NOTICE USER
+ *(_ttt_client_execute_quit): implement NOTICE QUIT
+
+2005-11-25 Bryan Worth <bryan@theworths.org>
+ * TODO: checked off MESSAGE
+
+ *src/ttt-client.c: (_ttt_client_execute_message): Implement MESSAGE
+ *(_execute_request): changed arg_required to behave as a minimum
+ instead of an absolute number to allow optional arguments such as
+ multi-word messages
+
+2005-11-25 Richard D. Worth <richard@theworths.org>
+
+ * TODO: checked off WHO, QUIT, ERROR SYNTAX
+
+ * src/ttt-client.c: (_ttt_client_execute_helo), (_ttt_client_init),
+ (ttt_client_get_num_wins):
+ * src/ttt-client.h:
+ * src/ttt-server.c: (ttt_server_who): Whitespace changes. Add
+ missing player win count for WHO.
+
+2005-11-24 Richard D. Worth <richard@theworths.org>
+
+ * AUTHORS: Add Richard D. Worth
+ * TODO: Add newline before EOF
+
+ * src/ttt-client.c: (_ttt_client_execute_who):
+ * src/ttt-server.h:
+ * src/ttt-server.c: (ttt_server_who): Implement WHO.
+
+2005-11-24 Carl Worth <cworth@cworth.org>
+
+ * PROTOCOL: Document QUIT.
+
+ * src/ttt-client.c: (_ttt_client_execute_helo),
+ (_ttt_client_execute_quit), (_ttt_client_init), (_ttt_client_fini),
+ (_execute_request), (_handle_requests_thread): Implement QUIT. Add
+ client->registered flag and unregister only if registered. Change
+ from args_min and args_max to args_required.
+
+ * src/ttt-error.h:
+ * src/ttt-error.c: (ttt_error_string):
+ * src/ttt-server.c: (ttt_server_register_client): Put underscores
+ in TTT_ERRROR names for better readability.
+
+2005-11-24 Carl Worth <cworth@cworth.org>
+
+ * PROTOCOL:
+ * src/ttt-server.c: (ttt_server_init),
+ (ttt_server_register_client): Remove unique-name generation from
+ the server. The client is going to have to have code to do this
+ anyway.
+
+ * src/ttt-client.c: Change minimum arguments for HELO from 0 to 1.
+
+ * TODO: Note that HELO and ERROR INVALIDNAME are implemented in
+ the server.
+
+2005-11-23 Richard D. Worth <richard@theworths.org>
+
+ * PROTOCOL: Remove unused servername
+
+ * src/ttt-client.h: * src/ttt-client.c:
+ (_ttt_client_execute_helo), (_ttt_client_init),
+ (_ttt_client_fini), (_execute_request), (ttt_client_get_name),
+ (ttt_client_set_name): Added command descriptions structure. Match
+ command case-insensitively, dispatch to execute
+ function. Implement HELO command. Register on HELO instead of on
+ connect.
+
+ * src/ttt-server.h: * src/ttt-server.c: (ttt_server_init),
+ (ttt_server_register_client), (ttt_server_unregister_client),
+ (ttt_server_get_host), (ttt_server_get_port), (main): Added host
+ and port to server. Make client registration name-based rather
+ than id-based.
+
+ * src/x.c: (xstrdup): Return NULL on NULL
+
+ * src/ttt-lex.h: Regenerated
+
+2005-11-22 Carl Worth <cworth@cworth.org>
+
+ * TODO: Add TODO file listing all the stuff from the protocol that
+ needs to be implemented.
+
+ * src/Makefile.am:
+ * configure.in:
+ * ylwrap:
+ * src/ttt-lex.h:
+ * src/ttt-lex.l:
+ * src/ttt-token.h: Add support for a flex-based tokenizer which
+ tokenizes newlines and space-separated strings.
+
+ * src/ttt-client.c: (_ttt_client_init), (_ttt_client_fini),
+ (_append_to_request), (_free_request), (_read_request),
+ (_execute_request): Use new tokenizer to tokenize input into an
+ array of request strings.
+
+2005-11-15 Carl Worth <cworth@cworth.org>
+
+ * src/Makefile.am:
+ * src/ttt-error.h:
+ * src/ttt-error.c: (ttt_error_string): Add error values and error
+ strings from protocol.
+
+ * src/ttt.h: Add typedefs for ttt_client_t and ttt_server_t so
+ that there's no problem with ttt-client.h and ttt-server.h needing
+ to mutually include each other.
+
+ * src/ttt-server.h:
+ * src/ttt-server.c: (ttt_server_register_client),
+ (ttt_server_unregister_client), (_ttt_server_accept), (main): Push
+ the client request handling thread back down into ttt-client.c
+ where it really does belong. The server code no longer ever
+ reaches down inside the ttt_client_t structure. Export
+ ttt_server_register_client and ttt_server_unregister_client. Add
+ documentation for ttt_server_broadcast. Document locking semantics
+ for all functions which acquire the server lock.
+
+ * src/ttt-client.h:
+ * src/ttt-client.c: (_ttt_client_create), (_ttt_client_destroy),
+ (_read_into_request_until), (_read_request), (_execute_request),
+ (_handle_requests_thread), (ttt_client_new), (ttt_client_get_id):
+ Pull the ttt_client structure definition back down inside the
+ ttt-client.c file. Don't export ttt_client_create and
+ ttt_client_destroy anymore, but instead just use static
+ _ttt_client_init and _ttt_client_fini. Implement the broadcast by
+ just passing a client pointer around and using client->request
+ rather than passing char *request all over. Document new
+ ttt_client_new and remove ttt_client_read_line. Add locking to
+ ttt_client_send and document it. Add ttt_client_get_id.
+
+2005-11-14 Carl Worth <cworth@cworth.org>
+
+ Server now acts as a very simple chat server.
+
+ * 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.
+
+2005-11-11 Carl Worth <cworth@cworth.org>
+
+ * src/ttt-server.h:
+ * src/ttt-server.c: (ttt_server_init), (ttt_server_add_client),
+ (_accept_client), (main): Add a new ttt_server_t object with a
+ mutex-protected list of clients. Move client handling code down
+ into new ttt-client.c.
+
+ * src/ttt-client.h:
+ * src/ttt-client.c: (ttt_client_create), (ttt_client_destroy),
+ (ttt_client_handle_requests): New ttt_client_t object that simply
+ holds a pointer back to the server as well as the client socket
+ file descriptor.
+
+ * src/ttt-socket.h:
+ * src/ttt-socket.c: (ttt_socket_accept): Add closure argument. Add
+ a call to fork before calling the accept callback.
+
+ * src/ttt-args.c: Hide unused ttt_args_usage from the compiler to
+ keep it from complaining.
+
+ * src/ttt.c: (main): Rename the client main program from
+ ttt-client to ttt.c, (since the server code now has its own
+ ttt-client.c).
+
+ * src/ttt.h:
+ * src/Makefile.am: Include and link with pthread now that we have
+ pthread-based mutex locking.
+
+2005-11-11 Carl Worth <cworth@pippin.local>
+
+ * src/ttt-server.c: (main): Don't assign to stderr which is
+ apparently an invalid lvalue on Mac OS X.
+
+ * src/x.h:
+ * src/x.c: (xfreopen): Change return type to void.
+
+ * src/ttt-board.c: (ttt_board_to_string): Add missing return
+ statement.
+
+2005-11-11 Carl Worth <cworth@cworth.org>
+
+ * configure.in: Key off of src/ttt.h instead of src/ttt.c which no
+ longer exists.
+
+2005-11-11 Carl Worth <cworth@cworth.org>
+
+ * src/ttt.h:
+ * src/x.c:
+ * src/x.h: Move include of stdarg.h from x.c to ttt.h.
+
2005-11-11 Carl Worth <cworth@cworth.org>
* src/ttt-board.h: Include ttt.h to get standard includes.