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