]> git.cworth.org Git - ttt/blob - ChangeLog
2005-12-06 Richard D. Worth <richard@theworths.org>
[ttt] / ChangeLog
1 2005-12-06  Richard D. Worth  <richard@theworths.org>
2
3         * PROTOCOL: Add error NO_INVITE
4         
5         * TODO: Uncheck INVITE, ACCEPT
6         
7         * src/ttt-error.c: (ttt_error_string): Add errors NO_INVITE,
8         NO_GAME
9
10         * src/ttt-client.c: (_ttt_client_execute_message),
11         (_ttt_client_execute_help), (_ttt_client_execute_version),
12         (_ttt_client_execute_invite), (_ttt_client_execute_accept),
13         (_ttt_client_execute_retract), (_ttt_client_execute_decline):
14         Whitespace changes. Partially implement RETRACT, DECLINE.
15
16 2005-12-05  Richard D. Worth  <richard@theworths.org>
17
18         * PROTOCOL: Fill some missing possible error occurrences.
19
20         * TODO: Check off INVITE, ACCEPT, ERROR COMMAND, ERROR NO_USER
21         
22         * src/ttt-server.h:
23         * src/ttt-server.c: (ttt_server_verify_username):
24         * src/ttt-client.c: (_ttt_client_execute_help),
25         (_ttt_client_execute_invite), (_ttt_client_execute_accept):
26         Implement INVITE, ACCEPT
27
28 2005-12-05  Richard D. Worth  <richard@theworths.org>
29
30         * src/ttt-curses-client.c: (mvprintstr), (mvwprintstr), (wprint),
31         (main), (finish): Whitespace changes.
32
33 2005-12-04  Bryan Worth <bryan@theworths.org>
34         * src/ttt-socket.c: (ttt_socket_create_client) fixed socket to be
35         non-blocking. (ttt_socket_read) added return value for number
36         of bytes read
37         * Makefile.am: added necessary code for new curses-client program.
38         * src/ttt-curses-client: new ncurses based client
39
40 2005-12-03  Richard D. Worth  <richard@theworths.org>
41
42         * PROTOCOL: Add RETRACT, DECLINE. Add game identifier for all game
43         commands.
44         
45         * TODO: Add RETRACT, DECLINE, notices.
46
47 2005-12-03  Richard D. Worth  <richard@theworths.org>
48
49         * PROTOCOL: Add underscores to error codes. Add STATISTICS
50         command. Remove statistics from WHO.
51
52         * TODO: Add STATISTICS. Check off STATISTICS.
53         
54         * src/ttt.h: Define TTT_SERVER_PROTOCOL_VERSION for VERSION.
55
56         * src/ttt-error.c: (ttt_error_string): Add underscores to error
57         codes.
58
59         * src/ttt-client.h:
60         * src/ttt-client.c: (_ttt_client_execute_helo),
61         (_ttt_client_execute_statistics), (_ttt_client_execute_message),
62         (_ttt_client_execute_version), (_ttt_client_execute_quit),
63         (_ttt_client_init), (_ttt_client_fini), (ttt_client_get_username),
64         (ttt_client_set_username): Rename client->name to
65         client->username. Implement STATISTICS. Complete implementation of
66         VERSION.
67
68         * src/ttt-server.h:
69         * src/ttt-server.c: (ttt_server_register_client),
70         (ttt_server_unregister_client), (ttt_server_who),
71         (ttt_server_statistics): Track rename of client->name to
72         client->username. Add server helper for STATISTICS.
73
74 2005-12-02  Richard D. Worth  <richard@theworths.org>
75
76         * TODO: Check off Global commands, HELP, VERSION.
77         
78         * src/ttt-client.c: (_ttt_client_execute_message),
79         (_ttt_client_execute_help), (_execute_request): Whitespace
80         changes. Implement HELP with usage and short description.
81
82         * src/ttt-server.c: Update the server welcome message.
83
84 2005-12-01  Richard D. Worth  <richard@theworths.org>
85
86         * TODO: Check off NOTICE MESSAGE, ERROR NONAMESET.
87
88         * PROTOCOL: Add NONAMESET error in possible errors where
89         applicable. Add description for MESSAGE.
90         
91         * src/ttt-token.h: Add token typedef. Rename token type enum.
92
93         * src/ttt-lex.l: Add support for quoted string as single token.
94         * src/ttt-lex.h: Autogenerated.
95
96         * src/ttt-client.c: (_ttt_client_execute_helo),
97         (_ttt_client_execute_who), (_ttt_client_execute_message),
98         (_ttt_client_execute_help), (_ttt_client_execute_version),
99         (_ttt_client_execute_quit), (_ttt_client_init), (_read_request),
100         (_execute_request): Whitespace changes. Implement VERSION,
101         HELP. Change args_required back to args_min and args_max (see
102         PROTOCOL\HELP). Modify MESSAGE to accept one token arg and quote
103         output. Return NONAMESET error where applicable.
104
105 2005-11-29  Carl Worth  <cworth@cworth.org>
106
107         * src/ttt-socket.h:
108         * src/ttt-socket.c: (ttt_socket_create_client): New function for
109         creating a client socket.
110
111         * src/x.h:
112         * src/x.c: (xconnect): Add xconnect. Return a couple of useful
113         error status values so that callers can recover on connection
114         refused or host unreachable.
115
116         * src/ttt.h: Add TTT_STATUS_CONNECTION_REFUSED and
117         TTT_STATUS_NETWORK_UNREACHABLE.
118
119 2005-11-28  Kevin Worth  <kevin@theworths.org>
120
121         * PROTOCOL: Changed board cell numbering to start with zero
122         instead of one.
123         
124         * src/Makefile.am: 
125         * src/test-board.c: (main): Added new file for testing.
126         
127         * src/ttt-board.c: (ttt_board_init), (ttt_board_to_string):
128         * src/ttt-board.h: Implemented board_to_string.
129
130 2005-11-28  kevin worth  <kevin@theworths.org>
131
132         * src/ttt-board.c:
133         * src/ttt-board.h: Moved struct def from ttt-board.h into
134         ttt-board.c to make it private
135         
136         * src/ttt-lex.h:
137         Autogenerated
138
139 2005-11-28  Carl Worth  <cworth@cworth.org>
140
141         * TODO: Add instructions on using the first letter of our names to
142         indicate we are working on something.
143
144 2005-11-25  Bryan Worth <bryan@theworths.org>
145         * ttt-client.c, ttt-server.c, ttt-error.c changed line breaks to 
146         <crlf> (\r\n) for network compatibility
147
148 2005-11-25  Bryan Worth <bryan@theworths.org>
149         * TODO: checked off NOTICE USER and NOTICE QUIT
150         *src/ttt-client.c: (_ttt_client_execute_helo): implement NOTICE USER
151         *(_ttt_client_execute_quit): implement NOTICE QUIT
152
153 2005-11-25  Bryan Worth <bryan@theworths.org>
154         * TODO: checked off MESSAGE
155
156         *src/ttt-client.c: (_ttt_client_execute_message): Implement MESSAGE
157         *(_execute_request): changed arg_required to behave as a minimum
158         instead of an absolute number to allow optional arguments such as 
159         multi-word messages
160
161 2005-11-25  Richard D. Worth  <richard@theworths.org>
162
163         * TODO: checked off WHO, QUIT, ERROR SYNTAX
164
165         * src/ttt-client.c: (_ttt_client_execute_helo), (_ttt_client_init),
166         (ttt_client_get_num_wins):
167         * src/ttt-client.h:
168         * src/ttt-server.c: (ttt_server_who): Whitespace changes. Add
169         missing player win count for WHO.
170
171 2005-11-24  Richard D. Worth  <richard@theworths.org>
172
173         * AUTHORS: Add Richard D. Worth
174         * TODO: Add newline before EOF
175
176         * src/ttt-client.c: (_ttt_client_execute_who):
177         * src/ttt-server.h:
178         * src/ttt-server.c: (ttt_server_who): Implement WHO.
179
180 2005-11-24  Carl Worth  <cworth@cworth.org>
181
182         * PROTOCOL: Document QUIT.
183
184         * src/ttt-client.c: (_ttt_client_execute_helo),
185         (_ttt_client_execute_quit), (_ttt_client_init), (_ttt_client_fini),
186         (_execute_request), (_handle_requests_thread): Implement QUIT. Add
187         client->registered flag and unregister only if registered. Change
188         from args_min and args_max to args_required.
189
190         * src/ttt-error.h:
191         * src/ttt-error.c: (ttt_error_string):
192         * src/ttt-server.c: (ttt_server_register_client): Put underscores
193         in TTT_ERRROR names for better readability.
194
195 2005-11-24  Carl Worth  <cworth@cworth.org>
196
197         * PROTOCOL:
198         * src/ttt-server.c: (ttt_server_init),
199         (ttt_server_register_client): Remove unique-name generation from
200         the server. The client is going to have to have code to do this
201         anyway.
202
203         * src/ttt-client.c: Change minimum arguments for HELO from 0 to 1.
204
205         * TODO: Note that HELO and ERROR INVALIDNAME are implemented in
206         the server.
207
208 2005-11-23  Richard D. Worth  <richard@theworths.org>
209
210         * PROTOCOL: Remove unused servername
211
212         * src/ttt-client.h: * src/ttt-client.c:
213         (_ttt_client_execute_helo), (_ttt_client_init),
214         (_ttt_client_fini), (_execute_request), (ttt_client_get_name),
215         (ttt_client_set_name): Added command descriptions structure. Match
216         command case-insensitively, dispatch to execute
217         function. Implement HELO command. Register on HELO instead of on
218         connect.
219
220         * src/ttt-server.h: * src/ttt-server.c: (ttt_server_init),
221         (ttt_server_register_client), (ttt_server_unregister_client),
222         (ttt_server_get_host), (ttt_server_get_port), (main): Added host
223         and port to server. Make client registration name-based rather
224         than id-based.
225
226         * src/x.c: (xstrdup): Return NULL on NULL
227
228         * src/ttt-lex.h: Regenerated
229
230 2005-11-22  Carl Worth  <cworth@cworth.org>
231
232         * TODO: Add TODO file listing all the stuff from the protocol that
233         needs to be implemented.
234         
235         * src/Makefile.am:
236         * configure.in:
237         * ylwrap:
238         * src/ttt-lex.h:
239         * src/ttt-lex.l:
240         * src/ttt-token.h: Add support for a flex-based tokenizer which
241         tokenizes newlines and space-separated strings.
242
243         * src/ttt-client.c: (_ttt_client_init), (_ttt_client_fini),
244         (_append_to_request), (_free_request), (_read_request),
245         (_execute_request): Use new tokenizer to tokenize input into an
246         array of request strings.
247
248 2005-11-15  Carl Worth  <cworth@cworth.org>
249
250         * src/Makefile.am:
251         * src/ttt-error.h:
252         * src/ttt-error.c: (ttt_error_string): Add error values and error
253         strings from protocol.
254
255         * src/ttt.h: Add typedefs for ttt_client_t and ttt_server_t so
256         that there's no problem with ttt-client.h and ttt-server.h needing
257         to mutually include each other.
258
259         * src/ttt-server.h:
260         * src/ttt-server.c: (ttt_server_register_client),
261         (ttt_server_unregister_client), (_ttt_server_accept), (main): Push
262         the client request handling thread back down into ttt-client.c
263         where it really does belong. The server code no longer ever
264         reaches down inside the ttt_client_t structure. Export
265         ttt_server_register_client and ttt_server_unregister_client. Add
266         documentation for ttt_server_broadcast. Document locking semantics
267         for all functions which acquire the server lock.
268
269         * src/ttt-client.h:
270         * src/ttt-client.c: (_ttt_client_create), (_ttt_client_destroy),
271         (_read_into_request_until), (_read_request), (_execute_request),
272         (_handle_requests_thread), (ttt_client_new), (ttt_client_get_id):
273         Pull the ttt_client structure definition back down inside the
274         ttt-client.c file. Don't export ttt_client_create and
275         ttt_client_destroy anymore, but instead just use static
276         _ttt_client_init and _ttt_client_fini. Implement the broadcast by
277         just passing a client pointer around and using client->request
278         rather than passing char *request all over. Document new
279         ttt_client_new and remove ttt_client_read_line. Add locking to
280         ttt_client_send and document it. Add ttt_client_get_id.
281
282 2005-11-14  Carl Worth  <cworth@cworth.org>
283
284         Server now acts as a very simple chat server.
285
286         * src/ttt-client.h:
287         * src/ttt-client.c: (ttt_client_create), (ttt_client_destroy),
288         (_append_to_request), (ttt_client_read_into_request_until),
289         (ttt_client_read_line), (ttt_client_send): Add support to do a
290         buffering read within the client and to reuse the buffer (which
291         grows by doubling) from one request to the next. Add function to
292         send a message to a client.
293
294         * src/ttt-server.c: (ttt_server_init), (ttt_server_create_client):
295         Add support for a client idea. Resize the server's client list by
296         doubling.
297         * src/ttt-server.c: (ttt_server_destroy_client): Add support to
298         destroy a client.
299         * src/ttt-server.c: (_handle_client_requests_thread),
300         (_accept_client): Move handling of client requests up to
301         ttt-server.c from ttt-client.c. Use threads rather than a fork per
302         client.
303         * src/ttt-server.h:
304         * src/ttt-server.h: (ttt_server_broadcast): Add function to send a
305         message to all connected clients.
306
307         * src/ttt-socket.h:
308         * src/ttt-socket.c: (ttt_socket_read),
309         (ttt_socket_write): Add functions to do blocking read or write of
310         the specified number of bytes.
311
312         * src/ttt-socket.c: (ttt_socket_accept): Remove fork, so that the
313         accept function call can take care of anything like that itself.
314         
315         * src/x.h:
316         * src/x.c: (xread), (xwrite): New wrappers for read and write.
317
318         * src/ttt.h: Add TTT_STATUS_EOF, TRUE, and FALSE.
319
320         * src/ttt.c: Need to include ttt-args.h explicitly now.
321
322 2005-11-11  Carl Worth  <cworth@cworth.org>
323
324         * src/ttt-server.h:
325         * src/ttt-server.c: (ttt_server_init), (ttt_server_add_client),
326         (_accept_client), (main): Add a new ttt_server_t object with a
327         mutex-protected list of clients. Move client handling code down
328         into new ttt-client.c.
329
330         * src/ttt-client.h:
331         * src/ttt-client.c: (ttt_client_create), (ttt_client_destroy),
332         (ttt_client_handle_requests): New ttt_client_t object that simply
333         holds a pointer back to the server as well as the client socket
334         file descriptor.
335
336         * src/ttt-socket.h:
337         * src/ttt-socket.c: (ttt_socket_accept): Add closure argument. Add
338         a call to fork before calling the accept callback.
339
340         * src/ttt-args.c: Hide unused ttt_args_usage from the compiler to
341         keep it from complaining.
342
343         * src/ttt.c: (main): Rename the client main program from
344         ttt-client to ttt.c, (since the server code now has its own
345         ttt-client.c).
346
347         * src/ttt.h:
348         * src/Makefile.am: Include and link with pthread now that we have
349         pthread-based mutex locking.
350
351 2005-11-11  Carl Worth  <cworth@pippin.local>
352
353         * src/ttt-server.c: (main): Don't assign to stderr which is
354         apparently an invalid lvalue on Mac OS X.
355
356         * src/x.h:
357         * src/x.c: (xfreopen): Change return type to void.
358
359         * src/ttt-board.c: (ttt_board_to_string): Add missing return
360         statement.
361
362 2005-11-11  Carl Worth  <cworth@cworth.org>
363
364         * configure.in: Key off of src/ttt.h instead of src/ttt.c which no
365         longer exists.
366
367 2005-11-11  Carl Worth  <cworth@cworth.org>
368
369         * src/ttt.h:
370         * src/x.c:
371         * src/x.h: Move include of stdarg.h from x.c to ttt.h.
372
373 2005-11-11  Carl Worth  <cworth@cworth.org>
374
375         * src/ttt-board.h: Include ttt.h to get standard includes.
376         
377         * src/ttt-socket.c: Replace include of netinet/ip.h with
378         netinet/in.h which seems to be necessary for BSD libc, (eg. Mac OS
379         X).
380
381 2005-11-09  Carl Worth  <cworth@cworth.org>
382
383         * src/Makefile.am:
384         * src/ttt.h:
385         * src/ttt-server.c: (ttt_dispatch), (main):
386         * src/ttt-socket.h:
387         * src/ttt-socket.c: (_sockaddr_init), (_wait_for_connection),
388         (ttt_socket_create_server), (ttt_socket_accept): Push a lot of
389         code out of ttt-server.c down into a new ttt_socket abstraction
390         layer. The code is much easier to read now. The server also no
391         longer exits when the first client exits, but continues to listen
392         for more connections.
393
394 2005-11-09  Carl Worth  <cworth@cworth.org>
395
396         * src/ttt-args.h:
397         * src/ttt-args.c: (ttt_args_help), (ttt_args_parse): Add support
398         for -h,--host, -p,--port, and --log-file command-line arguments.
399         
400         * src/ttt-server.c: (main): Use host, port, and log-file
401         command-line arguments.
402
403         * src/ttt-client.c: (main): Track change in signature of
404         ttt_args_parse.
405         
406         * src/x.h:
407         * src/x.c: (xfdopen), (xfreopen): More wrappers.
408
409 2005-11-08  Carl Worth  <cworth@cworth.org>
410
411         * src/ttt.h:
412         * src/ttt-server.c: (_sockaddr_init), (_wait_for_connection),
413         (main): Add socket, bind, listen, accept calls to provide a
414         simple, functional, one-shot server demonstration.
415
416         * src/x.h:
417         * src/x.c: (xsocket), (xbind), (xlisten), (xfcntl), (xselect): Add
418         more wrapped system calls.
419
420 2005-11-07  Carl Worth  <cworth@cworth.org>
421
422         * src/ttt.h: Grab some useful definitions from wdo.h:
423         ASSERT_NOT_REACHEED and TTT_PRINTF_FORMAT. Add several needed
424         include directives.
425
426         * src/Makefile.am: Rip out not-yet existing ttt-command and
427         ttt-error.
428         
429         * src/ttt-args.c: (ttt_args_parse): Track name change from
430         args_help to ttt_args_help.
431
432         * src/ttt.c: Remove in favor of ttt-server.c and ttt-client.c.
433         
434         * src/x.h: Add prototype for xfwrite.
435
436 2005-11-05  Richard D. Worth  <richard@theworths.org>
437
438         * src/ttt-board.c: (ttt_board_init): Added for loop counter init.
439         * src/ttt-board.h: Added prototypes.
440
441 2005-11-05  Richard D. Worth  <richard@theworths.org>
442
443         * src/args.c: Renamed ttt-args.c
444         * src/args.h: Renamed ttt-args.h
445         * src/ttt-args.c: (ttt_args_help), (ttt_args_usage),
446         (ttt_args_parse): Added ttt_ prefix.
447         * src/ttt-args.h: Added ttt_, TTT_ prefix.
448
449 2005-11-05  Kevin Worth  <kevin@cworth.org>
450
451         * src/ttt-board.c: (ttt_board_init): Implemented board_init.
452         * src/ttt-board.h: (ttt_board_t): Added cells array.
453
454 2005-11-05  Carl Worth  <cworth@cworth.org>
455
456         * src/Makefile.am: Add ttt-board.[ch] and x.[ch]
457         
458         * src/ttt-board.h:
459         * src/ttt-board.c: (ttt_board_init), (ttt_board_init_from_string),
460         (ttt_board_to_string), (ttt_board_write): Add some stub functions
461         for Richard and Kevin to have some practice
462         implementing. Functions to represent a board and to go to/from a
463         string.
464         
465         * src/x.h:
466         * src/x.c: (xasprintf), (xvasprintf), (xpipe), (xfork), (xmalloc),
467         (xcalloc), (xrealloc), (xfdopen), (xstrdup), (xfwrite): Several
468         utility functions that make system calls, check the result, and
469         exit on any error. This will simplify the error checking needed in
470         programs using these functions.
471         
472 2005-11-05  Carl Worth  <cworth@cworth.org>
473
474         * src/Makefile.am: Break things up for separate ttt-client and
475         ttt-server and programs.
476