1 2005-11-28 Carl Worth <cworth@cworth.org>
3 * TODO: Add instructions on using the first letter of our names to
4 indicate we are working on something.
6 2005-11-25 Bryan Worth <bryan@theworths.org>
7 * ttt-client.c, ttt-server.c, ttt-error.c changed line breaks to
8 <crlf> (\r\n) for network compatibility
10 2005-11-25 Bryan Worth <bryan@theworths.org>
11 * TODO: checked off NOTICE USER and NOTICE QUIT
12 *src/ttt-client.c: (_ttt_client_execute_helo): implement NOTICE USER
13 *(_ttt_client_execute_quit): implement NOTICE QUIT
15 2005-11-25 Bryan Worth <bryan@theworths.org>
16 * TODO: checked off MESSAGE
18 *src/ttt-client.c: (_ttt_client_execute_message): Implement MESSAGE
19 *(_execute_request): changed arg_required to behave as a minimum
20 instead of an absolute number to allow optional arguments such as
23 2005-11-25 Richard D. Worth <richard@theworths.org>
25 * TODO: checked off WHO, QUIT, ERROR SYNTAX
27 * src/ttt-client.c: (_ttt_client_execute_helo), (_ttt_client_init),
28 (ttt_client_get_num_wins):
30 * src/ttt-server.c: (ttt_server_who): Whitespace changes. Add
31 missing player win count for WHO.
33 2005-11-24 Richard D. Worth <richard@theworths.org>
35 * AUTHORS: Add Richard D. Worth
36 * TODO: Add newline before EOF
38 * src/ttt-client.c: (_ttt_client_execute_who):
40 * src/ttt-server.c: (ttt_server_who): Implement WHO.
42 2005-11-24 Carl Worth <cworth@cworth.org>
44 * PROTOCOL: Document QUIT.
46 * src/ttt-client.c: (_ttt_client_execute_helo),
47 (_ttt_client_execute_quit), (_ttt_client_init), (_ttt_client_fini),
48 (_execute_request), (_handle_requests_thread): Implement QUIT. Add
49 client->registered flag and unregister only if registered. Change
50 from args_min and args_max to args_required.
53 * src/ttt-error.c: (ttt_error_string):
54 * src/ttt-server.c: (ttt_server_register_client): Put underscores
55 in TTT_ERRROR names for better readability.
57 2005-11-24 Carl Worth <cworth@cworth.org>
60 * src/ttt-server.c: (ttt_server_init),
61 (ttt_server_register_client): Remove unique-name generation from
62 the server. The client is going to have to have code to do this
65 * src/ttt-client.c: Change minimum arguments for HELO from 0 to 1.
67 * TODO: Note that HELO and ERROR INVALIDNAME are implemented in
70 2005-11-23 Richard D. Worth <richard@theworths.org>
72 * PROTOCOL: Remove unused servername
74 * src/ttt-client.h: * src/ttt-client.c:
75 (_ttt_client_execute_helo), (_ttt_client_init),
76 (_ttt_client_fini), (_execute_request), (ttt_client_get_name),
77 (ttt_client_set_name): Added command descriptions structure. Match
78 command case-insensitively, dispatch to execute
79 function. Implement HELO command. Register on HELO instead of on
82 * src/ttt-server.h: * src/ttt-server.c: (ttt_server_init),
83 (ttt_server_register_client), (ttt_server_unregister_client),
84 (ttt_server_get_host), (ttt_server_get_port), (main): Added host
85 and port to server. Make client registration name-based rather
88 * src/x.c: (xstrdup): Return NULL on NULL
90 * src/ttt-lex.h: Regenerated
92 2005-11-22 Carl Worth <cworth@cworth.org>
94 * TODO: Add TODO file listing all the stuff from the protocol that
95 needs to be implemented.
102 * src/ttt-token.h: Add support for a flex-based tokenizer which
103 tokenizes newlines and space-separated strings.
105 * src/ttt-client.c: (_ttt_client_init), (_ttt_client_fini),
106 (_append_to_request), (_free_request), (_read_request),
107 (_execute_request): Use new tokenizer to tokenize input into an
108 array of request strings.
110 2005-11-15 Carl Worth <cworth@cworth.org>
114 * src/ttt-error.c: (ttt_error_string): Add error values and error
115 strings from protocol.
117 * src/ttt.h: Add typedefs for ttt_client_t and ttt_server_t so
118 that there's no problem with ttt-client.h and ttt-server.h needing
119 to mutually include each other.
122 * src/ttt-server.c: (ttt_server_register_client),
123 (ttt_server_unregister_client), (_ttt_server_accept), (main): Push
124 the client request handling thread back down into ttt-client.c
125 where it really does belong. The server code no longer ever
126 reaches down inside the ttt_client_t structure. Export
127 ttt_server_register_client and ttt_server_unregister_client. Add
128 documentation for ttt_server_broadcast. Document locking semantics
129 for all functions which acquire the server lock.
132 * src/ttt-client.c: (_ttt_client_create), (_ttt_client_destroy),
133 (_read_into_request_until), (_read_request), (_execute_request),
134 (_handle_requests_thread), (ttt_client_new), (ttt_client_get_id):
135 Pull the ttt_client structure definition back down inside the
136 ttt-client.c file. Don't export ttt_client_create and
137 ttt_client_destroy anymore, but instead just use static
138 _ttt_client_init and _ttt_client_fini. Implement the broadcast by
139 just passing a client pointer around and using client->request
140 rather than passing char *request all over. Document new
141 ttt_client_new and remove ttt_client_read_line. Add locking to
142 ttt_client_send and document it. Add ttt_client_get_id.
144 2005-11-14 Carl Worth <cworth@cworth.org>
146 Server now acts as a very simple chat server.
149 * src/ttt-client.c: (ttt_client_create), (ttt_client_destroy),
150 (_append_to_request), (ttt_client_read_into_request_until),
151 (ttt_client_read_line), (ttt_client_send): Add support to do a
152 buffering read within the client and to reuse the buffer (which
153 grows by doubling) from one request to the next. Add function to
154 send a message to a client.
156 * src/ttt-server.c: (ttt_server_init), (ttt_server_create_client):
157 Add support for a client idea. Resize the server's client list by
159 * src/ttt-server.c: (ttt_server_destroy_client): Add support to
161 * src/ttt-server.c: (_handle_client_requests_thread),
162 (_accept_client): Move handling of client requests up to
163 ttt-server.c from ttt-client.c. Use threads rather than a fork per
166 * src/ttt-server.h: (ttt_server_broadcast): Add function to send a
167 message to all connected clients.
170 * src/ttt-socket.c: (ttt_socket_read),
171 (ttt_socket_write): Add functions to do blocking read or write of
172 the specified number of bytes.
174 * src/ttt-socket.c: (ttt_socket_accept): Remove fork, so that the
175 accept function call can take care of anything like that itself.
178 * src/x.c: (xread), (xwrite): New wrappers for read and write.
180 * src/ttt.h: Add TTT_STATUS_EOF, TRUE, and FALSE.
182 * src/ttt.c: Need to include ttt-args.h explicitly now.
184 2005-11-11 Carl Worth <cworth@cworth.org>
187 * src/ttt-server.c: (ttt_server_init), (ttt_server_add_client),
188 (_accept_client), (main): Add a new ttt_server_t object with a
189 mutex-protected list of clients. Move client handling code down
190 into new ttt-client.c.
193 * src/ttt-client.c: (ttt_client_create), (ttt_client_destroy),
194 (ttt_client_handle_requests): New ttt_client_t object that simply
195 holds a pointer back to the server as well as the client socket
199 * src/ttt-socket.c: (ttt_socket_accept): Add closure argument. Add
200 a call to fork before calling the accept callback.
202 * src/ttt-args.c: Hide unused ttt_args_usage from the compiler to
203 keep it from complaining.
205 * src/ttt.c: (main): Rename the client main program from
206 ttt-client to ttt.c, (since the server code now has its own
210 * src/Makefile.am: Include and link with pthread now that we have
211 pthread-based mutex locking.
213 2005-11-11 Carl Worth <cworth@pippin.local>
215 * src/ttt-server.c: (main): Don't assign to stderr which is
216 apparently an invalid lvalue on Mac OS X.
219 * src/x.c: (xfreopen): Change return type to void.
221 * src/ttt-board.c: (ttt_board_to_string): Add missing return
224 2005-11-11 Carl Worth <cworth@cworth.org>
226 * configure.in: Key off of src/ttt.h instead of src/ttt.c which no
229 2005-11-11 Carl Worth <cworth@cworth.org>
233 * src/x.h: Move include of stdarg.h from x.c to ttt.h.
235 2005-11-11 Carl Worth <cworth@cworth.org>
237 * src/ttt-board.h: Include ttt.h to get standard includes.
239 * src/ttt-socket.c: Replace include of netinet/ip.h with
240 netinet/in.h which seems to be necessary for BSD libc, (eg. Mac OS
243 2005-11-09 Carl Worth <cworth@cworth.org>
247 * src/ttt-server.c: (ttt_dispatch), (main):
249 * src/ttt-socket.c: (_sockaddr_init), (_wait_for_connection),
250 (ttt_socket_create_server), (ttt_socket_accept): Push a lot of
251 code out of ttt-server.c down into a new ttt_socket abstraction
252 layer. The code is much easier to read now. The server also no
253 longer exits when the first client exits, but continues to listen
254 for more connections.
256 2005-11-09 Carl Worth <cworth@cworth.org>
259 * src/ttt-args.c: (ttt_args_help), (ttt_args_parse): Add support
260 for -h,--host, -p,--port, and --log-file command-line arguments.
262 * src/ttt-server.c: (main): Use host, port, and log-file
263 command-line arguments.
265 * src/ttt-client.c: (main): Track change in signature of
269 * src/x.c: (xfdopen), (xfreopen): More wrappers.
271 2005-11-08 Carl Worth <cworth@cworth.org>
274 * src/ttt-server.c: (_sockaddr_init), (_wait_for_connection),
275 (main): Add socket, bind, listen, accept calls to provide a
276 simple, functional, one-shot server demonstration.
279 * src/x.c: (xsocket), (xbind), (xlisten), (xfcntl), (xselect): Add
280 more wrapped system calls.
282 2005-11-07 Carl Worth <cworth@cworth.org>
284 * src/ttt.h: Grab some useful definitions from wdo.h:
285 ASSERT_NOT_REACHEED and TTT_PRINTF_FORMAT. Add several needed
288 * src/Makefile.am: Rip out not-yet existing ttt-command and
291 * src/ttt-args.c: (ttt_args_parse): Track name change from
292 args_help to ttt_args_help.
294 * src/ttt.c: Remove in favor of ttt-server.c and ttt-client.c.
296 * src/x.h: Add prototype for xfwrite.
298 2005-11-05 Richard D. Worth <richard@theworths.org>
300 * src/ttt-board.c: (ttt_board_init): Added for loop counter init.
301 * src/ttt-board.h: Added prototypes.
303 2005-11-05 Richard D. Worth <richard@theworths.org>
305 * src/args.c: Renamed ttt-args.c
306 * src/args.h: Renamed ttt-args.h
307 * src/ttt-args.c: (ttt_args_help), (ttt_args_usage),
308 (ttt_args_parse): Added ttt_ prefix.
309 * src/ttt-args.h: Added ttt_, TTT_ prefix.
311 2005-11-05 Kevin Worth <kevin@cworth.org>
313 * src/ttt-board.c: (ttt_board_init): Implemented board_init.
314 * src/ttt-board.h: (ttt_board_t): Added cells array.
316 2005-11-05 Carl Worth <cworth@cworth.org>
318 * src/Makefile.am: Add ttt-board.[ch] and x.[ch]
321 * src/ttt-board.c: (ttt_board_init), (ttt_board_init_from_string),
322 (ttt_board_to_string), (ttt_board_write): Add some stub functions
323 for Richard and Kevin to have some practice
324 implementing. Functions to represent a board and to go to/from a
328 * src/x.c: (xasprintf), (xvasprintf), (xpipe), (xfork), (xmalloc),
329 (xcalloc), (xrealloc), (xfdopen), (xstrdup), (xfwrite): Several
330 utility functions that make system calls, check the result, and
331 exit on any error. This will simplify the error checking needed in
332 programs using these functions.
334 2005-11-05 Carl Worth <cworth@cworth.org>
336 * src/Makefile.am: Break things up for separate ttt-client and
337 ttt-server and programs.