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