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