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