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