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