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