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