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