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