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