2003-05-16 20:33  Josef Spillner <dr_maux@users.sourceforge.net>

	* autogen.sh: - apply autogen.sh changes from libggz

2003-05-11 13:31  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/geekgame/protocol.h: - use smaller protocol numbers
	
	Doh! Actually a good thing detected by gcc 2.96, which gcc 3.x
	doesn't find.

2003-05-11 13:24  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/ggzcards/ai/Makefile.am: - add -DAI_CLIENT to avoid
	making it a GUI client
	
	Otherwise, it would depend on ggzmod (huh?)

2003-05-11 11:11  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/Makefile.am, ggzdmod/Doxyfile,
	ggzdmod/Makefile.am, ggzdmod/ggzdmod.h, man/ggzdmod.h.3: - man page
	updated from header file with doxygen - don't install libzoneserver
	anymore - update library interface version

2003-05-11 01:53  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.ac: - set the package version number (via configure.ac)
	to 0.0.7

2003-05-11 01:47  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/: ggzd.6, ggzduedit.6: - man page version updates

2003-05-11 01:15  Josef Spillner <dr_maux@users.sourceforge.net>

	* NEWS, README.GGZ, autogen.sh, game_servers/chess/chess.dsc,
	game_servers/chinese-checkers/ccheckers.dsc,
	game_servers/connectx/connectx.dsc, game_servers/dots/dots.dsc,
	game_servers/escape/escape.dsc,
	game_servers/ggzcards/config/ggzcards-bridge.dsc,
	game_servers/ggzcards/config/ggzcards-fortytwo.dsc,
	game_servers/ggzcards/config/ggzcards-hearts.dsc,
	game_servers/ggzcards/config/ggzcards-lapocha.dsc,
	game_servers/ggzcards/config/ggzcards-spades.dsc,
	game_servers/ggzcards/config/ggzcards-suaro.dsc,
	game_servers/ggzcards/config/ggzcards-sueca.dsc,
	game_servers/ggzcards/config/ggzcards-whist.dsc,
	game_servers/ggzcards/config/ggzcards.dsc,
	game_servers/hastings/hastings.dsc, game_servers/muehle/muehle.dsc,
	game_servers/reversi/reversi.dsc, game_servers/spades/spades.dsc,
	game_servers/tictactoe/tictactoe.dsc: - update common files for
	0.0.7 in ggzd - bump engine and/or game server versions where it's
	necessary

2003-05-10 16:37  Josef Spillner <dr_maux@users.sourceforge.net>

	* autogen.sh: - sync autogen.sh

2003-05-10 12:08  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/maps/Makefile.am: - prefix data with dist_

2003-05-10 01:01  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/spades/engine_func.c: - rename log to logflag, since
	there's an ambiguity to the logarithm: log()

2003-05-10 00:57  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: - signedness comparison fixes

2003-05-05 15:01  Josef Spillner <dr_maux@users.sourceforge.net>

	* m4/ggz.m4: - add -fsigned-char to C(XX)FLAGS by default where
	it's due

2003-03-29 11:40  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: - use ERR_ENEMY constant instead of
	hardcoded -8

2003-03-29 11:32  Josef Spillner <dr_maux@users.sourceforge.net>

	* autogen.sh: - apply improverished autogen globally

2003-03-29 11:26  Josef Spillner <dr_maux@users.sourceforge.net>

	* m4/ggz.m4: - update GGZ macro file

2003-02-28 03:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/datatypes.h: - libpopt expects int arguments for
	POPT_ARG_NONE, not char
	
	Before, calling ggzd with -F on ppc/sparc/... didn't prevent ggzd
	from forking.  Other variables might be affected, and other GGZ
	apps using popt as well, so we might want to do an audit...

2003-02-26 14:56  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/err_func.c: - add %Y to timestamp log so we can see the year

2003-02-26 14:17  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/chinese-checkers/Makefile.am: - blindly add -lm to
	libraries being linked in, because some weirdos decided to  
	exclude that from the libc-supplied functions on several
	architectures somehow

2003-02-26 14:14  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/ggzcards/main.c: - rename fd_set variable to fdset
	because fd_set is already the type name, and   some macro voodoo
	magic would let this result in a failure for some libc's

2003-02-19 20:19  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/geekgame/: geekgame.cpp, geekgame.dsc, geekgame.h,
	main.cpp, protocol.h: - add some more checks and opcodes, mostly to
	comply with client - add copyright to files, using nifty new
	ggzgamingzone.org mail address

2003-02-19 19:30  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/ggz/: ggzgameserver.cpp, ggzgameserver.h: -
	add method open() which returns the number of open seats

2003-02-16 17:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/database/ggzdb_pgsql.c: - update pgsql backend: consider
	inserting statistics values if update doesn't	hit any tuple
	
	Performance-wise, this should be the optimum. The other
	possibilities being:  * delete tuple blindly and insert again (bad
	performance)  * select first, and decide whether to insert or
	update (not much better)

2003-02-16 15:36  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/: ZoneGGZModServer.cpp,
	ZoneGGZModServer.h: - shut up compiler warnings:  * make destructor
	virtual  * handle (but discard) unsupported ggzdmod events

2003-02-16 15:30  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/qtserv/qlist.h: - shut up compiler warnings

2003-02-16 15:29  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/world.cpp: - shut up compiler warning

2003-02-16 13:59  Josef Spillner <dr_maux@users.sourceforge.net>

	* autogen.sh: - new autogen.sh

2003-02-15 04:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/dots/: dots.dsc, game.c: Stats support for dots
	(untested).

2003-02-15 04:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/: ccheckers.dsc, game.c: Stats
	support for chinese-checkers (untested).

2003-02-15 04:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/: chess.dsc, game.c: Stats support for chess.

2003-02-15 04:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/reversi/: game.c, reversi.dsc: Stats support for
	reversi.

2003-02-15 02:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Preliminary ggzd support for resizing tables. 
	Without ggzcore support, this is still useless.

2003-02-15 02:35  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Remove two unused event data packaging structures.

2003-02-12 05:37  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, io.c, io.h, mod.h, protocol.h:
	Preliminary ggzdmod support for changing the number of seats at a
	table.	Without ggzd support, this is currently useless.

2003-02-10 00:44  Jason Short <jdorje@users.sourceforge.net>

	* configure.ac: General cleanups to configure.ac: use
	AC_HELP_STRING, add quotes for arguments, remove unnecessary exit
	calls.

2003-02-09 23:57  Jason Short <jdorje@users.sourceforge.net>

	* Makefile.am, configure.ac, m4/ggz-debug.m4: Use the ggz-debug
	macro file in ggzd.

2003-02-09 23:50  Jason Short <jdorje@users.sourceforge.net>

	* configure.ac: Add strsep support (prototype) back into config.h. 
	Note this only works for ggzd; any of the game modules who try to
	use this function will see the prototype but won't be able to link
	against the function.

2003-02-04 18:55  Jason Short <jdorje@users.sourceforge.net>

	* acconfig.h, configure.ac: Various updates for autoconf2.5x usage.
	 Also fix a typo bug where DB4_IN_DIR was defined instead of
	DB3_IN_DIR.

2003-02-04 18:09  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzduedit.c: Mark a local function as static.

2003-02-04 17:23  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/geekgame/: geekgame.cpp, geekgame.h, protocol.h: -
	server-side check for game mode conditions - new opcodes, but
	they're not used yet

2003-02-04 02:46  Jason Short <jdorje@users.sourceforge.net>

	* autogen.sh, configure.ac, configure.in: Step 1 of
	autoconf2.5x-only support: rename configure.in as configure.ac.

2003-02-03 04:17  Jason Short <jdorje@users.sourceforge.net>

	* autogen.sh: Copy ggzd's autogen.sh from libggz's.  Among other
	things this means it is compatible with autoheader2.5x instead of
	autoheader2.13.
	
	In general, we should keep these autogen.sh's identical.

2003-01-23 18:10  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: - add versioning information for ggzdmod

2003-01-22 14:50  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: client.c, control.c, datatypes.h, ggzd.conf.in, net.c,
	net.h, parse_opt.c: - Add Transport Layer Security support

2003-01-16 23:15  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, ggzd.conf.in, ggzduedit.c,
	login.c, parse_opt.c: - new option for ggzd: DatabaseHashing =
	plain | md5 - ggzduedit updates:    * getopt interface	  * ability
	to use SQL databases (command line options similar to MySQL and    
	 PostgreSQL clients)	* when asking for a password, don't echo
	the input
	
	Hashing is not yet implemented in ggzduedit (changing passwords
	will create chaos), but some larger rewrite would be in order for
	this.  Currently, low-level db functions are used, which don't know
	anything about hashing.

2003-01-16 23:11  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/database/: ggzdb.c, ggzdb.h, ggzdb_pgsql.c: - new database
	version:    * can store hashed passwords    * password size
	enlarged to 32, while 16 is still the effective limit - do database
	version check in pgsql backend too

2003-01-12 15:44  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/database/: ggzdb.c, ggzdb.h, ggzdb_db2.c, ggzdb_db3.c,
	ggzdb_db4.c, ggzdb_pgsql.c, ggzdb_proto.h: - add ability to handle
	statistics database to pgsql backend - change interface to use
	ggzdbConnection instead of char* in ggzdb_init_stats   (even though
	no backend needs this, all assume that ggzdb_init has previously  
	been called)

2003-01-12 13:09  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/database/ggzdb_pgsql.c: [powerpc]
	
	- add dummy functions for stats for pgsql backend
	
	To write the functions, another interface change is needed, which
	will be done later on.

2003-01-12 13:04  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/keepalive.cpp: [powerpc]
	
	- fix ggzdmod include directive

2003-01-12 12:30  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: muehle/main.cpp, keepalive/src/main.cpp: [powerpc]
	
	- getopt returns int, not char

2003-01-12 12:29  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: [powerpc]
	
	- enable -Wall not only for C servers but also for C++ ones

2003-01-12 12:25  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/geekgame/main.cpp: [powerpc]
	
	- getopt returns int, not char

2003-01-06 21:30  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - fix typo: s/Pqconnectdb/PQconnectdb/

2003-01-03 10:37  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Fix a bug in ggzdmod_dispatch
	causing it to return an error if there is nothing to dispatch.

2002-12-20 11:10  Roger Light <oojah@users.sourceforge.net>

	* game_servers/connectx/: connectx.dsc, game.c, game.h, main.c:
	Added game over checking.
	
	This means that the game server is largely complete other than with
	regards to AI.

2002-12-19 15:28  Roger Light <oojah@users.sourceforge.net>

	* game_servers/Makefile.am: Added connectx to subdirs

2002-12-18 18:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - build makefile for ConnectX (even though it's not
	in SUBDIRS yet)

2002-12-18 18:41  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/connectx/.cvsignore: - add cvsignore file

2002-12-18 18:40  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/connectx/Makefile.am: - fix ConnectX makefile

2002-12-18 12:49  Roger Light <oojah@users.sourceforge.net>

	* game_servers/connectx/: Makefile.am, connectx.dsc, connectx.room,
	game.c, game.h, main.c: Initial commit of ConnectX game server.
	
	Still to be done:
	
	- Synchronisation support - Non-random AI - Game over detection

2002-12-18 12:46  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/: escape.dsc, game.c, game.h, main.c: Now
	initialises random seed on starting a game....

2002-12-16 11:38  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/: escape.dsc, game.c, game.h, main.c:
	Complete rewrite of the game server using the TTT server as a
	reference.
	
	Hence supports as much of spectators and stats as TTT does,
	although the client has support for neither.
	
	Synchronising hasn't been tested.
	
	A rudimentry AI has been implemented. It either moves in the
	direction in which it should be escaping or else takes a random
	move.  It is very easy to beat :)

2002-12-16 05:29  Jason Short <jdorje@users.sourceforge.net>

	* autogen.sh: Revert autogen to use -l option instead of -I for
	autoheader and autoconf.  -I is only supported for 2.5x versions.

2002-12-16 05:22  Jason Short <jdorje@users.sourceforge.net>

	* Makefile.am, acinclude.ggz, autogen.sh, m4/ggz.m4: Move
	acinclude.ggz to m4/ggz.m4.

2002-12-15 13:05  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/database/Makefile.am: Don't link the db library to any
	libraries.  This is technically wrong (?), but this doesn't matter
	since it gets linked later in compilation.

2002-12-15 12:34  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Auto-detect a supported database.  Current order
	for checking: db3, db4, db2, pgsql, mysql.

2002-12-09 14:25  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/database/ggzdb_db2.c: - copy ggzd_stats functions to the db2
	interface - compatibility: only accept the 4th parameter to
	cursor() if we are >= db   2.6.4 (according to the sleepycat docs)

2002-12-07 07:33  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/Makefile.am: Remove $(DBSOURCES) from ggzduedit_SOURCES;
	this is now handled by the build in the database/ directory.

2002-12-07 07:13  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.c: Send an E_NO_CHANNEL error if a player tries to
	<LAUNCH> or <JOIN> a table without having already established a
	channel (direct connection).

2002-11-25 20:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/Makefile.am, ggzd/ggzdb.c, ggzd/ggzdb.h, ggzd/ggzdb_db2.c,
	ggzd/ggzdb_db3.c, ggzd/ggzdb_mysql.c, ggzd/ggzdb_pgsql.c,
	ggzd/ggzdb_proto.h, ggzd/protocols.h, ggzd/table.c,
	ggzd/database/.cvsignore, ggzd/database/Makefile.am,
	ggzd/database/ggzdb.c, ggzd/database/ggzdb.h,
	ggzd/database/ggzdb_db2.c, ggzd/database/ggzdb_db3.c,
	ggzd/database/ggzdb_db4.c, ggzd/database/ggzdb_mysql.c,
	ggzd/database/ggzdb_pgsql.c, ggzd/database/ggzdb_proto.h,
	acconfig.h, autogen.sh, configure.in: - move database files into
	subdirectory 'database' - enable db4, and create dummy db4 support
	based on db3 - add enumeration value for GGZ_UPDATE_TABLE_RESIZE
	(huh?)
	
	I'm not a libdb expert, so this should be checked, but it works for
	me.  If the API is rather stable, using ggzdb_db3.c and selectively
	#defining some parts of the source might be more efficient.

2002-11-24 05:37  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/control.c: Add #ifdef DEBUG...#endif around DEBUG-only code.

2002-11-16 23:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: - another bugfix: s/y/mapy/ for the
	map itself

2002-11-16 22:08  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: - small bugfix: pre-initialize
	number of players to zero  (otherwise we end up having some
	millions of them...)

2002-11-07 07:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/hastings/game.c: Label some local functions as
	static.

2002-11-06 23:12  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/: game.c, game.h: - new state for map
	selection

2002-11-06 23:12  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/maps/: Makefile.am, yorkshire: - new game
	state for map selection - add map for battle of Yorkshire

2002-11-06 10:07  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - generate makefile for Hastings' map dir

2002-11-06 10:07  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/: Makefile.am, game.c, game.h: - load list
	of maps upon startup

2002-11-06 10:07  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/maps/: .cvsignore, Makefile.am,
	battle_of_hastings: - add first external map to Hastings - load
	list of maps upon startup

2002-11-06 08:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: - If we receive a <PING> tag, respond immediately
	with a <PONG>.	- If the <PING> has an ID attribute, use the same
	attribute in the <PONG>.

2002-11-04 16:25  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/ggzcards/client/Makefile.am: - use AM_CFLAGS, not
	CFLAGS

2002-11-02 14:55  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/geekgame/protocol.h: - enumerate protocol opcodes

2002-11-02 07:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Handle the BOOT, BOT, and OPEN events when
	requested by the client.

2002-11-02 07:40  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, io.c, io.h, mod.h, protocol.h:
	Provide three new functions to the game server:
	ggzdmod_request_boot, ggzdmod_request_bot, and
	ggzdmod_request_open.  These allow the game server to have all the
	control that the table owner is (currently) granted.

2002-11-01 22:30  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Avoid malformed XML when sending a new login
	status/password.
	
	Bugs like this are annoying - a single extra character breaks
	everything.  But at least with an XML connection, the error is
	easily spotted by scanning the text that was sent.

2002-10-29 12:32  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Send out error codes in the RESULT tag in text form,
	not numerical.
	
	Note that this will significantly break backwards-compatibility.

2002-10-29 10:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Remove the 'joinspectator' and 'leavespectator'
	ACTIONs of the <UPDATE> tag.
	
	GGZCore from the last several weeks should be compatible with this.
	 Earlier versions will probably do very bizarre things (although
	they probably would anyway...).

2002-10-28 08:29  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod-ggz.h, ggzdmod.c, io.c, io.h, mod.h: - When
	reporting a game, pass the seat type of the players along as well. 
	- For AI players, just pass their name - and let GGZ take care of  
	differentiating them from humans.

2002-10-28 08:27  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: room.c, stats.c: - Don't track stats on games with guest
	players at them.  This needs to   be the default behavior, although
	some games may eventually want to   allow it.  - Don't send out
	stats for guest players at all.  Again, some games may	 want to
	allow guests to have (temporary) stats.  - Track the stats for AI
	players on a per-seat basis, and make sure to	differentiate them
	from human players.

2002-10-28 05:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-fortytwo.dsc, ggzcards-hearts.dsc, ggzcards-lapocha.dsc,
	ggzcards-spades.dsc, ggzcards-suaro.dsc, ggzcards-sueca.dsc,
	ggzcards-whist.dsc, ggzcards.dsc: Track ratings for all GGZCards
	games.

2002-10-28 05:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: Makefile.am, elo.c, elo.h, err_func.h, parse_opt.c,
	room.c, stats.c: Add ELO rating support to ggzd.

2002-10-28 05:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzd.test.in: Enable all debugging types in the "make test"
	build/run.

2002-10-28 05:10  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Added two new game result types: FORFEIT and
	NONE, along with documentation on how these might be useful.

2002-10-28 03:58  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, players.h: Fix a severe bug.
	
	Until yesterday, when sending a <PLAYER> over the network
	(generally to a different player), the player structure was not
	locked correctly.  There is a hash_player_lookup in net.c, but then
	the lock is released before the data is sent.  However
	player_get_type re-locked the structure before determining the
	player type.
	
	This sounds, good, but it is dangerous: once the lock is released,
	the player could even log out and the player structure could be
	destroyed.  So we could end up deadlocking or segfaulting when we
	try to access the data later.
	
	Yesterday, I changed this code so it makes a copy of the player
	structure while it still has the lock.	This is the correct way to
	do things, AFAICT (some FIXME comments in the code suggest it was
	the original intention, and just wasn't completed).  But this lead
	to a deadlock when get_player_type tried to access an invalid
	(copied) lock.
	
	So the correct fix now is just to have get_player_type *not*
	acquire a lock, and document this in the function's prototype. 
	Nobody else calls it, so this won't break anything else.

2002-10-28 03:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, players.c: - Acquire a read lock on the player
	stats when assembling a <LIST> of   players to send out.  - Don't
	hold on to a readlock on the player/player stats over the course  
	of a write().  Just copy the player, drop the lock, and use the
	copy.

2002-10-28 02:50  Jason Short <jdorje@users.sourceforge.net>

	* tests/: basic.c, ggzdtest.c: #include "ggzdmod-ggz.h".

2002-10-28 01:09  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzdb.c, ggzdb.h, net.c, parse_opt.c,
	players.h, room.c, stats.c, stats.h: - Fixed a potential segfault
	from accessing an out-of-bounds game type.  - Preliminary support
	for player ratings.  - New function stats_lookup() to move
	stats-specific code out of the	 database code.  - Add forfeits to
	the stats database; rating becomes a floating-point   value; high
	scores becomes a long.	Hopefully this can be a final	form for
	the database.  This makes it incompatible with the previous  
	version, but bumping up the DB version number is _not_ the answer -
	that   will invalidate the player database as well!

2002-10-28 00:16  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/stats.c: Restructure stats code to break off the individual
	stats calculations.

2002-10-28 00:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: Makefile.am, stats.c, stats.h, table.c: Moved statistics
	calculating code into stats.[ch].

2002-10-27 22:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, tictactoe.dsc: Support player
	records for TTT.

2002-10-27 14:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod-ggz.h: Doh!  That's quite a long time to have
	forgotten to add this file to the repository...

2002-10-27 13:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-fortytwo.dsc, ggzcards-hearts.dsc, ggzcards-lapocha.dsc,
	ggzcards-spades.dsc, ggzcards-suaro.dsc, ggzcards-sueca.dsc,
	ggzcards-whist.dsc, ggzcards.dsc: Enable records in all GGZCards
	rooms.

2002-10-27 13:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Report game results to GGZ.

2002-10-27 13:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, ggzd.h, ggzdb.c, ggzdb.h,
	ggzdb_db3.c, ggzdb_proto.h, net.c, parse_opt.c, players.c,
	players.h, protocols.h, room.c, room.h, table.c, transit.c: GGZd
	support for player win-loss records, and some preliminary code for
	other types of stats.

2002-10-27 13:44  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, io.c, io.h, mod.h, protocol.h:
	GGZdMod support for reporting game results to GGZ.

2002-10-27 07:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: Makefile.am, ggzdmod.c, ggzdmod.h: Created new file
	ggzdmod-ggz.h, and moved GGZ-specific parts of the GGZ API into it.
	
	In time, this file will hold quite a bit more.

2002-10-27 06:15  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: control.c, ggzdb.c, ggzdb.h, ggzdb_db2.c, ggzdb_db3.c,
	ggzdb_mysql.c, ggzdb_pgsql.c, ggzdb_proto.h: A moderate cleanup to
	the *interface* to the database code.  From this a rather
	full-fledged cleanup fell out:
	
	- The return value of most DB functions was "int".  This was not  
	particularly descriptive.  I changed it to GGZDBResult for most  
	functions.  - Most backend database functions, when given a DB
	error (which shouldn't	 happen, normally) would just return the
	value the DB function gave them.    This is less than good, since
	it could be interpreted arbitrarily by	  the calling code. 
	Therefore I added a new GGZDBResult enumerated value,	
	GGZDB_DB_ERR.  This is returned by functions when database access  
	 fails.  It has limited handling by the callers (but, at least it
	won't	 be interpreted as some other error - and really, what
	possible handling    is there?).  - I added some documentation to
	the backend DB functions (in   ggzdb_proto.h), as best I understand
	them.  I suspect that pgsql and   mysql will not behave correctly
	in some situations; I've added some   comments there but not much
	else.

2002-10-27 02:30  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, table.c, transit.c, transit.h: In a player
	transit, pass the caller through as well - since this may not be
	the same as the player involved in the transit.
	
	Thus players who are booted will know who booted them.

2002-10-27 02:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: table.c, table.h, transit.c: - In a transit player event,
	make sure we pass on the reason (for the   leave).  Otherwise it
	just stays at 0...  - If the table is shut down because of an
	error, track that and alert the   players leaving accordingly.

2002-10-27 00:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, protocols.h, table.c, table.h,
	transit.c, transit.h: When a player joins/leaves a table, send a
	<JOIN>/<LEAVE> tag instead of or in addition to the associated
	<RESULT> tag.
	
	The desired functional behavior is:   - Join:	  * When a player
	is automatically joined after a launch, we should send	     <JOIN
	TABLE='x'/>	* When a player sends us a join that succeeds, we
	should send	  <RESULT ACTION='JOIN' CODE='0'/> <JOIN
	TABLE='x'/>	* When a player sends us a join that fails, we
	should send	  <RESULT ACTION='JOIN' CODE='x'/>   - Leave:	  *
	When a game server crashes or is killed, we should send      
	<LEAVE REASON='gameerror'/>	* When a game server exits normal
	(GGZDMOD_STATE_DONE), we should send	   <LEAVE
	REASON='gameover'/>	* When a player is booted from a table, we
	should send	  <LEAVE REASON='boot' PLAYER='xxxxx'/>     * When
	a player sends a leave that succeeds, we should send	   <RESULT
	ACTION='leave' CODE='0'/> <LEAVE REASON='normal'/>     * When a
	player sends a leave that fails, we should send       <RESULT
	ACTION='leave' CODE='x'/>
	
	Unfortunately, this behavior has not *quite* been reached.  But it
	is close.  Another problem with the current implementation is that
	it is quite ugly - the transit code is being overloaded to send
	transit-specific data, something that it was not originally
	intended to do.  In time this will have to be cleaned up one way or
	another...

2002-10-26 09:43  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: client.c, net.c, table.c: Removed some 'default' cases so
	it's easier to make sure the list is full.

2002-10-26 07:46  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: If no TYPE is specified for a <LOGIN>, assume a
	'guest' login.

2002-10-26 07:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: If no TYPE is specified for a <CHAT>, assume
	'normal'.

2002-10-26 01:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/: game.c, game.h, main.c: Update
	chinese-checkers so it supports GGZDMOD_SEAT_EVENT.

2002-10-26 00:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/reversi/: game.c, game.h, main.c: Update reversi so
	it supports GGZDMOD_EVENT_SEAT.

2002-10-25 22:37  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: When we're launching the game, we fork() and
	then exec().  After the fork, if there are any errors we should
	*not* call ggz_debug or any of its friends (including
	ggz_error_sys_exit()).	These may pass on their output to a handler
	function, which may not work properly since we've forked() off of
	the main program.
	
	Instead, when this happens we send a ggzdmod log message.  This
	cannot be done (easily) with ggzdmod_log, since the ggzdmod object
	we have is a GGZ-side one and we're now on the game side.  Instead
	we access the IO functions directly to send first a log message and
	then to change the state to DONE.
	
	This could end up being a useful debugging tool at some point,
	since if the exec fails (for instance, because the command was not
	set correctly) we will not get a useful ggzd.debug line about it. 
	But it would be more useful if the game could send *error* messages
	to ggzd, independently of the "debug" messages it currently sends.

2002-10-25 19:33  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Add a note to the documentation on
	ggzdmod_connect.

2002-10-25 19:13  Jason Short <jdorje@users.sourceforge.net>

	* tests/ggzdtest.c: We can't just exec "logmod", we need the full
	path of the game module executable.  Use getenv("PWD") to obtain
	this (may not work on all systems?).  See the @note under
	ggzdmod_set_module().

2002-10-25 19:12  Jason Short <jdorje@users.sourceforge.net>

	* tests/basic.c: An invalid ggzdmod object may return either 0 or
	-1 seats.

2002-10-25 19:10  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Added a @note on ggzdmod_set_module().

2002-10-25 18:53  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: ggzdmod_get_num_seats() shouldn't return -1
	just because there's no connection.  It _espectially_ shouldn't do
	this on the GGZ side.

2002-10-25 10:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Since the table is no longer
	killed when there are still spectators at it, we have to make sure
	we check to see if it's empty when a spectator leaves.

2002-10-24 07:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: - Fixed two typos where old_seat was being
	looked at instead of new_seat.	- Changed error return values so
	each different error gets a different	value.	This is marginally
	helpful in debugging.

2002-10-24 07:30  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/event.c: Removed spurious debug output.

2002-10-24 02:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/game.c: If there are no human players at
	the table, then sleep() for two seconds in between each trick. 
	This will prevent a runaway AI table from hogging resources,
	leaving any spectators behind, and becoming unresponsive.
	
	It is done at the *client* end so that the server can remain
	responsive (for instance, to players joining or leaving).

2002-10-24 00:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c: Make it an
	option to hide hands from spectators (disabled by default).
	
	This option has huge cheating ramifications, but for now it should
	be fine as it is...

2002-10-24 00:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Use a more elegant form of
	seats_full() and seats_empty().
	
	Also the table will no longer terminate if there are still
	spectators.

2002-10-24 00:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Use a more elegant form of
	seats_full() and seats_empty().

2002-10-23 23:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Remove obsolete functions seat_find_player()
	and spectator_find_player().

2002-10-23 22:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Avoid declaring a variable in the middle of a
	block.	gcc3.2 lets me do this for some reason...

2002-10-23 20:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Avoid having an assertion fail
	when we 'sit' at a table.

2002-10-23 20:10  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, players.h, protocols.h, table.c,
	table.h, transit.c, transit.h: Added handling for the RESEAT tag.
	
	Doing this right entailed significant changes to the transit code,
	including the unification of SPECTATOR and SEAT change transit
	events.  However this is offset by the lack of elegence of the new
	code (which may be improved over time).
	
	There is currently no 'reseat' UPDATE.	When a reseat happens, the
	update sent consists of a 'leave' followed by a 'join'.  This will
	inevitably cause problems for some clients.

2002-10-23 19:50  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, io.c, io.h, mod.h, protocol.h:
	Added function ggzdmod_reseat() so that ggzd can tell the game
	servers when a player reseats themselves.

2002-10-23 01:58  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Thorough cleanup to ggzd net code - many unlikely
	bugs fixed.

2002-10-22 22:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, players.c, players.h, table.c, table.h: Add support
	for table booting, and improve the code for desc and seat updates.
	
	This code is currently very dangerous.	Locking is not done
	properly, so if the table in question goes away while we're working
	on it we could get some really nasty results.  There is a similar
	problem when dealing with the player we're booting.  Fixing this
	will take some significant code (or structural changes).
	
	Booting a player is currently done just by starting them on a
	GGZ_TRANSIT_LEAVE.  Unfortunately, the code doesn't know the
	difference between a boot and a player <LEAVE>, and will send the
	player a <RESULT> tag when the leave completes.  This is probably
	harmless for now.

2002-10-22 19:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/geekgame/: geekgame.cpp, geekgame.h, protocol.h: -
	first basic code:  * let all players join, try to get their names
	and player pics  * when enough have joined, announce game start  *
	whenever one leaves, the game is interrupted  * prepare game_end()

2002-10-22 19:40  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/ggz/: ggzgameserver.cpp, ggzgameserver.h: -
	players() as a wrapper for ggzdmod_get_num_seats()

2002-10-22 19:29  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - create geekgame makefile

2002-10-22 19:29  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/Makefile.am: - add geekgame to subdirs

2002-10-22 19:28  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/geekgame/: .cvsignore, Makefile.am, geekgame.cpp,
	geekgame.dsc, geekgame.h, geekgame.room, main.cpp, protocol.h: -
	add some more or less empty source files which will eventually turn
	into the   geekgame server

2002-10-22 11:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: - If a BOT leaves a seat, do most
	of the same 'leave' updates as when a	player leaves.	- Start and
	stop the AI process when a bot joins and leaves the table.    Note
	that introducing a bot mid-hand will probably not lead to very	 
	effective play.

2002-10-22 10:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/: client.c, client.h: Resync client
	library between server and client.

2002-10-22 10:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, net.c, client/client.c,
	client/client.h, config/ggzcards-bridge.dsc,
	config/ggzcards-fortytwo.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards-sueca.dsc,
	config/ggzcards-whist.dsc, config/ggzcards.dsc: - Tell the client
	the GGZ seat number of each player (or -1 if they have	 none).  -
	The (AI) client must read this information, of course.	- The
	protocol becomes incompatible.

2002-10-22 07:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Unify the JOIN, LEAVE, and SEAT
	handler functions.

2002-10-22 07:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Add a handler for the ggzdmod SEAT
	event, so that switching between bots and open seats will work
	smoothly.

2002-10-22 07:13  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: - When a seat change turns a seat into a bot,
	name it "AI" just like when   we're given a bot on launch.  -
	Remove a spurious strdup.

2002-10-22 06:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, seats.c, table.c, table.h, transit.c: Fix
	things so that table seat updates sent from the client will be
	handled.  Note that right now anyone can make such an update - the
	correct authorization policy is a little complicated (we shouldn't
	just allow the table owner to make updates).

2002-10-22 06:27  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Enable the SEAT and SPECTATOR_SEAT ggzdmod
	events.

2002-10-22 04:16  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: When sending error results for the <UPDATE> tag, the
	action type is 'update', not 'protocol'.  The error is not fatal.

2002-10-22 04:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Avoid a segfault if an invalid UPDATE tag is sent.

2002-10-22 02:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: client.c, control.c, event.c, ggzd.h, players.c,
	players.h, table.c, table.h: Use pthread_kill() and signals to
	alert a player/table thread when an event is pending waiting to be
	handled.  This drastically reduces the internal latency when
	handling events (compared to polling every half-second for them,
	which was the old system).

2002-10-21 23:27  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: client.c, ggzd.h, players.c, table.c: #define
	GGZ_RESYNC_SEC and GGZ_RESYNC_USEC in only one place: ggzd.h.
	
	This means players and tables must now have the same sync time -
	this is probably a good thing anyway.

2002-10-20 11:05  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, client.c, client.h, control.c, daemon.c,
	datatypes.h, err_func.c, err_func.h, event.c, event.h, ggzdb.c,
	ggzdb.h, ggzdb_db2.c, ggzdb_db3.c, ggzdb_mysql.c, ggzdb_pgsql.c,
	ggzduedit.c, hash.c, hash.h, login.c, login.h, net.c, net.h,
	parse_opt.c, perms.c, players.c, players.h, protocols.h, room.c,
	room.h, seats.c, seats.h, table.c, table.h, transit.c: Reformat the
	#includes for all of ggzd:   - Make sure #include <config.h> is at
	the top of every .c file; for	  consistency remove it from all .h
	files.	  - Change <...> to "..." for locally included files -
	hopefully this will	 make Josef happy; there were enough
	inconsistencies it was time to	    fix them all.    - Reorder
	#includes: first standard system-wide includes, then library	 
	includes (mysql, expat, libggz), then local includes.

2002-10-20 10:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, net.h, protocols.h, room.c, table.c: - Split
	GGZUpdateOpcode into GGZPlayerUpdateType and GGZTableUpdateType.  -
	Lots of renaming and a few cleanups follow this.  - Things should
	be much clearer now.

2002-10-20 10:07  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: hash.c, hash.h, net.c, net.h: - Change the prototype of
	net_send_player_update: "unsigned char" becomes   "GGZUpdateOpcode"
	and "char *" becomes "const char *".  - Make minimal changes
	elsewhere to avoid getting warnings with this:	 * Some parameters
	for hash functions become const char *.    * Some extra cases
	within net_send_player_update.

2002-10-20 09:50  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: protocols.h, table.c: Cleanups to the table update system.
	   - table_spectator_event and table_seat_event go away; they
	weren't      used anyway.    - The GGZ_UPDATE_SEAT update is
	handled by table_update_event_enqueue.	  - The
	GGZ_UPDATE_SPECTATOR update goes away - the only types of     
	spectator updates are GGZ_UPDATE_SPECTATOR_JOIN and	
	GGZ_UPDATE_SPECTATOR_LEAVE.    - To test this out, code is added to
	remove duplicate seat reservations	when a player joins a
	table.	This code is currently disabled.    - The GGZ_UPDATE_***
	enumeration values are reordered, their explicit      values are
	removed, and they're commented.    - GGZTableEventData::opcode is a
	GGZUpdateOpcode.    - The switch in table_event_callback is missing
	the GGZ_UPDATE_LAG case.

2002-10-20 00:36  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.c: Adjust for the GGZ_CHAT_NONE -> GGZ_CHAT_UNKNOWN
	change.

2002-10-19 21:03  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: ggzdmod_set_num_seats returns an
	int value to alert of the error status.

2002-10-19 08:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: In _ggzdmod_set_num_seats, if the number of
	seats has been reduced delete the extra entries.

2002-10-19 02:42  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: #if 0...#endif around unused code.

2002-10-19 02:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/spades/engine_func.c, ggzdmod/ggzdmod.c,
	ggzdmod/ggzdmod.h, ggzdmod/io.c, ggzdmod/io.h, ggzdmod/mod.h,
	ggzdmod/protocol.h: Significant simplifications to ggzdmod
	internals: now all seat and spectator seat changes are sent in the
	same way, with a MSG_GAME_SEAT or MSG_GAME_SPECTATOR_SEAT packet. 
	It is up to the game server to determine which event (JOIN, LEAVE,
	SEAT, SPECTATOR_JOIN, SPECTATOR_LEAVE, SPECTATOR_SEAT) to invoke
	when it happens.

2002-10-19 02:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: In a GGZDMOD_EVENT_SPECTATOR_JOIN,
	the event data is a pointer to the old spectator seat, not a
	pointer to the spectator seat number (although the two are
	compatible).

2002-10-19 00:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/spades/engine_func.c, ggzdmod/ggzdmod.c,
	ggzdmod/io.c, ggzdmod/io.h, ggzdmod/mod.h, ggzdmod/protocol.h: When
	GGZ informes the game server of a seat join/leave/change or a
	spectator join/leave, a response is no longer needed.

2002-10-18 22:49  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: table.c, table.h, transit.c: Change GGZd so it no longer
	uses the "transit" waiting period when making a seat change at a
	table.	Now all seat changes are made directly by GGZd's table
	thread, who informs (rather than asks) the game server about it.
	
	Since a single process is now in charge of authorizing and making
	changes, it becomes possible for more complex transactions to be
	done without changing the entire infrastructure.  See the ggz-dev
	posts on "ggzd <-> ggzdmod <-> game server question".
	
	Note that ggzdmod is left unchanged right now, although in the long
	run this change will allow it to be substantially simplified.

2002-10-18 04:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Enable ggzd sending the list of spectators at a table
	out to the clients of the players in the room.

2002-10-17 03:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/spades/engine_func.c: Get spades to work with
	reserved seats.  Also have it do stricter error checking on the
	values GGZd sends it.  If there are mistakes, the game server
	should exit rather than lock up.

2002-10-16 02:07  Jason Short <jdorje@users.sourceforge.net>

	* acinclude.ggz: Improvement (hopefully :-) to acinclude.ggz.  Now
	each GGZ check takes two optional parameters.  For instance:
	
	  AC_GGZ_LIBGGZ(action-if-found, action-if-not-found)
	
	'action-if-found' will be evaluated if the specified module was
	found.	'action-if-not-found' will be evaluated if the module is
	not found.  This is consistent with other autoconf macros.  If
	'action-is-not-found' is empty, then an error will be emitted if
	the module isn't found.  If 'action-if-not-found' is "ignore", then
	the module will simply be ignored if it's not found.
	
	This is not entirely backwards-compatible, since "ignore" used to
	be the first parameter to the macro.  But this way is more
	consistent, in my opinion.

2002-10-15 04:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Replace strings_differ() with ggz_strcmp().

2002-10-10 23:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, chat.h, net.c, players.c: Add handling for a table
	chat (GGZ_CHAT_TABLE) at the server end.
	
	Because of the shortcomings of the event system, this is not quite
	as trivial as it might otherwise be.  We must first enqueue a table
	event, then in the callback function for that event loop over all
	players and spectators at the table and enqueue a player event to
	send them the chat.  This is commented on in the code (along with a
	possiblity for a better way).

2002-10-10 19:24  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Bump ggzd version to 0.0.7pre.

2002-10-10 19:18  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/motd.c: Grow the MOTD buffer geometrically instead of
	arithmetically (linearly).
	
	This makes the ammortized cost of growth O(1).

2002-10-09 08:19  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, net.c, net.h: Make the GGZChatEventData fields
	into const char * instead of char *.

2002-10-09 08:17  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, chat.h, net.c, players.c, players.h: s/unsigned
	char/GGZChatType/ in many places.

2002-10-09 01:32  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c, ggzd/net.h, ggzd/protocols.h, ggzdmod/ggzdmod.c: -
	Move GGZChatType enum into ggz_common.	- Add
	ggz_chattype_to_string() and ggz_string_to_chattype functions to  
	ggz_common.  - Change existing code to use the above two instead of
	their own custom   code.  - Don't accept invalid and dangerous chat
	messages (sent across the   network).  But do accept invalid and
	non-dangerous chat messages: to   improve backward-compatability if
	new chat types are added.

2002-10-08 02:24  Jason Short <jdorje@users.sourceforge.net>

	* ggz_server.spec: Update .spec file for libggz.
	
	This is hard to test, since nobody uses an RPM-based distro...

2002-10-08 00:59  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/client.c: Disable the ggzd.protocol net XML dump file by
	default.

2002-10-07 23:29  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/control.c: Don't receive a HUP more than once.

2002-10-07 23:28  Jason Short <jdorje@users.sourceforge.net>

	* NEWS: Rewrote NEWS for 0.0.6, and propogated it to all modules.

2002-10-07 23:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* ChangeLog: - update changelog for 0.0.6

2002-10-01 20:49  Josef Spillner <dr_maux@users.sourceforge.net>

	* Makefile.am, configure.in: - use configure.in for AC_INIT, not
	acinclude.ggz - don't include obsolete doc directory into
	distribution - leave it in CVS	 though as it might still be needed
	  (For the future, some up-to-date mini docs would be cool though.)

2002-10-01 17:43  Jason Short <jdorje@users.sourceforge.net>

	* man/ggzdmod.h.3: Update man page for ggzdmod.

2002-10-01 17:42  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Doxyfile: Bump ggzdmod version number to 0.0.6.

2002-09-29 15:10  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/Makefile.am, configure.in: - avoid messing with LIBOBJ

2002-09-29 14:38  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/ggzd.6, man/ggzduedit.6, configure.in: - ggzd version number
	bumping

2002-09-29 13:53  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: chess/chess.dsc, chinese-checkers/ccheckers.dsc,
	combat/combat.dsc, dots/dots.dsc,
	ggzcards/config/ggzcards-bridge.dsc,
	ggzcards/config/ggzcards-fortytwo.dsc,
	ggzcards/config/ggzcards-hearts.dsc,
	ggzcards/config/ggzcards-lapocha.dsc,
	ggzcards/config/ggzcards-spades.dsc,
	ggzcards/config/ggzcards-suaro.dsc,
	ggzcards/config/ggzcards-sueca.dsc,
	ggzcards/config/ggzcards-whist.dsc, ggzcards/config/ggzcards.dsc,
	hastings/hastings.dsc, krosswater/krosswater.dsc,
	lapocha/lapocha.dsc, muehle/muehle.dsc, reversi/reversi.dsc,
	spades/spades.dsc, tictactoe/tictactoe.dsc: - game server number
	bumping

2002-09-27 17:30  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzdmod/Makefile.am: - ggzdmod gets a higher interface number too
	
	For example, the old API of ggzdmod_set_module is not available any
	more.  Chances are high that the current API is relatively stable. 
	However, if we ever decide to keep an interface number, we must
	double-check using 'nm' to see if non-static functions or variables
	have changed or not.

2002-09-27 10:56  Josef Spillner <dr_maux@users.sourceforge.net>

	* autogen.sh: - new autogen

2002-09-26 23:52  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Makefile.am: Fixes to the build system:   - Added
	$(LIB_GGZ) to libggzdmod_la_LIBADD.  This allows game servers	 
	to compile (which is a good thing...).	  - Removed (commented out)
	the compilation of libggzdmod.a.    - Removed the .NOTPARALLEL
	target, which is only necessary because      the .a and .la
	compilations conflicted with each other.

2002-09-26 23:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, parse_opt.c: Only read the MOTD
	after all configuration has been read.	That way we don't run into
	problems like opt.conf_dir being NULL.

2002-09-26 23:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/motd.c: Some more cleanups to the MOTD code:   - If
	opt.conf_dir is undefined AND the motd uses a relative path, log   
	 an error and return.  Note that the MOTD will already have been
	erased	   (if this is a re-load).    - Only determine the startup
	time once, the first time motd_read is	    called, and regardless
	of whether the MOTD is actually being used at	   the time.  That
	way if re-reading the MOTD later won't break this.

2002-09-26 22:56  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: chess/Makefile.am, chinese-checkers/Makefile.am,
	combat/Makefile.am, dots/Makefile.am, escape/Makefile.am,
	ggzcards/Makefile.am, ggzcards/ai/Makefile.am,
	hastings/Makefile.am, keepalive/src/Makefile.am,
	krosswater/Makefile.am, lapocha/Makefile.am, muehle/Makefile.am,
	reversi/Makefile.am, spades/Makefile.am, tictactoe/Makefile.am: -
	use shared library libggzdmod.la - the 'make test' directive will
	maybe have to be altered for this - game servers don't need to link
	libggz because libggzdmod refers to it	 automatically

2002-09-26 14:58  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/control.c: - replace ggz_make_socket_or_die with more
	user-friendly ggz_make_socket, which   writes out an error to
	stdout in every case

2002-09-26 14:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/motd.c: - fix segfault in ggzd:
	
	Don't read MOTD if configuration file is missing.

2002-09-26 12:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* acinclude.ggz, configure.in: - deploy new acinclude.ggz

2002-09-26 12:37  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/Makefile.am: - use libggz values explicitly

2002-09-25 23:46  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: The first genuine memory leak fix.  The question,
	in table_free: "do we need to free transit too?"  The answer: yes.
	
	It appears when the last player leaves a table that transit_name is
	never free'd.  This is probably an error, but I don't know enough
	about it to fix it.  So in table_free, just free transit_name and
	log an error message.

2002-09-25 23:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/client.c: Hey look!  CHANNEL clients have data too.

2002-09-25 23:09  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/client.c: Doh!  client->data is already free'd in
	client_free().	So instead of calling player_free() earlier, call
	it in client_free() if the type of client is GGZ_CLIENT_PLAYER.

2002-09-25 21:38  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, parse_opt.c, room.h: Do a full
	cleanup when we quite ggzd via a HUP.  Also fixed a couple of
	trivial memory leaks and added cleanup() comments on extra data
	fields that need to be freed.
	
	This leaves no memory leaks in the simplest case (when the server
	immediately terminates).  For the rest, only time will tell.

2002-09-25 11:29  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - nice idea, bad result: commenting out the
	makefile creation for ggzsh breaks   old autoheaders (autoconf -l
	.) - I removed that line entirely for now

2002-09-25 10:53  Josef Spillner <dr_maux@users.sourceforge.net>

	* README.GGZ: - forgot updating readme.ggz for ggzd

2002-09-25 07:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: control.c, motd.c, motd.h, parse_opt.c: Rework some of the
	MOTD code:   - The motd struct is moved into motd.c.	-
	motd_read_file() is passed in the name of the file to read.  This  
	   name can be NULL, in which case the MOTD is enabled.    - It is
	OK to call motd_read_file to re-read the file.	Note that this	   
	is not currently safe because the MOTD struct has no locking.	 -
	Added a function cleanup_data() in control.c, which cleans up the  
	   MOTD data (only if we got a HUP - otherwise there are probably
	still	   running threads).

2002-09-24 23:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, control.c: Several clever new features for ggzd:  
	- chat_server_2_player() can be called with a NULL player name to  
	  get a server-wide, server-generated announcement.  As the
	function     says, "this could be a usefule function for other
	uses".	  - SIGTERM and SIGINT handlers are enabled even when we're
	not in	    daemon mode.  Why exit abnormally when we can easily
	handle them?	- A SIGHUP handler has been added.  When a HUP is
	received, we enter	"hangup" mode.	This means closing the main
	socket (so we no longer      accept new connections), so that the
	main loop just sleeps.	When	  all players have left, the server
	will exit.    - Call ggz_memory_check before exiting.

2002-09-24 21:01  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: client.c, players.c, players.h: - When a player logs out,
	remove them from their table (if they are   at one).  - Add
	function player_free to free a player structure.  Call this when  
	a player logs out.  (Note: a more rigorous way of testing for
	memory	 leaks is needed.  ggzd should be able to exit itself, and
	do a mem   cleanup at the end.	All in good time...)

2002-09-24 00:45  Jason Short <jdorje@users.sourceforge.net>

	* acinclude.ggz: Update acinclude.ggz in the txt-client, and label
	acinclude.ggz as being included in txt-client.

2002-09-23 18:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/libcgc/: Makefile.am, cgc.h, games.h: Updated
	libcgc to make it identical between ggzd, gtk-games, and kde-games.

2002-09-23 11:44  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/spades/engine_func.c: - read number of spectators
	upon game launch.
	
	This number is ignored, as well as the number of seats, which are
	assumed to be always 4.

2002-09-23 04:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/Makefile.am: Manipulate CFLAGS
	directly to add the -DAI_CLIENT flag - using libclient_a_CFLAGS
	doesn't seem to work for automake<1.5.

2002-09-23 02:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/: client.c, client.h: Changed "core"
	(the ggz_debug debugging type) to DBG_CLIENT.

2002-09-22 19:20  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/dots/: ai.h, dots.dsc, game.c, game.h, main.c: - add
	preliminary spectator support to Dots - but don't enable it yet: it
	works with KDots but needs some rethought of the   protocol, and
	severe changes in the Gtk+ client - so, it will probably be delayed
	until after the release

2002-09-21 22:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/Makefile.am: Set CFLAGS "properly"
	(so as not to overwrite existing flags).

2002-09-21 18:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/: game.c, game.h, hastings.dsc, main.c: -
	spectator support for Hastings - be clever: call ggzdmod_dispatch
	within bots moves, because this is  a) not dangerous (bots don't go
	away)  b) good for joining spectators because they get their sync
	faster

2002-09-20 18:22  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/world.cpp: - restrict chat message
	length to be KEEPALIVE_CHAT_LENGTH chars

2002-09-20 10:01  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/world.cpp: - protocol change: don't
	send data to player unless he logs in	(this is different from
	spectators now) - since the player is then included in the player
	count, send player count - 1   in an op_player event

2002-09-19 23:14  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: keepalive.cpp, keepalive.h: - build
	up world only when ggzdmod could be initialized successfully
	
	There's currently something odd: Keepalive does have an own error
	handler, yet the ggzdmod one is called after its own. This
	shouldn't happen, in case a game wants to "keep alive" (haha, pun)
	after such a failure.

2002-09-19 18:16  Jason Short <jdorje@users.sourceforge.net>

	* acinclude.ggz: Include gnome-client on the list of modules that
	use acinclude.ggz.

2002-09-19 00:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/play.c: hand_has_valid_card() should be
	defined and called only when NDEBUG is not defined.

2002-09-18 21:16  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/motd.c: s/int/size_t/ in several places.

2002-09-18 21:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: s/int/unsigned int/

2002-09-18 17:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/keepalive/src/player.cpp: Add #include <errno.h>.

2002-09-18 08:19  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: player.cpp, world.cpp: - minor
	cleanups

2002-09-18 08:14  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/ggzsh/keepalive_test.rb: - add sample
	script for ruby

2002-09-18 08:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/ggzsh/: Makefile.am, ggzsh.cpp, ggzsh.h,
	main.cpp: - prepare inclusion of other backend languages - method
	to display configuration information - recommend Ruby 1.7 and
	Python 2.2

2002-09-17 17:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Have more net functions return an actual error
	status, not just blindly return OK whether or not there was a
	network error.

2002-09-17 17:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: In net_set_dump_file, if NULL is given close and
	reset any existing dump file.

2002-09-17 17:01  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, net.h: Net functions return a GGZReturn, not a
	nameless integer.

2002-09-17 16:42  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, protocols.h: Changed the GGZ_CHAT_*** flags to an
	enumeration.  Removed the one use of them as a flag value.

2002-09-17 07:54  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Don't output game_servers/keepalive/ggzsh/Makefile,
	since nothing in this directory is built currently.

2002-09-17 05:28  Jason Short <jdorje@users.sourceforge.net>

	* Makefile.am: Added tests to DIST_SUBDIRS.

2002-09-17 05:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/keepalive/Makefile.am: Added .dsc and .room files to
	EXTRA_DIST.

2002-09-17 00:46  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: event.h, ggzd.h, players.h, table.h: - Moved "typedef
	struct GGZEvent GGZEvent;" into ggzd.h.  - s/void*/GGZEvent*/ in
	the table and player structs.

2002-09-17 00:33  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: event.c, event.h: Declare struct GGZEvent only within
	event.c, not globally within event.h.

2002-09-16 08:53  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, table.h, transit.c, transit.h:
	s/char/GGZClientReqError/ or s/int/GGZClientReqError/ in many
	places.

2002-09-16 08:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: - s/char/GGZClientReqError in several places.  -
	Don't accept the status value passed with GGZDMOD_EVENT_LEAVE	and
	GGZDMOD_EVENT_SPECTATOR_LEAVE as a GGZClientReqError error.   
	Instead translate an error (-1) code as E_SEAT_ASSIGN_FAIL.  - Note
	that GGZDMOD_EVENT_JOIN and GGZDMOD_EVENT_PLAYER_JOIN do not  
	handle the error case at all.

2002-09-16 08:08  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzd.h: Doh!  Reverted unintentional commit.

2002-09-16 08:07  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: client.c, ggzd.h, players.c, table.c: s/int/GGZReturn/ in
	several places.

2002-09-16 07:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, chat.h: chat_room_enqueue must return a
	GGZClientReqError (my mistake).

2002-09-16 07:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/room.h: The prototype for room_join must match the function
	itself (my mistake).

2002-09-16 07:33  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/event.c: s/int/GGZEventFuncReturn/ in several places.

2002-09-16 07:27  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/room.c: Give a consistent return value to room functions:  
	- room_join returns a GGZClientReqError.    - show_server_info
	return a GGZReturn.

2002-09-16 07:13  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: client.c, players.c: Fixed some handling of
	GGZPlayerHandlerStatus values.

2002-09-16 06:57  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.c: s/int/GGZPlayerType/ in one place.

2002-09-16 06:36  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/client.c: Give client functions a consistent return type:
	client_check_ip_ban_list returns a GGZReturn.

2002-09-16 06:33  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/daemon.c: Give daemon functions a consistent return type:
	lock_fd returns a GGZReturn.

2002-09-16 06:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/util.c: Give util functions a consistent return type:   -
	make_path returns a GGZReturn.

2002-09-16 06:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: table.c, table.h: Give consistent return types to table
	functions:   - table_launch and table_kill return a
	GGZClientReqError.    - table_check, table_handler_launch,
	table_start_game,      table_event_enqueue,
	table_update_event_enqueue,	 table_seat_event_enqueue, and
	table_spectator_event_enqueue return a	    GGZReturn.

2002-09-16 06:09  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, players.h: Give consistent return values to the
	player functions:   - player_updates returns a GGZReturn.    -
	player_chat returns a GGZPlayerHandlerStatus.	 - player_transit
	returns a GGZClientReqError.

2002-09-14 10:04  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/ggzduedit.6: - update ggzduedit man page as well

2002-09-14 10:00  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/ggzd.6: - add command line options to ggzd's man page

2002-09-13 20:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, table.c, transit.c, transit.h: Gave consistent
	return types to the transit functions.	  - transit_seat_event,
	transit_spectator_event, and transit_player_event      all return a
	GGZReturn.  One of the callers needs to translate the	   return
	value of transit_seat_event.  For consistency, the callers	of
	transit_player_event were updated to explicitly use GGZReturn.	  -
	transit_table_event returns a GGZReturn, but has not yet been	  
	implemented.	- transit_send_seat_to_game and
	transit_send_spectator_to_game also	 return a GGZResult.  The
	callers were updated to make this explicit.

2002-09-13 20:15  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/keepalive.dsc: - allow 100 players for
	Keepalive
	
	This isn't very useful right now, but allows us to fix the core
	clients to handle such numbers.  (Maybe with a scroll widget or
	something)

2002-09-13 20:01  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: login.c, login.h: Clean up the return types of login
	functions:   - login_add_user returns a GGZReturn.    -
	validate_username is renamed to is_valid_username; it returns a    
	 boolean integer.    - login_player_anon, login_player_new, and
	login_player_normal don't      exist (!).

2002-09-13 19:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, chat.h: Gave the chat functions consistent return
	types.
	
	Here I found the first genuine buglet: the return value of
	event_player_enqueue (a GGZReturn, i.e. 0 or -1) was being treated
	as a GGZClientReqError (i.e. an E_*** value).  To fix this, if
	event_player_enqueue returns GGZ_ERROR chat_player_enqueue will
	return E_USR_LOOKUP (is this the proper value?).

2002-09-13 19:50  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: table.c, transit.c: Doh.  Took care of the other two
	callers of event_table_enqueue.

2002-09-13 19:39  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: event.c, event.h, table.c: All event functions now return
	a GGZReturn.  This makes this part of the code much more legible.
	
	Only for one function did the return value change:
	event_table_enqueue returned a GGZClientReqError.  For consistency,
	I had this return a GGZReturn (0 or -1) and have the caller
	translate this value.

2002-09-13 19:25  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzd.h: Functions everywhere return an int - the actual
	return types may differ.
	
	To help clean things up, I've defined a GGZReturn enumeration -
	either 0 (GGZ_OK) or -1 (GGZ_ERROR).

2002-09-13 18:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/chess.dsc, combat/combat.dsc, dots/dots.dsc,
	escape/escape.dsc, ggzcards/config/ggzcards-suaro.dsc,
	keepalive/keepalive.dsc, lapocha/lapocha.dsc, muehle/muehle.dsc,
	reversi/reversi.dsc, tictactoe/tictactoe.dsc: Don't list 0 bots
	under BotsAllowed for any games.
	
	There is a slight complication here: ggz_conf doesn't seem to allow
	empty strings (it treats them as null and gives an error).  So
	rather than leave an empty string for games that don't allow bots
	I've commented the line out (which causes ggz_conf to not find it,
	and ggzd will use its default value of "").

2002-09-13 17:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: Don't allocate space for 0 tables in a room. 
	This avoids ggz_malloc giving an error message for a 0-byte
	allocation.

2002-09-13 16:36  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: The declaration of new_exec should come at the
	top of the block in which it is located.

2002-09-13 08:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, table.c, table.h: Implement a table_copy()
	function to make a copy of a table.  This copy can then be used as
	a snapshot without having to worry about locking.
	
	Before this change, a snapshot was made just by saying *new_table =
	*old_table (as opposed to new_table = table_copy(old_table)).  The
	problem with this was that the seat and spectator data, which is
	stored in dynamically allocated arrays, is not copied.	Therefore
	we can (although I found this very hard to reproduce) end up
	accessing stale or invalid data when we try to look at the
	"snapshot" later.
	
	The only down side of this change is that making a snapshot is a
	bit trickier - we have to make sure to call table_free on the
	snapshot when we're done with it.

2002-09-13 08:40  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzd.h: Enable unlimited seats and spectators for GGZD.

2002-09-13 07:49  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, table.c, table.h: The launch event gets its own
	event data.

2002-09-13 07:40  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: The table event gets its own event data structure.

2002-09-13 07:14  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Add disabled code so that net_send_table will send
	the spectator list as well.  This code should probably be enabled,
	but I'm deferring the decision for now.

2002-09-13 07:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/room.c: Give the data for a room event its very own data
	type.

2002-09-13 06:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Made a data structure for the passed-through data
	for the transit player event.

2002-09-13 04:36  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Fix a buglet in two cases: the wrong event data
	size was being passed to event_table_enqueue for both a spectator
	and seat events.

2002-09-13 04:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/chat.c: Convert the chat event (chat_event_callback()) to
	use a special event data form, and pass a function to free that
	data.

2002-09-13 04:20  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, event.c, event.h, room.c, table.c, transit.c:
	Added another parameter to the event_***_enqueue() functions: a
	data free function.  If non-NULL, this function will be used in
	place of ggz_free to delete the event data after the event has been
	handled.
	
	Currently all callers pass in NULL.  However, this should change
	shortly, as use of this feature can make things a lot simpler at
	the calling end.

2002-09-13 03:40  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/event.c: Added a function event_free to free an event and
	its data.

2002-09-13 03:35  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, event.c, event.h, players.c, players.h, room.c,
	table.c, transit.c: Changed the type of the "size" parameter for
	the event functions (which describes the size of the event data)
	from (unsigned) int to size_t.

2002-09-12 23:59  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Made the logic clearer in some GGZEventFunc
	functions: don't confuse the status values from other functions
	with our GGZEventFuncReturn return values.

2002-09-12 23:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/room.c: Make room_event_callback conform exactly to
	GGZEventFunc.

2002-09-12 23:44  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Fixed buglet: in table_seat_event_enqueue, the
	wrong data size was passed in to event_room_enqueue.

2002-09-12 21:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzd.h, net.c, players.c, seats.c, table.c, table.h: Added
	a compile-time option UNLIMITED_SEATS.	If defined (off by
	default), the restriction on the number of seats will be dropped.
	
	This option isn't stable yet, for several reasons:   - The client
	GUI can't handle a lot of seats (at least GTK).    - There are
	locking problems, especially when a table ends.  However, it should
	be good for testing - both of the server and clients.
	
	I also fixed a couple minor bugs.

2002-09-12 20:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.c: In player_transit(), for the LEAVE and
	LEAVE_SPECTATOR transit operations if the person cannot be found at
	the table, try the other operation.  This is necessary to avoid a
	stupid/malicious client from sending an incorrect SPECTATOR tag in
	the <LEAVE> element.
	
	I also check for an error condition: when the player is listed as
	being at the table but cannot be found anywhere.  This would be a
	bug in ggzd - an error is logged and an attempt to correct things
	is made.

2002-09-12 17:45  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzd.h, net.c, seats.c, table.c, table.h, transit.c: -
	Added in macro UNLIMITED_SPECTATORS.  When left undefined (as now),
	  spectators will be stored in a fixed array instead of a dynamic
	one.  - Added macro MAX_TABLE_SPECTATORS (currently 4).  When
	compiling without   unlimited spectators, this is the size of the
	spectator array (the   maximum number that can be at a table).	-
	Changed the GGZTable struct: max_num_spectators is only needed for 
	 unlimited spectators, and the spectator array itself may be either
	  static or dynamic.  - Changed many occurrences of
	table->max_num_spectators to   spectator_seats_num().  - Fixed a
	major bug in spectators_count (fortunately this function isn't	
	used much).  - Added special-cases dependent on
	UNLIMITED_SPECTATORS to   spectator_seats_num and
	transit_find_spectator.

2002-09-12 05:27  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: players.c, transit.c, transit.h: s/char/GGZTransitType/ in
	several places.

2002-09-12 05:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, players.c, players.h: Reworked player_table_leave()
	and player_table_leave_spectator():   - Merged the two functions. 
	We had the idea that the logic should be     moved to the client
	and the LEAVE element should get a SPECTATOR tag,     but the
	server cannot rely on this - a malicous client could fubar     the
	table in several ways by faking his spectator status.  Some fix    
	will be necessary, and this is a first step.  (It also cuts the
	code	 almost in half.)   - If the player's table can't be found,
	don't just silently fail.      Instead claim success - after all,
	the player's not at that table	    any more, are they?    - If we
	think the player has a table but we can't find it, log an error    
	 message, remove the player from the table, and tell the client the
	     leave was successful.

2002-09-12 04:50  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.h: Made the GGZ_TRANSIT_*** values an enumeration
	(they're never used as flags!).

2002-09-12 03:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Removed safe_strdup, which is now basically
	equivalent to ggz_strdup.  Replaced it with ggz_strdup.

2002-09-12 01:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, mod.h: - Bump
	GGZDMOD_NUM_HANDLERS from 9 up to 10, so that GGZDMOD_EVENT_ERROR  
	doesn't cause a segfault.  - Rename GGZDMOD_NUM_HANDLERS to
	GGZDMOD_NUM_EVENTS.  - Put a check in place to avoid segfault if we
	have an internally   generated out-of-range event.  - Have
	ggzdmod_set_handler return a negative value if the calling program 
	 sends an out-of-range event or other invalid parameter. 
	Previously it	just silently failed.  - Note that other ggzdmod
	functions still return void, and may silently	fail.  Also nobody
	checks the return value of most of these functions,   which makes
	debugging a problem.

2002-09-11 21:40  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, table.c, table.h: Fix a few more holes in the
	network code:	- Avoid a sometimes-guaranteed memory leak when
	reading a table     description.    - Avoid letting the client
	write to random memory by giving us bogus      seat numbers.	-
	Avoid a sometimes-guaranteed memory leak when a <TABLE> tag has bad
	     options.

2002-09-11 19:00  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Doh!  Added missing "!".

2002-09-11 10:31  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, players.c: Check whether the network connection
	(GGZNetIO) has valid player data (net->client->data) before doing
	anything with that data.  This prevents many possible server
	segfaults a malicious client could do with just a few characters.

2002-09-11 09:44  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, room.c: Replaced strcmp() with strcasecmp() in many
	places:   - In parsing XML elements and tags (makes debugging
	easier).    - Once when comparing two player names (could be
	important).

2002-09-11 06:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chinese-checkers/ccheckers.dsc,
	ggzcards/config/ggzcards-bridge.dsc,
	ggzcards/config/ggzcards-fortytwo.dsc,
	ggzcards/config/ggzcards-hearts.dsc,
	ggzcards/config/ggzcards-lapocha.dsc,
	ggzcards/config/ggzcards-spades.dsc,
	ggzcards/config/ggzcards-sueca.dsc,
	ggzcards/config/ggzcards-whist.dsc, ggzcards/config/ggzcards.dsc,
	hastings/hastings.dsc, krosswater/krosswater.dsc,
	spades/spades.dsc: Changed some .dsc files to use more compact
	number lists - mostly just to show what can be done.

2002-09-11 05:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: datatypes.h, net.c, parse_opt.c, protocols.h, seats.c,
	seats.h, table.c: Changed the GGZ network protocol so that player
	and bot allow lists are transmitted in a more flexible and legible
	way.  The allow spectator boolean value is transferred as
	"true"/"false".
	
	I also bumped the protocol version up to 8.  This change will break
	backwards-compatability, but only when players play games.  Is
	there a system in place for allowing for backwards-compatability in
	a case like this?  There should be (eventually).

2002-09-11 04:22  Jason Short <jdorje@users.sourceforge.net>

	* tests/: basic.c, ggzdtest.c, logmod.c: Marked some functions as
	static.

2002-09-10 08:42  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, client.c, daemon.c, datatypes.h, err_func.c,
	event.c, ggzdb.c, ggzdb_db2.c, ggzdb_db3.c, ggzdb_pgsql.c, hash.c,
	motd.c, net.c, parse_opt.c, players.c, room.c, table.c, transit.c,
	util.c: Converted all malloc (and friends) routines to ggz_malloc
	(and friends) ones.
	
	This is a change I've been thinking about/working on for a while. 
	In the process, I've fixed several problems and converted several
	heap-allocation routines to stack-allocation ones.  All in all, it
	should be a big step forward.
	
	There is one potential problem.  Some malloc routines, if they were
	to fail, would be recoverable.	In the current code, they may just
	unlock any applicable locks and fail...but eventually they may be
	able to recover fully.	By comparison, under ggz_malloc and friends
	there is no way to avoid exiting after a failed malloc/realloc.
	
	The chance of introducing bugs in this change is small but
	non-negligible.  It will have to be tested closely.

2002-09-10 02:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Free the spectator array when the table is freed.

2002-09-09 19:44  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: Don't exit the server
	if there are any spectators still attached (even if there are no
	actual players).

2002-09-09 12:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, net.h, seats.c, seats.h, table.c, table.h,
	transit.c: Remove the restriction on the number of spectators at a
	table.
	
	- The table->spectators array is dynamically allocated.  It is
	grown	geometrically to reduce time overhead - space overhead will
	be   lower now since we don't have a manditory 8 spectators per
	table.	- table->max_num_spectators stores the size of the
	spectator list for   the table; this value is used for iterating
	over spectator seats.  As   before, a spectator seat with an empty
	name is empty.	- In table_event_callback, we can no longer easily
	use the "temporary"   structure to hold the spectator data for
	passing to   net_send_table_update.  Instead, a pointer to a
	GGZTableSpectator or   GGZTableSeat is passed to
	net_send_table_update.	This should end up   being more robust, and
	will allow this code to work with a dynamically   determined number
	of seats as well.

2002-09-09 06:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/game.c: Made game_send_options_request
	static.

2002-09-09 06:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/spades/engine_func.c: Made num_comp_play() static,
	and #if 0'd it out since it's currently unused.

2002-09-09 06:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/hastings/game.c: Made game_bot_set() static.

2002-09-09 06:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: deck.c, message.h: - Made compare_cards()
	static.  - Added global prototype for broadcast_player_message().

2002-09-09 06:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/dots/: ai.c, game.c: - Made
	game_send_options_request() static.  - Added missing #include
	"ai.h".

2002-09-09 06:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/combat/: game.c, game.h: Mark function parameter
	list as "void" to avoid a compiler warning, and enable stricter
	parameter checking by the compiler.

2002-09-09 06:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/ai.c: Add missing #include "ai.h".

2002-09-09 05:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/game.c, chess/game.h, reversi/game.c,
	reversi/game.h: Mark function parameter list as "void" to avoid a
	compiler warning, and enable stricter parameter checking by the
	compiler.

2002-09-09 05:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzdb.c, ggzdb.h, ggzdb_db2.c, ggzdb_db3.c,
	ggzdb_mysql.c, ggzdb_pgsql.c, ggzdb_proto.h, ggzduedit.c: - Created
	the header file ggzdb_proto.h, which includes prototypes for the  
	ggzdb backend functions.  - Included this file from the DB backend
	source files, and the frontend	 files that call the function. 
	(This allows the compiler to check that   the functions are
	identical in each case, avoiding some possible bugs.) - Removed the
	extern definitions of the variables from ggzdb.c.  - Removed the
	DB_STANDALONE hack.  - Marked some functions in ggzduedit.c as
	static, and prototyed them.
	
	With these changes, ggzd will not compile without any warnings for
	me.  It should also make things cleaner and more stable.

2002-09-09 04:50  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, room.c: Do pointer arithmetic with char* pointers
	instead of void* ones.	This can avoid some compiler warnings (and
	with good reason).

2002-09-09 03:44  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: When a spectator leaves, have ggzdmod-game
	delete the spectator entry instead of erronously replacing it with
	an invalidated entry.
	
	Also, have ggzdmod-game send proper status responses to ggzdmod-ggz
	on player/spectator leaves.  Just like with joins, the mechanism
	for this was already in place...but was unused.

2002-09-09 02:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c, ggzdmod/ggzdmod.c, ggzdmod/ggzdmod.h, ggzdmod/io.c,
	ggzdmod/io.h: Removed the spectator seat limit from GGZdMod.
	
	Now the spectator seat list is just allocated dynamically.  Empty
	spectator seats don't have an entry in the list, so there is a much
	smaller memory overhead.
	
	The function ggzdmod_set_max_num_spectators is no longer needed -
	the max number of spectators (i.e. one higher than the highest
	spectator number) is tracked internally by ggzdmod, and is still
	available through ggzdmod_get_max_num_spectators.  This means
	iterating through spectators is faster, so there is a smalle
	overhead there as well.
	
	Also, if a spectator or player join fails in ggzdmod at the game
	end, instead of failing silently an error code will be sent back to
	ggzdmod-ggz.  The mechanism for this was already in place, but
	before if there was an error ggzdmod-game would just do nothing.
	
	This new system should be much more flexible, and should last us
	for some time.

2002-09-09 02:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: If ggzdmod_set_spectator fails, give the error
	result in the debug error message.

2002-09-09 02:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c: Make sure we have all of the right
	GGZ debugging types (for ggz_debug).

2002-09-09 02:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Clean up
	handle_ggz_spectator_seat_event, and add some assertions to help in
	debugging ggzdmod.

2002-09-09 01:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/tictactoe.dsc: TTT has broken network
	compatability:
	
	1.  The introduction of the stats part of the protocol is not	 
	backwards-compatable.  2.  With the introduction of spectators, the
	handling of moves is done     slightly differently.  I'm not quite
	sure why, but connecting to an	   old server breaks things.
	
	Because of #1 we'll have to bump the proto # for 0.0.6 anyway, so I
	went ahead and bumped it.
	
	NOTE: to preserve compatability, the network portions of the
	statistics code cannot be dependent on compile-time directives for
	0.0.6.

2002-09-08 23:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, common.c, common.h, main.c, net.c,
	play.c: Handle GGZDMOD_EVENT_SPECTATOR_DATA.

2002-09-08 22:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Only seats with valid sockets will
	be broadcast to.

2002-09-08 22:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, main.c, net.c: Remove
	the SUPPORT_SPECTATORS preprocessor macro.

2002-09-08 21:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-fortytwo.dsc, ggzcards-hearts.dsc, ggzcards-lapocha.dsc,
	ggzcards-spades.dsc, ggzcards-suaro.dsc, ggzcards-sueca.dsc,
	ggzcards-whist.dsc, ggzcards.dsc: Add "AllowSpectators = 1" to
	GGZCards .dsc game files.

2002-09-08 21:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: in remove_table(), don't destroy the table data
	until after we've removed all of the players and spectators from
	it.
	
	The specific problem we run into if we do it the other way is that
	after the gametype is reset, ggzd doesn't know whether spectators
	are allowed at the table.  This means, first of all, that
	spectator_seats_num() could fail in remove_table if it's called
	before the gametype is reset (easy to work around).  But it also
	means that when we send the <SPECTATOR> updates to the clients, we
	won't know the number of spectators there either (causing the
	updates to be interpreted incorrectly at the client end).

2002-09-08 08:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, transit.c: Removed the
	'joinspectator' and 'leavespectator' result tags.  Instead 'join'
	and 'leave' are simply used instead.
	
	The handling for these was already identical at the client end.
	
	At the server end, this allowed the removal of the functions
	net_send_table_join_spectator and net_send_table_leave_spectator,
	and the merging of some other code that is now identical between
	spectators and players.

2002-09-08 03:59  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: seats.c, table.c, transit.c: Further spectator fixes:	 -
	The number of spectator seats isn't actually MAX_TABLE_SIZE-1. 
	It's	 either 0 or MAX_TABLE_SIZE, depending on whether
	spectators are	   allowed.  Checking allow_spectators requires
	locking, unfortunately.    - This change causes E_TABLE_FULL to be
	emitted if you try to watch	 a table whose game doesn't support
	spectators.  This is probably not      the correct error, since the
	problem may be that spectators aren't	   supported at all (of
	course the core clients shouldn't allow this,	   but ggz-gtk
	currently does).  I added a comment.	- Because we have to check
	game_types[table->type].allow_spectators to	 find the number of
	spectator seats, we must do this before destroying	the table
	data.

2002-09-08 03:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Re-enable spectator support for
	GGZCards.

2002-09-08 03:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Changed
	net_broadcast_global_cardlist_message to send the cardlist to
	spectators also.

2002-09-08 03:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c, ggzdmod/ggzdmod.c, ggzdmod/ggzdmod.h: Renamed
	ggzdmod_set_num_spectators() as ggzdmod_set_max_num_spectators, to
	match the naming for the "get" variant.
	
	Also I renamed _ggzdmod_set_num_spectators similarly.

2002-09-08 03:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, seats.c, seats.h, table.c, transit.c: Renamed
	spectators_count() as spectator_seats_num, to correspond to the
	related function for seats.  This function returns the total number
	of spectator seats, which is the maximum number of spectators
	possible.
	
	The function spectators_count() is not activated (#if 0'd out), but
	it returns the number of spectators (i.e. occupied spectator seats)
	at the table.  The only use I see for this is in table_check(), so
	I've left it out for now.

2002-09-08 02:37  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: In table_remove, make sure we remove all the
	spectators from the table in addition to all of the regular
	players.

2002-09-08 00:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Doh!  We have to make sure to skip
	over the empty spectator seats when iterating over spectators.
	
	In game_do_move, there's a potential problem because we return -1
	if there's ever a network error.  But at the end of the function is
	where the game logic (incrementing the move, etc.) takes place.  So
	although this shouldn't be a fatal error (it's just one player gone
	missing), the table cannot recover.

2002-09-07 23:58  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: A few cleanups to the GGZdMod spectator code:
	
	- More rigorous checking of the parameters given to
	ggzdmod_set_spectator.	  There is no need for games to change any
	spectator data.  - On an IO error in _ggzdmod_set_spectator, return
	rather than changing   the spectator entry (this should probably be
	done for _ggzdmod_set_seat,   too, even though it's pretty much a
	fatal error).

2002-09-07 23:50  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: table.c, table.h, transit.c: Fixed a significant spectator
	bug, and did a few related cleanups:
	
	- When a spectator leaves a spectator seat, reset the name to empty
	("").  - Add a comment about this invariant to the
	table->spectators field.  - Avoid a buffer read underflow when a
	spectator index of -1	(GGZ_SEATNUM_ANY) is given to
	transit_spectator_event_callback.  - Add the spectator index to the
	debug message for each	 transit_send_spectator_to_game.
	
	This fixes many of the spontaneous table deaths that are seen when
	using spectators.  However, I think the deaths are actually caused
	by another bug, and they just don't happen unless the spectator
	indices grow.  We shall see.

2002-09-07 22:17  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Use ggzdmod_get_max_num_spectators
	instead of ggzdmod_count_spectators to iterate over the existing
	spectators.

2002-09-07 22:14  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Added documentation on
	ggzdmod_count_spectators, explaining why the typical user probably
	wants to use ggzdmod_get_max_num_spectators instead.

2002-09-07 21:47  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, mod.h: - Renamed
	ggzdmod_get_num_spectators as ggzdmod_get_max_num_spectators.  -
	Added some more explanation to the documentation on this function. 
	- Renamed ggzdmod->num_spectators as ggzdmod->max_num_spectators.

2002-09-07 19:16  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Instead of <JOINSPECTATOR/> and <LEAVESPECTATOR/>,
	make the XML protocol use <JOIN SPECTATOR='true'/> and <LEAVE
	SPECTATOR='true'/>.
	
	This gives sufficient backwards-compatability: now if you try to
	"watch" a game on a server that doesn't support spectators, you'll
	just join the game as a player.  The other way, if you did this the
	client would become fubar.
	
	Note that this *does* break compatability with the CVS code of the
	past several days.  But this is a small price to pay.

2002-09-07 15:11  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: net.h, transit.c: - forgot to send result for new leave
	operation to client

2002-09-07 11:52  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/table.c: - send proper data to client upon
	GGZ_UPDATE_SPECTATOR_LEAVE

2002-09-07 11:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/table.c, ggzdmod/ggzdmod.c: - fix semantics for spectator
	updates: allow NULL name to replace a valid name,   and a valid
	name to replace a NULL name, but no other combination - don't care
	about whether a table is going to be empty when leaving as
	spectator - fix possible segfault in ggzd-side
	GGZDMOD_EVENT_LEAVE_SPECTATOR, the same   could be done for a
	normal leave event too, but we let this as is

2002-09-07 09:21  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: net.c, players.c, players.h, transit.c: - handle seat
	leave different from spectator leave

2002-09-07 05:38  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.c: GGZ_TRANSIT_LEAVE_SPECTATOR should use
	table_find_spectator(), not table_find_player() to determine the
	spectator seat index number.

2002-09-06 20:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Uncomment ALLOW_SPECTATORS from
	ggzcards, so spectators are not supported (just yet), and
	incidentally the code can now compile.
	
	The .dsc files will have to be changed to allow spectators, as
	well.  This should happen shortly.

2002-09-05 22:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: keepalive.cpp, keepalive.h,
	world.cpp, world.h: - separate spectator data event for keepalive

2002-09-05 22:06  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: muehleserver.cpp, muehleserver.h: - use
	separate data event for Muehle

2002-09-05 22:05  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/ggz/: ggzgameserver.cpp, ggzgameserver.h: -
	use separate spectator data event for Muehle

2002-09-05 09:27  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - prepare configuration for libdb 4.0 - but don't
	allow this yet, until some libdb guru nods

2002-09-04 21:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: ggzcards/common.h, keepalive/src/keepalive.cpp,
	keepalive/src/keepalive.h, muehle/ggz/ggzgameserver.h: - enable
	spectator support by default for all games (there are 4 of them,
	not 3, wow)

2002-09-04 20:48  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/keepalive.dsc,
	game_servers/muehle/muehle.dsc, game_servers/tictactoe/game.c,
	ggzd/datatypes.h, ggzd/net.c, ggzd/net.h, ggzd/parse_opt.c,
	ggzd/players.c, ggzd/players.h, ggzd/protocols.h, ggzd/seats.c,
	ggzd/seats.h, ggzd/table.c, ggzd/table.h, ggzd/transit.c,
	ggzd/transit.h, ggzdmod/ggzdmod.c, ggzdmod/ggzdmod.h, ggzdmod/io.c,
	ggzdmod/io.h, ggzdmod/mod.h, ggzdmod/protocol.h: - let's fetz: *
	spectator support for ggzd * spectator support for ggzdmod * games
	supporting spectators: TTT, Muehle, Keepalive

2002-09-04 07:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, TODO: Added TODO for
	GGZCards.

2002-09-03 23:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/client.c: Remove an assertion in the
	client to allow more than one person to "play" (a card from a hand)
	at the same time.

2002-09-03 19:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/hearts.c: Minor cleanups to hearts
	code.

2002-09-03 19:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: spades.c, suaro.c: Fix non-matching
	prototypes for several functions.

2002-09-03 06:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c, common.h, main.c,
	ai/Makefile.am, ai/spades.aispec, ai/suaro.aispec, games/spades.c,
	games/suaro.c: Allow AI modules to actually *be* modular.
	
	Each AI module has a .aispec file that describes it.  The game
	reads all .aispec files in $(GGZDDATADIR)/ggzcards, and chooses one
	that will work for the current game.
	
	Issues:   - If no module provides support for the current game, the
	hard-coded     Random AI module is used.  This is hard-coded
	because (1) it needs to     always be present and (2) it will then
	work under "make test".    - If more than one module is present for
	a game, one of the modules	will be picked arbitrarily. 
	Eventually the user should get to pick	    their AI (sometimes!). 
	  - If an AI program crashes, the Random AI will be restarted in
	its	 place.  If the random AI program crashes, that would be
	Bad.	- The AI modules will not always work under "make test",
	since their	 location within GGZDDATADIR is hard-coded.  Once
	you do	    "make install", then things will work under "make
	test".	  - Little error checking is done to make sure the .aispec
	files are      correct.  If one pointed to an invalid executable,
	for instance, the      table would probably become fubar.

2002-09-02 06:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games.c: Fixed a major memory bug causing a
	segfault when the player has to choose a game.

2002-09-02 04:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Fix a bug causing a segfault when
	a seat's player was -1 (i.e. not a "real" player).
	
	There may be problems with this and the spectator code, since
	"player -1" is a valid spectator.

2002-09-02 01:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Put "#ifdef GGZSPECTATORS" around
	spectator-specific code.

2002-08-22 09:05  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, tictactoe.dsc: - use new format
	for spectators: Similar to AllowLeave, we do now have an  
	AllowSpectators which can be zero (default) or one.  - use
	separated data event for spectators, who can only synchronize, not
	move   or query the statistics.    Along with this, some functions
	have been changed to use fd's instead of    seats.

2002-08-21 00:29  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Made some functions static.

2002-08-21 00:22  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/elo.c: Made elo_compute_expectations() static.

2002-08-20 22:48  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Changed -I<directory> to -isystem<directory> to
	avoid warnings in gcc3.

2002-08-20 22:42  Jason Short <jdorje@users.sourceforge.net>

	* acinclude.ggz: Doh!  Fix typo in "History".

2002-08-20 22:40  Jason Short <jdorje@users.sourceforge.net>

	* acinclude.ggz: Changed -I<directory> to -isystem<directory> to
	avoid warnings in gcc3.

2002-08-19 23:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/keepalive/src/: keepalive.cpp, keepalive.h: #ifdef'd
	out spectator-specific code, so that keepalive will compile without
	applying the spectator patch.
	
	I used "#define SUPPORT_SPECTATORS", which is what ggzcards uses as
	well.  Perhaps this should be put into ggzdmod.h, so that all
	server code (ggzd and game servers) can enable/disable it easily.

2002-08-19 23:26  Jason Short <jdorje@users.sourceforge.net>

	* tests/logmod.c: Avoid a (probably harmless) error message from
	passing a pointer to an enumerated value instead of a pointer to an
	integer to ggz_read_int().

2002-08-12 20:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: ggzd.postinst, ggzd.templates: - Debconf support for the
	GGZ server
	
	This is how it works: Whenever someone installs ggzd (or
	reconfigures it via dpkg-reconfigure ggzd), a dialog box pops up
	and asks for the user's admin name and email address (which are
	then injected into ggzd's config file), and for the games to be
	installed.
	
	Two notes: - the game menu is vapourware currently, maybe it
	doesn't even belong here, but	it's a start.  - the priority of
	the questions is 'medium'. Since too many questions during   system
	installations suck, this could be set to 'low'. But only if folks  
	complain (after all, there's 'high' and 'critical' at the other
	end).
	
	Debconf can be fully localized, the template files must then be
	called ggzd.templates.$LANG.
	
	Note that in the future, a distributor-independent configuration
	panel, maybe based on ncurses or something, would be cool.

2002-08-12 20:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: ggzd.files, ggzd.postrm: - some more merging from files
	which were lying around:  * correctly purge /var/ggzd when removing
	with --purge  * the entry.room file belongs to the server, so it is
	not too useless when the    game servers are not installed

2002-08-12 19:57  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: muehleserver.cpp, muehleserver.h: - the
	muehleserver class, which inherits from ggzgameserver, can now
	support   spectators

2002-08-12 19:56  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/ggz/: ggzgameserver.cpp, ggzgameserver.h: -
	another patch which was not merged in yet: spectator support for
	muehle

2002-08-10 21:03  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/tictactoe/game.c: - spectator support, currently
	disabled by default - protocol change for TTT: Always send the
	player number along with the move.
	
	In cs theory, this is a context sensitive -> context free
	transition.

2002-08-07 18:32  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Doxyfile: Updated Doxyfile:	- Name: GGZDMOD -> GGZdMod 
	 - Version: 0.0.5pre -> 0.0.6pre   - Enable Latex output.

2002-08-07 18:05  Jason Short <jdorje@users.sourceforge.net>

	* man/ggzdmod.h.3: Updated ggzdmod documentation.

2002-08-07 08:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Doh!	Undefine
	SUPPORT_SPECTATORS.

2002-08-06 03:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, common.c, common.h, message.c,
	net.c: Further cleanups allowing spectators to work more fully.

2002-08-05 18:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, main.c, net.c, net.h:
	Add partial support for spectators.

2002-08-05 18:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Assert that the bid value
	is within a valid range.

2002-08-02 06:57  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggz_stats.c: Avoid free'ing a NULL object in ggz_stats.

2002-08-02 06:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Fix stats handling in tic-tac-toe
	to correctly handle draws.

2002-08-02 05:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai/game.c, ai/game.h, ai/main.c,
	client/Makefile.am, client/client.c, client/client.h: Updated the
	client to use the new ggzmod.
	
	This was a bit of a pain, since the server-side AI runs as a
	separate process that uses the same client code, but does not now
	use ggzmod.  This was solved (for now) in a rather inelegant way
	using preprocessor #definitions in the client code.

2002-07-29 20:25  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: main.cpp, muehleserver.cpp: - forgot to
	commit those last time. Now my CVS should be clean again, let's  
	start to hack.

2002-07-20 18:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: Avoid a buffer underflow when a file in the
	games or rooms directories is too short.

2002-07-15 22:49  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/ggzdb_mysql.c: - MySQL should now be thread-safe too.
	
	The only problem is that there are differences between 3.x and 4.x,
	and the documentation, especially concerning the threading code, is
	poor to non-existing :(

2002-07-13 12:20  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzdb.c, ggzdb.h, ggzdb_db2.c, ggzdb_db3.c,
	ggzdb_mysql.c, ggzdb_pgsql.c, ggzduedit.c, parse_opt.c: - Read SQL
	parameters from ggzd.conf - PostgreSQL support is now completely
	thread-safe for ggzd (not yet for   ggzduedit but who cares), and
	uses a connection pool for efficiency - On the downside, I broke
	MySQL :-)

2002-06-30 09:57  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/tictactoe/game.c: - finally, we get some stats for
	TTT :) Now the Gtk+ client needs an interface for this (a simple
	message box will do)

2002-06-29 17:52  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/tictactoe/game.c: - dummy statistics functionality
	for TTT server.  This can be toggled via a #define.  It does
	however not use ggz_stats yet because I can currently not test any
	games :(

2002-06-09 20:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/hearts.c: In hearts, there can never
	be a tie.  So if you reach the target score and there is a tie, you
	have to play another hand.

2002-06-09 20:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Make sure the option text for
	rated_game is correctly handled.

2002-06-09 08:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards-spades.dsc: Specify
	additional options for Spades in the GGZCards-Spades room.
	
	Now that player ratings are available in the spades room, it is
	more important that players play under a fixed set of rules.  Also,
	the AI (which also gets a rating) cannot understand many of the
	options.

2002-06-09 08:20  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: elo.c, ggz_stats.c, ggzdmod.c, io.c: Cleaned up
	#includes in ggzdmod.

2002-05-25 23:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - revert the -pthread "typo"

2002-05-23 22:28  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - fix typo in ggzd's configure.in: -lpthread
	instead of -pthread

2002-05-21 21:20  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: ggzdb_mysql.c, ggzdb_pgsql.c: - hum, partly revert some of
	the changes: handle is key, not user_id within	 ggzd - implement
	auto-counting serial type for pgsql

2002-05-21 09:22  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: ggzdb_mysql.c, ggzdb_pgsql.c: - fix SQL support.  MySQL
	handles user id's automatically, PostgreSQL will do the same, but
	I'll have to look up again how sequences work (auto_increment is
	not supported there)

2002-05-20 22:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: keepalive.cpp, world.cpp: - fixes
	for spectator join/leave events

2002-05-20 21:52  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: spectator.cpp, spectator.h: - small
	helper classes to store spectator data

2002-05-20 21:52  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: Makefile.am, keepalive.cpp,
	keepalive.h, main.cpp, player.cpp, protocol.h, world.cpp, world.h:
	- keepalive game server gets spectator support

2002-05-19 13:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/keepalive.dsc: - for now, have fixed
	values for the maximum number of spectators.  Later we can support
	'*' again.

2002-05-15 23:32  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_stats.c, elo.h: A few more fixes and cleanups to
	the ggz_stats and elo code:   - Fixed a typo in the ELO
	documentation.	  - Separated the locking/unlocking code into
	functions, lock_stats()      and unlock_stats().    - When
	recalculating ratings, first lock the database, re-read them,	  
	recalculate, write them, then unlock the database.  This should
	allow	   players at more than one table (i.e. bots) to work
	properly.

2002-05-15 23:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c: Switched two ggzdmod_log calls to
	ggz_debug ones.  Called ggz_debug_cleanup at the end, with a memory
	check involved.  Make sure to send out ggz_debug output to stderr
	if ggzdmod_log won't take it.

2002-05-15 21:45  Josef Spillner <dr_maux@users.sourceforge.net>

	* .cvsignore: - shut up autom4te

2002-05-14 10:34  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/: DESIGN, README.keepalive: - the design
	file explains what kind of game this is going to be

2002-05-14 10:34  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: player.cpp, player.h, protocol.h,
	world.cpp, world.h: - protocol update - avatar deaths and player
	types are now broadcasted too

2002-05-13 21:00  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - All those who still use autoconf < 2.53b are all
	weenies ;)

2002-05-13 20:46  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Changed the example code to reflect the change
	from passing in the player number (int*) to passing the full seat
	(GGZSeat*) to the join and leave events.
	
	The SEAT event still is not covered in the sample code; but then,
	most of our games don't use it either.

2002-05-13 10:44  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: keepalive.cpp, player.cpp,
	world.cpp: - handle players graves correctly

2002-05-12 21:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, main.c: Removed
	handle_join_event() and handle_leave_event().  In their place, I've
	written a handle_seat_event() function that handles all seat-change
	events (EVENT_JOIN, EVENT_LEAVE, and EVENT_SEAT).

2002-05-11 18:08  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/protocols.h: 
	- Put GGZ protocol version back

2002-05-07 18:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: elo.c, elo.h, ggz_stats.c: Use float values to track
	player ratings, to avoid roundoff errors.

2002-05-07 18:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.h, games/hearts.c, games/spades.c:
	Added a game option to hearts for the target score.

2002-05-07 10:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, message.c: Several fixes for
	GGZCards use of ggz_stats lib:	 - Make sure we call
	ggzstats_new_game before calculating a new game's     stats, so
	that all data is reset (otherwise the first game will be    
	calculated fine, but ggz_stats will fail on successive games).	  -
	Make sure game.stats is non-NULL before using it.

2002-05-07 10:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c, game_servers/ggzcards/common.h,
	game_servers/ggzcards/main.c, game_servers/ggzcards/message.c,
	ggzdmod/Makefile.am, ggzdmod/elo.c, ggzdmod/elo.h,
	ggzdmod/ggz_stats.c, ggzdmod/ggz_stats.h: Redid much of the
	ggz_stats system:   - Moved the ELO calculation code off into its
	own file.    - Changed the stats interface to be object-oriented,
	so that it will      work cleanly with ggzdmod.    - Added record
	information (W-L-T) to the stats code & interface.    - Cleaned up
	the interface and code extensively.    - Changed GGZCards to match
	the new interface.

2002-05-07 04:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, net.c, net.h,
	games/bridge.c, games/spades.c, games/suaro.c: Changed the
	prototype of net_send_hand and send_hand so that the "reveal"
	parameter is split into two boolean parameters: show_fronts and
	show_backs.

2002-05-06 07:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: err_func.c, err_func.h, event.c, parse_opt.c: Changed
	ggzd's *debug* messaging system (but not the logging system) to use
	libggz's debugging routines:
	
	  - Replaced err_doit with a slightly more generic debug-output
	pair of
	    functions: send_debug_output does the dirty work, while
	debug_handler
	    formats the message.
	  - In logfile_initialize, debug_handler is registered as the
	debugging
	    output handler for libggz's debugging routines.  ggz_debug_init
	is also
	    called, and is given no debugging types of output file.
	  - I've rewritten log_msg so that it can call debug_handler as its
	    backend handler (since debug_handler uses a different, simpler
	    interface than err_doit; most of err_doit's dirty work is now
	done
	    by libggz directly).
	  - The GGZ_DBG_XXX macro definitions have been changed from flag
	masks to
	    strings (the same strings ggz_debug uses as its debugging
	"type").
	    Thus the interface for ggz_debug is the same as dbg_msg was.
	    Unfortunately, since the log messages do *not* work in the same
	way,
	    there's now an inelegant disparity between the two.
	  - To keep noise to a minimum, I just added macros re-defining
	dbg_msg,
	    err_msg, err_msg_exit, err_sys, and err_sys_exit to their
	libggz
	    equivalents.  The interfaces are identical.
	  - I removed the err_sock function, which currently is unused and
	should
	    be rewritten in any case.
	  - Since it's no longer used, I've removed the dbg_types bitfield
	from
	    the LogInfo struct.
	  - Unfortunately, since ggzd itself no longer knows which types of
	    debugging are enabled (only libggz does, and it's not telling),
	some
	    shortcuts had to be removed.  In event.c, all of the
	event_***_spew
	    functions are now called whether or not GGZ_DBG_LISTS debugging
	is
	    enabled (although only if DEBUG is defined).  This is an easy
	    trade-off.
	  - The dbg_types array is no longer a LogTypes struct, but rather
	a NULL-
	    terminated list of strings (debugging types).  Thus,
	parse_dbg_types
	    just compares each debugging type listed in the config file to
	the
	    debugging type name.  The "all" case is handled manually.
	  - It is no longer possible to specify the debugging types on the
	    command line with the popt-style argument.	Since the argument
	itself
	    was the *entire mask* of debugging types, it probably wasn't
	too useful
	    anyway.
	
	Using libggz's debugging system has several advantages, small and
	large:	 - Slightly less code in ggzd.	  - Nifty outputing
	(listing the type of the message).    - Other libggz messages will
	also be handled.  Of course, the third one is the big winner -
	messages generated internally by libggz can now show up in the
	debugging logs.
	
	There are some issues with the system:	 - The disparity between
	handling of debug and log messages is	  unfortunate.	Handling
	log messages in a similar way will be tricky,	  since libggz
	would need a ggz_log function and the current log_msg	  uses
	different priorities at times.	  - Debugging isn't initialized
	until the debugging types are loaded from      the config file AND
	ggz_debug_init is called in logfile_initialize().      This means
	debugging of any sort isn't really set up until near the      end
	of the loading process, and many debug messages will be lost.
	
	From the end-user's perspective, there should be only two changes
	apparent as a result of this change:   - The "Creating a new room"
	messages will no longer pop up when you run	ggzd on the command
	line.  This is because debugging isn't initialized     yet (see
	above).    - Each debugging line will have the debugging type
	included, near the	beginning.

2002-05-06 06:52  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/hash.c: To determine the average number of hashes per hash
	list, instead of dividing the total by GGZ_DBG_LISTS it would
	probably be better to divide by HASH_NUM_LISTS :-).

2002-05-05 23:51  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.h, ggzdb.c, ggzdb.h, ggzdb_db2.c, ggzdb_db3.c,
	ggzduedit.c, login.c, players.c, players.h, room.c: - Converted old
	UID field to be just a login status indicator - Added user_id to
	database structure - Added ggzdb_player_next_uid() to retrieve the
	next UID we should assign   - Calls db specific function
	_ggzdb_player_next_uid() - Added _ggzdb_player_next_uid() for
	db2/db3   - Uses a reserved player name "&nxtuid&" - New users are
	assigned a unique user id at first login - ggzduedit altered to
	display/edit user ids

2002-05-05 23:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai/game.c, ai/game.h, client/client.c,
	client/client.h: Updated client/ files based on changes in the
	gtk-games module, and changed the AI code to match the new
	interface.

2002-05-05 22:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/main.c: If client_initialize() failes
	(returns -1), just send an error message and exit the AI client.

2002-05-05 22:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common/shared.h: Avoid a compiler warning
	if TRUE/FALSE/MIN/MAX have already bee defined.

2002-05-05 20:43  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: client.c, net.c, net.h, players.c, players.h, seats.h,
	table.c, table.h, transit.c, transit.h: 
	- Remove old game data machinery:   * _net_handle_data(),
	_net_send_string(), net_send_game_data(),   player_msg_to_sized(),
	player_msg_from_sized()   * GGZTable.transit_fd,   * fd argument to
	transit_player_event()	 * packing of fd into player transit event 
	 * creation of socketpair in transit_send_seat_to_game()
	
	- New direct game connection mechanism:   * New function
	client_create_channel() to lookup correct player and	 assign
	channel fd to player->game_fd	* Call client_create_channel() from
	client_end_session() if the	client is of type
	GGZ_CLIENT_CHANNEL   * Added an fd member to GGZTableSeat   * Set
	seat.fd before calling transit_seat_event()   * Set player->game_fd
	to -1 after calling transit_seat_event() since	   the fd has now
	been passed onto the game module
	
	- Merge player_loop() functionality into client_loop() - Removed
	old player_loop() - Call net_disconnect() explicitly from
	client_loop(), not from player_logout() - Do updating of
	state.players in client_new(), not player_logout() - Have
	player_logout() close the channel if it's still open - Always call
	net_send_logout() from _net_handle_session() since we	want to
	send </SESSION> to all client connections, but do it *after*   the
	call to client_end_session() so that the channel can get created  
	first if it's a channel client - Tweaked player_updates() to remove
	uncessary checks - Don't error if we try to leave a table that has
	already been removed

2002-05-05 09:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggz_stats.c: Changed two additional fprintf() calls to
	ggz_error_sys() ones.

2002-05-05 09:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, main.c: - Removed a spurious
	printf.  - Added DBG_GGZSTATS to the list of debug types for
	ggz_debug.

2002-05-05 08:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Init the ggz_stats team listings,
	so that ratings can be accurately (well, relatively so)
	recalculated for team games.

2002-05-05 08:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_stats.c, ggz_stats.h: - Removed unused code for
	different rating types (which may eventually be   added back in,
	but in the far future).  - Fixed a buglet in counting of team
	winnings.  - Changed a malloc() to ggz_malloc().  - Changed all
	ggzdmod_log() calls to ggz_debug() and friends, using	debugging
	type DBG_GGZSTATS (defined in ggz_stats.h).

2002-05-05 07:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/suaro.c: If we have to pass, don't
	consider this as the same as if the minimum bid we can make is 0 -
	that leads to a segfault.

2002-05-05 03:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/game.c: Added more debugging output.

2002-05-05 02:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, message.c,
	config/ggzcards-bridge.dsc, config/ggzcards-fortytwo.dsc,
	config/ggzcards-hearts.dsc, config/ggzcards-lapocha.dsc,
	config/ggzcards-spades.dsc, config/ggzcards-suaro.dsc,
	config/ggzcards-sueca.dsc, config/ggzcards-whist.dsc,
	config/ggzcards.dsc: It is now a game option whether or not to play
	a "rated" game.  For now, this option is set in the config files:
	all specific-game games are always rated (?), while the
	general-game GGZCards game is unrated (as it needs to be).

2002-05-05 02:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c, ggzdmod/ggz_stats.c,
	ggzdmod/ggz_stats.h: -Removed the ggzd_set_module function from
	ggz-stats.  - The file names used are now fixed.  This works quite
	transparently,	 since games are provided with their own working
	directory.  - GGZCards doesn't call this function anymore,
	obviously.

2002-05-05 02:22  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/datatypes.h, ggzd/parse_opt.c, ggzd/table.c,
	ggzdmod/ggzdmod.c, ggzdmod/ggzdmod.h, ggzdmod/mod.h, tests/basic.c,
	tests/ggzdtest.c: Changed ggzd/ggzdmod-ggz to provide games with a
	reasonable working directory.
	
	  - ggzdmod_set_module takes a new parameter, pwd, which is the
	working
	    directory to provide the game with.  This parameter may be
	NULL.
	  - When launching a game, after forking ggzdmod will change
	directory to
	    the given working direcory (if specified).
	  - Yes, Brent, I remembered to free the pwd on ggzdmod_free().
	
	  - ggzd creates a working directory for each game as
	    $(opt.data_dir)/gamedata/$(game_info->name).  This string is
	generaetd
	    when the game is loaded and stored in the GameInfo's data_dir
	field
	    (newly created).  check_path is also called to generate this
	directory.
	
	The most immediate effect of this change is that the ratings
	tracking that GGZCards uses should now work reliably.  In the long
	term, it should provide a nearly transparent way for games to save
	and load game files and meta-data.

2002-05-05 01:46  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: Makefile.am, control.c, util.c, util.h: Moved check_path()
	into a new file set, util.[ch].
	
	This code needs to be used outside of control.c, and there's no
	other good place for it.

2002-05-03 22:41  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - configure with --with-database=mysql or
	--with-database=pgsql

2002-05-03 22:39  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzd.conf.in, ggzdb_mysql.c, ggzdb_pgsql.c: -
	here come the NOT YET THREADSAFE database files for PostgreSQL and
	MySQL

2002-05-03 20:49  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggz_stats.c: Removed some unused variables.

2002-05-03 10:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, common.c, common.h, deck.c,
	game.c, games.c, main.c, message.c, net.c, options.c, play.c,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/suaro.c: A quick conversion to get the
	GGZCards server to use ggz_debug and friends instead of
	ggzdmod_log.  A debug handler function is registered with libggz,
	and calls ggzdmod_log to pass the output on to GGZ.
	
	This system makes for very convenient logging, but at the front
	(easy to code) and the back (easy to read and control).  But it
	does have a price: for instance a message logged by the AI goes
	through (at least) 4 different printf-style formatting runs: 1 when
	ggz_debug is called in the AI process, 1 when ggzcards reads this
	from the error socket, 1 when ggzcards passes it to ggzdmod, and 1
	when ggzd puts the final thing together to send to the debug file. 
	Ouch!

2002-05-03 07:44  Jason Short <jdorje@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am: Bumped the version number
	up to 0.0.6pre, and added back in stuff marked "put back in for
	0.0.6" (namely, the tests/, game_servers/keepalive/, and
	game_servers/escape/ directories).
	
	Some of this stuff may need to be taken back out for 0.0.6 (though
	I think tests/ should stay), but at least it will get a chance to
	be worked on easily...

2002-05-03 06:07  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: client.c, login.c, login.h, net.c, players.c, players.h: 
	- Cleaned up player/client logout a bit - Remove unnecessary
	logout_player() function

2002-05-03 05:50  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Remove GGZNetIO.done since it's no longer necessary

2002-05-03 05:49  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: client.c, client.h, net.c, players.c: 
	- New function client_set_type() to set client connection type -
	Don't use net->done as a signal for ending the session - When
	handling <SESSION>, don't call logout_player() unless the   client
	type is GGZ_CLIENT_PLAYER - When handling <SESSION>, call
	client_end_session() - Stub support for <CHANNEL> tag

2002-05-03 05:17  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, chat.c, client.c, client.h, control.c,
	event.c, ggzd.h, login.c, net.c, net.h, parse_opt.c, players.c,
	players.h, room.c, table.c, table.h, transit.c: 
	- Split out some of the GGZPlayer functionality into a new
	GGZClient   object (since we'll soon have clients connecting that
	aren't	 players) - Use new GGZAuthData structure for storing
	name/password for <LOGIN>

2002-05-02 19:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/bid.c: Doh!  A fix to the fix, to prevent
	overwriting of the game state when it has been modified by the
	game's next_bid() function.

2002-05-02 18:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/bid.c: - Reversed a change made earlier to
	the bidding system that broke Suaro and   Bridge.  I also addeded a
	comment explaining the breakage.  - Increment the bid_count before
	calling the game's handle_bid function.

2002-05-02 08:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/client.c: Updated client.c from
	gtk-games module.

2002-05-02 06:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, message.c, net.c:
	Changed ggzcards to use ggz_stats for ELO rankings.
	
	With all the caveats about the poor implementation of ggz_stats,
	and the unfinished API it uses, this is pretty damned cool.

2002-05-02 06:29  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_stats.c, ggz_stats.h: Fixed ggz_stats so that it
	actually works.
	
	Now _well_, to be sure, but it is a good prototype.  There are, in
	fact, a huge number of issues with the stat keeping:
	
	  - The stats kept are nothing like what is eventually planned. 
	Currently
	    it is only possible to save/retrieve a player rating, which is
	updated
	    using ELO.	I hope to use this code to evolve a more permanent
	API
	    that can do all of what we want.  All others should consider
	this code
	    very volatile (I can move it out of ggzdmod/, if desired).
	  - The stats are stored in a ggz_conf file.  This is about the
	worst,
	    most inefficient form possible.  To be useful on a larger scale
	they
	    need to use a real database.  (I did add locking code.)
	  - The ggz config file must be created somewhere.  Where?  Really,
	there
	    is no way to know, so I just created it in the current working
	    directory.	This should be changed upstream, so that when the
	game is
	    launched its working directory is somewhere it can write to (in
	/var
	    or wherever).  This will allow other cool things, such as saved
	games,
	    etc.

2002-05-02 04:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c: Add the file descriptor to the
	parameters of the ggz socket error handler, es_error().  This
	avoids a compiler warning.  Currently the parameter remains unused.

2002-05-01 08:08  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: The list returned by ggz_conf_read_list is
	already NULL-terminated (it's official now!), so there's no need to
	realloc the executable arglist for a table to manually do this.

2002-05-01 05:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, play.c: Move the
	broadcast of a play out of the main play code (in play.c) and into
	the game's handle_play function.

2002-05-01 04:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/bridge.c: Have bridge_handle_play()
	call game_handle_play().

2002-04-30 07:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/client.c: Updated client files from
	the gtk-games module.

2002-04-30 07:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/: client.c, client.h: Updated client
	files from the gtk-games module.

2002-04-30 06:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, bid.h, common.c, common.h,
	play.c, play.h, ai/spades.c, games/bridge.c, games/fortytwo.c,
	games/hearts.c, games/lapocha.c: Various minor (and not-so-minor)
	cleanups.  _Very_ various.

2002-04-30 04:08  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/login.c: Change a few strcpy, and one strncpy call to
	snprintf.
	
	This should fix several problems:   - Buffer overflow from too-long
	password (untested).	- Another buffer overflow from too-long
	name.	 - Unterminated name (since strncpy does not terminate).
	
	The code still needs a good audit (I've basically just replaced the
	offending function calls with snprintf), but this should fix the
	worst cases (and possibly all).

2002-04-30 00:59  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: hash.c, login.c: "Fixed" two more instances of strcpy():  
	- I changed a second one in login_player() to use snprintf, just
	like	 the first one (in login_player).    - I removed a harmless
	strcpy in hash_player_add by just using strdup	    instead of
	malloc+strcpy.

2002-04-30 00:47  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/login.c: Fix a rather hideous buffer
	overflow/non-termination problem in ggzd.
	
	If a player logs in with a name longer than MAX_USER_NAME_LEN
	characters, currently the length is unchecked.	In login_player()
	the name is just copied over onto the database record with strcpy,
	and it's also passed in to the hash code which does the same.
	
	I've partially fixed this.  I fixed the strcpy() call in
	login_player() to use snprintf as well.  But I have not fixed any
	other overflow problems (there are still a lot of strcpy calls in
	ggzd, and most of them are probably bad); rather, I just terminated
	the name manually after MAX_USER_NAME_LEN characters in
	login_player().

2002-04-29 20:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/sueca.c: In Sueca, display the trump
	prominently.

2002-04-29 20:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: Makefile.am,
	ggzcards-fortytwo.dsc, ggzcards-fortytwo.room, ggzcards-sueca.dsc,
	ggzcards-sueca.room, ggzcards-whist.dsc, ggzcards-whist.room: Added
	rooms for Forty-Two, Sueca, and Whist.
	
	Things are getting a bit crowded...

2002-04-29 20:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, options.c: Some fixes to option
	handling so that games without options are playable.
	
	This may break games that do more than one round of options setting
	- although there are no such games currently.

2002-04-29 08:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Add the option for a
	neverending game in spades.

2002-04-29 07:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: net.c, play.c, ai/game.c, ai/game.h,
	client/client.c, client/client.h, common/protocol.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Changed the
	protocol so that a REQ_PLAY also sends a list of valid plays.  This
	is necessary to get any kind of reasonably efficient behavior out
	of most AIs.

2002-04-29 06:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: In spades, don't show the
	players' contracts (or other game-related messages) when there is
	no game being played.

2002-04-29 06:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Set the game state to
	STATE_NOTPLAYING in handle_gameover_event, rather than in the
	calling function.

2002-04-29 05:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, options.c: - Renamed
	next_play() as next_move() to avoid confusion with the game's  
	next_play() function.  - Have next_play() check for seats_full()
	and return silently if they   arenty.  The caller is therefore
	releived from having to check this.

2002-04-29 05:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: A fix to the seat/player naming
	system: don't have get_player_name return a NULL name for an open
	seat.
	
	This was already handled correctly for get_seat_name; I rewrote
	that function to call get_player_name and fixed get_player_name.

2002-04-29 05:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: Removed the
	STATE_WAITFORPLAYERS state, along with the game.saved_state field. 
	Now we just track the state in game.state, and check if seats_full
	to see if we're waiting for players.  The new system probably has a
	few bugs in it (it hasn't been tested much, and some of the testing
	has resulted in problems; although upon review it appears the old
	system may have had the same problems), but it sufficiently better
	than the old one (several gross hacks have been removed) that I'm
	committing it directly.

2002-04-29 04:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed a minor bug: when we're not
	playing a game, don't send out player hands in the sync.

2002-04-29 03:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: A few cleanups and fixes to the
	core code:   - Reset each player's "ready" status to FALSE when a
	player leaves.	  - Don't accept newgame responses when all seats
	are not full.	 - Handle a play event better, including a fix for
	the multiple-people-	  playing case.

2002-04-29 01:00  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, table.c: - player_transit() - Avoid messing
	with the seat if table_find_player() fails - table_find_player() -
	Return seat index of -1 if table not found

2002-04-28 02:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: game.h, random.c, suaro.c: Some more
	very minor cleanups to AI code: renamed some variables, removed
	some function prototypes, etc.

2002-04-28 02:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.c, aicommon.h: Some very
	minor cleanups (renamed variables, added header metadata) to
	aicommon files.

2002-04-28 01:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Avoid trying to bid less than
	0.  This tends to have bad results.

2002-04-28 01:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/game.c: Changed some 0's to FALSEs.

2002-04-27 23:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c: Removed the
	explicit bot-naming code.  Now we just take the default Bot names
	that ggzdmod provides.

2002-04-27 23:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Cleanups to seat naming system.
	
	Now, for PLAYER, BOT, and RESERVED seats we allow ggzdmod to
	entirely track the player names.
	
	For OPEN seats we just name the seat "Empty Seat".
	
	Only for NONE seats is the name field of the seats structure used.

2002-04-26 21:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: client/client.c, client/client.h,
	common/cards.h: Updated common and client code from gtk-games
	module.

2002-04-26 09:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/client/client.c: Avoid matching a played
	card with an already-played card.

2002-04-26 08:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: client/client.c, client/client.h,
	common/cards.h: Copied over changed code from the gtk-games module.

2002-04-26 06:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Don't explicitly request the
	gametype from the host when necessary in handle_join_event(). 
	Instead, this is now handled "automatically" within the sync that
	is sent to the client.	I added a comment explaining this.

2002-04-25 23:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, options.c, options.h: - Rename
	get_options() as request_client_options().  - When sending a sync,
	resend any pending option requests as well.

2002-04-25 22:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Added a missing "return;" in
	put_global_message().  This prevents a big memory (and time) leak.

2002-04-25 10:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common/protocol.h: Updated the comment
	descriptions of the GGZCards protocol.

2002-04-24 11:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, message.c, games/bridge.c,
	games/euchre.c, games/fortytwo.c, games/spades.c, games/suaro.c:
	Removed some spurious (void) casts to function calls.
	
	They served their role, but now they can go away as these functions
	all return void anyway (errors are handled internally).  Yay.

2002-04-24 11:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: For net_broadcast_*** functions,
	only broadcast to PLAYER and BOT seats.

2002-04-24 11:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, games.h,
	games/bridge.c, games/euchre.c, games/fortytwo.c, games/hearts.c,
	games/lapocha.c, games/spades.c, games/suaro.c, games/sueca.c,
	games/whist.c: Make the rules_url field a mandatory part of the
	game_data structure, rather than an option part of the main game
	structure.
	
	Also, I added a rules_url for Whist and forty-two.

2002-04-24 11:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/fortytwo.c: Fixed a small typo bug in
	forty-two.

2002-04-24 10:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/fortytwo.c: Change two char values to
	ints to avoid an overflow for large bids.

2002-04-24 00:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: fortytwo.c, fortytwo.h: Added
	doubles as trump in forty-two.

2002-04-23 23:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: spades.c, suaro.c: Call
	ailib_alert_trick() from alert_trick() in the spades and suaro AI
	code.

2002-04-23 23:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.h, game.c, game.h, main.c: A
	slight restructuring of the meta-ai code (that calls the real AI
	functions).
	
	Also, I moved the definitions of the debugging types (DBG_BID,
	etc.) from aicommon.h to game.h.

2002-04-23 23:37  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/suaro.c: Added debugging output for
	get_play() in the suaro AI.

2002-04-23 23:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, net.c: Better debug handling of the
	case when a bot dies.

2002-04-23 21:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: game.c, game.h, random.c, spades.c,
	suaro.c: Slight restructuring of the AI code: AI modules now call
	ailib_alert_*** themselves.  Also I added a new function,
	alert_trick.

2002-04-23 19:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: fortytwo.c, fortytwo.h: Further
	fixes to forty-two.  It should now be reasonably playable.

2002-04-23 09:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/fortytwo.c: Fixed "Contract" label on
	player dialog for forty-two.

2002-04-23 03:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games.c: Re-ordered the games to be in
	alphabetical order.  I probably wouldn't have done this, except
	that it leaves the default game pretty reasonable for all numbers
	of players (four players -> bridge).  Of course, Bridge hasn't been
	tested much, but it *should* be the default game :-).

2002-04-23 03:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards.room: Added forty-two to
	the list of games in the (generic) "GGZ Cards" room description.

2002-04-23 02:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: fortytwo.c, fortytwo.h: More
	improvements to forty-two.

2002-04-23 01:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Fixed a bug in card mapping in
	game_verify_play: we must be sure to map the lead card in all cases
	when determining its suit.  Otherwise it's possible to get two
	different suits, and we may find that a play is invalid when really
	it should be valid (this happens sometimes in forty-two).

2002-04-23 01:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/play.c: Add an assertion to check that one
	card is always playable.  There is currently a bug that causes this
	to be not the case in some weird-suit games (like forty-two).

2002-04-22 21:40  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/protocols.h: Moved the list of protocol opcodes out of
	ggzcore and ggzd and into ggz_common.h in libggz.  This may not be
	their final resting place, but it is at least an improvement over
	having duplicated code.

2002-04-22 21:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Slight change to internals of
	ggzdmod_set_seat:   - Change the ordering of the if(...) statements
	when checking validity	   of the new seat; this should enhance
	readibility (at least IMO).    - Allow the game server to change
	the FD for all bot players.  Previously      it was allowed to
	change the FD when the FD was -1.  This is a bit      more
	well-defined, and potentially more useful for some games.

2002-04-22 19:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/fortytwo.c: Fixed player messages for
	forty-two.

2002-04-22 03:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common/cards.c: Return the correct name in
	get_***_name functions, based on the cardset in use.

2002-04-22 02:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, deck.c, net.c, ai/game.c,
	ai/game.h, client/client.c, client/client.h, common/cards.c,
	common/cards.h, common/net_common.c, common/protocol.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: A different
	approach to using different cardsets: the type of cardset is no
	longer stored for each card (using different cardsets together
	isn't feasible anyway), but is transferred to the client with the
	newgame message.

2002-04-22 01:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai/spades.c, ai/suaro.c, common/cards.c,
	common/cards.h, games/euchre.c, games/lapocha.c, games/sueca.c,
	games/whist.c: Changed the suit/face name arrays to functions.

2002-04-22 00:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/fortytwo.c: Minor improvements to
	forty-two: the declarer leads first, and show what suit (number) is
	trump.

2002-04-21 23:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-hearts.dsc, ggzcards-lapocha.dsc, ggzcards-spades.dsc,
	ggzcards-suaro.dsc, ggzcards.dsc: Some of the recent changes have
	subtly changed the form of the data the server sends to the client,
	thus introducing protocol incompatibilities for some games.  So
	I've bumped the protocol engine # up (again).

2002-04-21 23:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: games.c, games/Makefile.am,
	games/fortytwo.c, games/fortytwo.h: Preliminary support for
	Forty-two.

2002-04-21 23:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: bridge.c, bridge.h, euchre.c,
	euchre.h, hearts.c, hearts.h, lapocha.c, lapocha.h, spades.h,
	suaro.h, sueca.c, sueca.h, whist.h: Updates to game-specific .h
	files.
	
	These files now contain only data that is also used by the AI.

2002-04-21 10:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: client/client.c, common/cards.c,
	common/cards.h: Added UNKNOWN_CARDSET to the enumeration of
	possible card types.  Changed UNKNOWN_CARD to use UNKNOWN_CARDSET
	for the card type.
	
	When the client receives UNKNOWN_CARDSET as the type of card, don't
	try to initialize the card drawing code.  Also, don't setup the
	table before we have been told the cardset type, and try to setup
	the table when we hear the cardset type.

2002-04-21 09:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: deck.c, deck.h: - Added the deck type
	GGZ_DECK_DOMINOES.  - Made a slight fix to the deck_shuffle
	algorithm.

2002-04-21 08:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: When instructed to not reveal a hand
	we're sending to a client, just hide the face and suit.  Previously
	each card was replaced by UNKNOWN_CARD, which hid the deck # and
	also forced a particular type of cardset.

2002-04-21 08:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common/: cards.c, cards.h, net_common.c,
	net_common.h, protocol.c, protocol.h, shared.h: Added a new type of
	card type: CARDSET_DOMINOES.

2002-04-21 04:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai/game.c, ai/game.h, client/client.c,
	client/client.h: Updated client/ code from the gtk-games client:
	added a new callback function, game_alert_card_type.  Added a stub
	function to the AI client to handle this callback.

2002-04-20 23:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/game.c, chinese-checkers/game.c,
	combat/game.c, dots/game.c, escape/game.c, ggzcards/common.c,
	hastings/game.c, keepalive/src/keepalive.cpp, lapocha/game.c,
	muehle/ggz/ggzgameserver.cpp, reversi/game.c, tictactoe/game.c:
	Changed internal game servers to use the "new" ggzdmod seat event
	data parameter.  Mostly this just involves a lot of changes of the
	form: -   int player = *(int*)data; +	int player =
	((GGZSeat*)data)->num;
	
	Note that:   - The change was mostly backwards-compatible anyway,
	so this change	   shouldn't have any effect under most or all
	compilers.  But it does     set a necessary precedent.	  - None of
	our games currently have a handler for GGZDMOD_EVENT_SEAT.     
	This would be very bad, except that ggzdmod currently never
	generates      a GGZDMOD_EVENT_SEAT.

2002-04-20 11:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, bid.h, common.c, game.c, games.c,
	games.h, options.c, options.h, play.c, play.h, types.h,
	games/bridge.c, games/euchre.c, games/lapocha.c, games/spades.c,
	games/suaro.c: Assorted minor code cleanups to ggzcards:   -
	Renamed a few functions for greater global consistency.    -
	Changed some types from int to bool.	- Only call
	try_to_start_game when all options are set.    - For some ignored
	function return values, cast the function to void.

2002-04-20 10:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c: Don't bother closing
	stdin/stdio/stderr for ggzcards bots.  This is better left up to
	GGZ to deal with (as it does in daemon mode).

2002-04-20 06:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Changed the parameter for the
	ggzdmod seat events (JOIN, LEAVE, SEAT) to be a pointer to the
	entire (old) seat, rather than a pointer to the seat number.
	
	This is mostly backwards-compatible with the old system, although I
	will update the internal game servers to use the new system
	shortly.

2002-04-19 10:13  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: In _ggzdmod_set_seat, don't call
	ggzdmod_get_seat to retrieve the seat data until after the change
	has been checked.  This will not change the effects of the
	function, but makes it more encapsulated (and slightly more
	efficient).

2002-04-19 09:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, common.c: Fixed three bugs:   -
	When a player leaves before the game has been chosen, the server   
	 segfaulted.  This is avoided by checking for such a situation in  
	  set_player_name() (this was already being done, but improperly). 
	  - When the host leaves before choosing the game, the table would
	be	stuck since there was now no way to choose.  Instead, the
	new host is	 now asked to choose the game.	  - When the last
	player leaves before the game has been chosen, the AI	   players
	were killed even though they hadn't been spawned, resulting in	   
	a failed assertion.  This is corrected by changing the assertion to
	     a straight conditional to handle the situation.

2002-04-19 09:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c: A few varied
	cleanups to ggzcards code.

2002-04-18 20:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/libcgc/movecheck.c: Synced libcgc with the
	gtk-games client's copy:
	
	s/NULL/0/ to avoid a compiler warning from casting NULL to an
	integer.

2002-04-17 20:57  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: ggzd.postinst, ggzd.prerm: - don't choke on existing
	/var/ggzd directory - remove obsolete ggz-client-libs stuff (this
	had nothing to do here anyway)

2002-04-16 21:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Don't try to kill an AI player
	before the game is initialized, since they won't have been launched
	yet.

2002-04-16 21:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Doh!	Call get_player_status() on
	a player #, not get_seat_status().

2002-04-16 21:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c, common.h, net.c:
	Preliminary code to handle a network error by restarting the AI, if
	necessary.  This does not appear to work fully yet, as the game
	will be put out-of-sync when this happens.

2002-04-16 21:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: games.c, message.c: Added some missing
	#includes.

2002-04-16 21:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common/: net_common.c, net_common.h: Oops! 
	Forgot to add new files net_common.[ch].

2002-04-16 21:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, bid.h, common.c, common.h, game.c,
	game.h, games.c, games.h, message.c, message.h, net.c, net.h,
	options.c, options.h, play.c, types.h, client/Makefile.am,
	client/client.c, common/Makefile.am, common/protocol.c,
	common/protocol.h, config/ggzcards-bridge.dsc,
	config/ggzcards-hearts.dsc, config/ggzcards-lapocha.dsc,
	config/ggzcards-spades.dsc, config/ggzcards-suaro.dsc,
	config/ggzcards.dsc, games/bridge.c, games/euchre.c,
	games/hearts.c, games/lapocha.c, games/spades.c, games/suaro.c:
	Overhauled the network code.  It's not basically completely
	separate from the rest of the code, in net.c.  To facilitate this,
	I had to change the RSP_OPTIONS packet slightly to be
	self-contained, thus breaking protocol compatibility.
	
	I also did a variety of other small cleanups.

2002-04-15 13:17  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Doh.  Fixed typo in last commit.

2002-04-15 13:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Don't use ggz_read_string_alloc at
	the server end to read a user's LANG string; this is unsafe (even
	with libggz's maximum allocation limit).  Instead just use a
	fixed-size buffer.

2002-04-15 11:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: games.c, games.h: Removed unused function
	games_get_game_id.  This is a continuation of the game-type
	overhaul & cleanup.

2002-04-15 11:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.h, common.c, common.h, game.c,
	game.h, games.h, games/bridge.c, games/euchre.c, games/hearts.c,
	games/lapocha.c, games/spades.c, games/suaro.c, games/sueca.c,
	games/whist.c: Type cleanup for GGZCards:   - Changed some int
	values to bools.    - Changed some 0's to FALSEs.    - Changed the
	return values of some functions to void, when they only     
	returned 0 anyway.

2002-04-15 11:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, deck.c, game.c,
	games.c, games.h, main.c, message.c, net.c, options.c, play.c,
	common/shared.h, games/bridge.c, games/euchre.c, games/hearts.c,
	games/lapocha.c, games/spades.c, games/suaro.c, games/sueca.c,
	games/whist.c: An overhaul of the game-specific system:   - Now
	almost all game-specific data is stored in the game.data structure 
	   (game_data_t).  The list of games just points to this
	game_data_t	structure.    - Some data is still included in the
	game structure itself.	This is so	sensible defaults can be
	assigned and many games can just ignore it.    - Rather than track
	a game name and find the game from it later, once      we're told a
	game (either from the command-line, by elimination, or by      the
	game host) we just assign game.data.  All checks are now done	  
	against this.  Etc, etc, etc.  The new system has one less level of
	complexity, which is a good thing.  However, it does rename
	game.funcs as game.data seemingly arbitrarily :-(.

2002-04-15 09:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/game.c, chess/main.c, chess/libcgc/board.c,
	chess/libcgc/cgc.c, chess/libcgc/games.c, chess/libcgc/movecheck.c,
	chinese-checkers/ai.c, chinese-checkers/game.c,
	chinese-checkers/main.c, combat/combat.c, combat/game.c,
	combat/main.c, dots/ai.c, dots/game.c, dots/main.c, escape/game.c,
	escape/main.c, hastings/game.c, hastings/main.c,
	keepalive/ggzsh/ggzsh.cpp, keepalive/ggzsh/main.cpp,
	keepalive/src/keepalive.cpp, keepalive/src/main.cpp,
	keepalive/src/player.cpp, keepalive/src/world.cpp,
	krosswater/krosswater_server.cpp, krosswater/main.cpp,
	krosswater/stackpath/cwpathitem.cpp, krosswater/stackpath/main.cpp,
	krosswater/stackpath/pathitem.cpp,
	krosswater/zoneserver/ZoneGGZModServer.cpp, lapocha/cards.c,
	lapocha/game.c, lapocha/main.c, muehle/loader.cpp, muehle/main.cpp,
	muehle/muehleserver.cpp, muehle/net.cpp, reversi/game.c,
	reversi/main.c, spades/card.c, spades/engine_main.c,
	tictactoe/game.c, tictactoe/main.c: Added "#include <config.h>"
	line to lots and lots and lots (and lots) of files.
	
	AFAIK this line should be included at the top of every .c and .cpp
	file, before any other #inlcudes (so that it will affect them as
	well).	It should now be the case that this is true for all files
	in the ggzd, gtk-games, and gtk-client modules.
	
	  There is one exception: gtk-games/spades/gtk_menu.c breaks if
	config.h
	  is #included, because doing so causes i18n to take effect and the
	file
	  is not prepared for this.  A separate fix will be necessary.

2002-04-15 07:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common/: cards.c, cards.h: Minor cleanups
	to cards.[ch] interface and code:   - Made card name arrays const
	char *'s instead of char *'s.	 - Replaced some occurances of -1
	with UNKNOWN_*** macros.    - Changed UNKNOWN_CARD initializer to
	use explicit field initializers.

2002-04-15 07:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/game.c: Added missing "#include
	<config.h>" line.

2002-04-15 06:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai/aicommon.h, common/shared.h: Moved
	MIN/MAX macros out of aicommon.h into shared.h.

2002-04-14 21:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Apply Riq's fix for a potential buffer overflow on
	the DATA XML element.
	
	From his e-mail:
	
	  Try typing ']]>' this at the ggzclient chatline, and see what
	happens.
	
	  Going further... the SIZE of DATA is never checked, so a remote
	buffer
	  overflow exists, which may be exploitable.
	
	  Just type this in the chatline of the ggz client:
	
	  chau]]></CHAT><DATA SIZE='4200'><![CDATA['hola']]></DATA><CHAT
	TYPE='normal' FROM='Major69'><![CDATA[
	
	  Boom! The server crashes.

2002-04-14 10:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c: Instead of using close(fileno(stdin))
	to close stdin/stdout/stderr, just use fclose(stdin).  Also check
	the return value (although there's not much to be done with it).

2002-04-14 01:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c: Use fileno() to recover FD #'s for
	stdin/stdout/stderr, rather than assuming they are FD's 0, 1, and
	2.

2002-04-13 09:12  Brent Hendricks <bmh@users.sourceforge.net>

	* ChangeLog: 
	- Updated ChangeLog for 0.0.5

2002-04-13 09:11  Rich Gade <rgade@users.sourceforge.net>

	* ggz_server.spec: - Updated RPM Spec for 0.0.5 release

2002-04-13 07:34  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: ggzd.init.d, ggzd.postinst, rules: - /var is /var and
	not /usr/var for the Debian packages - don't run as 'root' but
	rather as 'games'

2002-04-13 06:24  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Bumped version to 0.0.5

2002-04-13 06:23  Brent Hendricks <bmh@users.sourceforge.net>

	* AUTHORS, NEWS, README, README.GGZ, TODO: 
	- Updated documentation files

2002-04-13 03:46  Jason Short <jdorje@users.sourceforge.net>

	* man/ggzdmod.h.3: Updated ggzdmod man page.

2002-04-13 02:45  Josef Spillner <dr_maux@users.sourceforge.net>

	* Makefile.am: - remove local make clean rule again

2002-04-13 00:34  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: ggzd.init.d, ggzd.postinst, rules: - /var is /var and
	not /usr/var for the Debian packages - don't run as 'root' but
	rather as 'games'

2002-04-12 23:24  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Bumped version to 0.0.5

2002-04-12 23:23  Brent Hendricks <bmh@users.sourceforge.net>

	* AUTHORS, NEWS, README, README.GGZ, TODO: 
	- Updated documentation files

2002-04-12 20:46  Jason Short <jdorje@users.sourceforge.net>

	* man/ggzdmod.h.3: Updated ggzdmod man page.

2002-04-12 19:45  Josef Spillner <dr_maux@users.sourceforge.net>

	* Makefile.am: - remove local make clean rule again

2002-04-12 15:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/tictactoe/tictactoe.dsc: - upping TTT version

2002-04-12 15:11  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/krosswater.dsc: - correct Krosswater
	version

2002-04-12 15:09  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/hastings.dsc: - upping Hastings version
	number to 0.0.5

2002-04-12 13:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/chess.dsc, chinese-checkers/ccheckers.dsc,
	combat/combat.dsc, dots/dots.dsc,
	ggzcards/config/ggzcards-bridge.dsc,
	ggzcards/config/ggzcards-hearts.dsc,
	ggzcards/config/ggzcards-lapocha.dsc,
	ggzcards/config/ggzcards-spades.dsc,
	ggzcards/config/ggzcards-suaro.dsc, ggzcards/config/ggzcards.dsc,
	hastings/hastings.dsc, krosswater/krosswater.dsc,
	lapocha/lapocha.dsc, reversi/reversi.dsc, tictactoe/tictactoe.dsc:
	Bumped up game protocol engine version numbers.

2002-04-12 04:17  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/tictactoe/game.c: - commit holy cow algorithm

2002-04-12 02:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/hearts.c: Fixed typo:
	s/diamons/diamonds/.

2002-04-12 01:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-hearts.dsc, ggzcards-lapocha.dsc, ggzcards-spades.dsc,
	ggzcards-suaro.dsc, ggzcards.dsc: Added GGZCards version number to
	0.0.5.

2002-04-12 01:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards.room: Added a list of
	available games to the "GGZCards" room description.

2002-04-10 13:58  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Slight fix to ggzdmod documentation.

2002-04-10 08:53  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: chess/Makefile.am, chinese-checkers/Makefile.am,
	combat/Makefile.am, dots/Makefile.am, ggzcards/Makefile.am,
	ggzcards/ai/Makefile.am, ggzcards/client/Makefile.am,
	ggzcards/common/Makefile.am, ggzcards/games/Makefile.am,
	hastings/Makefile.am, krosswater/Makefile.am,
	krosswater/zoneserver/Makefile.am, lapocha/Makefile.am,
	muehle/Makefile.am, muehle/ggz/Makefile.am, reversi/Makefile.am,
	spades/Makefile.am, tictactoe/Makefile.am: - add libggz includes to
	each and every makefile which needs it

2002-04-10 08:35  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzdmod/Makefile.am, ggzd/Makefile.am: - include libggz headers
	correctly

2002-04-10 05:37  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/krosswater_server.cpp: - prevent some
	cheating

2002-04-10 05:15  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: krosswater_server.cpp,
	krosswater_server.h: - server fixes for krosswater

2002-04-09 16:12  Josef Spillner <dr_maux@users.sourceforge.net>

	* Makefile.am: - addon

2002-04-09 16:12  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/rules: - finalize ggzd

2002-04-07 17:58  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Makefile.am: Added Doxyfile to EXTRA_DIST.

2002-04-07 17:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: General improvements to ggzdmod documentation.

2002-04-07 17:27  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fix the return value of ggzdmod_dispatch: -1
	on error, the number of events handled on success.

2002-04-07 17:07  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Added more documentation on the GGZdMod
	events.

2002-04-07 11:18  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: control, shlibs.local: - fix the shlibs.local problem

2002-04-07 10:40  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: control, ggzd.conffiles, ggzd.files, rules: - fix debs
	for ggzd even more - only the wrong dependency on ggz-server is now
	remaining

2002-04-07 03:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Add more documentation on ggzdmod game states.

2002-04-07 03:08  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Allow the game server to change ggzdmod-game's
	player FD if it is -1.	Note that for bot players, the FD is always
	-1.  The data is not propogated back to the server, so changing
	this at the game end is safe as far as ggzd is concerned.  ggzdmod
	will monitor player FD's so long as they are not -1, so changing a
	bot FD will cause it to be monitored and GGZDMOD_EVENT_PLAYER_DATA
	events will be generated for them.  This is currently undocumented.
	
	Patch by Riq.  I also added some extra comments.

2002-04-07 01:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/rules: - shared library rules for the debian package

2002-04-07 01:41  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: krosswater/Makefile.am, muehle/Makefile.am: - hm,
	this works better

2002-04-07 01:18  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: krosswater/Makefile.am, muehle/Makefile.am: - ugh.
	dependency adjusting This is a really difficult issue, and for
	0.0.6 we need to hire Redhat's Tom Tromey to do all the autotools
	work for us...

2002-04-06 16:48  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/: Makefile.am, ggzduedit.6: - add alibi man page for
	ggzduedit

2002-04-06 16:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/shlibs.local: - oops, forgot new shlibs.local file

2002-04-06 16:45  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: .cvsignore, changelog, conffiles, control, copyright,
	docs, ggz-game-servers.docs, ggz-game-servers.files,
	ggzd.conffiles, ggzd.docs, ggzd.files, ggzd.postinst, ggzd.postrm,
	ggzd.prerm, libggzdmod-dev.docs, libggzdmod-dev.files,
	libggzdmod0.docs, libggzdmod0.files, postinst, postrm, prerm,
	rules, shlibs: - debianize ggzd Note: This is work in progress,
	package will be ready tomorrow.

2002-04-06 16:09  Josef Spillner <dr_maux@users.sourceforge.net>

	* Makefile.am: - config.status deletion

2002-04-06 09:39  Josef Spillner <dr_maux@users.sourceforge.net>

	* acinclude.ggz: - sync acinclude.ggz

2002-04-06 00:00  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/motd.c: When we look at the return value of uname(), only
	fail (err_sys_exit) if it is less than 0, not just if it's != 0. 
	This should work on some non-GNU platforms (i.e. solaris).

2002-04-05 16:03  Josef Spillner <dr_maux@users.sourceforge.net>

	* README.GGZ: - update installation instructions and overview

2002-04-05 01:51  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fix typo: make sure err_fd is
	only used when DEBUG is enabled.

2002-04-05 01:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c: - Add functions
	stop_ai and restart_ai.  stop_ai kills & collects a single   AI
	process.  restart_ai does the same, then restarts a new AI (type  
	"random" in its place).  The former is intended to be called when
	the   game server exits, the latter is for when there's a fatal
	problem with   an AI.  - When we change state to done, call
	stop_ai() for all AI players.

2002-04-05 01:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/types.h: Change the struct
	game_player_t::pid variable to be type pid_t.

2002-04-05 01:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: main.c, common/shared.h: Added assertions
	to detect any future problems in the select loop.

2002-04-05 00:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, main.c: Fixed a major bug:
	initialize the AI's err_fd to -1, and check for an FD of -1 later
	when we're calling select() to wait for data on it.
	
	This should prevent some Bad, highly unpredictable behavior from
	before where the FD was initialized to 0 when the player array was
	allocated (which happened during the GGZ launch), but not truly
	initialized to the correct value until the AI was spawned (which
	doesn't happen until the game is chosen).  This meant we could get
	some really fucked up behavior when in the generic "GGZCards" room
	(in the other rooms, things should work fine since we know the game
	type from the beginning).  In the case of the kde client, the fact
	that the initial client packet from the player (the one that sends
	the language) goes through must have made a difference somehow,
	causing the server to lock up waiting for data on FD 0.
	
	In summary, it is likely that everything will work now, though more
	stress-testing is needed.

2002-04-04 23:54  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/login.c: Added debug logging for all login errors.

2002-04-04 23:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed debugging output for
	receiving packets from the client: removed the player_messages[]
	string array (which was obsolete) and use get_client_opcode_name()
	instead.

2002-04-04 23:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Added explanatory comment to
	broadcast_player_list(), after I almost erronously changed it to
	not send player lists to bots.

2002-04-04 23:09  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzdb.h: Changed GGZDB_ERR_*** #definitions to an
	enumeration.

2002-04-04 23:05  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/login.c: Slightly more debugging information about player
	login.

2002-04-03 12:01  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: - Have ggzdmod_get_num_seats
	return -1 if there is no connection present.  - Clarify
	documentation on ggzdmod_get_num_seats (in ggzdmod.h).

2002-04-03 11:33  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: chess/chess.dsc, chinese-checkers/ccheckers.dsc,
	combat/combat.dsc, dots/dots.dsc, keepalive/keepalive.dsc,
	lapocha/lapocha.dsc, reversi/reversi.dsc, tictactoe/tictactoe.dsc:
	- update some game server homepage URLs

2002-04-02 13:54  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: krosswater_server.cpp,
	krosswater_server.h: - create map properly

2002-04-01 15:51  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: - handle leave/rejoin - UI cleanup:
	only display present knights, mask out all others

2002-03-28 21:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games.c: Fixed bug in the option
	description system - there was no description for the options when
	we chose a game.

2002-03-27 22:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Don't send the full bid
	texts/descriptions to AI players.  Just send a dummy string.

2002-03-27 21:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.h, net.c,
	ai/game.c, ai/game.h, client/client.c, client/client.h,
	common/protocol.h, config/ggzcards-bridge.dsc,
	config/ggzcards-hearts.dsc, config/ggzcards-lapocha.dsc,
	config/ggzcards-spades.dsc, config/ggzcards-suaro.dsc,
	config/ggzcards.dsc, games/bridge.c, games/euchre.c,
	games/hearts.c, games/lapocha.c, games/spades.c, games/suaro.c,
	games/sueca.c, games/whist.c: More tooltips madness.  Introduced
	the concept of a bid description, separate from the simple bid
	text.  Send the bid descriptions to the client when requesting a
	bid.  At the client end, show these descriptions as tooltips if
	that preference is selected.
	
	I added bid descriptions for Suaro and Spades, other games do not
	have them yet.

2002-03-27 19:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, options.c, options.h, ai/game.c,
	ai/game.h, client/client.c, client/client.h, common/protocol.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc, games/euchre.c,
	games/hearts.c, games/spades.c, games/suaro.c: Now each option set
	has a single descriptive text associated with it.  This text is
	sent to the clients, and is displayed by the gtk client as a
	tooltip for all of the relevant option choices.

2002-03-25 14:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/Makefile.am: Changed one last
	$(top_srcdir) to $(top_builddir).

2002-03-25 14:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/muehle/Makefile.am: - Changed some $(top_srcdir) to
	$(top_builddir).  - Added $(top_srcdir) to some INCLUDE entries.  -
	Added $(ggzdgame_DATA) and $(ggzdroom_DATA) to EXTRA_DIST.

2002-03-25 13:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/muehle/variants/Makefile.am: Added $(variants_DATA)
	to EXTRA_DIST so that these files will get distributed.

2002-03-25 13:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/muehle/qtserv/Makefile.am: Added missing header
	sources to libqtserv_a_SOURCES.

2002-03-25 13:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/krosswater/Makefile.am: Changed another
	$(top_srcdir) to $(top_builddir).

2002-03-25 12:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/Makefile.am: Made some more paths absolute
	(with $(top_srcdir)) to facilitate "make distcheck".

2002-03-25 12:51  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/Makefile.am: For the libraries, change
	$(top_srcdir) to $(top_builddir) to facilitate a make distcheck.

2002-03-25 12:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/Makefile.am: A few more cleanups to the
	AI build process.

2002-03-24 18:07  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: - check moves for validity and
	maliscious clients

2002-03-24 15:55  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: - doh! another undetected cheating
	move!
	
	Going from x/y to x+1/y-1 for (y % 2) == 1, i.e. 2/5 -> 3/4

2002-03-24 15:13  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzd/Makefile.am: - change DB_SOURCES to DBSOURCES and DB_ALL to
	DBALL.	Otherwise, auto-something would complain.

2002-03-24 15:10  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/ggzcards/ai/Makefile.am: - push all common AI
	sources into a dummy library
	
	Jason, please test this. It should be more robust than the other
	ways to solve that linker problem.  If it doesn't work... well,
	we'll all be kind of stoned then.

2002-03-24 12:52  Josef Spillner <dr_maux@users.sourceforge.net>

	* TODO: - TODO stuff for ggzd 0.0.5 and 0.0.6

2002-03-23 19:02  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Remove the 'tests" directory from compilation, too,
	so that we won't try to build a directory that has no Makefile
	(this problem wasn't immediately obvious, not until I tried a clean
	build did it turn up).
	
	I don't entirely agree that the tests/ directory should be left out
	for 0.0.5, but whether it is or not it must be changed in both
	places in configure.in: ad the Makefile to the AC_OUTPUT list and
	add the directory itself to SUBDIRS.  Both are currently commented
	out.

2002-03-23 15:17  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/hastings/game.c: Fixed most hastings problems.
	
	The problem was that the game_send_move() function was supposed to
	send the move to everyone, yet it returned if it ever encountered
	an AI player or failed to send a move.
	
	The fix is easy: just continue sending the move to the other
	players in those cases.
	
	However, there is still a problem, in that I'm pretty sure Hastings
	doesn't check the move that is sent by the client.  This is not a
	showstopper, however.

2002-03-23 15:02  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - addon

2002-03-23 15:02  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/ggzcards/: ai/Makefile.am, client/Makefile.am,
	games/Makefile.am: - doh! forgot to modify configure.in as well -
	some fixes to Makefile.am's which used relative paths

2002-03-23 14:29  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/Makefile.am: - damn, I had ggzcards taken out
	locally because I tried to examine the linkage	 problem with the
	static libs.	Honi soit qui mal y pense :)

2002-03-23 13:54  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/Makefile.am: - Both keepalive and escape are
	excluded for the 0.0.5 release on the server   side because there
	is no game client in use for them as of today.	  They will however
	be reenabled directly after the release so they'll show up    on
	the developer servers, and will make it into 0.0.6.

2002-03-22 13:53  Josef Spillner <dr_maux@users.sourceforge.net>

	* .cvsignore: - add stamp-h1 here too

2002-03-20 23:53  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Remove unused variable "allow" from
	transit_seat_event_callback().

2002-03-20 20:52  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, players.c, players.h, table.c, table.h, transit.c: 
	- Move checking for leave allowed into player_table_leave() - New
	function table_kill() lets players request that tables be killed  
	(handled by table thread in table_kill_callback() by setting state
	to DONE) - Handle leave forcing by killing table if leaves not
	allowed

2002-03-19 23:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: err_func.c, parse_opt.c: Added some "#ifdef DEBUG" checks
	so ggzd compiltes when DEBUG is not defined.

2002-03-19 23:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, main.c, types.h: Disable AI
	logging when DEBUG isn't defined.

2002-03-19 23:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c: Removed some unused code, and
	cleaned up/commented some more.

2002-03-17 00:29  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.c: Update lag during each player update.  This way
	if a player never sends a PONG in response to the PING, it won't
	have the result that their lag class always remains 1.

2002-03-16 18:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, net.c, net.h,
	client/client.c, client/client.h, common/cards.c, common/cards.h,
	common/protocol.c, common/protocol.h, common/shared.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Step 1 of adding
	i18n support to GGZCards: have the clients send their language
	setting to the server.
	
	Notes:	 - This is actually the only step that needs be taken now,
	since it     breaks protocol compatibility.  All other changes need
	only be done	 server-side.	 - It doesn't technically "work",
	since the packet sent by the client	 is not delivered by GGZ. 
	This will be an easy way to test any bug      fix for that problem.

2002-03-16 10:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: bridge.c, euchre.c, hearts.c,
	lapocha.c, spades.c, sueca.c: Update rules_url entries for all
	games (except sueca and suaro, which were already set).

2002-03-16 10:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-hearts.dsc, ggzcards-lapocha.dsc, ggzcards-spades.dsc,
	ggzcards-suaro.dsc, ggzcards.dsc: Change the "homepage" for
	ggzcards to
	
		http://ggz.sourceforge.net/games/ggzcards

2002-03-16 10:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: - Reset the global message to
	empty at the start of a game.  - Call the generic message setup at
	the start of a game before we call   the game's start_game
	function.

2002-03-16 10:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: bridge.c, suaro.c: Removed
	unnecessary printf-style "%s" when the string is just a constant.

2002-03-16 10:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Updated the "cumulative scores"
	message to show scores per-team instead of per-player.

2002-03-16 09:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/team.c: Fixed typo in last commit.

2002-03-16 09:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: team.c, team.h: Added functions
	get_team_tricks and get_team_score.

2002-03-16 09:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: - Don't have a memory leak
	between games in score tracking.  Instead just	 re-use the old
	array.	- Increase the scores array geometrically, to decrease the
	overhead   inherent in such dynamic allocation.

2002-03-16 08:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/team.h: Added comments to team interface.

2002-03-16 00:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: message.c, games/bridge.c,
	games/euchre.c, games/spades.c, games/whist.c: Unify a bunch of
	code into add_player_tricks_message.

2002-03-16 00:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/bridge.c: In bridge, only show the
	player bids at appropriate times.

2002-03-15 23:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: ONly send messages to real players,
	so we don't get the "Bad easysock operation" warning so often.

2002-03-15 23:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.h, main.c, spades.c, suaro.c:
	Changed ggz_debug calls to be of types DBG_BID, DBG_PLAY, and
	DBG_AI.
	
	DBG_AI is a fallback; most calls are of the other two types.

2002-03-15 23:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, main.c, types.h: Add a
	cool/hackish method for dealing with debugging messages from AI
	modules.
	
	The interface is quite simple and beautiful.  Of course, the
	backend is not :-).

2002-03-15 14:08  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: loader.cpp, muehle.dsc, muehleserver.cpp,
	muehleserver.h, net.cpp: - use ggz_write_string rather than
	write(2) because we use the --convert option   of ggzwrap - don't
	choke on the input of the second joining player - use validity mask

2002-03-15 12:30  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: muehleserver.cpp, muehleserver.h: - send
	'invalid' message to malicious clients

2002-03-12 04:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/ggz/: ggzgameserver.cpp, ggzgameserver.h: -
	strip newlines when reading strings - don't pass a useless char*
	data pointer to the data event

2002-03-06 11:00  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: muehle.dsc, muehleserver.cpp: - add --ggz
	option to muehle dsc - only bounce data to opponent player if there
	are two players connected

2002-03-06 09:53  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/stackpath/cwpathitem.cpp: - improve
	initial player positions (not fixed anymore)

2002-03-06 08:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: krosswater_server.cpp,
	krosswater_server.h: - now it should be ready for testing :)

2002-03-06 08:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/: ZoneGGZ.h,
	ZoneGGZModServer.cpp: - handle play again option and don't call AI
	recursively

2002-03-06 06:47  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/krosswater_server.cpp: - here we go

2002-03-06 06:47  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/: ZoneGGZ.h,
	ZoneGGZModServer.cpp: - first round of krosswater fixes - game is
	now playable again (except for 'play again' dialog)

2002-03-05 17:35  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/muehleserver.cpp: - treat leaving players as
	losers, and anounce this to the remaining player - load 'classic'
	as the default; variant switching will not be supported for 0.0.5
	because it would require some more thoughts

2002-03-05 16:31  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: Makefile.am, main.cpp, muehleserver.cpp,
	muehleserver.h, net.cpp, net.h: - and the add-on

2002-03-05 16:31  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/ggz/: ggzgameserver.cpp, ggzgameserver.h: -
	add network classes - output player colors - try to be compatible
	with prolog/tcl version (a.k.a. GGZ games which spit   out binary
	data shall all be doomed...) - exit with return code != 0 when
	--ggz is not given

2002-03-02 12:42  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, transit.c: [no log message]

2002-03-02 11:16  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, seats.h, table.c, table.h, transit.c: 
	- Begin using seat change mechanism to handle joins/leaves -
	Removed transit_table_event() - Expanded
	transit_seat_event_callback() to handle join and leave	 cases
	properly - Fixed player_transit() to call transit_seat_event() for
	join/leave

2002-03-02 11:05  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- When doing a table_event, always pack a copy of the table
	structure   itself so the seat counts get passed correctly - Don't
	pass the table index anymore since we're passing the whole   table

2002-03-02 05:44  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/loader.cpp: - merge [tls-branch] changes into
	HEAD

2002-03-02 05:40  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: keepalive/src/main.cpp, keepalive/src/player.cpp,
	keepalive/src/world.cpp, keepalive/src/world.h,
	muehle/qtserv/qlist.h: - merge [tls-branch] changes into HEAD

2002-03-02 04:49  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: main.cpp, player.cpp, world.cpp,
	world.h: - fix keepalive namespaces

2002-03-02 04:45  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/loader.cpp: - prefix with std:: for gcc 3.0.4

2002-03-02 04:45  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/qtserv/qlist.h: - c++ fixes (gcc 3.0.4) -
	note: This is in tls-branch. Is there a way to commit to HEAD as
	well,	avoiding to merge the branches manually one day?

2002-03-01 19:08  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, protocols.h, seats.h, table.c, transit.c,
	transit.h: 
	- When a GGZ_UPDATE_SEAT occurs, use ggzdmod_set_seat() to do the  
	change - Handle the GGZDMOD_EVENT_SEAT event and notify
	players/rooms that a   table update has occurred

2002-03-01 19:06  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, io.c, io.h, mod.h, protocol.h: 
	- New protocol message [REQ,RSP]_GAME_SEAT indicating that a seat
	has   changed (open, bot, or reserved) - New event
	GGZDMOF_EVENT_SEAT triggered when a seat changes

2002-02-27 07:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, common.c, common.h, game.c,
	game.h, team.c, team.h, types.h, games/bridge.c, games/euchre.c,
	games/spades.c, games/sueca.c, games/whist.c: - Added the concept
	of teams.  It's pretty minimal right now; all we do is	 track
	which team each player belongs to.  - For all team games, set up
	the teams in ***_init_game.  - In game_end_trick, update the player
	message for the winning player and   all of their teammates.  -
	Removed ***_end_trick for all the team games.  This function
	existed only   to update the teammate's player message.  For whist
	and sueca, this   function didn't exist; so (minor) bugs have been
	fixed in those	 games.

2002-02-27 04:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c: Functions in ai.c
	no longer access the game variable directly.  Instead they get
	passed a pointer to a game variable.

2002-02-27 04:17  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: Made get_player_name
	and get_player_status into functions instead of macros.

2002-02-27 04:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: Changed "struct
	game_t" to just "game_t".

2002-02-27 03:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: types.h, ai/Makefile.am, ai/random.c,
	ai/spades.c, ai/suaro.c, common/Makefile.am, common/cards.c,
	common/cards.h, common/protocol.c, common/protocol.h,
	common/shared.h: Split up common code into multiple files.

2002-02-27 02:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, cards.c, cards.h, common.c,
	common.h, deck.c, deck.h, game.c, types.h, games/euchre.c,
	games/hearts.c, games/lapocha.c, games/suaro.c, games/sueca.c:
	Renamed cards.[ch] as deck.[ch].
	
	Card functions should generally go into the common code, not
	directly into server code...

2002-02-27 02:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.h, ai/aicommon.c, ai/game.c,
	ai/random.c, ai/spades.c, client/client.c, client/client.h,
	common/protocol.h: Moved "hand" structure into common code (which
	is still protocol.h, unfortunately).

2002-02-27 02:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, game.h, games.h,
	games/bridge.c: Change the ***_handle_play functions to take as
	parameters the player who played and the play seat, in addition to
	the card played.
	
	These extra values are currently unused by the existing games, but
	are included for completeness.

2002-02-27 01:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, game.h, games.c,
	games.h, games/euchre.c, games/lapocha.c, games/spades.c,
	games/suaro.c, games/sueca.c: - Changed ***_deal_hand functions to
	return void (they previously returned	an int, which was always 0
	and would give bad results if it was anything	else).	- Changed
	all function elements of game_function_pointers that took no  
	parameters to have "void" as their parameter.  - Consequently,
	there were several warnings about too many parameters	being given
	to these functions.  I fixed these.

2002-02-27 01:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h: Rewrote most of the game
	function documentation in game.h.  This is turning into the
	documentation on writing new games (as soon as the rest of the
	interface is documented...).
	
	This resulted in the addition of a lot of TODO's.  I also made a
	few small cleanups to the code itself in the process.  No doubt
	more will follow.

2002-02-27 01:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.h, common.c: - Changed
	hand.hand_size and hand.full_hand_size to be integers instead	of
	chars.	(I'm pretty sure there's no good reason for them to be
	chars,	 and it makes compilers unhappy.) - Fixed a (read-only)
	off-by-one error when removing a card from a player's	hand.  This
	is very similar to the big bug the client had (but   read-only,
	fortunately).  Damn.

2002-02-26 23:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h: Removed unused game_funcs
	variable.

2002-02-26 23:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.h, bid.c, bid.h, cards.h, common.c,
	common.h, game.c, game.h, games.c, games.h, main.c, message.c,
	message.h, net.c, options.c, options.h, play.c, types.h,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/suaro.c, games/sueca.c, games/whist.c:
	Cleaned up the system of #includes.    - Removed a lot of
	unnecessary #includes from header files.    - Put those #includes
	into source files.    - Removed #include <config.h> from most/all
	header files (it should be	included from every source file).  
	 - Etc.

2002-02-26 22:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: net.c, play.c, play.h: Pull the play
	verification code out of net.c and put it into handle_client_play
	in play.[ch].  handle_client_play is called by rec_play (in net.c).
	
	Also, if a client tries to play a card that's not in their hand at
	all, we'll send a sync to that player (we assume it's a bug).

2002-02-26 22:15  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Made ending configure output prettier/better:	-
	Use && instead of ; in "make test" instructions.    - Line up
	Options output listings.

2002-02-25 20:48  Jason Short <jdorje@users.sourceforge.net>

	* acconfig.h, configure.in: Change autoconf system so that if DEBUG
	is not defined (--enable-debug, currently on by default) we'll get
	NDEBUG defined instead.

2002-02-25 08:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common/protocol.c,
	common/protocol.h, config/ggzcards-bridge.dsc,
	config/ggzcards-hearts.dsc, config/ggzcards-lapocha.dsc,
	config/ggzcards-spades.dsc, config/ggzcards-suaro.dsc,
	config/ggzcards.dsc: Added a new card parameter, "type".
	
	This can store the type of the deck.  Currently we only support
	standard (French) decks, but in theory any deck type could work. 
	(I'd like to prove it by implementing a game using dominoes as the
	deck, but it'll take extra work to get the graphics to work.)

2002-02-25 03:16  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Added Makefiles for new directories to autoconf
	process.

2002-02-25 03:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, protocol.c, protocol.h,
	ai/Makefile.am, ai/client.c, ai/client.h, ai/protocol.c,
	ai/protocol.h, client/.cvsignore, client/Makefile.am,
	client/client.c, client/client.h, common/.cvsignore,
	common/Makefile.am, common/protocol.c, common/protocol.h,
	games/Makefile.am: Added client/ and common/ directories to contain
	the "common" and "client common" code.

2002-02-24 16:15  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, ggzd.conf.in, ggzd.test.in, net.c,
	net.h, parse_opt.c, players.c: - Initial checkins for tls-branch -
	There's some problems here, turned on some #if 0's -> #if 1's to
	help locate

2002-02-24 14:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, games.c,
	games.h, main.c, message.c: Removed arbitrary/irrelevant game_type
	enumeration; games are now referred to by name or an ID into the
	game_data array.

2002-02-24 13:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: protocol.h, ai/client.c, ai/client.h,
	ai/game.c, ai/game.h, ai/protocol.h, config/ggzcards-bridge.dsc,
	config/ggzcards-hearts.dsc, config/ggzcards-lapocha.dsc,
	config/ggzcards-spades.dsc, config/ggzcards-suaro.dsc,
	config/ggzcards.dsc, games/lapocha.c: Changed the game-specific
	messages to send the game _name_ instead of an (arbitrary)
	game-identifying opcode.

2002-02-23 05:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - generate keepalive makefile

2002-02-23 05:33  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/ggzsh/: .cvsignore, Makefile.am,
	README.ggzsh, ggzsh.cpp, ggzsh.h, keepalive_general.py, main.cpp: -
	add first GGZSH sources

2002-02-23 00:11  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, protocols.h, table.c, table.h,
	transit.c: 
	- Notify players of table description changes:	 * new function
	_net_send_table_desc()	 * handle GGZ_UPDATE_DESC as table_event  
	* new function table_set_desc() to do dec update and event
	enqueuing

2002-02-22 22:59  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.h, net.c, players.c, table.c, table.h: 
	- Revert earlier change to table->desc: change it back to any array
	so   that we can do a shallow copy of the table

2002-02-22 18:32  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/chess/Makefile.am: - merge two include statements
	into one - hey, the new automake isn't _that_ bad :)

2002-02-22 17:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: games.c, games.h, games/Makefile.am,
	games/whist.c, games/whist.h: Added Whist support to GGZCards.
	
	(I was looking for a game to implement that could test out the
	"multiple playing" feature recently added.  I didn't find one, but
	stumbled back across Whist and it looked _so_ easy I had to do
	it...)

2002-02-21 04:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: play.c, play.h: Added sanity checking for
	play requests - especially when multiple people are playing at
	once.

2002-02-21 04:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, bid.c, common.c, common.h,
	game.c, game.h, games.h, message.c, net.c, play.c, play.h, types.h,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/sueca.c: I finally did it: allowing more than
	one player to play (a card from a hand) at once.
	
	Of course, it hasn't actually been tested since no games currently
	use this functionality (hearts needs it, but it needs other stuff
	too).
	
	TODO: sanity checking; for instance, it would be bad for more than
	one play to play at the same time _from the same hand_.

2002-02-21 02:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Fixed minor bug in determining
	if a player's tricks count or not.
	
	Also I cleaned up a comment and a for loop.

2002-02-21 02:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/aicommon.c: Fixed significant bug in the
	determining of the player's suit map: we associated a played card
	with the suit led rather than the suit it belonged to.

2002-02-21 01:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c, protocol.h,
	ai/protocol.h, ai/spades.c, ai/suaro.c: Mild cleanups to lots of
	code.	 - Substituted hard-coded player values for complicated
	expressions in	    the AI code.    - Introduces TRUE and FALSE and
	bool type (hey, why not).    - Removed unintentional printf
	statements.    - Renamed a few AI variables and restructured some
	tidbits of code.

2002-02-20 22:01  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, players.h, protocols.h, seats.h,
	transit.c, transit.h: 
	- Functions to handle player intiated table updates:   *
	_net_handle_update() to parse request	* player_table_update()
	check permission and starts update steps   * transit_seat_event()
	to queue up seat change event for table thread	 *
	transit_seat_event_callback() to handle seat change event in table 
	   thread: **currently just stub**   * net_send_update_result() to
	send result back to client
	
	- Added in new update types GGZ_UPDATE_SEAT and GGZ_UPDATE_DESC
	(not   yet used)
	
	- Extended GGZSeat type for use by seat transit event

2002-02-20 20:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: client.c, client.h: Updated
	client-common files from the client.

2002-02-20 20:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.c, client.c, spades.c:
	Improvements to the spades AI.	  - Fixed a couple of nasty bugs in
	the ai-common code.    - Improved the AI to better determine when
	to lead spades.  We'll prefer	   to lead them the more we have,
	and if our partner leads spades we'll	   respond if possible.

2002-02-19 22:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/Makefile.am: Removed outdated references to
	libai.a.

2002-02-19 21:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/.cvsignore: Added files to .cvsignore.

2002-02-19 21:51  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: client.c, client.h, game.c, game.h,
	main.c, protocol.c, protocol.h: OK, the first bug: I forgot to add
	these files.

2002-02-19 21:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, bid.c, cards.c, cards.h,
	common.c, common.h, main.c, message.c, net.c, protocol.c,
	protocol.h, types.h, ai/Makefile.am, ai/aicommon.c, ai/aicommon.h,
	ai/random.c, ai/spades.c, ai/suaro.c, games/spades.c,
	games/spades.h, games/suaro.c, games/suaro.h, games/sueca.c:
	Completely rewrote the AI system so that the AI now runs
	client-side.
	
	For each AI, the server will fork off an AI process that runs
	exactly as a client does.  This has a number of advantages, mostly
	stemming from encapsulation of the AI code - it is now completely
	self-contained; this means its impossible for the AI to cheat even
	by accident (which I was a bit worried about before), makes it easy
	to track separate state data for each AI, makes it easy to use
	different AIs at the same time (not yet supported), and makes it
	possible to keep the AI code cleaner overall.
	
	There are only a few drawbacks.  The AI is a bit slower (although
	this should not be noticable; certainly it'll still be faster than
	a human player).  There's a bit more overhead for the server, which
	could be a problem on a heavily loaded server (but again, less
	overhead than a human player would case).  There are some extra
	open sockets, which could help a heavily loaded server to reach
	it's _system_ socket limit (blah, blah, blah).
	
	The final (and biggest IMO) drawback is that the AI doesn't know
	anything about the game state other than what is sent to the client
	- which is very little.  For instance, the Suaro AI has to do some
	extra work to figure out who the declarer is and what the contract
	is - work that is currently duplicated between the server's game
	code and the AI code (but it may not have to be).  More generally,
	an AI that begins playing in the middle of a hand or a game (which
	is not currently possible, but eventually should be) will not have
	full information about what has happened up to this point in the
	hand.  Of course, this is no more problem than a human would face
	in the same situation.
	
	Finally, there are a number of limitations of the current
	implementation:   - I've copied over the core client files
	(common.c/common.h) as	   client.c and client.h in the AI code. 
	This means an extra level of	 file duplication.    - I had to
	simulate the work of ggzmod by calling socketpair/fork/exec	
	for each AI process, and changing the core client files to not use 
	    ggzmod at all (that 3 is just hard-coded now).  This just means
	some	  extra work maintaining all of this stuff.  In the future,
	if ggzmod is	  changed to handle both GGZ and game side (just as
	ggzdmod does), the	code could just use it directly (although
	this would introduce a	    dependency to ggz-client-libs).    - If
	an AI process exits abnormally, there is currently no reasonable   
	  error handling.  Instead, the game will generally just hang. 
	This	  can be fixed in the future; the most likely handling
	would be to	 start a new "random" AI in place of the crashed
	one, and warn the      players at the table.	- We currently
	don't kill AI processes when the server exits.	But the      AI
	code will exit on its own.  It would be easy enough to kill the    
	 process, but could lead to communication problems (we might try to
	     send data to it, and end up starting a new AI in the process).
	 So	 care will be needed.	 - I had to rewrite the main loop
	of the server to call select() itself	   instead of using
	ggzdmod_loop().  This was a bit of a pain; it could	 be
	prevented by allowing ggzdmod to monitor _bot_ socket FD's, if they
	     are set (and allowing the game to set them, of course).	-
	It is extremely likely that bugs will turn up in this system.  This
	is	a problem given the lack of error handling above.  But, the
	changes      were so massive I really don't feel like reviewing
	every line of code	in the patch.  The most likely source for
	bugs is that the AI's don't	 have access to all the information
	they used to.  I'd rather commit      the changes now, and fix bugs
	as they come along.
	
	Whew.

2002-02-19 08:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, cards.c, cards.h, common.c, net.c,
	protocol.c, protocol.h, ai/aicommon.c, ai/spades.c: Moved function
	cards_equal to are_cards_equal in the "common" code, so it'll be
	accessible from the client.

2002-02-19 07:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: net.c, protocol.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Changed the REQ_BID
	bid request packet to include a list of the actual bids available,
	in addition to the bid descriptive texts.

2002-02-19 06:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, net.c, net.h, protocol.c,
	protocol.h, config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Added MSG_NEWHAND
	new hand message, sent from the server to the client to inform them
	of a new bid.
	
	This will generally not be used by the GUI, which really doesn't
	need to know this information at all.  But it could be used by a
	client-side AI.

2002-02-19 04:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, games.c, main.c, message.c,
	net.c, net.h, protocol.c, protocol.h, types.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Added MSG_BID bid
	message, sent from the server to the client to inform them of a
	bid.
	
	This will generally not be used by the GUI, which (in the most
	general case) will rely on the player messages for this information
	instead.  But it could be used by a specialized GUI or a
	client-side AI.

2002-02-19 02:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: login.c, login.h, net.c, net.h, players.c, players.h,
	room.c, room.h: Changed the return type of a number of functions to
	be GGZPlayerHandlerStatus.
	
	There may be more functions that return a value from this enum that
	I have missed.
	
	Also, there is at least one function (room_join) that may return
	either a value from this enumeration _or_ an E_*** error code. 
	Currently this works, but it could be dangerous (the sets _do_
	overlap) and is logically a bit confusing (returning
	GGZ_REQ_DISCONNECT means a disconnect, but E_*** is the equivalent
	of GGZ_REQ_FAIL).  It would seem logical to have the error code be
	sent in another parameter (or to set an errno-like value), and
	return GGZ_REQ_FAIL in this case.

2002-02-19 01:18  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: chat.c, event.h, ggzd.h, players.c, players.h, table.c,
	transit.c: Put GGZ_EVENT_ERROR, GGZ_EVENT_OK, GGZ_EVENT_DEFER into
	their own enumeration, GGZEventFuncReturn.    - Changed the return
	type of GGZEventFunc to be GGZEventFuncReturn.	  - Changed the
	return types of all the GGZ event functions (callbacks)      to be
	GGZEventFuncReturn.    - Moved GGZEventFuncReturn enumeration into
	ggzd.h.  (This was necessary	  for things to compile cleanly
	without file dependencies getting in	  the way.)    - Added a
	couple of comments.

2002-02-19 00:57  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Removed compiler warning by adding unnecessary
	case statements to switch.

2002-02-19 00:53  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.h: Fixed typo in last commit.  Oops!

2002-02-19 00:49  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: login.c, players.h: Minor cleanups to ggzd's UID system:  
	- Changed GGZ_UID_*** #definitions to an enumeration.	 - Added
	GGZ_UID_REGISTERED to the enumeration (value 0), and replaced	  
	it for 0 in the code.	 - Added a couple comments about registered
	users getting unique UID's	later.

2002-02-18 09:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed typo in last commit.

2002-02-18 03:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, main.c,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Changed ggzcards to
	(more or less) correctly use GGZdMod's states.

2002-02-18 02:22  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Remove unused code: an empty if statement (and a
	long comment).
	
	I must have left this code in in a previous change when allowing
	reserved seats.  It certainly doesn't need to be there; what it
	claims to do is being handled down below.

2002-02-18 01:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzd.h, parse_opt.c, table.c: Removed GGZ_ALLOW_***
	enumerated values, replacing them with explicit automated bitfield
	values.
	
	This is the patch send to ggz-dev a week or so ago; it makes
	changes like replacing allow_bits[intval] with 1 << (intval - 1). 
	This is a (small) step toward relaxing the seat limit, and a
	cleanup in its own right.

2002-02-17 09:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: For reserved seats, use the name
	of the player (who has the reservation) instead of just "Reserved
	Seat" as the seat name.

2002-02-16 20:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Fix for spades player
	message: don't show the player's bid once the full contract is
	shown.

2002-02-16 20:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: - Made function
	get_state_name non-static.  It's not currently used   outside of
	common.c, but it easily could be.  - Removed manual sleep() calls
	at the end of a trick and hand.  These	 should be (and now are, in
	the case of the end-of-trick delay) handled   client-side anyway,
	and with high lags they may not have worked at all.

2002-02-16 07:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: - Increase the rounding
	additions slightly to make the bids less   overconservative.  -
	Adjust the rounding of the 4th bidder to bring the trick total
	toward	 11.

2002-02-16 04:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Further improved spades AI:  
	- Better (and _much_ wordier) expert system to deal with non-spade 
	   suid bids.	 - Better system to decide when to lead spades
	(mostly so that we don't      pull our partner's spades when the
	opponents are void).	- Tweak: lower the "rounding" add-ons, and
	differentiate them by	   position.	- Tweak: don't count a Q-x
	of spades as a full trick.    - Removed some depricated code.	 -
	Added a little bit of debugging output code.	- Tweak: count the
	4th spade as .75 trick instead of .50.	  - Changed a few comments.
	
	I should probably introduce different difficulty levels soon...

2002-02-15 21:07  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/io.c: 
	- Cast seat->type pointer to int* to avoid compiler warning

2002-02-15 21:06  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.h, table.c, table.h: 
	- Moved GGZTableState to libggz - Use quotes for local includes in
	table.c - Change table->state to be of type GGZTableState

2002-02-15 01:26  Jason Short <jdorje@users.sourceforge.net>

	* man/: Makefile.am, ggzdmod.h.3: Added manual for ggzdmod.h.

2002-02-15 01:00  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: A slight cleanup to the ggzdmod documentation.

2002-02-14 21:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Bugfix for spades player
	messages: we don't want contracts to be shown during the bidding
	(only bids).

2002-02-14 19:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fix to last commit.

2002-02-14 18:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Workaround for a bug in the
	server: somehow player/ai names can get overwritten, for instance
	when you played Suaro (in the GGZCards - Suaro room only (!)) the
	AI would get the same name as the player.
	
	This is probably the symptom of a more serious bug, but for not
	I've just done a quick workaround to instead consult ggzdmod
	directly to retrieve player and bot names.  Hopefully there won't
	be any similar problems with names of other seats.

2002-02-14 03:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, net.c, net.h: - Split off
	send_newgame function to only send newgame to one player.  -
	Created new function send_newgame_all to send a newgame to
	everyone.  - Changed all previous uses of send_newgame to
	send_newgame_all.  - When a player connects to a game-in-progress,
	send just them a newgame   with send_newgame.

2002-02-12 22:17  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, bid.c, bid.h, cards.c,
	cards.h, common.c, common.h, game.c, game.h, games.c, games.h,
	main.c, message.c, message.h, net.c, net.h, options.c, options.h,
	protocol.c, protocol.h, types.h, ai/aicommon.c, ai/aicommon.h,
	ai/random.c, ai/spades.c, ai/suaro.c, games/bridge.c,
	games/bridge.h, games/euchre.c, games/euchre.h, games/hearts.c,
	games/hearts.h, games/lapocha.c, games/lapocha.h, games/spades.c,
	games/spades.h, games/suaro.c, games/suaro.h, games/sueca.c,
	games/sueca.h: Updated copyrights and authors for all files.

2002-02-11 23:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Slight fix for assigning a name
	to a seat.

2002-02-11 23:44  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.c, aicommon.h, spades.c,
	suaro.c: Miscellaneous cleanups to AI code:
	
	  - Introduced new function libai_get_highest_card_in_suit.
	  - Changed libai_cards_left_in_suit to libai_cards_played_in_suit.
	 The
	    former assumed that there were 13 cards in each suit, and
	without an
	    easy way to fix it it's just easier to reverse the counting (so
	    callers must do the subtraction themselves).
	  - Renameed libai_cards_played_in_suit to
	libai_cards_played_in_suit_p.
	    This is just a temporary measure; naming in the AI library is
	getting
	    really out of hand; a better solution will have to be found.
	  - Much simplified suaro playing/leading code by removing
	redundant
	    conditionals.
	  - Simplified suaro playing code by ignoring SUARO.trump and just
	looking
	    at game.trump.

2002-02-11 20:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/suaro.c: Added explanation of the AI.
	
	Also, I fixed a potential scaling problem in count_suit_strength.

2002-02-11 19:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/suaro.c: Rewrote most of the suaro AI.
	
	Now it can play for real.  I certainly wouldn't call it "good", but
	it's a lot better than the old "pick-a-card-at-random" AI
	algorithm.

2002-02-11 19:37  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/aicommon.h: Added macros for MIN and MAX
	(surely these must be provided somewhere?).

2002-02-11 19:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c: Activate function ai_debug.

2002-02-11 02:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Added missing (possibly
	unimportant) initializations for game.seats[n].

2002-02-11 02:51  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.c: Added testing and debugging
	code to read_card and write_card.

2002-02-11 00:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: protocol.c, protocol.h: Updated
	protocol.[ch] files from client.

2002-02-10 22:59  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.conf.in, parse_opt.c, players.c, players.h: -
	Implemented banned IP lists configurable with ggzd.conf

2002-02-10 05:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, cards.c, common.c, common.h,
	game.c, games.c, main.c, message.c, net.c, options.c, protocol.c,
	ai/aicommon.c, ai/random.c, ai/spades.c, ai/suaro.c,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/suaro.c, games/sueca.c: Added "#include
	<config.h>" for all files that needed it.

2002-02-10 05:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: protocol.c, protocol.h: Changed
	UNKNOWN_CARD from a #definition to a const card_t.

2002-02-10 02:19  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.conf.in, parse_opt.c, players.c, players.h: -
	Hostname lookups now work in a threadsafe manner, default to off

2002-02-10 01:34  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.h, motd.c, motd.h, net.c: - Remove 1024 character
	MOTD line limitation - Remove 80 line limit on MOTD

2002-02-10 00:30  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: err_func.c, err_func.h, ggzd.conf.in, parse_opt.c: - Some
	updates to the log_update stuff, default to human readable updates
	- Can set whether the update is verbose and the update interval in
	ggzd.conf

2002-02-09 21:54  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Removed two bad (well, answered) "Why do we do it
	this way...?" comments I had previously added.

2002-02-09 21:52  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: In table_check(), make sure the number of AI
	players is less than the total number of seats.
	
	This will prevent players from launching all-AI games, which is a
	good thing (at least for the moment).  This was a problem before
	with games that would accept a wide variety of player #'s, like
	Chinese Checkers and GGZCards.
	
	Note, the user may try to launch such a game and will just get a
	cryptic "Bad options" (E_BAD_OPTIONS) error from the server.  It
	may be worthwhile to deal with this by checking the number of AI
	players client-side before sending it on to the server (for
	instance gtk-client could just disable the "AI" option for the
	first seat; ggzcore could return an error if the client tried to
	send a bad player combination).

2002-02-09 21:43  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Fixed potential bad memory access in table_check. 
	Now, rather than blindly index into the allow_bits[] array, we
	first check to see if the number of seats/bots is within the
	reasonable limits (it must be >= 0 and <= MAX_TABLE_SIZE).

2002-02-09 17:58  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: protocol.h, world.cpp: - add basic
	in-game chat support

2002-02-08 15:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/protocols.h: Changed two more groups of #defines into
	enumerations.
	
	The names for these enumerations leave something to be desired. 
	Currently they are called GGZUpdateOpcode (GGZ_UPDATE_***
	enumerations) and GGZClientReqError (E_*** error enumerations).

2002-02-06 14:36  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzd.h: Converted several groups of #definitions to
	enumerations.
	
	This parallels changes already made elsewhere in GGZ.

2002-02-05 17:53  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Changed -1 to GGZ_TYPE_ALL (which is -1).

2002-02-05 17:45  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/players.c: Comment out (via #if 0...#endif) the
	net_set_dump_file(..., "ggzd.protocol") line.
	
	I also added a comment explaining it.

2002-02-05 17:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/control.c: Minor cleanup to control.c.  Behavior shouldn't
	be affected at all.
	
	  - Declared variables and functions static.
	  - Created new function check_path() to take away duplicated code
	in
	    init_dirs().
	  - Added comments for some functions.
	
	All changes should be pretty innocuous.

2002-02-05 15:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/game.c: Fixed typo bug in last
	commit.
	
	I reviewed and compiled it before committing, but I guess I forgot
	to check the result of the compile that last time.
	
	Doh.

2002-02-05 15:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/game.c, chinese-checkers/game.c,
	combat/game.c, dots/game.c, escape/game.c, hastings/game.c,
	lapocha/game.c, reversi/game.c, tictactoe/game.c: Changed all
	relevant games to check for open _and_ reserved seats before
	believing that all seats are full (and, therefore, that the game
	should be started).
	
	These games should now all work with seat reservations.

2002-02-05 13:21  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzdb.c, hash.c, login.c, players.c: 
	- Move lower-casing code into ggzdb and hash code.  This should  
	properly implement case-insensitive/case preserving as discussed on
	  the mailing list

2002-02-05 03:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Added more logging when
	ggzdmod_set_seat refuses to change a player's name.

2002-02-05 03:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Permanently re-enabled
	ggzdmod_set_seat call; it'll return a negative value if it fails
	anyway.

2002-02-05 02:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: - Dropped dump_seats() (which was unused
	anyway) since we now have   ggzdmod_check.  - Moved seat_print down
	near to ggzdmod_check.	- Made seat_print more succinct by calling
	ggz_seattype_to_name.  It still   duplicates work done in
	ggzdmod_check, but that's OK.

2002-02-04 21:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Use strcasecmp instead of strcmp to compare
	player names in several places:   - When removing a player (by
	name) from a seat at a table.	 - When seeing if a player matches
	a reservation.
	
	The former should not be necessary (both the stored name and the
	given name come straight from ggzd, so they should match).
	
	The second should fix half of the seat reservation problem.  Now it
	should be possible to reserve a seat for "crouton" and have
	"crouton", "Crouton", or "CrOuToN" sit at that seat.  But if you
	try to reserve a seat for "Crouton", the fact that the DB is done
	all-lowercase will still be a problem, and the reservation will
	fail (currently it'll just be converted to an OPEN seat).
	
	Note, strcasecmp may not be available on all platforms, so we may
	need to have configure check for it (?).

2002-02-04 20:39  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Added error handling if _ggzdmod_set_seat
	fails.
	
	Note, this should never actually happen.

2002-02-04 20:33  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: table.c, transit.c: Added minimal error handling in case
	ggzdmod_set_seat returns -1.
	
	Note, this should never happen.

2002-02-04 20:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fix seat name problems for when
	ggzdmod_set_seat can't be used to set the seat name.

2002-02-04 20:15  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Display requested name when invalid reserved seat is sent

2002-02-04 01:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/chess.dsc, chinese-checkers/ccheckers.dsc,
	combat/combat.dsc, dots/dots.dsc, escape/escape.dsc,
	ggzcards/config/ggzcards-bridge.dsc,
	ggzcards/config/ggzcards-hearts.dsc,
	ggzcards/config/ggzcards-lapocha.dsc,
	ggzcards/config/ggzcards-spades.dsc,
	ggzcards/config/ggzcards-suaro.dsc, ggzcards/config/ggzcards.dsc,
	hastings/hastings.dsc, krosswater/krosswater.dsc,
	lapocha/lapocha.dsc, reversi/reversi.dsc, tictactoe/tictactoe.dsc:
	Upped the protocol version numbers on all games that use the
	GGZSeatType enumeration.
	
	AFAICT, this is all games except keepalive, spades, and muehle.
	
	I've done limited testing to make sure everything works as planned,
	but further testing would be good.

2002-02-02 23:16  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: 
	- Don't store the player fd on the GGZ side since we don't need it 
	 and it gets closed anyway.  Just pass it to the game side and then
	  store -1

2002-02-02 23:05  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Add a \n on the end of the seat_free error
	message.

2002-02-02 23:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Use ggzdmod_check in table_check.

2002-02-02 22:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Added debugging function
	ggzdmod_check().

2002-02-02 22:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Print an error message (to stderr,
	unfortunately) if close() fails in seat_free in ggzdmod.
	
	This is the likely cause of the recent "select error" bugs.

2002-02-02 18:57  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/ggzduedit.c: 
	- Rename getline() to getnextline() so we don't collide with GNU  
	extension function getline()

2002-02-02 18:57  Brent Hendricks <bmh@users.sourceforge.net>

	* acconfig.h, configure.in: 
	- Do a few more function checks for non-POSIX stuff.  Eventually
	we'll	need to handle the cases where they're no found...  - Bite
	the bullet and just define _GNU_SOURCE.  On glibc systems (most  
	of the ones that use this) it makes life simpler, and on others it 
	 really shouldn't hurt anything.

2002-02-02 18:18  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Oops.  Revert earlier change that took out _XOPEN_SOURCE define  
	That define is needed to get pthread_rwlock stuff on linux :( - Put
	tests at end of subdirs list so everything else compiles first

2002-02-02 15:58  Brent Hendricks <bmh@users.sourceforge.net>

	* acconfig.h: 
	- declare strsep function for systems that don't have it

2002-02-02 15:15  Brent Hendricks <bmh@users.sourceforge.net>

	* acconfig.h, configure.in: 
	- Do test for PF_LOCAL since on some older systems its PF_UNIX
	instead

2002-02-02 15:13  Brent Hendricks <bmh@users.sourceforge.net>

	* acinclude.ggz: 
	- Removed references to easysock, since that lib is gone - When
	checking for LIBGGZ, also look in the specified prefix dir

2002-02-02 01:42  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Unify the checking of seat reservations.
	
	- All the checks are done in transit_table_event_callback().  A
	seat # is   determined for the player, too.  - The seat # is passed
	in to transit_send_join_to_game().  This function   doesn't check
	it at all, but just sends it straight on to the game   server.

2002-02-02 01:35  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in, ggzd/Makefile.am, ggzd/strsep.c: 
	- Use LIBOBJS (well, LTLIBOBJS) facility in autoconf/automake to
	build	strsep function on systems that don't have it

2002-02-02 01:33  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: 
	- #include <sys/select.h> to fix compiler warnings on solaris

2002-02-01 18:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: When a player joins, we must check to see if a
	seat (open or reserved) is avialable for them _before_ doing the
	TRANSIT_JOIN.
	
	This means the work is doubled: when the transit is started, if
	there are no open seats we must check each and every seat to see if
	it is reserved _for that player_.  Later, when the transit_join is
	completed we must first check all seats to see if they are a
	reserved seat for that player, and if that fails check all seats to
	see if they are open (since we always want to put a player in their
	reserved seat if possible).
	
	With this change, reserved seats should pretty much work.  However,
	there is one other case that has not been considered: if two seats
	are reserved at a table for the same player.  ggzd does not check
	for this when the table is lauched (to prevent it), and if someone
	does it, it will make it very difficult to fill both seats (the
	player with the reservation would have to join, leave, and rejoin).

2002-02-01 18:09  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fix ggzdmod-ggz to allow for reserved seats.
	
	Namely, if a seat is changed from an open/reserved seat into a
	player one, we will send a JOIN command to the game server.  We
	don't do any checking of the reservation; that is left up to ggzd.

2002-01-30 03:24  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: seats.c, seats.h, table.c, transit.c: Removed seats_open,
	seats_bot, seats_reserved, and seats_human.  Replaced with
	seats_count (which takes the type as well).
	
	This is slightly more verbose, but easier to understand (IMO), cuts
	down on the amount of overall code, and is (slightly) more
	flexible.

2002-01-30 02:16  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: - Add a debugging message when a player tries to
	join a full table.  This   will probably be of use in debugging
	reserved seats (since it's not	 supposed to be able to happen, but
	inevitably will...).  - Added an obvious fix so that a player can
	join a table with no "open"   seats so long as there is a
	"reserved" seat available.  I also added a   FIXME comment since
	this is (probably) the place where we should check   to see if the
	reservation is valid for that player (instead we check	 later,
	which will result in the above error if the reservation _isn't_  
	valid).

2002-01-24 18:49  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: On table launch, check and verify the names of any
	reserved players.
	
	This fixes a security hole; the old code would overrun buffers or
	segfault if given a NULL name.
	
	We verify the name by looking it up in the player database.  If it
	is not found, we just change the seat to OPEN.	Later this can be
	improved (as discussed by Rich).

2002-01-24 17:31  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: control.c, players.c, table.c: Added more logging
	information for when that pesky select error happens.
	
	I'm pretty positive it happens in table_loop() every time...but now
	we'll know.

2002-01-24 06:30  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/transit.c: Fixed a FIXME so that when a player joins a
	table, we check for their reserved seat and give it to them if
	available.

2002-01-24 06:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Added seats_full() function so
	that we check for reserved seats when looking to see if we're ready
	to play.
	
	Previously, this and (just about) all other games just call
	ggzdmod_count_seats(ggz, GGZ_SEAT_OPEN) and take that to be the
	number of "open" seats.  But reserved seats are "open" too!  Oops!

2002-01-24 05:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.h: Removed headers for unused, unimplemented functions
	table_join and table_leave.
	
	No doubt these are left over from pre-ggzdmod days.

2002-01-24 04:59  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, seats.c, table.c, table.h, transit.c: Unified
	ggzd's table player tracking data fields.
	
	Old method: there was one char* array containing a "name" for each
	player.  This would be "<open>", "<reserved>", "<bot>", "<none>"
	for unfilled (non-human) seats.  A separate array tracked the names
	of reserved seats.
	
	New method: there is a GGZSeatType array that tracks the types of
	each seat.  A separate array tracks the names of reserved/human
	players.  It should work well enough for spectators, too (if we
	implement them that way).

2002-01-23 22:17  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: table.c, table.h: Removed unused "pid" field of the table
	struct.
	
	This data is tracked by ggzdmod now.

2002-01-23 22:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Added extra "case" clauses to fit all GGZSeatType
	possibilities.

2002-01-23 22:08  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, seats.c, seats.h: Changed several "int"s to
	"GGZSeatType"s.

2002-01-22 23:00  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c, ggzdmod/io.c, tests/logmod.c: Now we ggz_free
	the pointers allocated within ggz_read_string_alloc.
	
	In fact, all of ggzdmod uses libggz's memory management now.

2002-01-22 03:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/krosswater/: krosswater_server.cpp,
	zoneserver/ZoneGGZModServer.cpp: Changed krosswater to use
	libggz/easysock instead of easysock:
	
	- Changed #include <easysock.h> to #include <ggz.h>.  - Changed
	es_*** functions to ggz_***.

2002-01-20 03:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: krosswater/Makefile.am, reversi/Makefile.am:
	Removed -leasysock from several automake files.

2002-01-20 00:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: krosswater/zoneserver/Makefile.am,
	muehle/Makefile.am: Similarly fixed zoneserver and muehle to
	include ggzdmod correctly.

2002-01-20 00:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/krosswater/Makefile.am: Added $(top_srcdir)/ggzdmod
	to INCLUDES in the automake file so that the local ggzdmod is used
	correctly.

2002-01-19 02:29  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Don't check for easysock

2002-01-19 02:28  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/: chess/game.c, chinese-checkers/game.c,
	combat/game.c, dots/game.c, escape/game.c, ggzcards/bid.c,
	ggzcards/games.c, ggzcards/main.c, ggzcards/message.c,
	ggzcards/net.c, ggzcards/options.c, ggzcards/protocol.c,
	ggzcards/games/lapocha.c, hastings/game.c,
	keepalive/src/Makefile.am, keepalive/src/world.cpp, lapocha/game.c,
	reversi/game.c, spades/engine_func.c, spades/err_func.c,
	tictactoe/game.c: 
	- Remove dependency on easysock

2002-01-19 02:11  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, io.c: 
	- Removed easysock lib

2002-01-19 02:08  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/logmod.c: 
	- Use libggz instead of easysock

2002-01-19 02:07  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, err_func.c, err_func.h, event.c, net.c,
	players.c, transit.c: 
	- Use libggz IO functions instead of easysock ones

2002-01-17 13:17  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/protocol.h: - use values for protocol
	opcodes (upwards compatibility)

2002-01-16 16:49  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: net.c, table.c: Make sure we allocate table->desc if we
	are given a table description, and make sure we free it if it has
	been allocated.  When sending the description to clients, check to
	see if it exists.

2002-01-16 10:22  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/: keepalive.dsc, src/player.cpp,
	src/world.cpp: - fix *.dsc path - some debug output

2002-01-16 09:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/src/: keepalive.cpp, main.cpp, player.cpp,
	player.h, protocol.h, world.cpp, world.h: - graveyard: don't let
	player die forever... when she joins back, restore her	 from the
	graveyard - notify client if login into game failed

2002-01-15 22:59  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Changed an strcpy() to a snprintf() call to avoid a
	possible buffer overrun.
	
	This should mean than any table descriptions are safely truncated
	at 512 (MAX_GAME_DESC_LEN) characters.	But I haven't tested this.

2002-01-14 01:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.h: Doh!  Fixed error in last commit.

2002-01-14 01:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.h, ggzd/net.c: Added additional
	ggz__attribute directives.

2002-01-14 01:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c: Slight cleanup to _net_send_seat using new ggz_common
	functions.

2002-01-13 23:57  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h, tests/logmod.c: Removed definitions of the
	GGZSeatType enum; replaced with #inclusion of ggz_common.h from
	libggz.h.

2002-01-13 20:37  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: keepalive/Makefile.am, keepalive/src/Makefile.am,
	muehle/Makefile.am, muehle/ggz/Makefile.am,
	muehle/qtserv/Makefile.am, muehle/variants/Makefile.am: Added "make
	test" directives to Makefile.am files for muehle and keepalive.
	
	This whole process is very ugly, and it just gets worse each time
	we copy the automake code into a new game's automake file.  But
	what other alternative is there?

2002-01-13 18:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/net.c, ggzd/seats.c, ggzd/table.c, ggzdmod/ggzdmod.c,
	ggzdmod/ggzdmod.h, ggzdmod/io.c, ggzdmod/protocol.h, tests/basic.c,
	tests/ggzdtest.c, tests/logmod.c: Changed GGZ_SEAT_RESV to
	GGZ_SEAT_RESERVED.
	
	This can be changed back or renamed, but from now on we should keep
	the naming consistent between server and client.

2002-01-13 13:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h, io.c, io.h, mod.h: Changed
	"typedef void GGZdMod" to "typedef struct GGZdMod GGZdMod".  Many
	other associated cleanups.

2002-01-12 15:50  Josef Spillner <dr_maux@users.sourceforge.net>

	* acconfig.h, configure.in: - define ${ggzddatadir} - note:
	external games should use AC_GGZ_SERVER instead

2002-01-12 15:49  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: Makefile.am, loader.cpp, loader.h,
	main.cpp, muehle.dsc, muehleserver.cpp, muehleserver.h,
	ggz/ggzgameserver.cpp, ggz/ggzgameserver.h, qtserv/.cvsignore,
	qtserv/Makefile.am, qtserv/qlist.h, qtserv/qpoint.h,
	qtserv/qweb.cpp, qtserv/qweb.h, qtserv/qwebpath.cpp,
	qtserv/qwebpath.h, variants/.cvsignore, variants/Makefile.am,
	variants/classic, variants/roman, variants/twelvemensmorris: - add
	Qt/Server support - add 3 standard variants to the muehle game -
	add loader class skeleton to load variants - add copyrights -
	install files in $ggzddatadir/muehle which has to be defined

2002-01-12 12:41  Jason Short <jdorje@users.sourceforge.net>

	* .cvsignore: Added acinclude.m4 to .cvsignore.

2002-01-12 11:57  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - configure keepalive

2002-01-12 11:56  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/Makefile.am: - build keepalive by default

2002-01-12 11:56  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/keepalive/: .cvsignore, Makefile.am,
	README.keepalive, keepalive.dsc, keepalive.room, src/.cvsignore,
	src/Makefile.am, src/keepalive.cpp, src/keepalive.h, src/main.cpp,
	src/player.cpp, src/player.h, src/protocol.h, src/world.cpp,
	src/world.h: - add experimental keepalive server

2002-01-12 06:16  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/chess.dsc: 
	- Leaving is no longer permitted (until it is allowed in the code)

2002-01-12 04:32  Jason Short <jdorje@users.sourceforge.net>

	* autogen.sh, configure.in: Switch to using acinclude.ggz to check
	for libggz and easysock.

2002-01-12 04:12  Jason Short <jdorje@users.sourceforge.net>

	* acinclude.ggz: Added acinclude.ggz to ggzd and ggz-client-libs.

2002-01-12 03:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: Fixed some or all of the free() calls on memory
	allocated by ggz_conf...  functions.  These of course had to be
	changed to ggz_free().

2002-01-12 02:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards-bridge.dsc,
	game_servers/ggzcards/config/ggzcards-hearts.dsc,
	game_servers/ggzcards/config/ggzcards-lapocha.dsc,
	game_servers/ggzcards/config/ggzcards-spades.dsc,
	game_servers/ggzcards/config/ggzcards-suaro.dsc, ggzd/datatypes.h,
	ggzd/parse_opt.c, ggzd/table.c: Changed ExecutablePath to take the
	arguments (parameters) for the executable as well as the
	command-line executable itself.  Consequently, I removed the
	ArgList config parameter.
	
	Things are still a bit ugly because the arglist must be
	NULL-terminated.  So after we read the arglist (the first element
	of which is the executable itself) we must realloc to
	NULL-terminate it.  This is done just once, rather than each time
	the game is launched.
	
	Also, we still have to prepend the appropriate path if a relative
	path for the executable is given.  This is also easily handled.

2002-01-12 00:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, parse_opt.c: Removed #definitions of
	MAX_GAME_PROTOCOL_LEN, MAX_GAME_AUTH_LEN, and MAX_GAME_WEB_LEN. 
	Changed the appropriate fields of the GameInfo struct to be
	character pointers, and got rid of the string-copying code when we
	parse the config options.

2002-01-12 00:19  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, parse_opt.c, table.h: Removed
	MAX_GAME_DESC_LEN and changed the desc field of GameInfo to be a
	straight character pointer.

2002-01-12 00:12  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, parse_opt.c: Removed
	MAX_GAME_VER_LEN; the version and p_version now just become
	pointers to strings.
	
	There could be problems if the client limits the version names, but
	I don't think these will be any worse than they were before.

2002-01-12 00:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, parse_opt.c, table.c: Changed
	game_types[...].name from a fixed-size array to a pointer.
	
	We therefore don't have to copy over the game name into the array;
	we just use the memory allocated by ggz_conf_read_string.  I also
	got rid of MAX_GAME_NAME_LEN, and made a few changes to allow that.

2002-01-11 21:08  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: Added check to ExecutablePath: check for spaces
	(' ', '\n', '\t', is there a better way?) and remove anything after
	them, also printing an error message.  This will most likely catch
	errors.

2002-01-11 20:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: Added new #definition, DEFAULT_GGZD_PORT==5688.

2002-01-11 20:18  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/parse_opt.c: Replaced '8' with 'MAX_TABLE_SIZE'.

2002-01-11 20:00  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, parse_opt.c, table.c: Added new game
	option kill_when_empty.
	
	Its controlled by the KillWhenEmpty entry in the TableOptions
	section of the game's description file, e.g.
	
	  [TableOptions]
	  KillWhenEmpty = 0
	
	It defaults to 1, so the existing behavior will continue without
	any changes necessary to the dsc files.

2002-01-11 19:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Minor cleanup to common.c.

2002-01-11 11:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/: game.c, game.h, hastings.dsc, main.c: -
	small cleanups - use constants rather than plain values where
	possible - change homepage URL - remove asserts (an ideal way to
	treat fatal game errors would be to have   something like
	ggzdmod_fatal(); which sends a text message to the main server	
	(who transmits it to the core client) and exits the game
	gracefully, e.g.    with a handler. Well... sounds like 0.0.6 stuff
	;)

2002-01-11 08:47  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/ZoneProtocols.h: - remove old
	data structures

2002-01-11 08:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: Makefile.am, krosswater.dsc,
	krosswater_server.cpp, krosswater_server.h, main.cpp: - other
	updates

2002-01-11 08:46  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/: Makefile.am, ZoneGGZ.h,
	ZoneGGZModGGZ.cpp, ZoneGGZModGGZ.h, ZoneGGZModServer.cpp,
	ZoneGGZModServer.h: - remove old zone files based on ggz.[ch] - let
	Zone use libggzdmod (port is not finished yet)

2002-01-11 07:25  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/stackpath/: .cvsignore, Makefile.am,
	cwpathitem.cpp, cwpathitem.h, main.cpp, pathitem.cpp, pathitem.h: -
	reactivate stackpath test program - remove unnecessary <iostream>
	include - update copyrights - well, maybe Krosswater will be
	converted to QWeb, but maybe not

2002-01-08 16:31  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/parse_opt.c: 
	- Now conf-file params have GGZ_ prefix

2002-01-08 15:25  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: krosswater_server.cpp, main.cpp: -
	forgot these ones too.

2002-01-08 12:36  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, lists.c, lists.h: 
	- Remove unused lists files since their functionality has been	
	included in libggz

2002-01-05 21:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Fixed a bug that caused a
	(non-fatal) error in any multiplayer GGZCards game.

2002-01-05 05:09  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, conf.c, conf.h, parse_opt.c: - Rewrote
	parse_opt to use ggz_conf_XXX routines from libggz

2002-01-05 04:33  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/net.c: - Rewritten to comply with new ggz_xml_escape()
	functionality

2002-01-05 03:30  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: chat.c, hash.c: chat.c - Check for missing recipient in
	chat_player_enqueue
	
	hash.c - Check for NULL player name in hash_player_lookup

2001-12-28 16:55  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - create makefiles for muehle

2001-12-28 16:55  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/Makefile.am: - build muehle by default

2001-12-28 16:54  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/muehle/: .cvsignore, Makefile.am, main.cpp,
	muehle.dsc, muehle.room, muehleserver.cpp, muehleserver.h,
	protocol.txt, ggz/.cvsignore, ggz/Makefile.am,
	ggz/ggzgameserver.cpp, ggz/ggzgameserver.h: - add muehle game
	server stub - includes libzone successor (C++ library based on
	ggzdmod)

2001-12-28 14:19  Josef Spillner <dr_maux@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: - C++ compatibility

2001-12-21 02:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed significanltly bad bug in
	previous commit.

2001-12-20 16:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/protocol.h: Added documentation on the communications
	protocol used by ggzdmod.

2001-12-20 12:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h, common.c, common.h,
	game.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/suaro.c, games/sueca.c: Moved the static data storing the
	deck into a deck structure held within the game structure.

2001-12-20 02:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: message.c, message.h, types.h: Moved
	definition of struct global_message_list_t into message.c.
	
	This should probably be a ggz_list, but...

2001-12-20 02:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: types.h, games/bridge.c: Removed unused
	#define of MAX_MESSAGE_LENGTH.

2001-12-18 19:07  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Make sure we return an error value if
	ggzdmod_loop or ggzdmod_dispatch is called and we have no active
	FD's to monitor.
	
	This should prevent ggzdmod_loop from locking up when a game server
	is called from the command line.

2001-12-18 02:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/game.c, game_servers/combat/game.c,
	game_servers/escape/game.c, game_servers/ggzcards/common.c,
	game_servers/ggzcards/games/bridge.c,
	game_servers/ggzcards/games/euchre.c, ggzd/table.c: Fixed a bunch
	of malformed and buggy printf-style variadic arguments, plus I
	changed a few that just produced spurious warnings.

2001-12-18 01:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.h, game_servers/spades/err_func.h,
	ggzd/err_func.h, ggzdmod/ggzdmod.h: Added ggz__attribute's to
	printf-style variadic functions.

2001-12-17 18:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, message.c, net.c:
	Added USE_GGZ_STATS directive to common.h (disabled by default). 
	If enabled, this will use the (immature) API provided by ggz_stats
	to use GGZ statistics tracking.
	
	(Of course, GGZ statistics tracking isn't implemented, so ggz_stats
	just makes stuff up right now.	That's why the feature is
	disabled.)

2001-12-17 18:18  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzd.h, table.c: Added KILL_TABLES_WHEN_EMPTY directive to
	ggzd.h.  If defined (as it is now), then a table will be destroyed
	when it has no human players left at it.  Leaving it undefined
	requires the table to destroy itself when it is finished.

2001-12-17 16:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Makefile.am: Added missing source files to the automake
	list; without these make dist[check] failes.

2001-12-17 16:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/main.c, game_servers/chinese-checkers/main.c,
	game_servers/combat/main.c, game_servers/dots/main.c,
	game_servers/escape/main.c, game_servers/ggzcards/main.c,
	game_servers/hastings/main.c, game_servers/lapocha/main.c,
	game_servers/reversi/main.c, game_servers/tictactoe/main.c,
	ggzdmod/ggzdmod.c: Added an fprintf error message to stderr that
	ggzmod_connect prints if it fails.  Changed the game servers to
	exit(-1) if this happens (previously some game servers printed a
	message, some did exit(-1), and some just ignored it).

2001-12-17 00:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed things so that a bad easysock operation
	won't turn into a recursive loop.
	
	The problem happened because I unthinkingly added a debugging
	message (ggzdmod_log) in the case where there is an unhandled
	event.	But, if the game doesn't handle the ERROR event (as none do
	right now), then a failed connect will result in an ERROR event
	which is unhandled, and naturally the ggzdmod_log call will give
	another ERROR event.  Of course, this wouldn't be a problem if game
	servers handled this event, but...
	
	Most game servers may have code like this:   if
	(ggzdmod_connect(...) < 0) {	 fprintf(stderr,
	SOME_REALLY_LONG_ERROR_MESSAGE);     exit(-1);	 } would it be
	appropriate to have ggzdmod_connect write out this error message
	instead?  This would deny the possibility of any translation, but
	might otherwise be convenient for most game servers.

2001-12-17 00:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c: Fixed the game server so it'll
	handle a failed connection sanely.

2001-12-16 19:09  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: stackpath/pathitem.h,
	zoneserver/ZoneGGZ.h, zoneserver/ZoneGGZModGGZ.cpp: - fix variadic
	macro - fix namespaces - gcc 3 compatibility is now required

2001-12-11 00:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c, game_servers/ggzcards/common.h,
	ggzdmod/ggzdmod.c, ggzdmod/ggzdmod.h, tests/basic.c,
	tests/logmod.c: Changed GGZdModSeat to GGZSeatType.

2001-12-11 00:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: lapocha.c, lapocha.h: Added several
	other game-specific protocol extensions to La Pocha.

2001-12-10 17:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Handle a failed player name
	change more correctly.

2001-12-10 15:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: lapocha.c, lapocha.h: As a test, I
	added some game-specific extensions for la pocha only.

2001-12-10 14:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, message.c, net.c, protocol.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Restructured the
	message system of the ggzcards protocol.  I also took this
	opportunity to add a lot of comments to protocol.h.

2001-12-09 21:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Changed CONVERT_SEAT and
	UNCONVERT_SEAT to check the parameters.
	
	Shortly I'll need to turn these into functions, as they're not too
	complex for macros.

2001-12-09 21:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Added some more debugging messages
	to net.c.

2001-12-09 21:27  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: - When a module error occurs and we're in the
	CREATED state, trigger a   launch failure event

2001-12-09 21:18  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- Handle case when ggzdmod_connect() fails - If table_start_game()
	fails, trigger a table launch event with the   appropriate error
	code so player gets notified

2001-12-09 18:11  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, game.h, main.c: 
	- Made everything in game.c (except for game_init) static since it 
	 only needs to be called internally - Some function renaming and
	moving

2001-12-09 17:55  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, game.h, main.c: 
	- Finish restructuring game to remove unnecessary TTT-specific
	events	 and states

2001-12-09 16:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/spades/: engine_func.c, protocols.h: Changed spades
	to import the enumerations from ggzdmod: ggzdmod.h contains seat
	and state enumerations; ggzdmod/protocol.h contains the opcode
	enumerations.
	
	Something will have to be done about spades before ggzdmod can be
	significantly extended, however.

2001-12-09 16:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Makefile.am, ggzdmod/ggz_server.c, ggzdmod/ggz_server.h,
	man/Makefile.am, man/ggz_server_h.3: Removed ggz_server interface
	and its documentation.

2001-12-09 16:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Removed (hopefully) final dependency
	on ggz_server interface.

2001-12-09 16:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, common.c, common.h, games.c,
	main.c, message.c, net.c, options.c, games/bridge.c,
	games/euchre.c, games/hearts.c, games/lapocha.c, games/spades.c,
	games/suaro.c, games/sueca.c: Updated GGZCards to use the new
	ggzdmod.

2001-12-09 15:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Added function set_player_name,
	which	- sets the player name (using ggzdmod_set_seat).    - sets
	the seat name (if the above was successful)    - prints a debugging
	message    - prints an error message if ggzdmod_set_seat was _not_
	successful.

2001-12-09 15:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, games.c,
	ai/Makefile.am, ai/aicommon.c, ai/aicommon.h, ai/random.c,
	ai/spades.c, ai/suaro.c, games/Makefile.am, games/bridge.c,
	games/euchre.c, games/hearts.c, games/lapocha.c, games/spades.c,
	games/suaro.c, games/suaro.h, games/sueca.c: Changed system of
	#includes for ggzcards.

2001-12-09 04:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/hastings/: game.c, game.h, main.c: Updated Hastings
	to use the new ggzdmod.
	
	I also fixed a bug (most likely introduced by me in the past)
	whereby the server would send out player FD's instead of
	GGZdModSeat types when it broadcast the list of players (!).

2001-12-09 02:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c, game_servers/ggzcards/bid.c,
	game_servers/ggzcards/cards.c, game_servers/ggzcards/common.c,
	game_servers/ggzcards/game.c, game_servers/ggzcards/games.c,
	game_servers/ggzcards/main.c, game_servers/ggzcards/message.c,
	game_servers/ggzcards/net.c, game_servers/ggzcards/options.c,
	game_servers/ggzcards/ai/random.c,
	game_servers/ggzcards/games/bridge.c,
	game_servers/ggzcards/games/euchre.c,
	game_servers/ggzcards/games/hearts.c,
	game_servers/ggzcards/games/lapocha.c,
	game_servers/ggzcards/games/spades.c,
	game_servers/ggzcards/games/suaro.c, game_servers/hastings/game.c,
	ggzdmod/ggz_server.c, ggzdmod/ggz_server.h: Removed ggzd_debug()
	from ggz_server.h.

2001-12-09 02:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c, game_servers/hastings/game.c,
	ggzdmod/ggz_server.h: Removed ggzd_num_seats() and
	ggzd_seats_open() from ggz_server.h.

2001-12-09 01:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c, game_servers/ggzcards/net.c,
	ggzdmod/ggz_stats.c, ggzdmod/ggz_stats.h: Updated ggz_stats to
	(pretend to) use the new ggzdmod.

2001-12-09 01:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c, game_servers/ggzcards/common.h,
	game_servers/ggzcards/main.c, game_servers/hastings/game.c,
	game_servers/hastings/game.h, game_servers/hastings/main.c,
	ggzdmod/ggz_server.c, ggzdmod/ggz_server.h: Removed
	ggzd_main_loop() and ggzd_set_handler() from ggz_server.h.

2001-12-09 01:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c, game_servers/hastings/game.c,
	game_servers/hastings/main.c, ggzdmod/ggz_server.h: Removed custom
	state #defines from ggz_server.h.

2001-12-09 00:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/: game.c, game.h, main.c: Updated Escape to
	use the new ggzdmod.
	
	I wasn't able to test it, but the conversion was pretty simple and
	is likely to be correct.

2001-12-09 00:12  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Updated and improved a lot of the comments
	(doxygen-style).

2001-12-09 00:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: GGZd ignores the return value of ggzdmod_connect! 
	This is very bad.  I'm not sure how to handle the error, but I put
	a comment there for Brent or Rich to do it.
	
	Also, ggzdmod_disconnect has a return value to indicate an error,
	but it can be safely ignored (for now).  I typecast these functions
	to (void) just so we keep that in mind.

2001-12-08 23:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Changed ggzdmod_connect to return 0 on success
	instead of the GGZdMod socket FD.
	
	The reason for this is that games shouldn't be tempted to use this
	socket at all - there's no reason for them (or ggzd, AFAICT) to
	need this information.	I added a comment to this effect.
	
	All current code just compares the return value to 0 (or ignores it
	altogether), so this shouldn't conflict with anything.

2001-12-08 23:48  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Check for a null seat pointer in
	ggzdmod_set_seat.

2001-12-08 20:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Added a little more logging functionality.   
	- Unhandled events get logged.	  - One log message is made
	understandable.

2001-12-08 19:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/dots/: ai.c, game.c, game.h, main.c: Updated dots to
	use the new ggzdmod.

2001-12-08 19:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/combat/: combat.h, game.c, game.h, main.c: Updated
	combat to use the new ggzdmod.

2001-12-08 18:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/: chess.h, game.c, game.h, main.c: Updated
	chess to use the new ggzdmod.
	
	Some things do not work correctly: for instance, leaving and
	rejoining a game in progress does not work.  I think these are
	errors in the chess game outside of the scope of this update,
	though.

2001-12-08 15:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/: ai.c, game.c, game.h, main.c:
	Converted Chinese Checkers to use the new ggzdmod.

2001-12-08 00:20  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed bug in ggzdmod.
	
	seat_find_player() is used to search through a ggz_list to find a
	seat with a matching name.  It uses strcmp() and (as ggz_list
	specifies, though I find odd) returns 0 in the case of a match, 1
	if there's no match.
	
	But since seat names can be NULL, this will quickly segfault.  I
	changed it so that it always returns 1 (no match) in this case. 
	This function is used to find the seat that matches the name that
	ggzdmod-ggz sends when a player leaves the table, so this should be
	the correct behavior.
	
	I also added a comment which mentioned this in passing: ggzdmod-ggz
	should _not_ send the name in this case.  It should send the seat
	number, or the player's UID (although the game doesn't yet know the
	UID, so this isn't an option yet).  But that's an issue for another
	day (soon).

2001-12-07 23:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/lapocha/: game.c, game.h, main.c: Updated La Pocha
	to use the new ggzdmod.

2001-12-07 17:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/reversi/: game.c, game.h, main.c: Updated reversi to
	use the new ggzdmod.

2001-12-07 16:16  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- Disconnect from game module upon error

2001-12-07 15:15  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/io.c: Fixed major bug in ggzdmod: the player type wasn't
	being initialized when a join notification was received!
	
	GGZCards, and hopefully all other games should now work.

2001-12-07 15:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Fixed bug in example code: GGZdModSeat was
	used incorrectly in place of GGZSeat.  (I always get those two
	confused!)

2001-12-06 21:41  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_server.c, ggz_server.h: Removed most of the
	ggz_server interface.  It no longer provides full compatability for
	the old ggzdmod; it only provides enough to get the internal game
	servers to compile.
	
	Hopefully no external games will be too screwed over by this.  If
	so, just retrieve an older version of CVS to use until you upgrade.

2001-12-06 21:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: I messed up before in restricting the states
	that ggzdmod-game is allowed to switch between.  Really, the whole
	system (with ggzdmod_set_state, _ggzdmod_handle_state, and
	set_state) just has one function too many.
	
	I've made things work for now, but I'm not sure this is the correct
	solution.  The comment says:
	
			/* In contradiction to what I say above, the game
			   actually _is_ allowed to change its state from
			   CREATED to WAITING.	When ggzdmod-ggz sends a
			   launch packet to ggzdmod-game, ggzdmod-game
			   automatically changes the state from CREATED
			   to WAITING.	When this happens, it tells
			   ggzdmod-ggz of this change and we end up back
			   here.  So, although it's a bit unsafe, we have
			   to allow this for now.  The alternative would
			   be to have ggzdmod-ggz and ggzdmod-game both
			   separately change states when the launch packet
			   is sent. */
	
	and the change is that ggzdmod-ggz no longer checks what state
	ggzdmod-game is changing _from_, only what state it's chaning _to_
	(all but CREATED are allowed).

2001-12-06 20:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Modified ggzdmod_log so that it will work both
	ggz-side and game-side.  This is just a small change, mostly so
	that we don't end up missing log messages if they happen to be
	requiested by ggzdmod-ggz.

2001-12-06 20:50  Jason Short <jdorje@users.sourceforge.net>

	* Makefile.am: Changed message for "make test" so that ggzd run in
	test mode will usually be run in the foreground (-F).

2001-12-06 20:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Changed example so that we set state to DONE
	when all human players have left.
	
	Unless we can figure out a better way to handle it, this will have
	to be done manually by games now.  Some games may not want this,
	and GGZ isn't going to decide for them.

2001-12-06 20:21  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Changed message for "make test" so that ggzd run in
	test mode will usually be run in the foreground (-F).

2001-12-06 16:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c: Removed game_seats_open(); we now
	use ggzdmod_count_seats instead.

2001-12-06 16:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Drastically changed the example code in the
	documentation.
	
	It's now much more verbose (bad), but also much more complete
	(good).
	
	Perhaps now would be a good time to think about a simple example
	code and a more complex one.

2001-12-06 16:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Removed static function seats_open which has
	identical functionality to ggzdmod_count_seats and isn't needed
	anyway (since the last commit removed its use).  I also (sort of)
	changed ggzdmod_count_seats to use the form of seats_open (namely,
	searching through the list instead of searching by player number).
	
	This really doesn't resolve anything about ggzdmod_count_seats; it
	just cleans things up a little.

2001-12-06 15:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Mostly fixed the state control problems:	- I
	removed the internal state control code that automatically switched
	    from WAITING to/from PLAYING when players joined/left.    - I
	added a comment in front of set_state explaining the problems it'll
	     have once ggzd is allowed to change the state.  For now, I
	haven't      fixed it (at all).    - I commented most of the state
	changes we do pretty thoroughly.

2001-12-06 15:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Added ggzdmod_count_seats()
	function.  This function counts the number of seats of a given
	type; it corresponds to a whole set of functions provided by the
	original ggzdmod and (at least one of) which are used by (just
	about) every GGZ game we currently have.
	
	I've implemented this function entirely as a wrapper to existing
	ggzdmod functions.  Of course, games could do the same thing (and
	some of them do), but code duplication like this is bad. 
	Eventually one of two things should happen with this function:	 -
	It should be implemented using real GGZ structures.  This could
	make	 it much faster (O(1) instead of O(n) or O(n^2) in number
	of seats).    - It should be moved off into a wrapper library. 
	This is the better	solution in my opinion, but we need some
	other functions to populate	 this library as well.	Once
	ggzdmod is a little more mature, I'm	  pretty sure we will find
	such functions.

2001-12-06 14:24  Jason Short <jdorje@users.sourceforge.net>

	* Doxyfile, ggzdmod/.cvsignore, ggzdmod/Doxyfile: - Moved Doxyfile
	from the top directory into ggzdmod, and changed it  
	appropriately.	The reason for this is that it's entirely  
	ggzdmod-specific; if we later want to create Doxygen documentation
	for   ggzd it should be kept separate.	- I also changed the output
	directory name to "api".  I added this to   .cvsignore.

2001-12-06 03:44  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/game.c, ggzdmod/ggz_server.c,
	ggzdmod/ggzdmod.c, ggzdmod/ggzdmod.h, tests/basic.c: Replaced
	ggzdmod_halt_table with ggzdmod_set_state.
	
	ggzdmod_set_state does strictly more than ggzdmod_halt_table did:  
	- ggzdmod_set_state(mod, GGZDMOD_STATE_DONE) is the same as    
	ggzdmod_halt_table(mod).    - The game can also use
	ggzdmod_set_state to change states between	WAITING and PLAYING
	(which is not otherwise possible).  The rest of      this process
	(ggzdmod-game telling ggzdmod-ggz telling ggzd) should	    already
	be taken care of, so (after more testing) we may now think of	  
	passing this information on to the client (if this is not already
	done).	  - ggzd cannot yet use this function (nor does it need
	to).  Later we	    can add support for this (so that, for
	instance, a server admin can	  force a game to be DONE).

2001-12-06 03:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: More expansion (and updates) of the
	documentation.

2001-12-06 03:07  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Changed ggzdmod_connect() to have consistent
	return values for GGZ and GAME: -1 for failure; ggzdmod->fd on
	success.

2001-12-05 20:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, game.h, main.c: I changed TTT's
	ggz interface code to closely match the example code for ggzdmod.
	
	This kind-of reverses the change I made earlier - but I think it's
	worth it, since TTT is often used as the canonical example of a GGZ
	game.

2001-12-05 20:22  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Two minor fixes:
	
	- I corrected an inconsistency in some of the example code (within
	the   doxygen documentation).  - I changed "typedef struct _GGZSeat
	{" to just "typedef struct {".	As   far as I can tell, this is
	cleaner and has no disadvantages (it also   has the benefit that
	doxygen recognizes the correct name).  Brent, let   me know if
	there's a problem with this form of declaration.

2001-12-05 20:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Updated the doxygen documentation extensively,
	with a big improvement to the example code.

2001-12-05 18:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/game.c, game_servers/chess/game.h,
	game_servers/chinese-checkers/game.c,
	game_servers/chinese-checkers/game.h, game_servers/combat/game.c,
	game_servers/combat/game.h, game_servers/dots/game.c,
	game_servers/dots/game.h, game_servers/escape/game.c,
	game_servers/escape/game.h, game_servers/ggzcards/common.c,
	game_servers/ggzcards/common.h, game_servers/hastings/game.c,
	game_servers/hastings/game.h, game_servers/lapocha/game.c,
	game_servers/lapocha/game.h, game_servers/reversi/game.c,
	game_servers/reversi/game.h, ggzdmod/ggz_server.c,
	ggzdmod/ggz_server.h, ggzdmod/ggzdmod.h: Removed spurious typedef
	for GGZdModEvent in ggz_server.h, and updated all games to match.
	
	I don't think the ggzdmod interface is stable enough yet to justify
	upgrading all games to it, but I'd like to bring the ggz_server
	interface a _little_ closer to ease the transition.

2001-12-05 18:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c, game_servers/ggzcards/common.h,
	ggzdmod/ggz_server.c, ggzdmod/ggz_server.h: Removed spurious
	typedef from ggz_server.h for GGZdModSeat, and updated all games
	(that use ggz_server.h) to comply.

2001-12-05 18:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, main.c: Cleaned up/fixed GGZ
	support in tictactoe.  Namely:
	
	- I moved the handler registration functions into game init, at the
	same   place where the ggz object is created.  - I added an error
	message for a faild connection (probably not useful,   but...).  -
	I changed the EVENT_STATE handler to correctly identify a launch
	event.

2001-12-05 17:08  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Doh!  Correction to last commit.

2001-12-05 17:00  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Avoid ggz_strdup'ing a NULL seat name in
	seat_copy().

2001-12-05 16:36  Jason Short <jdorje@users.sourceforge.net>

	* .cvsignore: Added ggzd.protocol to .cvsignore.

2001-12-05 16:33  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Added prototypes for all (hopefully) static
	functions.  #if 0'd out the currently unused function dump_seats.

2001-12-05 15:58  Jason Short <jdorje@users.sourceforge.net>

	* tests/.cvsignore: Added ggzdtest and logmod to .cvsignore.

2001-12-01 22:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/main.c: Changed exit() to return to avoid
	compiler warning.

2001-12-01 21:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed small problem with handling
	of seat numbers in handle_join_event and handle_leave_event.
	
	The problem is that players can join/leave before the game is
	initialized.  If this happens, the seat number of the player will
	be uninitialized; it'll be set to -1.  In this case we can't mess
	with any of the seat data (obviously).
	
	This was already taken mostly taken care of, but I finished it up
	and made some comments making it explicit.  Note that if a seat
	isn't properly initialized on a join event, it may not get
	correctly initialized at all later!

2001-12-01 20:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common.c, common.h, game.c,
	games.c, main.c, options.c, ai/suaro.c: Added fatal_error()
	function.
	
	This is something that should probably be handled by libggz, but it
	isn't yet up to the task.

2001-12-01 10:56  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: io.c, protocol.h: 
	- Rename REQ_GAME_LAUNCH to MSG_GAME_LAUNCH since it is no longer a
	  request that gets a response

2001-12-01 00:54  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/: basic.c, ggzdtest.c, logmod.c: 
	- More involved testing - Updated to latests libggzdmod

2001-12-01 00:53  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/: chess/Makefile.am, chess/game.c,
	chinese-checkers/Makefile.am, combat/Makefile.am, dots/Makefile.am,
	escape/Makefile.am, ggzcards/Makefile.am, hastings/Makefile.am,
	lapocha/Makefile.am, reversi/Makefile.am, spades/engine_func.c,
	spades/err_func.c, spades/protocols.h, tictactoe/Makefile.am,
	tictactoe/game.c, tictactoe/game.h, tictactoe/main.c: 
	- Minimal amount of conversion necessary to get game moduels to  
	compile with new ggzdmod.  Mostly untested - Look in included
	ggzdmod dir for header files

2001-12-01 00:51  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzd.h, ggzdmod.c, ggzdmod.h, players.c,
	table.c, table.h, transit.c: 
	- Convert over to using libggzdmod for communication with game
	module - Look in included ggzdmod dir for headers

2001-12-01 00:44  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: ggz_server.c, ggz_server.h, ggzdmod.c, ggzdmod.h, io.c,
	io.h, mod.h, protocol.h: 
	- Changed most enums to GGZDMOD_ instaed of GGZ to prevent
	namespace   collision, except for seats since those are the same
	anyway - Moved IO code into io.c - Moved struct _GGZdMod
	declaration into mod.h since we need to access	 it from io.c, but
	don't want it in ggzdmod.h - debugging function dump_seats() and
	seat_print() - new function seats_open() to tell whether there are
	any open seats - Split out ggzdmod_set_num_seats()/
	ggzdmod_set_seat() into external   and internal versions so we can
	call "internal" one from game	(normally not allowed) - Renamed
	raise_error() to _ggzdmod_error() and made available through  
	mod.h - Temporarily disable bot naming code until we can make it
	work with   IO split out (possibly moot once we use XML protocol) -
	Rename handlers for opcodes to _ggzdmod_handle_XXX and make  
	available through mod.h - Changed REQ_GAME_OVER into REQ_GAME_STATE
	- Use REQ_GAME_STATE to notify GGZ when game is in WAITING and
	PLAYING   states - Remove RSP_GAME_LAUNCH (obsoleted by above) -
	Lots of misc. bug fixes and things I can't remember to make it work
	:)

2001-11-28 01:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.h, games/bridge.c,
	games/euchre.c, games/lapocha.c, games/spades.c, games/suaro.c:
	Fixed parameter type for game function get_bid_text().

2001-11-18 20:40  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Don't consider type == 0 to be an error (since we actually do use
	  type 0....)

2001-11-18 18:00  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/: ggzdtest.c, logmod.c: 
	- Filled in functions handle_game_[join, leave] in logmod to handle
	  REQ_GAME_[JOIN, LEAVE] and send back RSP_GAME_[JOIN, LEAVE] -
	Handle JOIN and LEAVE events in ggzdtest - Send a new player join
	when we get to the waiting state

2001-11-18 17:58  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: Makefile.am, ggzdmod.c, io.c, io.h: 
	- New files io.[ch] for functions to handle socket IO - New
	functions io_send_req_join() and io_send_req_leave() to send   join
	and leave requests, respectively - Call io_send_req_[join, leave]
	as necessary from set_seat()

2001-11-17 20:52  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/: Makefile.am, basic.c, ggzdtest.c, logmod.c: 
	- Added ggzdtest to test ggzd side of libggzdmod - Added logmod as
	a simple game module (no libggzdmod) to log protocol

2001-11-17 20:50  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: 
	- Use GGZList to store seats, rather than malloc'd array.  This
	makes	it easier in the future for games that have no fixed table
	size - New function call_handler() to perform halder calling - New
	function raise_error() triggers a GGZ_EVENT_ERROR (and may do  
	other things in the future - Lots of error checking and calls to
	raise_error() added - Small cleanups here and there

2001-11-17 02:59  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, net.c, stack.c, stack.h, xmlelement.c,
	xmlelement.h: 
	- Use libggz version of stack/list/xmlelement functions - Remove
	local implementation of said functions

2001-11-17 02:25  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- New functions safe_strdup() does same as strdup, or returns NULL
	if   string is NULL - Use safe_strdup() anytime strdup is called
	(prevents segfaults if	 client doesn't send data) - Check for
	presence of password if login type is 'normal'

2001-11-17 01:21  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, protocols.h: 
	- New error code E_BAD_XML for when client sends bad XML - Don't
	try to parse if client has disconnected

2001-11-13 17:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Minor cleanups.

2001-11-13 17:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: euchre.c, euchre.h: Added Euchre
	options: "Stick the Dealer" and "Super Euchre".

2001-11-13 16:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, games.c, message.c,
	net.c, options.c, protocol.h: Removed deprecated WH_ and wh_
	prefixes.

2001-11-13 15:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, games/euchre.c: Fixed
	some messaging problems and other problems with Euchre.
	
	There are still problems...

2001-11-13 15:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: euchre.c, euchre.h: Implemented
	Euchre scoring.

2001-11-13 05:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: net.c, games/euchre.c: Implemented going
	alone for Euchre.  Scoring bonuses for it still aren't implemented.
	
	Looks like there _is_ a problem with the 0-card hands - they are
	sometimes spuriously sent at the wrong time, which makes the client
	look really ugly.

2001-11-13 05:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: net.c, games/bridge.c, games/euchre.c,
	games/spades.c, games/suaro.c: send_hand() will now allow a hand of
	size 0 to be sent to the clients.  However, send_sync() has been
	changed so that the hands will not be sent if there is no game in
	progress.  Hopefully this will solve the (former) problems of hands
	being sent at the wrong time.

2001-11-13 04:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, games/euchre.c, games/euchre.h:
	Added multi-bid for Euchre: "going alone".
	
	After a maker is chosen, each player must decide if they want to
	"go alone" or not.  These bid requests are sent out simultaneously
	to everyone.
	
	Going alone is not yet implemented, however.  Also, several ugly
	hacks were required to track the bidding states properly in this
	case.

2001-11-13 04:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, common.c, common.h,
	message.c, games/bridge.c, games/euchre.c, games/spades.c,
	games/suaro.c: Removed state WAIT_FOR_BID; this information is
	instead held in the players' bid data structures.
	
	Added state NONE; this state occurs when we're pending waiting to
	pick a real state.

2001-11-13 03:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, common.c, common.h,
	message.c, net.c, games/bridge.c, games/bridge.h, games/euchre.c,
	games/hearts.c, games/hearts.h, games/lapocha.c, games/lapocha.h,
	games/spades.c, games/suaro.c, games/sueca.c, games/sueca.h:
	Replaced super-outdated "WH_STATE_***" enumeration names with just
	"STATE_***" names.

2001-11-13 00:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, message.c, ai/random.c,
	ai/spades.c, ai/suaro.c, games/bridge.c, games/hearts.c,
	games/lapocha.c, games/spades.c, games/suaro.c, games/sueca.c: For
	clarity and error-checking, I added (void) as the parameter for a
	bunch of non-parameter-taking functions.

2001-11-13 00:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, bid.h: Added function
	request_all_bids().  This function will request all pending bids;
	that is, for every player that has a list of bid choices set up it
	will request a bid selection from that list.
	
	This function is needed because req_bid won't do things in the
	right order for multiple bids.	The correct order is to first mark
	all players as bidding, then request bids from all human players,
	then request bids from all bot players, then handle the bids from
	the bot players.
	
	This function has not yet been used/tested.

2001-11-13 00:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, bid.h, common.c, common.h,
	game.c, game.h, games.h, message.c, net.c, types.h, games/bridge.c,
	games/euchre.c, games/lapocha.c, games/spades.c, games/suaro.c:
	Extensive changes that allow more than one bid at a time.
	
	It is now possible for more than one player to bid at a time.  The
	game-specific code must just call the core bidding functions for
	each player that is to bid, and make sure to request a bid from
	each player that is to bid, and the core functions will be able to
	understand and track the different players' bids.
	
	This has not been tested.

2001-11-12 20:08  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/net.c: - Enabled use of ggz_xml_escape() feature of libggz -
	Note that ggz.h is still incompatible with net.c overall - there
	are stack   feature differences - as such, the function defs for
	the ggz_* functions   are included inline in net.c

2001-11-12 18:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, cards.c, common.c, common.h,
	message.c, options.c, ai/random.c, ai/spades.c, games/bridge.c,
	games/euchre.c, games/hearts.c, games/lapocha.c, games/spades.c,
	games/suaro.c, games/sueca.c: GGZCards now uses libggz memory
	management routines.
	
	None of the debugging checks are enabled yet.

2001-11-12 17:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/euchre.c: Removed no-longer-necessary
	euchre_send_hand().  game_send_hand() is used instead for Euchre.

2001-11-11 12:34  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.conf.in, ggzd.test.in, net.c, net.h,
	parse_opt.c, players.c: - ServerName now read from configuration
	file and sent by net.c - Calls to ggz_xml_escape() and ggz_free()
	commented out for now, so until   we have the server linked to
	libggz the defined server name must be XML   safe, or bad things
	will probably happen.

2001-11-09 21:06  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/basic.c: 
	- Update to latest libggz

2001-11-08 20:57  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed another strcmp problem with ggzdmod.
	
	The problem here is that when a player leaves the table, the player
	is transmitted from ggzd by _name_.  This means we must go through
	our full list of players and strcmp to see which player it is
	that's leaving.  Again, one of the existing players' names might be
	NULL.

2001-11-08 20:47  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Dammit!  Why can't I write code without bugs
	anymore!
	
	  or
	
	Fixed bug with ggzdmod_set_seat.  It _is_ allowed for games to
	change the seat data, but each piece of data must be verified.	The
	only thing allowed is to change the name of an AI player.  This
	cannot be checked with strcmp() since one or both names might be
	NULL.

2001-11-08 20:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, net.c, net.h: Added
	broadcast_player_list() function.  I also used it to remove some
	variables, and in the process fixed a horrible typo bug.

2001-11-08 20:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/euchre.c: Added assertion for
	debugging.  Very minor.

2001-11-08 20:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed buglet in changing of game
	state.	Added better comment about it.

2001-11-08 19:44  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: euchre.c, euchre.h: Added "screw
	the dealer" option (not yet accessable to the users).

2001-11-08 19:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/euchre.c: Arbitrary code cleanups.

2001-11-08 19:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/euchre.c: Euchre: the 8th bid (the
	dealer's bid second-time around) he cannot pass.

2001-11-08 19:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: euchre.c, euchre.h: Added some
	explanation of Euchre bids, and cleaned up a little bit of code.

2001-11-08 14:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Fixed another bug in the ordering of
	players for the cardlist message.

2001-11-08 04:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/net.c: Fixed ordering of players in
	cardlist message.

2001-11-08 01:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Removed previous hand/last trick
	text messages; they are now sent only as cardlist messages.

2001-11-07 18:39  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed stupid, stupid bug in game_launch.

2001-11-07 08:49  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Initialize byte count and tag_seen flag to 0 when creating a new 
	 GGZNet object.  This should prevent the instant log out we've been
	  seeing on justin's server

2001-11-06 21:37  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed bugs in memory management.
	
	- ggz_free is used instead of free to destroy the seat data.  Doh!
	- seat data is now destroyed on ggzdmod_free even if we were not  
	previously connected.  Doh! - Consequently, seat data is _not_
	destroyed on disconnect.  It'll sit   around until ggzdmod_free is
	called or it's used again.  - In two places where
	es_read_string_alloc is used to alocate a name, we   ggz_strdup the
	returned string and then free it.  This is a hack to   avoid
	confusing the libggz memory debugger.  A better solution would be  
	nice, but once we use an XML protocol this problem should hopefully
	go   away.

2001-11-05 16:24  Jason Short <jdorje@users.sourceforge.net>

	* tests/: Makefile.am, basic.c: Added some more tests.

2001-11-05 15:32  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed bug in comparing of old and new seat
	names, for real this time.
	
	Each time we ggzdmod_set_seat, we free the old string and strdup
	the new one.  This is fine, except if the new and old strings point
	to the same places in memory.
	
	Note that we're still using ggz_free/ggz_strdup, whereas elsewhere
	malloc is used to allocate the string (in es_read_string_alloc).

2001-11-05 15:26  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed bug in comparing of old and new seat
	names.	Rather than bother to compare the names (either or both of
	which may be NULL), we just duplicate without checking (but we do
	check each for NULL).

2001-11-05 15:14  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Added extra initialization for ggzdmod object.

2001-11-05 15:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzdmod.c, ggzdmod/ggzdmod.c, ggzdmod/protocol.h: Removed
	unused REQ_SEAT_CHANGE packet type from ggzdmod communication.

2001-11-04 18:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Free seat (player) names when the seat object
	is destroyed, in ggzdmod_disconnect().

2001-11-04 18:19  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Use strcmp to compare strings instead of
	comparing pointers.
	
	In the second case it doesn't matter, but in the first case it
	might.

2001-11-04 18:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed bug in initialization of seat numbers.

2001-11-04 17:54  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/basic.c: 
	- Many more tests

2001-11-04 17:30  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: The compilation of programs in tests/ depends on
	the library in ggzdmod/.  I reordered the SIBDIRS to have this
	ordering so that make would follow the correct behavior by default.
	 make/automake doesn't seem to be able to figure out this
	dependency.

2001-11-04 16:59  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/Makefile.am: 
	- Add '-static' flag so that the executable is lib is linked in  
	statically.   This allows us to do better testing in place.

2001-11-04 16:45  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: 
	- Added ggzdmod_get/set_gamedata() so that ggz and games can set a 
	 game-specific pointer and then later retrieve it (ie. from the  
	callbacks).  This allow ggz to get a pointer to the game table from
	  the ggzdmod object

2001-11-04 16:40  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/Makefile.am: 
	- Add in LDADD to ggzdmod linkagaes so we link to correct libs

2001-11-04 16:39  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Added tests subdir

2001-11-04 16:39  Brent Hendricks <bmh@users.sourceforge.net>

	* tests/: .cvsignore, Makefile.am, basic.c: 
	- First unit tests for libggzdmod

2001-11-04 16:18  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: ggzdmod_set_seat now does more
	intelligent parameter-checking, and strdup's the name as necessary.

2001-11-04 16:04  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_server.c, ggzdmod.c, ggzdmod.h: Changed
	ggzdmod_get_seat to return a copy of the seat structure, rather
	than a pointer to the seat structure itself.

2001-11-04 15:56  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed some problems in ggzdmod_disconnect.

2001-11-04 13:36  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Fixed up the "state change"
	event.
	
	- First the state is changed.  - Then the event handler is called
	with GGZ_EVENT_STATE as the event.  - The "data" passed is a
	GGZdModState* containing the old state.
	
	Some games will still misuse this event.

2001-11-04 11:33  Jason Short <jdorje@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am,
	game_servers/chess/Makefile.am, game_servers/chess/chess.h,
	game_servers/chess/game.c, game_servers/chess/main.c,
	game_servers/chinese-checkers/Makefile.am,
	game_servers/chinese-checkers/game.h,
	game_servers/combat/Makefile.am, game_servers/combat/game.h,
	game_servers/dots/Makefile.am, game_servers/dots/game.c,
	game_servers/dots/game.h, game_servers/dots/main.c,
	game_servers/escape/Makefile.am, game_servers/escape/game.c,
	game_servers/escape/main.c, game_servers/hastings/Makefile.am,
	game_servers/hastings/game.h, game_servers/lapocha/Makefile.am,
	game_servers/lapocha/game.c, game_servers/lapocha/main.c,
	game_servers/tictactoe/Makefile.am, game_servers/tictactoe/game.h,
	ggzdmod/ggz_server.c, ggzdmod/ggz_server.h: Completely remove old
	libggzdmod.

2001-11-03 21:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/Makefile.am, game_servers/ggzcards/cards.c,
	game_servers/ggzcards/common.c, game_servers/ggzcards/common.h,
	game_servers/ggzcards/message.c, game_servers/ggzcards/net.c,
	ggzdmod/Makefile.am, ggzdmod/ggz_stats.c, ggzdmod/ggz_stats.h: I
	moved the ggz_stats demo code to be in the new ggzdmod, removing
	the old ggz_stats.  Consequently, I upgraded ggzcards to use the
	new ggzdmod (through the ggz_server wrapper).
	
	I'm just trying to get things slowly unified here.

2001-11-03 21:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed serious bug in previous commit: in
	finding the active FD set, we didn't skip over unused FD's.  This
	resulted in an immediate segfault.

2001-11-03 19:45  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzdmod.c: Removed game_servers/libggzmod/ggz_protocols.h. 
	ggzdmod/protocol.h is used in its place.

2001-11-03 18:17  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: I reviewed the code an made a number of
	cleanups and bugfixes:
	
	  - The biggest thing is that active_fd_set is no longer tracked by
	players
	    connecting and disconnecting.  It's rebuilt upon each use, and
	only
	    includes player FD's if a handler is registered for the player
	data
	    event.
	  - Similarly, fd_max (as used by select) only includes the player
	FD's if
	    necessary.
	  - I added some extra initializations in ggzdmod_new().
	  - Error return values of some functions are (possibly) more
	intelligent.
	  - I added a few FIXME comments for future work.
	  - Upon killing the table, the ggzdmod pid is reset to -1.
	  - Because of the above changes, the active FD set should now be
	tracked
	    correctly in GGZ mode.  There was a bug before: ggzdmod_connect
	did
	    not initialized the active_fd_set in GGZ mode.

2001-11-03 17:35  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Makefile.am: Added static library compilation back.
	
	Unfortunately, this is currently necessary for the game servers. 
	Since the dynamic library won't be installed until you make
	install, I don't know how to get the binaries used in "make test"
	to use it.  Hopefully someday we'll figure that out.

2001-11-03 17:03  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed problems with previous commit: two typos
	and missing #includes, as well as fixing a type variable for the
	game's pid.

2001-11-03 16:29  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: 
	- Removed ggzdmod_launch_game() - ggzdmod_connect() can now be
	called from the ggz side to do the   equivalent of
	ggzdmod_launch_game - ggzdmod_disconnect() can now be called from
	the ggz side to kill the   game server - new function
	ggzdmod_set_module() to allow ggz side to specify   command-line
	args for executing game module - Surround ggzdmod.h with
	__GGZDMOD_H__ define's so it can be included   multiple times

2001-11-03 13:47  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: ggz_server.c, ggzdmod.c, ggzdmod.h: 
	- Renamed states to GGZ_STATE_CREATED, WAITING, PLAYING, and DONE
	as   per discussion

2001-11-03 13:47  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzdmod/: Makefile.am, protocol.h: 
	- Copied over protocol file from old ligggzdmod dir - Include
	protocol.h in list of sources - Remove old static lib since we
	don't need it

2001-11-03 12:38  Jason Short <jdorje@users.sourceforge.net>

	* Doxyfile: Added Doxyfile for doxygen configuration.
	
	There are a couple of issues.  For one, this only generates ggzdmod
	documentation.	Should it therefore go in the ggzdmod directory?  I
	don't know.  It's easy to move, though.

2001-11-03 04:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Copied over a bit more documentation from the
	old ggz_server.h.

2001-11-03 04:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_server.c, ggzdmod.c, ggzdmod.h: Added Doxygen-style
	documentation; made a few other fixes as I realized some things
	weren't quite right to their definitions.

2001-11-03 03:11  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_server.c, ggzdmod.c, ggzdmod.h: Switched
	GGZ_STATE_LAUNCHED to GGZ_STATE_WAITING.

2001-11-02 23:54  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggz_server.c, ggzdmod.c, ggzdmod.h: A simple change to
	the new ggzdmod_dispatch system.
	
	- ggzdmod_io_pending and ggzdmod_io_read are removed.  -
	ggzdmod_dispatch does not block.  - ggzdmod_dispatch reads all
	data, not just ggzdmod data.  - ggzdmod_loop acts as it did before.
	
	It's not tested, but more changes will be required shortly so
	that's ok.

2001-11-02 19:38  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Don't assume the encoding is UTF-8, use the one the client
	declares   in the <?xml?> declaration

2001-10-28 23:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, common.c, game.c, games.c,
	games.h, net.c, net.h, games/bridge.c: Added send_bid_request
	function, moving this portion of network code into net.[ch].  I
	also cleaned up some assorted other stuff (mostly related).

2001-10-28 22:25  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: event.c, players.c: - Don't call room_notify_lag() if
	still in room -1 - Trap attempts to enqueue events to room -1

2001-10-28 21:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Two small changes: a formatting
	cleanup and removal of an unnecessary memset call.

2001-10-28 21:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Added send_last_trick_cardlist()
	so that a cardlist will be sent for the last-trick message (in
	addition to the text message which is still sent).

2001-10-28 17:36  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.conf.in, ggzd.h, login.c, parse_opt.c,
	players.c: - Read lag parameters from ggzd.conf - Lowered the
	default values to tighten the lag classes - Reduced default ping
	frequency to 10 seconds - Don't send a ping until 5 seconds after a
	successful login

2001-10-28 03:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, message.c, message.h,
	net.c, net.h, protocol.h: Wrote send_last_hand_cardlist, with a
	wide variety of other changes to keep things clean.
	
	The server will now send a cardlist global message for the "last
	hand" message (in addition to the text message).
	
	Also, the CARD GROUP message type has been removed (merged with
	CARD LIST), and the format of the CARD LIST message has been
	changed so players can have different numbers of cards in the list.

2001-10-28 03:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: Changed
	alloc_string_array to alloc2, even though it's unused.	(I'm not
	quite sure why it is unused, though...)

2001-10-28 01:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: message.c, protocol.h,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: I've had enough of
	the fixed messaging system.  Although incredibly flexible, it's
	very limiting in terms of user interface issues.
	
	So, I changed the protocol to allow different types of global
	messages to be passed to the client.
	
	Each message is still identified by a "mark" that is a single
	string.  In the simplest case, the client can (and currently does)
	use this mark just as the name of the message (for instance for the
	items on the "Messages" menu).	In more complicated cases, the
	client may use this as an index into its own system (ultimately
	this may be a reason for switching over to an XML-style protocol,
	but that's a question for another day).
	
	However, there are now different "types" of global messages.  The
	simplest one is a "TEXT" message that is the same as the messaging
	system used now: a single string, intended to be displayed as-is in
	a fixed-width font by the client.  A second type of message is the
	"CARD GROUP" message, which consists of a group of cards (one card
	per player).  A third is the "CARD LIST" message, which consists of
	a list of cards (n cards per player).  (The card list message could
	be viewed as a superset of the card group message, but since the
	display for the two is generally quite different I've kept it like
	this for now.)	A final one is the "BLOCK" message, which includes
	game-specific information that may or may not be used by the client
	(in a format to be determined later).
	
	For compatibility, I also bumped the protocol version number up.
	
	It should be remembered that this is an experimental system; I'm
	really going to have to see how things shake out as I go along. 
	The card group and card list systems should be good enough to start
	with, once I put together some code to use them.  After that, I'll
	see how things fall together for the game-specific system.

2001-10-24 16:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Add sys/time.h to list of #includes.

2001-10-24 14:27  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed minor problem with previous commit.

2001-10-24 14:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Added game_fork(), which should be called by
	ggzdmod_launch_game().

2001-10-24 13:53  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Wrote send_game_launch(), which will be a part
	of ggzdmod_game_launch().

2001-10-24 12:58  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Makefile.am: Add .NOTPARALLEL target to Makefile so make
	won't try to build in parallel.

2001-10-24 12:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/reversi/: Makefile.am, game.h, main.c: Reversi now
	uses the new ggzdmod (via the compatibility wrapper library).
	
	We can now do some consistent testing.

2001-10-24 12:52  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: Makefile.am, ggz_server.c, ggz_server.h: Added
	ggz_server.[ch] to be a wrapper for backwards-compatibility with
	games that use the old ggzdmod.
	
	This is NOT intended to be a permanent thing, but something to ease
	the transition to the new ggzdmod.

2001-10-24 01:28  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Fixed bug in game_joine(): the status was not
	being sent with RSP_GAME_JOIN.

2001-10-24 00:03  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Added autoconf code to recognize/require libggz.
	
	This is not currently used by any program in ggzd, but it will be.
	
	This sort of thing should probably go into the common autoconf
	files Josef was talking about providing...

2001-10-24 00:01  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Started using libggz for memory management.
	
	I have done nothing to assure that libggz gets loaded; the
	libggzdmod user will now be required to make sure -lggz is taken
	care of.  Unless there's a better way I don't know of...

2001-10-23 23:23  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/Makefile.am: Include dummy test target to avoid warning.

2001-10-23 23:20  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Player names are allocated on demand rather
	than placed into a fixed array (which was a bug, since the array
	didn't exist).

2001-10-23 21:30  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Remove explicit gameover flag; just use the
	state variable to track it.

2001-10-23 21:25  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Cleaned up cruft.

2001-10-23 21:20  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Added GGZdModState.
	
	I've called it "state" instead of "status" everywhere now.
	
	I also renamed the enumerations GGZ_STATE_*** and GGZ_EVENT_***
	because they conflicted.  These names may need improvement.

2001-10-23 20:10  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Assorted fixes and cleanups to
	the existing code.

2001-10-23 19:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/ZoneGGZModGGZ.cpp,
	game_servers/krosswater/zoneserver/ZoneProtocols.h,
	game_servers/spades/err_func.c, game_servers/spades/protocols.h,
	ggzd/ggzdmod.c, ggzdmod/ggzdmod.c: Cleaned up ggzdmod's
	logging/debugging code.
	
	I removed MSG_DBG, leaving only MSG_LOG in its place.  Of course,
	this meant I had to remove all uses of MSG_DBG.  I also removed the
	log level message from the ggzdmod communications; it is now up to
	ggzd to handle this (ggzdmod-ggz calls a ggzd event callback
	function with the log info).
	
	In summary, most of these changes are unnecessary, but will allow
	an easier conversion to the new ggzdmod.

2001-10-23 17:34  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.c: Implemented ggzdmod_dispatch() for the
	ggz-side of the communication, basing things closely off of the
	code in ggzd/ggzdmod.c.
	
	I made a slight change (simplification) to the protocol for the
	debugging message.
	
	Still not implemented: ggz-side function calls like
	ggzdmod_launch(), etc.

2001-10-23 16:53  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Implemented ggzdmod_dispatch for
	game-side.  I also cleaned up some other parts of the code.

2001-10-19 00:59  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: login.c, players.c: Fix several bugs caused by a
	connection never logging in - Disallow use of username "<none>"
	(reserved for not logged in users) - Don't try to remove from hash
	or bump player count if user not logged in

2001-10-16 12:02  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Implemented ggzdmod_loop(),
	ggzdmod_halt_game(), ggzdmod_connect(), ggzdmod_disconnect(), and
	ggzdmod_log().	Implementations for many are not complete (they
	will only work game-side).

2001-10-15 03:20  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Implemented ggzdmod_io_pending;
	added ggzdmod_io_read.

2001-10-15 00:30  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/README: Added (probably temporary) README file containing
	discussion and ideas for ggzdmod.
	
	(Well, actually it only contains Brent's API proposal, but that's
	ok.)

2001-10-14 05:01  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/: ggzdmod.c, ggzdmod.h: Wrote the easier functions for
	ggzdmod, and added stubs for the others.

2001-10-14 04:21  Jason Short <jdorje@users.sourceforge.net>

	* Makefile.am, configure.in, ggzdmod/.cvsignore,
	ggzdmod/Makefile.am, ggzdmod/ggzdmod.c, ggzdmod/ggzdmod.h: Fixed
	things up so we can actually compile the "new" libggzdmod.

2001-10-14 04:05  Jason Short <jdorje@users.sourceforge.net>

	* ggzdmod/ggzdmod.h: Added ggzdmod.h file.  This is the original
	API as proposed by Brent on ggz-dev.

2001-10-14 01:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, ai/Makefile.am, ai/suaro.c,
	games/suaro.c, games/suaro.h: Implemented preliminary Suaro AI.
	
	The only thing really changed is the bidding: the AI will bid
	mildly intelligently.  It still plays the hand randomly.

2001-10-08 19:04  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.h, net.c, net.h, players.c, players.h, protocols.h,
	room.c, room.h: - Phase one of lag tracking protocol

2001-10-04 18:44  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, err_func.c, err_func.h, login.c, players.c:
	Phase one of LOG_UPDATE type - control.c core loop select()
	modified to timeout when the log entry should	be emitted - Update
	log will track (so far):     - uptime (in seconds) - internal	  -
	anonymous users connected     - registered users connected     -
	number of logins since last update     - number of logouts since
	last update - Updates set to occur every LOG_UPDATE_INTERVAL
	(err_func.h) seconds   default is 600 (10 minutes)

2001-10-03 00:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Allowed AI to handle double
	nil bids in play.
	
	The bot will consider a dnil to be the equivalent of a nil, and
	will therefore try to set or cover it just the same.  Previously, a
	dnil was considered the same as a 0-bid.

2001-10-02 01:34  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: chat.c, perms.h, players.c, room.c, room.h: - Server-wide
	announcements hooked up - New permission PERMS_CHAT_ANNOUNCE

2001-10-01 23:48  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzduedit.c, perms.h: - Now shows human-readable
	permissions in ggzduedit - Still have to speak hex to enter
	permissions, but at least it will let	you know if you're wrong ;)

2001-10-01 23:08  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.h, ggzdb.h, login.c, net.c, perms.c, perms.h,
	players.c, players.h: - Set permissions on login more abstractly
	(perms_init) - Eliminate type entry from player structure -
	Determine player type from UID and permissions

2001-09-29 10:57  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Handle lots of unexpected cases where the client sends something 
	 that doesn't make sense: just send a RESULT with ACTION="protocol"
	  and CODE="E_BAD_OPTIONS"  (there may be a better code to use. 
	Must   examine later)

2001-09-29 10:56  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, parse_opt.c: 
	- Added --foreground/-F option to force ggzd to run in foreground -
	Always run daemon_init() unless --foreground is specified

2001-09-29 00:46  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/.cvsignore: - Ignore ggzduedit file

2001-09-29 00:46  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/ggzdb_db2.c: - Possible fix for anti-social sharing of db2
	between ggzd and ggzduedit
	
	I can't verify this fix as I don't have db2 anymore.  I don't even
	know for 100% certain that it will compile.  But the fix "looks"
	right based on the db2 documentation that I have.

2001-09-28 22:13  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, event.c, hash.c, net.c: 
	- Moved name lowercasing into hash_player_lookup() so we don't have
	to   do it all the time - In net_send_player_update(), if we're
	adding a player look up his   object and use net_send_player() so
	we get type info.  - If we're deleting a player just send the name

2001-09-28 21:02  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- oops! only disconnect if we actually exceed MAX_CHAT_LEN bytes,
	not   *every* time we don't see a tag :)

2001-09-28 20:55  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Fix for Rich's DoS bug:   * mark glad when we see a tag   * keep
	tally of how mych data we've parsed without seeing a tag   * if
	it's more than MAX_CHAT_LEN, disconnect

2001-09-27 17:56  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Some small cleanups:	 * got rid of _net_error()   * no need to
	have local stck variable when it's available through	 GGZNet

2001-09-27 16:06  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: parse_opt.c, room.c, room.h: - New room file entry:  
	EntryRestriction = Admin/Registered/None - Entering a restricted
	room without permission is denied with E_NO_PERMISSION

2001-09-25 14:11  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/ggzduedit.c: - Added functions to add or edit a user db
	entry

2001-09-25 00:04  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzdb.c, ggzdb.h, ggzdb_db2.c, ggzdb_db3.c,
	ggzduedit.c: Beginnings of ggzduedit program - List all players in
	database - Show all information regarding a single user - Added
	'standalone' modes to ggzdb_dbX routines     (basically don't
	auto-create db files) - ggzdb_dbX routines no longer restricted to
	single running process - added cursor routines for use by ggzduedit
	only to ggzdb_dbX     (currently these are NOT threadsafe)

2001-09-23 23:16  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzdb.h, login.c, perms.c, perms.h,
	players.c, players.h, protocols.h: Basic bootstrap for the user
	permissions system - Bump database version - Revamp login process
	to copy info from db->player struct @ login - Defined some basic
	permissions - Test user permissions for table launches and joins

2001-09-23 21:37  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Require expat lib for XML parsing

2001-09-23 21:36  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, err_func.h, net.c, net.h, parse_opt.c,
	players.c, players.h, protocols.h, stack.c, stack.h, table.c,
	table.h, xmlelement.c, xmlelement.h: 
	- New files stack.[ch] and xmlelement.[ch] ported from ggzcore to  
	handle stacks and xml element parsing - Converted all
	server->client communication to new XML-based protocol - New debug
	type: XML - Renamed table_new() to table_new_thread() - New
	table_new() function to create/initialize a GGZTable object - Redo
	table_launch() and player_table_launch() a bit to accept a  
	GGZTable* instead of a bunch of options

2001-09-23 16:42  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/login.c: 
	- Don't add (G) to guest player names anymore

2001-09-19 01:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: net.c, net.h: Small cleanups to net.[ch].

2001-09-17 02:00  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: err_func.h, ggzd.test.in, login.c, parse_opt.c, players.c,
	room.c, table.c: err_func.h - New log types, SECURITY and TABLES
	
	parse_opt.c - Added new log types
	
	ggzd.test.in - Default to All logs when testing
	
	login.c - Add (SECURITY) log entry for creating a new user - Add
	(SECURITY) log entry for bad password
	
	players.c - Add (NOTICE) log entry for a server full condition
	
	room.c - Add (NOTICE) log entry for a room full condition
	
	table.c - Add (NOTICE) log entries for server/room full of tables -
	Add (TABLES) log entries for table startup and end

2001-09-15 02:38  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/login.c: - Must pass the db entry to login_check_password()
	or the last login timestamp   update will overwrite the record with
	garbage

2001-09-14 16:52  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: login.c, net.c, players.c, players.h: 
	- Added 'type' member element to GGZPlayer structure to hold login 
	 type information - New function player_get_type() - Send actual
	type of player in TYPE attribute of PLAYER tag, instead   of always
	sending 'guest'

2001-09-14 16:10  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, players.c, players.h: 
	- New function player_get_room() to get index of player's current
	room - Send room number on LIST and UPDATE messages when updating
	player or   table list

2001-09-14 08:11  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/Makefile.am: 
	- Include *all* of the database source files in the distribution -
	Depend on the selected db source file in ggzd_SOURCES

2001-09-14 02:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Added spades_start_game()
	function so that bags will be set to 0 on the start of *every*
	game.

2001-09-13 19:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.h: Fixed typo.

2001-09-13 19:23  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/net.c: 
	- Don't send a full table listing when the table is being deleted

2001-09-13 19:04  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c: 
	- Renamed _net_send_table_seat() to _net_send_seat() - New
	functions _net_send_table_seat() and _net_send_table_status() to  
	handle special cases where we're only sending a single seat (for a
	- join or leave) or a status update - Have _net_send_table() always
	send the full table, in which case we	don't need the seat
	parameter

2001-09-13 04:25  Jason Short <jdorje@users.sourceforge.net>

	* ggz_server.spec: Updated file list for ggz_server RPM package.
	
	Changes include:
	
	- Added the many new ggzcards and escape config files to the
	installation.  - Added libggzdmod to the installation (hopefully
	all of it...).	- Bumped version to 0.0.5pre which is the current
	version number for the	 module.  - Changed the packager to GGZ
	Development Team; this seems more   "official".  - Included
	README.GGZ in the documentation list.  - Changed "Gnu Gaming Zone"
	to "GGZ Gaming Zone".  (?) - Slight wording change to the package
	description.
	
	This is not a complete update, but a partial update for 0.0.5pre. 
	Other issues I've noticed are:
	
	- Installing the entire doc/ directory as documentation places lots
	of   irrelevant non-documentation files into the distribution.	-
	Although the libggzdmod files are installed, the version
	information on	 the shared library is 0.0.0.  This obviously needs
	to be fixed before   the next release.	- The libzoneserver is
	included in the package although it is now (I think)   incompatible
	with the current ggzd<->ggzdmod communications protocol.

2001-09-13 01:08  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: daemon.c, login.c, players.c, players.h: daemon.c -
	Removed log entry for creating pid file - not "interesting"
	activity
	
	login.c - Classify the login type within log files - Track initial
	connection time
	
	players.[ch] - Track initial connection time - Log total connection
	time at logout

2001-09-12 16:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Added a quick hack so that a
	player with strong spades will pull spades.

2001-09-12 15:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Fixed problems with expert
	non-trump bidding system.

2001-09-12 03:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: General cleanups to
	play-choosing code.

2001-09-12 03:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Removed code to recalculate
	bid based on other player's bids:
	
	  - It wasn't implemented yet anyway.
	  - It was commented out.
	  - It fit the NetSpades data model, not ggzcards'.
	
	I replaced it with a FIXME comment.

2001-09-12 03:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Replaced the "confidence
	level" method of bidding non-spade suits by a very direct expert
	system.
	
	The system is pretty simple right now, but more rules can be added.

2001-09-12 02:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Use the play count tracker to
	track the number of "count cards" each player has played.
	
	"Count cards" are the ones that a player should have counted on to
	win a trick; they can be used later for determining which cards
	remain in each hand.  They include the A and K of non-trump suits,
	the A, K, Q of spades, and any extra spade after the third.

2001-09-12 02:39  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.c, aicommon.h: Make use of
	the play count tracker: a function that will tell how many cards a
	player has played in a suit.

2001-09-12 00:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/aicommon.c: Two revisions to AI common
	library:
	
	  - Track how many cards each player has played in each suit
	(currently
	    unused; later quite useful in spades).
	  - Fix a horrendous bug; the bitmask of cards played in each suit
	was
	    being stored as a char instead of an int.

2001-09-11 21:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: A few cleanups to spades AI
	code:
	
	  - A comment about the "tricks" we can use to evaluate other
	players'
	    plays.
	  - Restructured count_spades_ruff_winners() function (much shorter
	now).
	  - Fixed bug in preprocessor macro in
	count_spades_strength_winners().

2001-09-11 15:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, net.c, games/euchre.c,
	games/hearts.c, games/lapocha.c, games/spades.c, games/sueca.c:
	Removed unneeded "#include <easysock.h>" lines.

2001-09-11 14:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, common.c, common.h, net.c,
	net.h: Moved network code into net.[ch].  This code still contains
	some game handling code as well, which will need to be taken out of
	it.

2001-09-11 13:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c: Changed parameter definition to match
	return value of initializer function, thus avoiding compiler
	warning.

2001-09-11 03:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, games.c:
	Reviewed and cleaned up a lot of common code in common.c.
	
	common.c is now way too big, and should probably be split up into,
	say, net.c and event.c.

2001-09-11 02:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Replaced state_names[] array with
	get_state_name() function.

2001-09-10 21:18  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, room.c: 
	- Don't send room description if verbose listing wasn't requested

2001-09-10 18:53  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chess/chess.dsc,
	game_servers/chinese-checkers/ccheckers.dsc,
	game_servers/combat/combat.dsc, game_servers/dots/dots.dsc,
	game_servers/escape/escape.dsc,
	game_servers/ggzcards/config/ggzcards-bridge.dsc,
	game_servers/ggzcards/config/ggzcards-hearts.dsc,
	game_servers/ggzcards/config/ggzcards-lapocha.dsc,
	game_servers/ggzcards/config/ggzcards-spades.dsc,
	game_servers/ggzcards/config/ggzcards-suaro.dsc,
	game_servers/ggzcards/config/ggzcards.dsc,
	game_servers/hastings/hastings.dsc,
	game_servers/krosswater/krosswater.dsc,
	game_servers/lapocha/lapocha.dsc, game_servers/reversi/reversi.dsc,
	game_servers/spades/spades.dsc,
	game_servers/tictactoe/tictactoe.dsc, ggzd/control.c,
	ggzd/datatypes.h, ggzd/parse_opt.c, ggzd/players.c: - Removed
	'GameDisabled' option and associated code

2001-09-10 07:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Made many additional
	enhancements to spades bidding.
	
	In counting ruff winners:   - I entirely dropped the "trump
	sequence down from some high trump"	p1 calculation.  There's no
	point in determining the maximum number     of "guaranteed" trumps
	since this is just a subset of the spades     strength calculation
	(handled separately).	 - Voids, singletons, and doubletons are
	calculated more sanely and	are valued less highly. 
	Specifically, the calculation goes like this:	   * 90% chance of
	winning if you can trump the first round      * 70% chance of
	winning if you can trump the second round      * 40% chance of
	winning if you can trump the third round    - I also dropped the
	extra length calculation, since it also overlaps      with the
	spade strength calculation.    - I questionably dropped the
	"exhausting all spades" penalty.  If you      run out of spades
	ruffing tricks, that'll screw over your partner      at the end of
	the hand.  On the other hand, this calculation somewhat     
	overlaps with the weak-spade penalty (applied separately).
	
	Spade strength winners are conted in a loop.  It's more elegant.
	
	I made the set of parameters passed into these functions smaller,
	calculating more information on-the-fly.
	
	Counting non-spade tricks was made a little more conservative, with
	a lower confidence level for unprotected high cards.  This section
	still needs a lot of work though; there are a number of situations
	in which it is quite inaccurate.
	
	A separate find_final_bid() function was created.  The code therein
	was simplified a little bit.
	
	I created a function consider_bidding_nil() that returns TRUE if
	the player should bid nil.  I reviewed all of the code in the
	function, and changed a lot of it.  I also fixed a bad bug that had
	been in there since I ported the code from NetSpades; it cause
	players to rarely bid nil.  I think the calculated nil risk is on
	average larger now, but I'm not sure if this is better or worse.
	
	The actual get_bid() function is now quite short and
	understandable.
	
	I introduced a preprocessor macro AGRESSIVE_BIDDING.  If set (not
	by default) it will raise some of the constants used to calculate
	the number of tricks.  But, the AI can't back up these more
	agressive bids with good play.	Right now the bids are generally
	good conservative bids that total to about 11.
	
	Problems that remain:	- Calculating non-spade tricks is
	inaccurate.    - Calculating the nil risk is probably inaccurate.  
	 - The big thing: the AI is still very bad at playing.	In one demo
	hand,	   the bot got an incredibly good hand that it correctly
	bid 10 on, but	    was then completely unable to play the hand and
	only took 8.

2001-09-10 07:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c: Enhanced ai_debug() to write the game
	stage and player for which the function was called.

2001-09-10 03:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Removed static declaration of
	lastTrick.

2001-09-10 03:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Removed static declaration of
	agg.

2001-09-10 02:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Fixed a bug I introduced when
	porting the NetSpades AI code: the partner's chance of winning a
	trick was always calculated as -1, even when the partner had played
	a sure winner!
	
	Now the AI is much smarter, although sometimes (always?) it'll
	count a winning ace as an "unlikely" winner and so trump anyway.

2001-09-10 01:37  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Fixed bug in last commit.

2001-09-10 01:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Calculate agression levels a
	little more sanely:   - First, be more careful about when we
	whole-heartedly throw.	Just	 because one team has gone set
	doesn't mean the other team should     throw!	- Then, raise
	agression levels overall; basically by one trick.  Use	   full
	agression on a 12-bid or more; 75% agression on an 11-bid, 50%	  
	agression on a 10-bid (0% once we've made our bid), and 25%
	agression     on a 9-bid (0% once we've made our bid).
	
	This isn't completely fixed; ideally we'd consider the cards in our
	hand and how many tricks we're expecting from our partner at this
	point.	But the underagressive playing by the AI was a real
	drawback previously, especially with the more agressive bidding.

2001-09-10 01:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Fixed buglet: nil_tricks_count
	was only used for some players.

2001-09-09 17:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Changed bidding: the
	determining of tricks in trumps.
	
	There are two different viable ways of counting tricks (actually
	there's a third, but it's not viable).
	
	1.  Possible ruff tricks.  Here you count your sure winners plus
	any tricks you think you can get by ruffing.  This is basically
	what the old style of bidding was.  It works best with few spades
	and fails badly with many spades.  This method has not been
	changed.
	
	2.  Total strength tricks  I've adjusted this slightly to make it
	more rigidly mathematical.  Here you count tricks that you can win
	flat-out in spades:   - Each of A K Q counts as 1 trick.    - The
	4th spade counts as .5 trick.	 - The 5th and thereafter counts as
	1 trick.    - If you have 6 or more, count the 4th spade as a full
	trick instead.	This method of counting spade winners has just been
	introduced.
	
	There's one additional rule that I added on top of (after) both
	methods: subtract tricks if you are weak in spades.  With 0 spades
	you subtract a full trick, with 1 spade .5 tricks and with 2 spades
	.2 tricks.  This is because this weakness will really hurt your
	partner's ability to take tricks.
	
	There are two immediate problems with my implementation:   - The
	ruff-trick calculations are way too high, thus bidding is overall  
	  too agressive.    - The method of playing out the hand is still
	very conservative.  This      means it'll work out very badly with
	the more agressive style of play      demanded by the new bidding.
	
	However, I am very happy with the new system overall.

2001-09-09 16:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Moved spades calculation of
	trump tricks into a separate function.

2001-09-09 04:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.c, aicommon.h, spades.c:
	Added a few more functions to ai-common.

2001-09-09 04:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: aicommon.c, aicommon.h, spades.c:
	Added two extra functions to the libai common code.

2001-09-09 04:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai/aicommon.c, ai/aicommon.h,
	ai/spades.c: Removed some of the generalized card-tracking code
	from ai/spades.c and placed it into ai/aicommon.[ch].
	
	It's not really "generalized" yet because it assumes there are four
	players and four suits, but that's OK for now.

2001-09-08 23:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: Makefile.am, aicommon.c, aicommon.h:
	Added stub files for AI common code.

2001-09-08 22:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Completely re-did the spades
	debugging.  Now it uses ai_debug, which handles all repetitive
	stuff like labelling and checking for AI_DEBUG.

2001-09-08 22:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, bid.c, bid.h, cards.c,
	cards.h, common.c, common.h, game.c, game.h, games.c, games.h,
	main.c, message.c, message.h, options.c, options.h, protocol.c,
	protocol.h, types.h, ai/spades.c: Made sure all files included
	config.h.  This meant I had to fix some code that was previously
	hidden within #ifdef DEBUG...#endif statements.  Also I made
	general cleanups to the header lists.

2001-09-08 22:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h: Added ai_debug() function as
	a wrapper to ggzd_debug.

2001-09-08 22:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/random.c: Implemented a slightly
	cleverer algorithm to correctly pick a random card for the AI to
	play.

2001-09-08 21:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: protocol.c, protocol.html,
	config/ggzcards-bridge.dsc, config/ggzcards-hearts.dsc,
	config/ggzcards-lapocha.dsc, config/ggzcards-spades.dsc,
	config/ggzcards-suaro.dsc, config/ggzcards.dsc: Changed protocol
	slightly (using chars instead of ints for some communications) and
	bumped protocol version number.
	
	This change has already been made in the client, so things should
	now work fine.

2001-09-08 21:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-hearts.dsc, ggzcards-lapocha.dsc, ggzcards-spades.dsc,
	ggzcards-suaro.dsc, ggzcards.dsc: Corrected protocol version
	information.

2001-09-08 19:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed typo in last commit.

2001-09-08 18:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, message.c, protocol.c,
	protocol.h: Added [read|write]_seat() to the common protocol code.

2001-09-08 18:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: bid.c, common.c, games.c, message.c,
	options.c, protocol.c, protocol.h: Added new functions write_opcode
	and read_opcode.  Right now they're just wrappers for
	es_[read|write]_int, but should make it easier to change the
	structure.

2001-09-08 17:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, protocol.c, protocol.h: Changed
	misnamed es_[read|write]_card() to be just [read|write]_card().

2001-09-08 13:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Minor cleanup in
	send_player_list().

2001-09-08 12:59  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Changed error if db3 isn't present into a warning;
	now it should fall back into db2 correctly.

2001-09-07 22:31  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.motd, ggzd.motd.orig, net.c, net.h, players.c,
	protocols.h, room.c, table.c: 
	- New XML based protocol! - Changed server to send XML (doesn't
	received yet) - Different Motd that doesn't contain high ASCII

2001-09-07 17:33  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: I implemented a VERY ugly checking system for the
	database that gives slightly better results:   - If no db is
	specified, db3 becomes the default.    - If anything other than
	db2/db3 is specified, a warning is printed and	    db3 because the
	default.    - If db3 is to be used it is checked for.  If present
	it is used, if	    not db2 is used.	- If db2 is to be used it
	is checked for.  If present it is used, if	not there is an
	error/exit.
	
	Note that db3 is the default, but if it's not present db2 will be
	used instead.  If db2 is specified, though, no check for db3 will
	be done on failure.  I haven't been able to test these failure
	cases since that would (I think) involve uninstalling db[23].
	
	A much better system would have a "checkfordatabase" function that
	checks for an arbitrary database.  The logic could then be more
	straightforward: check for the given database, then each database
	in turn until one is found or the list is exhausted.

2001-09-07 08:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai/spades.c, games/spades.c,
	games/spades.h: Removed assumption that nil tricks do not count
	toward the team's bid.

2001-09-07 07:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: More small cleanups to the
	spades AI code.

2001-09-07 07:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Cleaned up name-generating
	code.

2001-09-07 07:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Reviewed much of the spades
	code.  Cleaned up a some of it, including fixing a horrid bug with
	misuse of memset().  Perhaps the AI will work now.

2001-09-07 04:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, cards.c, cards.h,
	protocol.c, protocol.h: Separated some common client-server data
	into protocol.[ch].
	
	This might be substantially easier to maintain as an outside game;
	all modules could then be contained together within the same source
	tree and it wouldn't be necessary to make sure they were all kept
	in sync.  On the other hand, this would require work to set up
	configure to handle each component and I really don't know how to
	do that.  A thought for another day...

2001-09-05 12:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Cleaned up and corrected many
	comments (including out-of-date ones) in common.c.

2001-09-05 12:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards-bridge.dsc: Fixed typo in
	Bridge .dsc file.

2001-09-05 11:44  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: With this one tiny change we
	always start a new game after we finish one.
	
	There's a problem in that the client currently doesn't ask the user
	if they *want* to start a new game, it just responds affirmatively
	every time it gets a newgame request.

2001-09-05 11:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.h: Wait!  I forgot GGZ checks the
	protocol version automatically.  That's why I never implemented
	version checking.  I added a comment to this effect in protocol.h.

2001-09-05 11:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.h: Defined the protocol version of
	the communications protocol.

2001-09-05 11:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Some cleanup, reformatting, and
	restructuring of the header file data.

2001-09-05 02:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, message.c, message.h,
	games/euchre.c, games/lapocha.c, games/spades.c, games/suaro.c:
	Added *experimental* support for an ELO rating system.

2001-09-05 01:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: Slight cleanup to
	send_gameover() function.

2001-09-05 01:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Fixed bug: spades player
	messages were not cleared before they were set.

2001-09-05 00:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Fixed typo in
	set_player_message function call.

2001-09-04 23:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, message.c, message.h: Fixed up
	the messaging code.
	
	Changes include:   - Removed the init_messages() function.  It was
	empty anyway.	 - Made get_global_message return a const char*.   
	- Fixed add_player_score_message to add rather than put the
	message.    - #included necessary types.h in message.h.    - Add
	parameter names to function prototypes in message.h.	- Added a
	whole lot of documentation to message.h.

2001-09-03 22:20  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-hearts.dsc, ggzcards-lapocha.dsc, ggzcards-spades.dsc,
	ggzcards-suaro.dsc: - Updated GGZCards .dsc files to use new
	ArgList config option

2001-09-03 22:19  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, parse_opt.c, table.c: - Added args entries to
	GameInfo struct - Parse the (optional) ArgList entry in game config
	files - Use the new args entry in table launch - Eliminate
	table_split_args()

2001-09-03 21:20  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: - Fixes memory leaks from not free()ing strval
	properly - Bug fix if GameType not specified

2001-09-03 21:08  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/: chess/chess.room, chinese-checkers/ccheckers.room,
	combat/combat.room, dots/dots.room, escape/escape.room,
	ggzcards/config/ggzcards-bridge.room,
	ggzcards/config/ggzcards-hearts.room,
	ggzcards/config/ggzcards-lapocha.room,
	ggzcards/config/ggzcards-spades.room,
	ggzcards/config/ggzcards-suaro.room, ggzcards/config/ggzcards.room,
	hastings/hastings.room, krosswater/krosswater.room,
	lapocha/lapocha.room, reversi/reversi.room, spades/spades.room,
	tictactoe/tictactoe.room: - Updated game server room files to new
	configuration file format

2001-09-03 21:07  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: entry.room, parse_opt.c: parse_opt.c - Room files are now
	parsed with conf_* functions - Removed the old file parsing routine
	entry.room - Converted to new config file format

2001-09-03 14:25  Jason Short <jdorje@users.sourceforge.net>

	* man/ggz_server_h.3: Doxygen-generated documentation updated.

2001-09-03 05:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/main.c, chinese-checkers/main.c,
	combat/main.c, dots/main.c, escape/main.c, ggzcards/main.c,
	hastings/main.c, lapocha/main.c, reversi/main.c, tictactoe/main.c:
	Changed the core interface functions to follow Brent's proposed
	specification (see
	http://www.geocrawler.com/archives/3/1405/2001/8/0/6504430/).
	
	Namely:   - ggzd_set_blocking() is removed.    -
	ggzd_io_is_pending() is inserted.  This checks to see if there's   
	  ggzdmod data waiting to be read and returns.	Real-time games
	should	    use this in non-blocking mode.  (Not implemented yet.) 
	  - ggzd_read_data() is renamed to ggzd_io_read_all().	  -
	ggzd_main() is renamed to ggzd_main_loop().

2001-09-03 04:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: euchre.c, euchre.h: Cleaned up
	Euchre code with some extra comments and an enumeration.

2001-09-02 03:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: spades.c, spades.h: Implemented
	double (blind) nil for spades.
	
	Note: the AI will probably not be able to handle it!

2001-09-02 02:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: spades.c, spades.h: Implemented
	no-nil-bids option for spades.

2001-08-31 16:57  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzdmod.c: Implemented seat change request interface.
	
	The game server calls ggzd_set_seat_status(seat, status) to request
	that the seat type (assign) be changed.  ggzdmod then queries the
	server to see if this is OK, and makes the change if so.  The
	server should then handle the rest of the update.  The return value
	of the function indicates success or failure.
	
	Right now GGZD will always respond negatively to the request since
	it can't yet make the change.
	
	This should be an "extended" function that is not needed for normal
	operation.  Perhaps it (and others like it) should be in a separate
	file...

2001-08-30 22:54  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzdmod.c, ggzdmod.h, table.c, table.h, transit.c: Did a
	lot of the work to move ggzdmod-ggzd to the desired new format.
	
	  - A ggzdmod object is created for each table, and passed around
	instead
	    of the file descriptor.
	  - The ggzdmod object is passed to the ggzd handler functions in
	the
	    callbacks.
	  - Many of the associated new functions have been created.
	  - Handlers are *not* registered yet, they're still extern
	definitions.
	  - Handlers still get all data from parameters.
	  - GGZdmod functions still get all data from parameters; the small
	    accessor functions aren't in use yet.
	
	Again, everything looks ok to me and seems to work, but I'm not
	sure of its correctness.

2001-08-30 22:06  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzd.h, net.c, seats.c: Removed duplicate entry for the
	ggzd_assign_t enumeration.  Although the enumeration was declared
	in ggzdmod.h the values were still #defined in ggzd.h.

2001-08-30 03:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/: ZoneGGZModGGZ.cpp,
	ZoneGGZModGGZ.h: This change *should* allow the ggzdmod aspect of
	Krosswater to work.  It's just a quick hack; in the long term
	Krosswater should use ggzdmod (or a c++ wrapper, perhaps).
	
	Note that I haven't tested this code since the Krosswater client
	won't work yet either.

2001-08-29 19:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/Makefile.am, chinese-checkers/Makefile.am,
	combat/Makefile.am, dots/Makefile.am, escape/Makefile.am,
	ggzcards/Makefile.am, hastings/Makefile.am, lapocha/Makefile.am,
	reversi/Makefile.am, tictactoe/Makefile.am: Replaced relative
	patchs in dependency listings with absolute paths (from
	$(top_builddir)).  Recommended by Brent.

2001-08-29 12:47  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzdmod.c, ggzdmod.h, table.c: The loglevel must be passed
	in to the table_log function.

2001-08-29 12:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c: If the AI module
	doesn't set the bot player name, we take it from libggzdmod.  If
	that doesn't work we just use "Bot".

2001-08-29 02:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/Makefile.am: Made explicit list of
	dsc and room files instead of using *.dsc and *.room.
	
	Brent said the wildcards wouldn't work, but I wanted to wait and
	see if they'd break.  make distcheck is what did it.

2001-08-29 02:12  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzdmod.c: Added in ggzdmod_handle_log() function, which
	somehow got lost in the patch during the last commit (!).  Sorry.

2001-08-29 02:03  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: ggzdmod.c, ggzdmod.h, table.c: Pulled communications code
	out of table_log().  Created new function ggzdmod_handle_log() to
	deal with it.

2001-08-29 02:01  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzdmod.c: Removed statistic information from the
	REQ_GAME_OVER packet.  This data should instead go into its own
	packet, since it may be reported many times for each table.

2001-08-29 01:11  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, room.c: 
	- Changed net_send_room() to accept a room object

2001-08-29 00:39  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, event.c, login.c, net.c, net.h, players.c,
	players.h, room.c, table.c, transit.c: 
	- New GGZNetIO object to handle network IO - GGZPlayer now has net
	field rather than fd - Make all calls to net_XXX take a GGZNetIO
	obkect rather than a   GGZPlayer

2001-08-28 23:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed problem with setting seat
	names.
	
	The seat name should point to the player name for that seat
	(player==GGZ seat).  When seats were assigned, this was not
	initialized.

2001-08-28 23:30  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, players.h: 
	- Moved network access from players.c into net.c

2001-08-28 23:00  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/Makefile.am: I accidentally left the dependency on
	libggzdmod in the automake file.  Fixed.

2001-08-28 22:55  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzdmod.c, ggzdmod.h, protocols.h, table.c,
	transit.c: Split off ggzdmod code into separate ggzdmod files.
	
	  - ggzdmod_dispatch() handles input from the file descriptor. 
	This
	    basically replaces the table_handle() function.
	  - ggzdmod_send_launch, ggzdmod_req_gamejoin, and
	ggzdmod_req_gameleave
	    send the appropriate packets across the socket.  (These names
	are
	    rather poor; they should be changed in the future.)  I made
	some
	    ugly code to set up the parameters for ggzdmod_send_launch.
	  - Response packets (right now just RSP_GAME_OVER) are
	automatically
	    sent by the ggzdmod code (after the handler function is
	called).
	  - table_game_launch, table_game_join, table_game_leave,
	table_game_over,
	    and table_log, and dbg_msg are used as pseudo-callbacks by the
	ggzdmod
	    code.  This segregation should make it easy to split ggzdmod
	off into
	    a separate library, if desired.  I had to change the parameters
	of the
	    functions slightly (except dbg_msg).
	
	Although this code looks good to me and GGZD runs well enough, I'm
	not completely confident in its correctness.  Right now the
	behavior should be completely unchanged, although with the ggzdmod
	code separated it will be much easier to change the protocol.
	
	Note that although the ggzd ggzdmod code is not a part of
	libggzdmod, it is currently distributed in the same package
	(ggz-server), so compatibility shouldn't be a problem so long as
	game servers use libggzdmod.

2001-08-28 22:51  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- Set index in table in all cases before sending to  
	net_send_table_update()

2001-08-28 21:07  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, table.c: 
	- New functions net_send_table() and net_send_table_update() -
	Removed network IO from table.c and into net.c - Use
	net_send_table() when listing tables as well

2001-08-28 20:17  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, players.c: 
	- Fixed some compiler warnings by explictly casting sockaddr_in* to
	  sockaddr*

2001-08-28 20:14  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: net.c, net.h, players.c, room.c, room.h: 
	- New functions: net_send_room_list_error(),  
	net_send_room_list_count(), net_send_room(), net_send_room_join(), 
	 net_send_player_update() - Move network access out of room.c into
	net.c

2001-08-28 19:29  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: motd.c, net.c, net.h, transit.c: 
	- Move network code out of transit.c into net.c - New functions
	net_send_table_[launch, join, leave]

2001-08-28 18:31  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: login.c, motd.c, motd.h, net.c, players.c: 
	- New function motd_is_defined() returns motd_info.use_motd - New
	function motd_get_num_lines() returns the number of lines in the
	motd - New function motd_get_line() returns a particular motd line
	- Send motd from net.c, not motd.c - New function
	_net_send_result() for sending single result byte to client

2001-08-28 16:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/protocols.h: Removed unused file protocols.h
	(it was left around by accident).

2001-08-28 03:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/krosswater/krosswater.dsc: Krosswater protocol
	engine should be version 0.0.4.

2001-08-28 01:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Slight fix to
	dosend_global_message() to prevent recurring error message.

2001-08-28 00:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/Makefile.am: Fixed typo in
	dependency listing.

2001-08-28 00:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/: Makefile.am, ai.c, game.c,
	game.h, ggz.c, ggz.h, main.c, protocols.h: Updated chinese checkers
	to use libggzdmod.

2001-08-28 00:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/combat/: Makefile.am, game.c, game.h, ggz.c, ggz.h,
	main.c, protocols.h: Updated combat to use libggzdmod.

2001-08-27 23:45  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Echo a slightly more appropriate line on how to run
	the test ggzd.	(It's the same line as "make" gives.)

2001-08-27 23:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/dots/: Makefile.am, ai.c, game.c, game.h, ggz.c,
	ggz.h, main.c, protocols.h: Updated dots to use libggzdmod.

2001-08-27 23:33  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chess/chess.dsc,
	game_servers/chinese-checkers/ccheckers.dsc,
	game_servers/combat/combat.dsc, game_servers/dots/dots.dsc,
	game_servers/escape/escape.dsc,
	game_servers/ggzcards/config/ggzcards-bridge.dsc,
	game_servers/ggzcards/config/ggzcards-hearts.dsc,
	game_servers/ggzcards/config/ggzcards-lapocha.dsc,
	game_servers/ggzcards/config/ggzcards-spades.dsc,
	game_servers/ggzcards/config/ggzcards-suaro.dsc,
	game_servers/ggzcards/config/ggzcards.dsc,
	game_servers/hastings/hastings.dsc,
	game_servers/krosswater/krosswater.dsc,
	game_servers/lapocha/lapocha.dsc, game_servers/reversi/reversi.dsc,
	game_servers/spades/spades.dsc,
	game_servers/tictactoe/tictactoe.dsc, ggzd/parse_opt.c: - Updated
	parse_opt.c to use new config style for game description files -
	Updated all game description files to new format

2001-08-27 23:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/Makefile.am: Fixed typo in dependency
	line.

2001-08-27 22:58  Jason Short <jdorje@users.sourceforge.net>

	* man/ggz_server_h.3: Update to the manual for ggz_server.h.

2001-08-27 22:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, games/suaro.c: Changed code to
	take advantage of new ggzd_set_player_name function.  This fixes
	the buglets I've had with AI players showing up as "bot" without
	the need for a lot of ugly code to lookup the correct name.

2001-08-27 22:04  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, login.c, login.h, net.c, net.h, players.c,
	players.h: 
	- Removed networking code from chat.c - Don't pass the player's fd
	around willy-nilly.  Just pass the   player* and get it from there

2001-08-27 20:55  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/login.c: 
	- Remove unnecessary #includes

2001-08-27 20:54  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/ggzd.test.in: 
	- motd field should be MOTD

2001-08-27 20:53  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzdb.h, login.c, login.h, net.c, net.h,
	players.c, players.h: 
	- New function net_read_data() to handle parsing opcode from the  
	network and dispatching to the correct handler: replaces  
	player_handle() - Moved all reading and writing out of login.c and
	into net.c   where it belongs (yay!) - Commonized login cases into
	single function to avoid much repeated	 code - Split out
	functionality into login_check_password() and login_add_user()

2001-08-27 15:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed another bug introduced with
	recent changes: upon player join the seat's name was set.  However,
	this can't be done before the game is initialized, since the seats
	haven't been allocated yet.  The result was a segfault.

2001-08-27 14:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/game.c, chess/game.h, escape/game.c,
	escape/game.h, ggzcards/common.c, ggzcards/common.h,
	hastings/game.c, hastings/game.h, lapocha/game.c, lapocha/game.h,
	reversi/game.c, reversi/game.h: Updated all game servers to match
	the new ggzdmod interface.
	
	I think this will defintely work out better.

2001-08-27 14:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/tictactoe/: Makefile.am, game.c, game.h, ggz.c,
	ggz.h, main.c, protocols.h: Updated tictactoe to use ggzdmod.

2001-08-27 14:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/reversi/game.c: Changed player handler to not always
	return a gameover value.
	
	Now it needs to be determined if it should ever return a gameover
	value.	For now it always return 0 except on error.  In fact, even
	the error handling may be wrong - it returns -1 on any kind of
	error; when in fact most errors probably aren't fatal.	Maybe it
	should just return 0.

2001-08-27 13:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/reversi/: Makefile.am, game.c, game.h, ggz.c, ggz.h,
	main.c, protocols.h: Updated reversi to use ggzdmod.

2001-08-27 13:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/: game.c, game.h, main.c: Added function
	ggz_update to translate a GGZ event into a chess event.
	
	It looks like I didn't mangle the code - it was always set up so
	that the GGZ event was passed into game_update() and handled like a
	chess event.  It just happened that the events were identically
	numbered.

2001-08-27 12:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, main.c: Fixed a bug introduced
	when I switched ggzdmod to the event-driven interface.
	
	init_ggzcards() was never called, so the game type was never set
	properly.  This mean it always got left at 0 (suaro), so that no
	other games would work.

2001-08-27 05:37  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/Makefile.am: Added new rule to avoid
	warning on "make test".
	
	This could surely be solved by editing the rule for test-recursive,
	but I don't feel up to that right now...

2001-08-27 05:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: Makefile.am, ggzcards/common.c, ggzcards/common.h,
	ggzcards/message.c, ggzcards/types.h, ggzcards/games/bridge.c,
	ggzcards/games/euchre.c, ggzcards/games/hearts.c,
	ggzcards/games/lapocha.c, ggzcards/games/spades.c,
	ggzcards/games/suaro.c, ggzcards/games/sueca.c: Updated GGZCards
	for new libggzdmod:
	
	  - New functions assign_seat() and empty_seat() are far better
	than the
	    old way of doing things.
	  - Accessor functions get_seat_name and get_seat_status are just
	    because I'm afraid of bugs elsewhere in the code.  They may be
	    temporary.
	  - There's a cleaner way of assigning seat names.
	  - There are some known bugs with seat names: sometimes ggzdmod is
	    queried about the seat name instead of using the local name. 
	This is
	    a problem when the player is a bot (since they get named by the
	game).
	    Should ggzdmod allow renaming of bots?  Should ggzdmod send out
	NULL
	    names for bots?  Probably one of the two...

2001-08-27 02:52  Jason Short <jdorje@users.sourceforge.net>

	* man/ggz_server_h.3: Added a new function,
	ggzd_get_player_udp_socket() to the ggzdmod interface.
	
	Note:	- It is not implemented; it always returns -1.	  - The
	name is too long.    - I also updated the documentation.

2001-08-27 02:33  Jason Short <jdorje@users.sourceforge.net>

	* man/ggz_server_h.3: Added significantly more documentation, and
	updated the man page for ggz_server.h.
	
	The API should be ready for serious discussion now.

2001-08-27 01:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: Makefile.am, chess/game.c, escape/game.c,
	ggzcards/bid.c, ggzcards/common.c, ggzcards/games.c,
	ggzcards/main.c, ggzcards/message.c, ggzcards/options.c,
	ggzcards/games/bridge.c, ggzcards/games/euchre.c,
	ggzcards/games/hearts.c, ggzcards/games/lapocha.c,
	ggzcards/games/spades.c, ggzcards/games/suaro.c,
	ggzcards/games/sueca.c, hastings/game.c, lapocha/game.c,
	spades/ai.c, spades/engine_func.c: I've merged the differences from
	the ggzdmod-dev branch back into the main tree.  I guess it wasn't
	so hard to make the change after all.
	
	GGZCards is still unusable with the new encapsulated ggzdmod - in
	fact it won't compile at all.  I've disabled it for now.  If only I
	hadn't been so clever!
	
	These games should now work: Chess, Hastings, Spades, La Pocha, and
	Escape.  I haven't tested Escape, of course - the others I have
	done very limited testing on.

2001-08-27 01:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: ggzcards/main.c, hastings/game.c, spades/ai.c,
	spades/engine_func.c: Changed all printf- statements to ggzd_debug
	ones (in games that use libggzdmod).

2001-08-27 01:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: Makefile.am, chess/game.c, escape/game.c,
	ggzcards/bid.c, ggzcards/common.c, ggzcards/games.c,
	ggzcards/message.c, ggzcards/options.c, ggzcards/games/bridge.c,
	ggzcards/games/euchre.c, ggzcards/games/hearts.c,
	ggzcards/games/lapocha.c, ggzcards/games/spades.c,
	ggzcards/games/suaro.c, ggzcards/games/sueca.c, hastings/game.c,
	lapocha/game.c: Updated game servers to use new ggzdmod interface.
	
	This also turned up a bug in hastings, which I fixed.
	
	GGZCards still has some issues (it took advantage of some tricky
	handling of ggzd_seats), so it won't compile or work yet.

2001-08-26 23:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/Makefile.am: Changed libggzdmod to encapsulate
	ggzd_seats.  I've given this quite a bit of thought, and decided
	that since the data should be read-only to games the extra trouble
	of using accessor functions is more than balanced by the extra
	safety and debugging that are possible using encapsulation.
	
	Thus, from now on nobody will be able to access ggzd_seats
	directly.  They'll have to use the accessor functions
	ggzd_get_player_name(), ggzd_get_player_socket(), and
	ggzd_get_seat_status().  Since I haven't updated any of the game
	servers to this new change, I've disabled compiling of the
	ggzdmod-using game servers.  They should be updated very shortly.
	
	Note that this development is being done under a separate branch. 
	After it has reached stability, I'll merge it back in.

2001-08-26 17:09  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.h: Removed unnecessary #inclusion of ggzd.h from
	table.h.
	
	This is significant because table.[ch] is a substantial part of the
	ggz end of the ggzdmod communication.  It may be easy to copy most
	of the code directly over into libggzdmod so that it handles both
	sides of the communication.

2001-08-26 16:51  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/: control.c, err_func.c, motd.c, parse_opt.c: Fixed a few
	compiler warnings:   - Used socklen_t instead of int as a type.   
	- #included <stdlib.h> for the exit() function.    - Commented out
	an unused variable (associated with an #if 0... block).    - Made a
	parameter of two callback functions (parse_gselect,	
	parse_rselect) const so it would match the expected type.
	
	There are a couple more warnings where it appears the wrong type is
	actually being passed to a function.  However, it seems to work
	so...

2001-08-26 16:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/: ZoneGGZModGGZ.h,
	ZoneGGZModServer.cpp: Removed two compiler warnings:   - Added a
	newline at the end of a file.	 - Returned 0 for a tiny function
	supposed to return an int.

2001-08-26 16:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/dots/ai.c: Put unused function in #if 0 block to
	prevent compiler warning.

2001-08-26 16:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: combat/game.c, tictactoe/game.c: #included
	<string.h> to prevent compiler warning.

2001-08-26 16:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/spades/: ai.c, card.c, err_func.c: Fixed a number of
	compiler warnings:   - #including header files for functions that
	are used.    - Commenting out unused variables (usually associated
	with #if 0 blocks).    - Returning values for the default case in
	several functions.    - Initializing one variable (it looked safe
	to do so).

2001-08-26 15:39  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/event.c: Slight cleanup to avoid "extra tokens at end of
	endif directive" warning.

2001-08-26 02:09  Jason Short <jdorje@users.sourceforge.net>

	* man/: Makefile.am, ggz_server_h.3: Placed manual created by
	doxygen in man/ directory.
	
	Again, it will have to be manually updated (after being
	automatically generated by doxygen).

2001-08-25 10:21  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/hastings/: Makefile.am, game.c, game.h, ggz.c,
	ggz.h, main.c, protocols.h: Switched hastings over to use
	libggzdmod.

2001-08-25 09:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/: game.c, game.h, main.c: Fixed a problem I
	introduced into escape, mixing up game events and GGZ events.

2001-08-25 09:52  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: chess/game.c, chess/game.h, chess/main.c,
	escape/game.c, escape/game.h, escape/main.c, ggzcards/bid.c,
	ggzcards/cards.c, ggzcards/common.c, ggzcards/common.h,
	ggzcards/game.c, ggzcards/games.c, ggzcards/main.c,
	ggzcards/message.c, ggzcards/options.c, ggzcards/types.h,
	ggzcards/ai/random.c, ggzcards/ai/spades.c,
	ggzcards/games/bridge.c, ggzcards/games/euchre.c,
	ggzcards/games/hearts.c, ggzcards/games/lapocha.c,
	ggzcards/games/spades.c, ggzcards/games/suaro.c,
	ggzcards/games/sueca.c, lapocha/game.c, lapocha/game.h,
	lapocha/main.c: Changed ggzdmod names to use ggzd_*** naming
	convention.

2001-08-25 09:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/main.c: Removed name parameter from ggz_main
	call.
	
	It was nice of gcc to let Chess compile with the parameter there...

2001-08-25 08:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/game.c: Removed unnecessary #inclusion of
	ggz_protocols.h.

2001-08-24 22:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/Makefile.am,
	game_servers/ggzcards/games/Makefile.am, man/Makefile.am: Added
	'test" entries to Makefile.am files.

2001-08-24 22:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c: Removed accidentally-left-in
	printf's.
	
	Oops!

2001-08-24 17:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/game.c: Fixed compiler warning problems:
	commenting out unused variables, returning values (with an error
	message) in supposedly impossible cases.

2001-08-24 01:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/: game.c, game.h, main.c: Changed escape to
	use the event-driven ggzdmod interface instead of the manual one.

2001-08-23 21:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chess/: Makefile.am, game.c, ggz.c, ggz.h, main.c:
	Updated chess to use libggzdmod, removing old GGZ files and
	changing function calls to match the current ggzdmod specification.

2001-08-23 16:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/Makefile.am: Escape works again now, so I added it
	back to Makefile.am.
	
	Let's keep it compiling from now on!

2001-08-23 16:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/spades/engine_func.c: "Fixed up" NetSpades to use
	new GGZ connection method.
	
	I don't use libggzdmod for this; I just manually set the connection
	socket FD to 3.  Obviously, a lot more cleanup could be done.

2001-08-23 16:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/: game.c, main.c: I updates Escape to work
	with the current libggzdmod.  It still uses the old "manual" system
	(although this should be changed), but at least it will compile
	now.
	
	I didn't realize it needed to be updated since it's no longer
	automatically compiled as a part of the game_servers.  However, it
	_does_ compile again now so maybe this functionality should be
	added back.

2001-08-23 15:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Removed unnecessary #inclusion of
	ggz_protocols.h.
	
	Any game that uses the event-based system should not need
	ggz_protocols.h.
	
	Thus I think that both systems can be supported concurrently by
	moving the old manual system into another file
	(ggz_server_manual.h?).  For those who wanted to use this system
	they could include this file (along with ggz_protocols.h) instead. 
	The important thing is to keep them apart.

2001-08-23 15:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/lapocha/game.c: Removed unnecessary #inclusion of
	ggz_protocols.h.

2001-08-23 15:38  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/lapocha/: game.c, game.h, main.c: Switched La Pocha
	over to using the event-based GGZ interface.
	
	The manual interface can be safely removed...although this would
	deny programmers the ability to do some things.

2001-08-23 14:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.h: Added many more comments to game.h.

2001-08-23 04:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common.c, message.c, options.c,
	games/hearts.c: Made allocation calls more sane.

2001-08-23 04:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Reordered game functions to match
	function struct.

2001-08-23 04:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/options.h: Added yet more comments to
	options.h.
	
	Now if only all my code was this documented...

2001-08-23 04:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/main.c: Minor cleanup: removed now-unused
	variables from main().

2001-08-23 03:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, main.c: Switched over
	GGZCards to use Perdig's event-based GGZ interface (still using
	GGZDMod).
	
	Less code is required.	Things are cleaner.

2001-08-23 03:26  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/options.h: Added lots of header comments.

2001-08-23 03:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.h, bid.h, cards.h, common.h, game.h,
	games.h, message.h, options.h: Removed all utterly unnecessary and
	counter-productive extern usages.
	
	I think I just kept using them without thinking because La Pocha
	did.

2001-08-23 02:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, ai.c, ai.h, bid.c, bid.h,
	cards.c, cards.h, common.c, common.h, game.c, game.h, games.c,
	games.h, main.c, message.c, message.h, options.c, options.h,
	protocol.h, types.h, ai/Makefile.am, ai/random.c, ai/spades.c,
	config/Makefile.am, config/ggzcards-bridge.dsc,
	config/ggzcards-bridge.room, config/ggzcards-hearts.dsc,
	config/ggzcards-hearts.room, config/ggzcards-lapocha.dsc,
	config/ggzcards-lapocha.room, config/ggzcards-spades.dsc,
	config/ggzcards-spades.room, config/ggzcards-suaro.dsc,
	config/ggzcards-suaro.room, config/ggzcards.dsc,
	config/ggzcards.room, games/Makefile.am, games/bridge.c,
	games/bridge.h, games/euchre.c, games/euchre.h, games/hearts.c,
	games/hearts.h, games/lapocha.c, games/lapocha.h, games/spades.c,
	games/spades.h, games/suaro.c, games/suaro.h, games/sueca.c,
	games/sueca.h: Updated all file documentation.	Corrections
	include:   - Added CVS ID tags to everything.	 - Made all header
	entries regular.    - Added short and long descriptions for lots of
	files.

2001-08-23 01:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: ggzcards/main.c, lapocha/main.c: General cleanups
	of libggzdmod.	  - Removed ggzdmod_initialize and ggzdmod_done
	functions.	* Primary functions ggzdmod_connect and
	ggzdmod_disconnect are	      now used.  (ggzdmod_quit becomes
	ggzdmod_disconnect.)	  * ggzdmod_done is moved into
	ggzdmod_disconnect; all pending stats	     should be sent upon
	disconnect.  They may also be sent if registered	(if the
	protocol allows).      * Other functions were updated to use these
	new function names.    - Cleaned up ggzdmod_disconnect.      * Wait
	for a RSP_GAME_OVER before leaving the function.      * Some extra
	comments added.      * It doesn't all seem to work just yet...maybe
	it never did.	 - Cleaned up ggzdmod_set_handler.	* Check
	event_id thoroughly.
	
	Overall, things are a little bit cleaner now.

2001-08-23 00:37  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: ggzcards/bid.c, ggzcards/cards.c,
	ggzcards/common.c, ggzcards/game.c, ggzcards/games.c,
	ggzcards/main.c, ggzcards/message.c, ggzcards/options.c,
	ggzcards/ai/random.c, ggzcards/ai/spades.c,
	ggzcards/games/bridge.c, ggzcards/games/hearts.c,
	ggzcards/games/lapocha.c, ggzcards/games/spades.c,
	ggzcards/games/suaro.c, lapocha/game.c, lapocha/main.c: Changed
	libggzdmod to use function names of the form ggzdmod_***.  I also
	updated all ggzdmod-using game servers to use these new functions.
	
	ggz[d]mod, unlike ggzcore, is a library that will be largely used
	by people unfamiliar with GGZ.	For this reason, I'm not sure that
	using this naming convention is correct.  I went ahead and made the
	change; it would be easy enough to undo.

2001-08-20 02:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/: escape/Makefile.am, ggzcards/Makefile.am,
	lapocha/Makefile.am: Removed ../libggzmod from list of SUBDIRS for
	these games.  This means the libggzdmod.a dependency won't be
	handled properly, but at least "make dist" and "make distclean"
	will work.
	
	A better solution is needed, obviously.

2001-08-20 02:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/lapocha/: Makefile.am, game.c, ggz.c, ggz.h, main.c,
	protocols.h: Upgraded LaPocha game server to use libggzdmod instead
	of local ggz code.
	
	This was quite easy since LaPocha (naturally) has the exact same
	setup as GGZCards.

2001-08-20 02:14  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/protocols.h: Removed ggzmod (ggzd<->game server)
	enumerations from protocols.h, and instead just #include the file
	../game_servers/libggzmod/ggz_protocols.h.
	
	The result is a bit dirtier, but safer since the matching code
	isn't duplicated.  The #inclusion of the file is very similar to
	what the game servers are currently using to link to libggzdmod.

2001-08-19 17:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: random.c, spades.c: Auto-indented all
	code.  From now on I'll keep consistent formatting.

2001-08-19 03:13  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Changed ggzd <-> game server connection code to use
	sockets generated by socketpair() rather than unix domain (file)
	sockets.  This has a number of good effects - mostly it's less
	error-prone (errors can be caught immediately) and faster (there's
	no waiting for the socket to be connected to).	The code is also
	cleaner.
	
	File descriptor #3 is used for the connection.	This means that
	ggzd must close FD 3 before executing the game server, and copy
	(dup2) the socket's FD over to FD 3.  A major problem with this is
	that after FD 3 has been closed, no more log/debugging messages can
	safely be sent, since they get sent across a (possibly closed)
	socket to the ggzd daemon.  This is "solved" just by not sending
	any such messages after the FD is closed.
	
	libggzdmod is changed to use the new protocol as well.	Mostly this
	just required removing a bunch of now-useless code.  Note, though,
	that any game servers that don't use libggzdmod (i.e. all of them)
	will be completely broken by this change.  They should be easy to
	upgrade.

2001-08-13 21:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/escape/: Makefile.am, game.c, ggz.c, ggz.h, main.c,
	protocols.h: Updated escape server to use libggzdmod instead of
	local ggz files.

2001-08-13 21:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/Makefile.am: Fixed dependency listing in
	Makefile.am so dependency on libggzdmod.a is handled correctly. 
	It's not pretty.

2001-08-07 01:51  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/escape/game.c: - hide character errors by replacing
	\' with \`

2001-08-07 01:46  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/login.c: - Server automatically prepends (G) to guest user
	name, if name is too long   then letters are cut off so that (G) is
	always present

2001-08-06 23:55  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.conf.in, ggzd.test.in, parse_opt.c: - Primary
	configuration file now loaded using conf_* functions -
	Corrections/Tweaks to configuration .in files

2001-08-06 22:08  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, conf.c, conf.h, lists.c, lists.h: - Phase one
	of new configuration system, integrated the ggzcore_confio_*  
	functions into ggzd as conf_* - Integrated ggzcore_lists_*
	functions as list_* - required by conf functions

2001-08-06 20:21  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/Makefile.am: - Removed non-working 'escape' server
	from SUBDIRS to compile

2001-08-05 18:44  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/: game.c, game.h: Fixed repeat move at corner
	bug.  Added debug code to game_checkwin()

2001-08-05 17:52  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/: game.c, game.h: Changed bounds to fix

2001-08-05 11:24  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Added a ;

2001-08-05 11:07  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Added further debug code

2001-08-05 08:12  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Added missing comment character.

2001-08-04 20:36  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Fix to game_send_move()

2001-08-04 20:18  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Removed unnecessary code from
	game_update()

2001-08-04 20:07  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Further attempt to fix repeat moves.

2001-08-02 09:45  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Another repeat move fix attempt.

2001-08-02 09:17  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Another repeat move fix attempt.

2001-08-02 08:50  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Another repeat move fix attempt.

2001-08-02 08:40  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/: game.c, game.h: Another repeat move fix
	attempt.

2001-08-02 08:19  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Fix fix fix. Removed references to
	escape_game.opponent.

2001-08-02 07:12  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Further fix to passing moves.

2001-08-02 06:46  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Fixed repeat move handling.

2001-08-01 20:15  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Initialise starting position on new
	game.

2001-07-25 20:02  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/ggz.c: Removed commenting that had been
	required for compiling under cygwin.

2001-07-22 14:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.html: Slight updates/improvements
	to the protocol specification document.

2001-07-21 00:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/lapocha.c: Three things to fix La
	Pocha trump bidding:	- The trump bid text is determined
	correctly.   - The trump bid is interpreted slightly more safely.  
	 - In between hands a "trump is not set" message is given.

2001-07-19 10:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-hearts.dsc, ggzcards-lapocha.dsc, ggzcards-spades.dsc,
	ggzcards-suaro.dsc: Disabled open hands in all single-game ggzcards
	rooms.	This also demonstrates how options can be set at the
	command line.

2001-07-19 10:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, message.c, message.h,
	games/bridge.c, games/euchre.c, games/lapocha.c, games/spades.c,
	games/suaro.c: Added four different "automated" player messages. 
	These functions can be called by the game player message code to
	add common message information.

2001-07-19 00:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, bid.c, bid.h, common.c,
	common.h, game.c, message.c, ai/random.c, ai/spades.c,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/lapocha.h, games/spades.c, games/suaro.c, games/sueca.c:
	Wrote new, better interface to bidding system.
	
	A lot of stuff changed for this to happen.  One side effect was
	that I broke La Pocha trump bidding.  Most other code should be
	shorter and more legible.

2001-07-18 23:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, message.c,
	options.c: Fixed/cleaned up a lot of "TODO" comments.  Actually,
	most of them had already been taken care of and I neglegently left
	the comments behind.

2001-07-18 16:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/chinese-checkers/main.c: Updated chinese checkers to
	use the protocol engine name, rather than the game name, for the
	name of the socket file used for communication with the server. 
	Before this, it wouldn't work at all!

2001-07-18 14:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, common.h, ggz.c, ggz.h,
	protocols.h: Removed old libggzdmod code, and set up GGZCards to
	use global libggzdmod.		- Removed ggz.c, ggz.h, and
	protocols.h.	    - Removed the above files from Makefile.am.    
	- Added libggzdmod.a to Makefile.am.	- Changed the #include to
	be "../libggzmod/<files>.h".

2001-07-18 02:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/Makefile.am: Setting ggzdgame_DATA =
	*.dsc (and similar for ggzdroom) seems to work fine.  However, I
	neglected adding EXTRA_DIST into the Makefile so that all these
	files will be included in a make dist.
	
	I'm still not sure that saying "ggzdgame_DATA = *.dsc" will work in
	all cases, but I'm willing to leave it like that for now.  A
	comment to that effect has been added.

2001-07-17 11:22  Jason Short <jdorje@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am: Added
	game_servers/libggzmod/ directory to configure.in and
	game_servers/Makefile.am.  libggzdmod should now be compiled
	normally (although not yet used).
	
	Note: the directory was called "libggzmod", and it's really too
	late to change it.  However, it would have been better IMO to call
	it libggzdmod.

2001-07-16 10:12  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/ggzd.h: Increased maximum game name length to 24 characters.

2001-07-15 23:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-hearts.dsc, ggzcards-lapocha.dsc, ggzcards-spades.dsc,
	ggzcards-suaro.dsc, ggzcards.dsc: Put Version information back into
	each of the .dsc files.

2001-07-15 20:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, bid.c, common.h, games.c, ggz.c,
	ggz.h, main.c, message.c, options.c, protocols.h: Preparation for
	integration with libggzdmod:	     - Updated current ggz code by
	copying over the ggzmod code in     its place.	  - Updated
	ggzcards code to use this new (current) ggz code.

2001-07-15 18:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, bid.c, bid.h, cards.c,
	common.c, common.h, game.c, game.h, ggz.h, main.c, ai/random.c,
	ai/spades.c, config/ggzcards-bridge.dsc,
	config/ggzcards-hearts.dsc, config/ggzcards-lapocha.dsc,
	config/ggzcards-spades.dsc, config/ggzcards-suaro.dsc,
	config/ggzcards.dsc, games/bridge.c, games/euchre.c,
	games/hearts.c, games/lapocha.c, games/spades.c, games/suaro.c,
	games/sueca.c: Split off bidding functions into bid.[ch].  Also
	restructures #includes of some files.

2001-07-15 15:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/Makefile.am: Changed Makefile.am to
	(hopefully) insall all existing dsc and room files.

2001-07-15 13:57  Jason Short <jdorje@users.sourceforge.net>

	* ggzd/table.c: Fixed another problem causing the multiple-games
	one-module system to work.
	
	Namely, it is the protocol engine name that must be used for the
	communications socket to the game server, not the game name.  This
	work may be invalidated once the socket pair is generated before
	the game server is forked off.

2001-07-15 13:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards-lapocha.dsc: Fixed problem
	causing LaPocha room to not work.

2001-07-15 02:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/: ggzcards-bridge.dsc,
	ggzcards-bridge.room, ggzcards-hearts.dsc, ggzcards-hearts.room,
	ggzcards-lapocha.dsc, ggzcards-lapocha.room, ggzcards-spades.dsc,
	ggzcards-spades.room, ggzcards-suaro.dsc, ggzcards-suaro.room,
	ggzcards.dsc, ggzcards.room: Fixed dsc and room files, including
	setting correct number of botsallowed for each game and improving
	formatting of all files.

2001-07-14 23:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/Makefile.am: Added other existing
	game rooms for ggzcards games.

2001-07-14 15:20  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/escape/.cvsignore: - ignore created files

2001-07-14 15:02  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, protocols.h: 
	- Bumped protocol version to 4 - Send gametype's protocll engine
	and version with RSP_LIST_TYPES

2001-07-13 19:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common.c, main.c: Wrote and used
	easysock error and exit functions.  Removed some of the existing
	redundant error messages.

2001-07-13 11:56  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h: Cleaned up list of
	available decks, including correcting an incorrect comment about
	the La Pocha deck.

2001-07-13 10:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Fixed bug in the way trick winners
	are calculated.  This bug only had an effect when there was more
	than one deck.

2001-07-13 09:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: hearts.c, hearts.h: Implemented a
	2-deck option for Hearts.
	
	This was very ugly - I need to give some though on how to change
	the deck/hand size after the game has been initialized.

2001-07-13 02:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Removed spades_deal_hand(),
	since it was identical to game_deal_hand().  The default behaviour
	for dealing cards is now used with spades.

2001-07-13 02:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, games/spades.c: Changed
	hand size code to use cards_deck_size() (the actual size of the
	deck) instead of assuming a 52-card deck.

2001-07-13 02:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h: - Added a new type of
	deck, GGZ_DECK_DOUBLE (a 104-card double deck).  - Added a new
	function to return the size of a deck.
	
	Both are unused as of yet.

2001-07-12 23:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.h, message.c, types.h: "Fixed" the
	implementation of global messages so that the server can reliably
	track all of them.
	
	I did this by making them into a linked list; not the most
	efficient solution but definitely a step up.  A hash would be
	better, but I'm not sure what hash library to link to (ggzd doesn't
	seem to use glib), and we have several additional needs that hash
	libraries don't always satisfy.

2001-07-12 22:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Changed last trick/last hand
	messages so that they format the output better.  Specifically, the
	names aren't any wider than they need to be, and the winner is
	marked.

2001-07-12 20:23  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, message.c, message.h,
	types.h, games/bridge.c, games/euchre.c, games/lapocha.c,
	games/spades.c, games/suaro.c, games/sueca.c: Changed the interface
	to the player message code to be much more powerful.
	
	Now, instead of accessing the string directly, the game-specific
	code just calls put_player_message() and add_player_message(). 
	Much cleaner.
	
	One down side is that the current implementation of the above
	functions makes add_player_message very inefficient.  I dont think
	this will be a problem, but if it is a more effecient
	implementation could be devised without changing the interface.

2001-07-12 14:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: bridge.c, bridge.h: Fixed Bridge so
	that the declarer is the first person on the team to open in the
	contract suit, not the most recent bidder.

2001-07-11 21:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/bridge.c: Implemented additional
	bridge scoring:  - Added bonuses for slams.	 - Added handling
	of "vulnerable".       - Corrected handling of doubled/redoubled
	undertricks.	      - Added "Hand Score" message summarizing the
	score (incomplete).	   - TODO: optional bonus for honors

2001-07-11 17:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: bridge.c, bridge.h: Implemented
	rubber bridge!
	
	Namely, there are three games to 100.  After one team wins 2 of
	these, the rubber is over and they get a bonus.  However, we don't
	end the game here (this is an option that will be added in the near
	future); rather, we continue to play another rubber with a running
	tally of the scores.
	
	There are just a few things left for this to be an excellent
	implementation of Bridge:  - Set up declarer properly; it should be
	the first person to	 bid the suit rather than the most recent
	bidder of that suit.	     - Add bonus points for all the
	different things you get bonus	   points for (vulnerability,
	slams, honors, etc.).

2001-07-11 16:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/bridge.c: Added "Scores" message for
	Bridge.
	
	We don't have rubber bridge yet, but that will soon be an option. 
	For now, the scoring system just gives the team 500 points above
	the line for each game they win.
	
	Once we do have rubber bridge, and have the ability to play
	multiple games consecutively, things will be a bit confusing since
	each ggzcards "game" is really a bridge "rubber" - like tennis,
	Bridge has a different meaning for "game".

2001-07-11 12:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/options.c: Changed Options message code to
	correctly set the message as "No options".

2001-07-11 12:17  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/suaro.c: Fixed bug in Suaro code:
	after a kitty bid, the declarer's new hand was only sent to the
	declarer.  This meant that when open_hands was set, the defender
	would see the declarer's hand as not changing.

2001-07-11 11:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: hearts.c, spades.c, suaro.c:
	Implemented get_option_text for Spades, Hearts, and Suaro.
	
	It should all "work" now; if anything's been left out there should
	be an error message in the debugging logs.

2001-07-11 11:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.h, options.c,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/suaro.c, games/sueca.c: Added get_option_text
	game-specific function, implemented for the default case
	(game_get_option_text) only.
	
	This function is used to determine the descriptive text for any
	options chosen, which is then used to assemble the "Options"
	message for the client.

2001-07-11 01:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Insert a check to make sure
	game.funcs->set_player_message isn't called when the game isn't
	set.  Otherwise, we can have some weird seg faults (for instance,
	when a second player joins and leaves the game before the first
	player has chosen the game).

2001-07-10 22:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/lapocha.c: Fixed bug in La Pocha -
	there was one hand too many.

2001-07-10 21:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common.c, game.c, games.c,
	message.c, options.c, games/hearts.c: Changed all SERVER BUG debug
	messages to ERROR: SERVER_BUG.

2001-07-10 21:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Fixed formatting of previous
	change to this file.

2001-07-10 21:31  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Added check so we don't try (and
	fail) to send WH_REQ_NEWGAME and WH_MSG_NEWGAME messages to bot
	players.

2001-07-10 21:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, message.c: Bugfix for bad
	player index into array, plus debugging code to warn of similar
	errors in the future.

2001-07-10 20:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/bridge.c: Fixed bridge "double", and
	made some other slight improvements to the bidding code.

2001-07-10 20:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/Makefile.am: Removed unnecessary
	dependancy listings from Makefile.am.

2001-07-10 19:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Cleaned up comments in
	game.c and common.c.

2001-07-10 19:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, cards.c, cards.h, common.c,
	common.h, game.c, game.h, games.c, games.h, ggz.c, ggz.h, main.c,
	message.c, message.h, options.c, options.h, protocol.h,
	protocols.h, types.h: Reformated all code using the indent program.

2001-07-10 19:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Fixed bug in game_end_trick -
	failure to map the lead card when determining who won.	Also, I
	removed the lo_card/lo_player code from that function, since it's
	not used there anymore (it's used in suaro_end_trick.)

2001-07-10 18:11  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/ggzcards/games/sueca.c: 
	- Added URL for the game rules

2001-07-10 17:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, message.c, message.h,
	types.h: Added "Bid History" message.  It's a generalized message,
	maintained by the common code and controlled by game.bid_history
	(enabled by default).
	
	Unlike the other messages, the code to set up this one is mostly in
	the core code in common.c.  This is because even if
	game.bid_history is not set, the bid history itself is still
	maintained - and can be used by game-specific code to send out
	whatever message is desired.  The game flag just controlls whether
	the message is sent by default.
	
	For some games (like Hearts and Sueca) this should be disabled.

2001-07-10 17:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/bridge.c: Disabled cumulative scores
	for bridge.

2001-07-10 17:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/bridge.c: Fixed Bridge scoring and
	message system.

2001-07-10 14:30  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/ggzcards/games/sueca.c: 
	- The trump now is determined randomly - (hopefully) fixed ordering
	of cards (sometimes the server failed to realize which card won the
	trick)

2001-07-10 13:37  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, games/sueca.c: 
	Fixed 3 bugs in the Sueca code - Ordering of the cards in cards.c
	now follows the standard - Removing some extra zeroing of variables
	(alloc() already does it) - Changed a set_all_player_messages to
	two set_player_message

2001-07-10 04:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h, games.c, games.h,
	games/Makefile.am, games/sueca.c, games/sueca.h: Added support for
	the Sueca game, implemented by Ismael Orenstein.
	
	I applied the patch submitted to SF as-is, except for some changes
	to the ggzcards core code: indenting lines consistently, and fixing
	a small bug in cards.c.  games/sueca.[ch] were added as-is. 
	There's one large bug in the Sueca code itself which hasn't been
	addressed.
	
	Thanks Perdig!	Soon the client will include you in the credits.

2001-07-10 00:08  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: chat.c, chat.h, room.c: - A quick little hack to show
	number of players connected when you enter   the Entry Room

2001-07-09 23:23  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/login.c: - Validate login username   * No spaces or control
	characters   * No extended ASCII (> 127) or DEL   * No & - can mess
	with M$ Windows labels and menu items	* No % - can screw up log
	and debug's printf()s	* No \ - can screw up log and debug's
	printf()s

2001-07-09 22:41  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chess/chess.dsc,
	game_servers/chinese-checkers/ccheckers.dsc,
	game_servers/combat/combat.dsc, game_servers/dots/dots.dsc,
	game_servers/escape/escape.dsc,
	game_servers/ggzcards/config/ggzcards-bridge.dsc,
	game_servers/ggzcards/config/ggzcards-hearts.dsc,
	game_servers/ggzcards/config/ggzcards-lapocha.dsc,
	game_servers/ggzcards/config/ggzcards-spades.dsc,
	game_servers/ggzcards/config/ggzcards-suaro.dsc,
	game_servers/ggzcards/config/ggzcards.dsc,
	game_servers/hastings/hastings.dsc,
	game_servers/krosswater/krosswater.dsc,
	game_servers/lapocha/lapocha.dsc, game_servers/reversi/reversi.dsc,
	game_servers/spades/spades.dsc,
	game_servers/tictactoe/tictactoe.dsc, ggzd/datatypes.h,
	ggzd/ggzd.h, ggzd/parse_opt.c: - Added "ProtocolVersion" line to
	parse_opt and all .dsc files

2001-07-09 16:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Removed a little bit of unnecessary
	debugging code.

2001-07-09 16:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/spades.c: Removed ValidPlay function and
	replaced it with call to game.funcs->verify_play.

2001-07-09 15:41  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chess/chess.dsc,
	game_servers/chinese-checkers/ccheckers.dsc,
	game_servers/combat/combat.dsc, game_servers/dots/dots.dsc,
	game_servers/escape/escape.dsc,
	game_servers/ggzcards/config/ggzcards-bridge.dsc,
	game_servers/ggzcards/config/ggzcards-hearts.dsc,
	game_servers/ggzcards/config/ggzcards-lapocha.dsc,
	game_servers/ggzcards/config/ggzcards-spades.dsc,
	game_servers/ggzcards/config/ggzcards-suaro.dsc,
	game_servers/ggzcards/config/ggzcards.dsc,
	game_servers/hastings/hastings.dsc,
	game_servers/krosswater/krosswater.dsc,
	game_servers/lapocha/lapocha.dsc, game_servers/reversi/reversi.dsc,
	game_servers/spades/spades.dsc,
	game_servers/tictactoe/tictactoe.dsc, ggzd/datatypes.h,
	ggzd/ggzd.h, ggzd/parse_opt.c: - Added "ProtocolEngine" to game
	info file parse - Added protocol field to GameInfo struct - Added
	appropriate ProtocolEngine lines to all game description files

2001-07-09 11:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Fixed silly bug in cumulative
	score message.

2001-07-09 10:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.c, games.h,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/suaro.c: Split up valid game code into
	game-specific functions.  Added new game-specific funciton,
	is_valid_game.

2001-07-09 10:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, games.c, games.h,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/suaro.c: Added another field to the game_data
	structure, full_name.  This contains the full name of the game,
	used for requesting game type and now used automatically as the
	name of the game.

2001-07-09 10:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai.c: Added extra debugging code to general
	AI functions.

2001-07-09 02:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, message.c, message.h:
	Added "Scores" message containing cumulative scores of all players.

2001-07-08 23:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: hearts.c, hearts.h: Added "no blood
	on the first trick" rule for Hearts.

2001-07-08 23:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/hearts.c: Fixed another silly bug in
	Hearts, causing a misdisplay of players' scores.

2001-07-08 22:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/hearts.c: Fixed big bug in hearts:
	the jack of spades went to whoever lead it, not whoever won it.

2001-07-08 19:05  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Corrected errors caused by commiting
	incorrect version.

2001-07-08 17:57  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Added debug code.

2001-07-08 17:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: random.c, spades.c: Changed Spades-AI
	bot naming to names of writers (Brent Hendricks and Britt Yenne);
	changed Random-AI bot naming to fit a little better (ugh!).

2001-07-08 17:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed silly bug in AI naming. 
	You can't name the AI's before you initialize the AI, and you can't
	initialize the AI until you initialize the game!

2001-07-08 17:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/ai/: random.c, spades.c: Added names for
	Random and Spades AI bots.

2001-07-08 17:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, common.c, ai/random.c,
	ai/spades.c: Added code to allow AI modules to pick their bot
	names.
	
	Added default bot name of "Bot <p>".

2001-07-08 16:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Changed last trick and previous
	hand messages to be formatted for fixed-width font.

2001-07-08 16:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: games.c, games.h: Added a few extra
	comments to help in adding new games.

2001-07-08 14:47  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, games.c, options.c,
	types.h: Changed host code to determine the host on-the-fly.  The
	"host" is the player who gets to choose the game type and options. 
	In the future, more power may be given to them.
	
	As of now, the host should always be the human player who has been
	at the table the longest.  It is updated when players join or
	leave.

2001-07-08 00:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: hearts.c, hearts.h: Add
	jack-of-diamonds rule to Hearts as an option.

2001-07-08 00:45  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: options.c, options.h: Slight change to
	options #includes.

2001-07-07 01:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/lapocha.c: Fixed buglet causing La
	Pocha bids to be wrongly shown.

2001-07-06 21:35  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, games/hearts.c: Fixed to buglets
	in the messages that affected Hearts.

2001-07-06 20:53  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/game.c: Moved the board init code to *after*
	the options have been received...

2001-07-06 17:30  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed buglet that caused problem
	with bots playing from other people's hands.

2001-07-06 17:11  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Slight improvements to
	Spades player messaging.

2001-07-06 17:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/message.c: Fixed buglet causing player
	messages to not always be updated properly.

2001-07-06 17:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, types.h: Added bid_count for
	each player containing the number of times they've bid this hand. 
	Various games will wish to use this information.

2001-07-06 15:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, games/bridge.c: Fixed two other
	functions that were missing return statements.

2001-07-06 15:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed bug that's been sitting
	around since update() was split up.  handle_launch_event and
	handle_leave_event didn't return 0 as they were supposed to.

2001-07-06 12:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, common.c, common.h, game.c,
	game.h, games.h, main.c, options.c, options.h, protocol.html,
	games/bridge.c, games/euchre.c, games/hearts.c, games/lapocha.c,
	games/spades.c, games/suaro.c: Implemented much more powerful
	option system, and switched all existing games over to use it.
	
	- It is much easier for game-specific code to ask for and determine
	the   values of options.  - Any option can be set from the command
	line, using a slightly awkward	 syntax:     ggzd.ggzcards
	--game=spades --option=open_hands:0 --option=nil_value:1	   
	    --option=minimum_bid:3 --option=target_score:2   will set the
	game to play spades, and completely determine the options   to be
	used.  - Some aspects of the interface are still dirty; for
	instance, the options	message does not work particularly well
	with the current system. 
	CVSl---------------------------------------------------------------
	-------

2001-07-06 00:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/Makefile.am: Fixed typo bug in Makefile.am
	- left \ off of line that needed it.

2001-07-05 23:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed a pesky bug that would
	cause the game to not be initialized properly if an options
	response came before all players were ready.

2001-07-05 19:26  Justin Zaun <jzaun@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am, ggzd/ggzd.h: 
	- updated the MAX_GAME_TYPES to 35 - added escape to configure in
	and game_server/Makefile.am

2001-07-05 19:05  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, entry.room, parse_opt.c: - Added a
	lobby/entry room, for now it's required but it should be optional

2001-07-04 00:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: spades.c, suaro.c: Made two small
	improvements for the messaging system, to Suaro and Spades. 
	There's still a big problem in Spades because bids don't show up
	correctly.

2001-07-03 23:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: ai.c, ai.h, ai/Makefile.am, ai/spades.c,
	games/spades.c: I inserted the AI module from NetSpades.  Now we
	have AI for Spades that should be almost identical to the NetSpades
	AI (different only inasmuch as my conversion was buggy).  Sweet!

2001-07-03 15:29  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Added game_servers/ggzcards/ai Makefile.

2001-07-03 15:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, ai.c, ai.h, common.h,
	ai/.cvsignore, ai/Makefile.am, ai/random.c, config/ggzcards.dsc:
	Added an AI directory, along with a generalized ai routine (that
	always picks a move at random).

2001-07-03 15:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: spades.c, suaro.c: Small bugfix and
	cleanup.

2001-07-03 14:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, ai.c, ai.h, common.c: Added
	stub functions for AI code.

2001-07-03 13:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, game.c, game.h, games.h,
	games/bridge.c, games/euchre.c, games/lapocha.c, games/suaro.c:
	Cleaned up the interface for some functions, including
	compare_cards and handle_bid.

2001-07-03 12:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.c, message.c,
	games/Makefile.am, games/euchre.c, games/euchre.h: Separated
	game-specific functions for one final game: Euchre.
	
	All game-specific code is now in the files games/<game>.[ch]. 
	game.c now contains nothing game-specific, just the default
	routines.
	
	There were a couple lines of Skat code; I just deleted them.

2001-07-03 11:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.c,
	games/Makefile.am, games/lapocha.c, games/lapocha.h: Separated
	game-specific functions for another game: La Pocha.

2001-07-03 11:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, message.c, message.h,
	games/bridge.c, games/spades.c, games/suaro.c: Made wrapper
	function set_player_message() for game-specific set_player_message
	functions.  Substituted this wrapper in may places.  Fixed a buglet
	related to this that had been sitting around for a while.

2001-07-03 10:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.c,
	games/Makefile.am, games/bridge.c, games/bridge.h: Separate
	game-specific functions for another game: Bridge.

2001-07-03 10:02  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: hearts.c, hearts.h: Oops!  Forgot
	the files themselves.

2001-07-03 10:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.c,
	games/Makefile.am, games/spades.c, games/spades.h, games/suaro.c,
	games/suaro.h: Separate out game-specific functions for another
	game: Hearts.

2001-07-03 07:23  Roger Light <oojah@users.sourceforge.net>

	* game_servers/escape/: Makefile.am, escape.dsc, escape.room,
	game.c, game.h, ggz.c, ggz.h, main.c, protocols.h: Initial upload
	of Escape game server.

2001-07-03 01:44  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, message.c, message.h,
	games/spades.c, games/suaro.c: Moved more code into the common
	area, this time by creating functions send_last_trick and
	send_last_hand.  These are called right after the game's end_trick
	and end_hand and will only run if game.last_trick and
	game.last_hand are set, respectively.

2001-07-03 01:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/spades.c: Tiny cleanups in spades.c.

2001-07-03 01:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, games.h,
	games/spades.c, games/suaro.c: Moved some code out of the
	get_options game-specific functions; namely, determining the host
	fd from the host player number.
	
	TODO: determine the host on-the-fly in an intelligent manner rather
	than just use the 0th player.  The current method only works
	because none of the games support AI.

2001-07-03 01:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/: spades.c, suaro.c, suaro.h: Cleaned
	up spades and suaro functions/files.

2001-07-03 01:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.c,
	games/Makefile.am, games/spades.c, games/spades.h, games/suaro.c:
	Separated game-specific functions for another game: Spades.

2001-07-03 00:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, games.c, games.h: Changed game
	list data slightly to make determining the game more "automatic".

2001-07-02 23:20  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games/.cvsignore: Added cvsignore for newly
	created directory.

2001-07-02 23:17  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Added extra subdirectory to configure.in, left out
	of previous commit.

2001-07-02 23:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, game.c, game.h, games.c,
	types.h, games/Makefile.am, games/suaro.c, games/suaro.h: Broke off
	game-specific functions into their own file for just one game:
	Suaro.	This promises to be better in the long run, but I see that
	some additional common code needs to be written first.	I also
	restructured the games data a bit to make things more "automatic";
	more can be done in this regard.  I think more testing needs to be
	done before I proceed with this conversion.

2001-07-02 17:00  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/types.h: Fixed typo in types.h header
	comment.

2001-07-02 16:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, games.h: Cleaned up after recent
	changes.

2001-07-02 16:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, games.c, games.h: Implemented
	method for automatically setting up which function set to use with
	each game.  Next up: making separate function sets for each game.

2001-07-02 16:22  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common.c, common.h, game.c,
	game.h, games.h, message.c: Made a collection of
	pointers-to-functions that are used to access the game-specific
	functions.  Next up: making a different collection for each game.

2001-07-02 15:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/Makefile.am: Fixed another typo in previous
	entry.

2001-07-02 13:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.h: Fixed typo in previous entry.

2001-07-02 13:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, common.h, types.h: Created
	new file types.h, and moved some data from common.h into it.  The
	goal is to be able to include this data from multiple locations.

2001-07-02 00:57  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, common.c, common.h, game.c,
	message.c, message.h: Moved messaging system into separate files,
	messages.[ch].	This should be quite a bit cleaner, and allow
	easier expansion of the messaging system.

2001-07-01 21:46  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/table.c: - Tweak to table_log() - only make a copy if there
	are %'s to be expanded

2001-07-01 00:44  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/table.c: Fixed bug #436586 - seg fault in ggzd
	
	- table_log() now scans incoming messages to make sure they do not
	have   un-escaped % qualifiers as the debugging routines will crash
	trying to   use the snprintf() variants on them.  Existing %'s are
	expanded to %% so   that snprintf() and friends will print the %
	sign properly.

2001-06-29 04:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, game.c, game.h: Added some code
	to get Euchre features to work (better), including game_map_card()
	and restructuring of player_set_message().

2001-06-29 03:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c: Added "Rules"
	message that tells the user of a URL at which to read the rules of
	the game being played.	I'm not sure if this is the best way to do
	it; perhaps a better option would just be to have a page at
	ggz.sf.net devoted to game rules.

2001-06-29 02:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/games.c: Oops!	Missed a spot when changing
	game_init_game to init_game.

2001-06-29 02:42  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, main.c: Split
	off common code from game_init_game into a new function, init_game.
	 Renamed the old init_game function to init_ggzcards, which is
	really more descriptive.  This is looking more and more like using
	classes and inheritence for the games is the way to go.

2001-06-28 04:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: A one-line fix so that bots will
	always be ready.

2001-06-28 03:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, game.h:
	Restructure play_event handling code similarly to bid_event code. 
	It's now the card itself that's passed around, rather than an index
	into the hand.	Again, this should make AI routines easier to
	integrate.  I also cleaned up a few artifacts in this area.

2001-06-28 03:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h: Added cards_equal
	routine.

2001-06-28 03:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, game.h:
	Changed game_handle_bid and handle_bid_event to receive the bid
	itself, not an index for the bid.  With an increasing number of
	games, this seemed like the most stable and intelligent thing to
	do.  It may have had the side effect of fixing the La Pocha
	problem, or maybe I'm just imagining things.  It should certainly
	make it easier to implement AI routines.

2001-06-28 03:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Changed comments and
	debugging lines to update all references to WH_EVENT_***.

2001-06-28 03:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c: Removed
	update() and event sytem entirely.  (Events still work the same
	way, they're just not enumerated; each gets a function instead of
	there being one switch inside the update function.)  I think this
	may have broken La Pocha, or maybe it was broken all along and I
	just never noticed.

2001-06-28 02:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Separated update() out into
	individual handle_***_event functions.

2001-06-27 17:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c, game.h: Added
	lots more comments for the game-specific functions.

2001-06-27 15:33  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h, common.c, common.h,
	game.c: Added 'previous hand' message, and cleaned up after 'last
	trick' code.

2001-06-27 14:43  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Left the 'last trick'
	message as a game option, but turned on by default.

2001-06-27 14:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c: The
	last-trick code brought to light some bug; I can't find it so I've
	added some more debugging lines and made the last-trick code a game
	option.

2001-06-27 01:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, games.c: Expanded
	debugging messages to include players names.

2001-06-27 00:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Removed misleading error message.

2001-06-27 00:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: And just like that, 15 lines of
	code gets us a 'last trick' window.

2001-06-26 23:06  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Added 'Options' global
	message.

2001-06-26 22:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, game.h: Added extra
	features to Suaro, Bridge, and Euchre.

2001-06-26 21:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, game.h: Did a lot more
	work to get Euchre running.

2001-06-26 21:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h: Added card face names.

2001-06-26 14:44  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/.cvsignore: Added kdevelop project file to
	unincluded file list.

2001-06-26 14:32  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h: Changed server state
	and event data to be enumerations.

2001-06-26 14:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, common.h, protocol.h:
	Created single protocol file protocol.h.

2001-06-26 13:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, ggz.h, protocols.h: Disassembled
	protocols.h; moved enumerations into ggz.h.

2001-06-26 03:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h, common.c, common.h,
	games.h: Changed deck list and game list to be enumerations.

2001-06-25 19:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Added the beginnings of a
	card-sorting routine for Skat.	It is quite apparent something more
	powerful will be needed.

2001-06-25 18:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h, game.c: Slightly
	hackish attempt to allow resorting of cards in the middle of a hand
	(in particular, for bridge).

2001-06-25 18:24  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, game.c, game.h: Moved
	compare_cards into game-specific code area.

2001-06-25 18:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h, games.c, games.h: Moved
	game_valid_game into games files.

2001-06-25 18:16  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Automated determination
	of bid texts.

2001-06-25 18:05  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h, game.c, game.h: Added a
	little bit of code for Skat.

2001-06-25 17:49  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, cards.h, common.h, game.c,
	game.h, games.c, games.h: Initial implementation of Euchre.

2001-06-25 16:29  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards.dsc: We'll allow 5 or 6
	players too.

2001-06-25 15:58  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/ggzcards.dsc: Three-player games are
	possible.

2001-06-25 14:03  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Table message shouldn't be sent
	before players are initialized.

2001-06-24 22:12  Rich Gade <rgade@users.sourceforge.net>

	* configure.in, ggzd/chat.c, ggzd/event.c, ggzd/hash.c,
	ggzd/login.c, ggzd/players.c: - Bumped ggzd version to 0.0.5pre -
	Convert names to lowercase before sending to hash or db functions

2001-06-22 16:54  Jason Short <jdorje@users.sourceforge.net>

	* configure.in: Oops!  Left out this file in adding new directory.

2001-06-22 14:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/config/.cvsignore: Added cvsignore for new
	directory.

2001-06-22 14:07  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, ggzcards.dsc, ggzcards.room,
	config/Makefile.am, config/ggzcards-bridge.dsc,
	config/ggzcards-bridge.room, config/ggzcards-hearts.dsc,
	config/ggzcards-hearts.room, config/ggzcards-lapocha.dsc,
	config/ggzcards-lapocha.room, config/ggzcards-spades.dsc,
	config/ggzcards-spades.room, config/ggzcards-suaro.dsc,
	config/ggzcards-suaro.room, config/ggzcards.dsc,
	config/ggzcards.room: Expanded module files (dsc and room).

2001-06-22 12:19  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: No longer send a token seat count
	at the beginning.

2001-06-22 12:10  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.html: Added cross-referencing
	tags.

2001-06-22 11:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.html: Added WH_MSG_TRICK protocol.

2001-06-22 11:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Fixed bug in hearts/shooting the
	moon.

2001-06-22 11:36  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Improved max_hand_size
	initialization.

2001-06-22 00:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Added two small debugging lines.

2001-06-21 23:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c: Added
	set_num_seats to provide a more elegant way to create seats at
	multiple locations.

2001-06-21 20:53  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h: Added a lot of features
	to the game hearts.

2001-06-21 20:15  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, game.c: Expanded global messages
	because there's more space for them now.

2001-06-21 05:28  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h: Added kitty/dummy
	revealing code so they'll stay revealed on rejoin.

2001-06-21 05:27  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed buglet.

2001-06-21 04:46  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Finished fixing that bug.

2001-06-21 04:40  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed obscure bug causing not
	being able to play from the dummy upon rejoining a game.

2001-06-21 04:14  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Added extra player
	message update points to use the 'wait for ...' message.

2001-06-21 01:25  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, common.h, game.c: Added support
	for the WH_MSG_TABLE protocol; moved table card data from a
	per-player to a per-seat basis.

2001-06-21 01:01  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.html: Removed all the nbsp spaces
	composer put in the file.

2001-06-21 00:59  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.html: Added WH_MSG_TABLE to the
	specification.

2001-06-21 00:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/protocol.html: Added protocol specification
	file.

2001-06-21 00:51  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Fixed several buglets
	in the creation of player messages.

2001-06-21 00:41  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/common.c: Fixed two buglets: one with ggz
	status, the other with restarting after a player rejoins.

2001-06-20 17:12  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Added commented-out
	code to mark players as being 'waiting for bid' or 'waiting for
	play'.

2001-06-20 17:04  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: In Suaro and Bridge, you shouldn't
	be labeled as declarer until you've won the bid.

2001-06-20 16:55  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common.c, common.h, game.c,
	game.h, ggz.c: Dealt with or removed a lot of TODO's.

2001-06-20 15:34  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, game.h, games.c:
	Implemented minimum bids for spades; also added lots of debugging
	messages.

2001-06-20 14:48  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c, game.h, games.c,
	games.h, main.c: Added header comments to all game.c functions.

2001-06-20 14:18  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/game.c: Fixed game_end_trick so both
	players on a team have their tricks updated after each trick.

2001-06-20 14:13  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: common.c, game.c: Moved game definition
	to common.c.

2001-06-20 14:09  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: cards.c, common.c, common.h, game.c,
	game.h, games.c, games.h: Moved more functions and data into
	games.[ch].

2001-06-20 13:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/.cvsignore: Updated for new project.

2001-06-20 13:54  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: Makefile.am, cards.c, cards.h, common.c,
	common.h, game.c, game.h, games.c, games.h, main.c: Moved functions
	out out of game.c, creating more appropriate files for them.

2001-06-20 03:08  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.c, game.h: Fixed bridge dummy
	playing and playing from hands other than your own.

2001-06-20 01:50  Jason Short <jdorje@users.sourceforge.net>

	* game_servers/ggzcards/: game.h, ggzcards.dsc, main.c,
	protocols.h: Brought files up-to-date for new project.

2001-06-20 01:05  Jason Short <jdorje@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am,
	game_servers/ggzcards/.cvsignore,
	game_servers/ggzcards/Makefile.am, game_servers/ggzcards/cards.c,
	game_servers/ggzcards/cards.h, game_servers/ggzcards/game.c,
	game_servers/ggzcards/game.h, game_servers/ggzcards/ggz.c,
	game_servers/ggzcards/ggz.h, game_servers/ggzcards/ggzcards.dsc,
	game_servers/ggzcards/ggzcards.room, game_servers/ggzcards/main.c,
	game_servers/ggzcards/protocols.h: Added GGZCards server sources. 
	These were originally based upon the La Pocha code, but were
	heavily modified before being imported.

2001-06-17 21:46  Rich Gade <rgade@users.sourceforge.net>

	* ggz_server.spec: - .spec file updates - these were actually
	necessary for 0.0.4, but as they   aren't part of the distros they
	needn't be tagged as such

2001-06-17 15:47  Rich Gade <rgade@users.sourceforge.net>

	* ChangeLog: - Updated ChangeLog

2001-06-15 23:10  Rich Gade <rgade@users.sourceforge.net>

	* doc/admin-guide.txt: - Mini ggzd administration guide updated

2001-06-15 22:44  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chess/ggz.c, game_servers/chinese-checkers/ggz.c,
	game_servers/combat/combat.c, game_servers/combat/ggz.c,
	game_servers/dots/ggz.c, game_servers/hastings/ggz.c,
	game_servers/krosswater/zoneserver/ZoneGGZModGGZ.cpp,
	game_servers/lapocha/ggz.c, game_servers/reversi/ggz.c,
	game_servers/spades/engine_func.c, game_servers/spades/err_func.c,
	game_servers/tictactoe/ggz.c, ggzd/login.c, ggzd/motd.c,
	ggzd/parse_opt.c, ggzd/table.c: - Applied snprintf patches to avoid
	buffer overruns

2001-06-14 16:58  Brent Hendricks <bmh@users.sourceforge.net>

	* NEWS: 
	- Updated NEWS file for 0.0.4 release

2001-06-14 03:33  Brent Hendricks <bmh@users.sourceforge.net>

	* Makefile.am, README.GGZ, configure.in, ggz_server.spec: 
	- Updated docs - Bumped version to 0.0.4

2001-06-14 01:52  Brent Hendricks <bmh@users.sourceforge.net>

	* man/Makefile.am: 
	- Use SUBDIRS = . otherwise 'make dist' fails - Put $(man_MANS) in
	EXTRA_DIST otherwise the man page doesn't get	included in the
	tarball

2001-06-14 01:51  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/krosswater/: Makefile.am, stackpath/Makefile.am,
	zoneserver/Makefile.am: 
	- Fix name of description and room files to krosswater, not
	hastings - List header files in Makefile.am, otherwise they don't
	get included   in the tarball - Use include paths relative to
	$(top_srcdir) otherwise people can't   build outside the srcdir.

2001-06-08 13:54  Josef Spillner <dr_maux@users.sourceforge.net>

	* .cvsignore: - add build-stamp to cvsignore

2001-06-08 13:53  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/: Makefile.am, ggz-txt.6: - ouch! put ggz-txt.6 into wrong
	directory :)

2001-06-08 13:02  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/: Makefile.am, ggz-txt.6: - add man page

2001-06-08 12:06  Josef Spillner <dr_maux@users.sourceforge.net>

	* README.GGZ: - actually add readme.ggz

2001-06-08 11:55  Josef Spillner <dr_maux@users.sourceforge.net>

	* Makefile.am, configure.in: - create Makefile in man dir

2001-06-08 11:54  Josef Spillner <dr_maux@users.sourceforge.net>

	* man/: .cvsignore, Makefile.am, ggzd.6: - add man page

2001-06-07 16:28  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/docs: - add project-wide readme file

2001-06-02 15:24  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - find new easysock version

2001-06-02 15:20  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/: postinst, prerm: - suppress warning messages on server
	startup/shutdown

2001-06-02 12:16  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/ggzd.init.d: - improved start/stop code of the server

2001-05-30 16:33  Justin Zaun <jzaun@users.sourceforge.net>

	* configure.in: 
	- Fixed spelling

2001-05-30 08:25  Josef Spillner <dr_maux@users.sourceforge.net>

	* debian/.cvsignore, debian/README.Debian, debian/changelog,
	debian/conffiles, debian/control, debian/copyright, debian/docs,
	debian/ggzd.init.d, debian/postinst, debian/postrm, debian/prerm,
	debian/rules, debian/shlibs,
	game_servers/krosswater/zoneserver/Makefile.am: - debianized source
	tree - don't install Zone headers

2001-05-29 15:00  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/zoneserver/ZoneGGZ.h: - added string.h

2001-05-21 23:42  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/spades.dsc: 
	- Bumped version nbumber to 0.0.3 because of incompatible protocol 
	 change

2001-05-21 21:37  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/engine_func.c: 
	- Once all players are "seated", send them their player numbers. 
	This   enables player 0 to send us the game options

2001-05-19 17:52  Josef Spillner <dr_maux@users.sourceforge.net>

	* configure.in: - create krosswater makefiles in configure.in

2001-05-19 17:50  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/: Makefile.am,
	krosswater/zoneserver/ZoneGGZModServer.cpp: - compile krosswater
	server on default - fix krosswater bug

2001-05-12 14:20  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/krosswater_server.cpp: - send winner

2001-05-12 12:55  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/krosswater.dsc: - fixed number of valid
	players

2001-05-11 17:50  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: .cvsignore, Makefile.am,
	krosswater.dsc, krosswater.room, krosswater_server.cpp: - removed
	nasty move bug (move stone, not water)

2001-04-29 12:12  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: stackpath/.cvsignore,
	zoneserver/.cvsignore: -added .cvsignore files (the usual stuff)
	-modified Makefile to fit current GGZ game module concept

2001-04-29 11:47  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/: game.c, game.h: - get rid of move bug
	(better checked now) - fixed bug so that 8 players can now
	participate - AI improvement: enemy is now the first target

2001-04-27 18:57  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- Handle case where user sends us a seat with GGZ_SEAT_PLAYER:	
	E_BAD_OPTIONS - In table_check() handle unknown seat types with
	E_BAD_OPTIONS

2001-04-22 23:04  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chess/: .cvsignore, libcgc/.cvsignore: - .cvsignore
	files for chess server

2001-04-22 23:03  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/.cvsignore: - Added .cvsignore file

2001-04-07 19:27  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/: Makefile.am, game.c: 
	- Added a 1 second delay before the AI sends a move - Added
	-leasysock to $(LDADD) in Makefile.am (for some weird reason, it
	was missing and the server wouldn't compile)

2001-04-05 14:29  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/krosswater/: Makefile.am, krosswater_server.cpp,
	krosswater_server.h, main.cpp, stackpath/Makefile.am,
	stackpath/Makefile.stackpath, stackpath/README.stackpath,
	stackpath/cwpathitem.cpp, stackpath/cwpathitem.h,
	stackpath/main.cpp, stackpath/pathitem.cpp, stackpath/pathitem.h,
	zoneserver/Makefile.am, zoneserver/ZoneGGZ.h,
	zoneserver/ZoneGGZModGGZ.cpp, zoneserver/ZoneGGZModGGZ.h,
	zoneserver/ZoneGGZModServer.cpp, zoneserver/ZoneGGZModServer.h,
	zoneserver/ZoneProtocols.h: Initial krosswater server sources
	contains server-side Zone files contains Stackpath library

2001-03-31 00:31  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/dots.dsc: - Reset server version to 0.0.1 to
	match protocol revision number - this is   OK as there really
	weren't any changes to the server anyway

2001-03-30 17:17  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- New function table_split_args() to split command line string into
	  array of args (thanks to riq for the patch)

2001-03-30 15:56  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Portablilty fix for FreeBSD: look for threads in -lc_r

2001-03-29 16:51  Brent Hendricks <bmh@users.sourceforge.net>

	* Makefile.am, game_servers/chess/Makefile.am,
	game_servers/chess/libcgc/Makefile.am,
	game_servers/combat/Makefile.am, game_servers/reversi/Makefile.am,
	game_servers/spades/spades.room: 
	- Lots of little fixes for files not being included in the dist:
	'make	dist' should work now

2001-03-29 16:27  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in, game_servers/chess/Makefile.am,
	game_servers/chinese-checkers/Makefile.am,
	game_servers/combat/Makefile.am, game_servers/dots/Makefile.am,
	game_servers/hastings/Makefile.am,
	game_servers/lapocha/Makefile.am, game_servers/reversi/Makefile.am,
	game_servers/spades/Makefile.am,
	game_servers/tictactoe/Makefile.am, ggzd/Makefile.am: 
	- Removed included easysock.  easysock 0.2.X must now be installed
	on   the system in order to compile

2001-03-24 23:06  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/game.c: 
	- Fixed a really dumb bug where an invalid move would break
	complete havoc in the server

2001-03-17 10:14  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, game.c: 
	- Fixed some spelling errors - Fixed a division by zero bug when
	Silent Defense was set

2001-03-16 23:31  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/dots.dsc: - Version bump - Dots is now version
	0.0.2

2001-03-14 16:49  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/game.c: 
	- Fixed bug with the random setup option

2001-03-09 21:44  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/chess.dsc: 
	- Updated the version number to 0.0.6 (so that it matches the
	client one)

2001-03-09 21:10  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/reversi.dsc: 
	- Updated the server .dsc so that it matchs the client protocol
	version (it is 0.0.1 while it should be 0.0.5)

2001-03-04 17:09  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/game.c: - Added support to server
	for leave/rejoin - A few miscellaneous fixes

2001-03-03 11:36  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/game.c: 
	- Fixed bug when calling a flag using server clock, that led to the
	wrong	player being named winner - Only start the time after both
	players have moved, not only the white one

2001-02-27 15:41  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/ggzd.motd: 
	- MOTD update to new colors

2001-02-22 15:38  bugg

	* game_servers/chess/libcgc/movecheck.c: Sync with the other
	versions.  I'm tired of typing out all of these commit messages! :)
	
	We're fooling with the check to see if we're entering check.
	
	(Do you folks realize when I make a change to libcgc, I have to
	make three commits?)

2001-02-20 12:06  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: chess.h, game.c, game.h: 
	- Changed REQ_UPDATE to send a RSP_UPDATE to both players, instead
	of just the   one that requested it, and update the time structures
	as well. (so that, in	server clock, if a player is out of time it
	won't just refuse to play so that   the server never knows his time
	is over)

2001-02-19 17:22  bugg

	* game_servers/chess/libcgc/: movecheck.c, movecheck.h: Remove the
	debugging info that I had placed in Fix the bugs that were reported
	to me by jzaun Namely, interposition code, en passant code, and
	contact mate code

2001-02-19 11:08  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: chess.h, game.c: 
	- Changed protocol so that promoting of pieces now works

2001-02-18 17:36  bugg

	* game_servers/chess/libcgc/movecheck.c: Fix the bug introduced in
	last commit.

2001-02-18 17:28  bugg

	* game_servers/chess/libcgc/movecheck.c: Oops, I commited twice to
	the client and not once to the server.	(and the latter of the
	commits to the client was probably like whitespace)
	
	Fixing the interposition bug introduced in the last commit..
	
	dunce cap: bugg

2001-02-18 16:45  bugg

	* game_servers/chess/libcgc/movecheck.c: Fix (haha, Fix- more like
	try to fix) a bug that caused mates in which there was a piece that
	would have been able to interpose if it wasn't pinned to be
	recognised as checks.
	
	I haven't tested this with the game that broke it, but the patch
	has passed regression testing- and everyone (jzaun, perdig) wants
	me to commit in the form that it is.

2001-02-17 10:29  bugg

	* game_servers/chess/libcgc/: board.c, cgc.c, cgc.h, games.c,
	movecheck.c, movecheck.h: Sync libcgc (in ggzd) to fischer's
	version.  Hopefully this won't break anything ^^; (should be no API
	changes)

2001-02-10 20:56  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/game.c: 
	- Fixed a bug when translating between the representation of the
	moves used by	the protocol and by libcgc (it was just completely
	wrong)

2001-01-22 10:47  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/game.c: - Simulate that a bot always requests
	to play a new game

2001-01-19 19:17  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: Bugfix for game with 5 players and
	AI.

2001-01-14 01:12  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/ggzd.motd: - Name change "GNU-Gaming Zone" -> "GGZ Gaming
	Zone"

2001-01-14 00:59  Rich Gade <rgade@users.sourceforge.net>

	* NEWS, README, ggzd/parse_opt.c: - Name change "Gnu Gaming Zone"
	-> "GGZ Gaming Zone"

2001-01-13 23:58  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/game.c: - Removed temporary
	debugging printf's - Eliminated all compiler warnings

2001-01-11 06:17  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/game.c: 
	- The time for the first turn is not counted anymore - When some
	client sends REQ_FLAG and clock type is SERVER, it will get the  
	time that the current player is taking to think about the move to
	check if   his flag has fall. (This way, even if the player never
	sends a move when his	time is over, the other player can still
	call a flag) - Fixed but that wasn't sending time = 0 - The player
	that is out of time can't claim. When a player is out of time,	
	it's forced to be 0, not going negative ever (looks better)

2001-01-10 11:37  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: chess.h, game.c, game.h, main.c: 
	- Added CHESS_REQ_DRAW to the protocol - The server should handle
	draws in a nice way now

2001-01-10 09:24  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: chess.h, game.c, game.h: 
	- Added CHESS_REQ_FLAG to the protocol, used by the client when he
	wants to   end the game because his oponnent has run out of time
	(the client will have	auto-flag, not the server) - Added gameover
	codes, and updated EVENT_GAMEOVER to send the right ones to   the
	player (no work done on the draw stuff, though)

2001-01-10 07:24  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: chess.h, game.c, game.h, libcgc/board.c,
	libcgc/cgc.c, libcgc/cgc.h, libcgc/games.c, libcgc/games.h,
	libcgc/movecheck.c, libcgc/movecheck.h: 
	- In libcgc:   Applied Dan's patch to remove the player argument to
	cgc_join_game
	
	- In the chess server:	 Added CHESS_REQ_UPDATE and
	CHESS_RSP_UPDATE to the protocol.      - Send the current time from
	the server to the client, so that he can	update his time
	structures if they are out of sync    Added CHESS_MSG_UPDATE to the
	protocol.      - Used by the client when using CLOCK_CLIENT, to
	note how much time he	     has spent until now, and hasn't made a
	move yet. This makes the server        send CHESS_RSP_UPDATE to the
	other player. (the use of it: when the time	   is over in
	CLOCK_CLIENT mode, the losing client sends this message to the	   
	  server, that updates his structures and send them to the other
	player.        Then he can decide about ending the game or not)

2001-01-09 14:42  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/game.c: Changed HASTINGS_STATE_INIT to
	HASTINGS_STATE_WAIT after game launching; this prevents black
	client screens.

2001-01-08 17:09  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/: .cvsignore, game.c, game.h, hastings.dsc,
	main.c: Server updates include e.g. game over handling.

2001-01-08 12:31  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/: ai.c, game.c, game.h: - Enhanced
	the AI by making it give precedence to more distant marbles   as
	the game progresses

2001-01-07 21:41  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/game.c: - Added path display
	routines - Added 1 second delay in server so things don't blink
	super-quick with AI's - Updated statusbar to pop entries after they
	are done displaying

2001-01-07 17:20  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chess/Makefile.am: - Fixed problems which prevented
	easysock from being found

2001-01-07 10:29  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/game.c: 
	- Fixed bugs with the clock stuff (should be working fine now)

2001-01-06 11:39  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: chess.h, game.c, libcgc/movecheck.c: -
	Changed protocol   REQ_MOVE and MSG_MOVE now sends (char)FROM and
	(char)TO   with the index of the source and destination positions
	on the board - Fixed some more bugs - The player id in cgcs aren't
	the seat numbers any more, but 5 and 6	 (because 1 was the code
	for EMPTY seat, and it was causing problems) -
	libcgc/movecheck.c:85	Changed     if(curgame->player1 == NULL ||
	curgame->player2 == NULL)   To	   if(curgame->player1 == EMPTY ||
	curgame->player2 == EMPTY)   As player1 and player2 aren't pointers
	and are initialized as EMPTY, not   NULL

2001-01-05 21:00  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/ccheckers.dsc: - Fixed an error
	which disallowed having four bots (six players, two human)

2001-01-05 19:59  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/: ai.c, game.c: - Corrected player
	move order - Added statusbar messages for movement and game over

2001-01-05 18:44  Justin Zaun <jzaun@users.sourceforge.net>

	* configure.in: 
	Updated the configure.in script to output useful information about
	the resulting build.

2001-01-05 17:12  bugg

	* game_servers/chess/libcgc/games.c: Fix returning E_GAMEFULL and
	E_SEATFULL - it was doing the exact opposite of what it should
	before this fix.

2001-01-05 12:27  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: game.c, libcgc/games.c: 
	- Fixed typos and other simple mistakes (like using es_read_int
	instead of   es_read_char) - In libcgc/games.c:139   Changed	 
	joined->player2 = player;   To	    joined->player1 = player;  
	From what it seems, it was a typo... and it wasn't allowing the
	black player   to join the table

2001-01-04 17:41  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/game.h: 
	- Ops, another file

2001-01-04 17:40  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: ggz.h, protocols.h: 
	- Ops, forgot those files

2001-01-04 16:59  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/chess/: Makefile.am, chess.dsc, chess.h, chess.room,
	game.c, ggz.c, main.c, libcgc/Makefile.am, libcgc/board.c,
	libcgc/board.h, libcgc/cgc.c, libcgc/cgc.h, libcgc/games.c,
	libcgc/games.h, libcgc/movecheck.c, libcgc/movecheck.h: 
	- Initial commit of chess server

2001-01-04 16:54  Ismael Orenstein <perdig@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am: 
	- Initial commit of chess server

2001-01-04 02:03  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/: ai.c, ccheckers.dsc: - Basic AI
	added - easy to beat

2001-01-03 20:20  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/chinese-checkers/game.c: + Fixed game_find_path() +
	Server determines end of game and winner + Clients accept end of
	game message - No statusbar prompts or anything yet

2001-01-02 22:31  Rich Gade <rgade@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am,
	game_servers/chinese-checkers/Makefile.am,
	game_servers/chinese-checkers/ai.c,
	game_servers/chinese-checkers/ai.h,
	game_servers/chinese-checkers/ccheckers.dsc,
	game_servers/chinese-checkers/ccheckers.room,
	game_servers/chinese-checkers/game.c,
	game_servers/chinese-checkers/game.h,
	game_servers/chinese-checkers/ggz.c,
	game_servers/chinese-checkers/ggz.h,
	game_servers/chinese-checkers/main.c,
	game_servers/chinese-checkers/protocols.h: - First semi-playable
	version of Chinese Checkers

2000-12-31 16:22  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.dsc, combat.h, game.c,
	main.c: 
	- Cleaned up the debug messages - Changed game version to 1.0

2000-12-31 15:37  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h: 
	- combat_options_describe now supports a quick description option,
	to be used   w/ the preview of the map

2000-12-31 12:48  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.h, game.c: 
	- If the server receives a NULL option string it will change the
	current host   player (ie, it will ask the next player in the table
	for the game options) - If someone who isn't the current host send
	the options, the server won't	accept them - Fixed some bugs due
	to the RANDOM_SETUP option:   - The game was sometimes starting
	before players have sent setup	 - The game state wasn't being
	update

2000-12-30 18:52  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c, game.h: 
	- Added 2 more options:   Rush Attack	Random setup - All the 16
	binary options are now implemented

2000-12-30 15:23  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.h, game.c: 
	- Added 3 more options:   Unknown Victor   Silent Offense   Silent
	Defense

2000-12-30 12:40  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Added Random Outcome of Attack option - Changed protocol for
	changing options (was causing problems when sending a	255 byte...
	it would be converted to 0 and would mean the end of the options  
	string)

2000-12-30 08:55  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h: 
	- Added a combat_options_describe to combat.[ch] that returns a
	string w/ the	current game options

2000-12-30 08:10  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/combat.c: 
	- Fixed bug with Scouts attacking w/ diagonal move enabled

2000-12-29 17:11  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/combat.c: 
	- Added 5 options   Super Scout   Diagonal Move   Special Forces
	Sergeant   Remember enemy units   Hide enemy list

2000-12-29 15:40  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Implemented 5 options:   Open Map   One Time Bomb   Terrorist Spy
	  Moving Bombs	 Moving Flags

2000-12-29 13:08  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Added preliminary support for the 16 binary game options

2000-12-24 16:34  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/game.c: 
	- Added a game_send_players() call when someones leaves the game
	(it wasn't   updating the client's player list)

2000-12-24 14:32  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.h, game.c: 
	- It's now possible to leave and then return to a running game (at
	any moment of it)

2000-12-24 12:30  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Added the ARMY(OPTIONS, TYPE) macro that is on client's combat.h
	file - Fixed a bug (missing \0 on combat_options_string_read) that
	caused the client   to think it had a wrong version of the protocol

2000-12-23 21:45  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Moved all the options checking stuff to combat.[ch] -
	combat_options_string_read now makes a copy of option string and
	uses it, so   that the string isn't corrupted after the call to it

2000-12-23 17:27  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c, main.c: 
	- It now uses the same combat.[ch] files of the client

2000-12-08 18:35  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Modified protocol to include support for game options (details in
	combat.h) - Added a O_NAME option (Map name)

2000-12-03 14:25  Justin Zaun <jzaun@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am: 
	- Added Hastings to the configre process

2000-11-23 14:48  Josef Spillner <dr_maux@users.sourceforge.net>

	* game_servers/hastings/: Makefile.am, game.c, game.h, ggz.c,
	ggz.h, hastings.dsc, hastings.room, main.c, protocols.h: -the
	server part of Hastings1066 -also unchanged

2000-11-10 01:36  Rich Gade <rgade@users.sourceforge.net>

	* acconfig.h, configure.in, ggzd/Makefile.am, ggzd/ggzdb_db3.c: -
	Added libdb3 support to ggzd server

2000-11-09 12:50  Rich Gade <rgade@users.sourceforge.net>

	* acconfig.h, configure.in, ggzd/ggzdb_db2.c: - Modified db2
	library and header lookup to work with RH7

2000-10-26 18:48  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.h, game.c, game.h: 
	- Fixed the sync message - Two modes of sync message: Full (with
	all the units) and Normal (with only   the units this player knows)
	- Sends a full sync message when the game is over

2000-10-22 10:38  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Added common functions to combat.[ch] to check if a move is valid
	- Now uses this functions instead of the old, ugly, way

2000-10-21 16:37  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: .cvsignore, combat.c, combat.h, game.c,
	main.c: 
	- Responds to CBT_REQ_SYNC (sends the game sync) - Responds to
	CBT_REQ_OPTIONS (sends the current game options) - Checks the
	validity of the options sent - Checks the validity of the setup
	sent

2000-10-20 20:11  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/combat.dsc: 
	- Fixed the game dir on the combat.dsc (it pointed to my home
	dir... ops! :) )

2000-10-20 18:47  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: .cvsignore, combat.h, game.c, game.h: 
	- Added .cvsignore (had forgotten) - Server receives CBT_REQ_MOVE
	msgs, and answers with	      CBT_MSG_MOVE or CBT_MSG_ATTACK -
	Implemented moving logic, with some sanity checks (to avoid
	cheating) - Checks if the game is over, and send a CBT_MSG_GAMEOVER
	if its the case - In general: The game now works! :)

2000-10-19 13:59  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.h, game.c, game.h: 
	- Requests player setups - Receives player setups	(Does some
	basic validity checks) - Starts the game when all the players are
	done

2000-10-15 13:34  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: combat.c, combat.h, game.c: 
	- Sends player names to the client

2000-10-13 14:47  Ismael Orenstein <perdig@users.sourceforge.net>

	* configure.in: 
	- Creates a Makefile for the Combat game module

2000-10-13 14:45  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/combat/: Makefile.am, combat.c, combat.dsc,
	combat.h, combat.room, game.c, game.h, ggz.c, ggz.h, main.c,
	protocols.h: 
	Initial files for the Combat game module server. Already
	implemented: - Launching the table - Joining / Leaving the table -
	Sending the joining player game info (number of players, seat
	number, etc) - Asking the host player for the options - Receiving
	the options from him - Broadcasting this options to the other
	players

2000-10-13 14:42  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/Makefile.am: 
	- Creates Makefile for the Combat game module

2000-10-09 19:17  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/: game.c, main.c: 
	- Fixed bug that caused the server to hang when the player did
	stupid things - Sends sync to the player when he does stupid things

2000-10-08 14:42  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/: game.c, game.h, main.c: 
	- Honors a RVR_REQ_AGAIN message (added play again feature)

2000-09-26 19:00  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/: game.c, game.h: 
	- Fixed stupid bug that caused scores to be wrongly calculated (no
	more tries to calculate the score from the players moves... do it
	by hand, checking each square)

2000-09-25 18:40  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/game.c: 
	- Made AI work - Added random AI (better than nothing!)

2000-09-25 15:37  Ismael Orenstein <perdig@users.sourceforge.net>

	* game_servers/reversi/: game.c, game.h: 
	- Added RVR_REQ_SYNC to protocol (client requesting sync) - The
	server now honors the RVR_REQ_SYNC message (sends sync to the
	player) - Fixed bug when a player was returning the game (ignored
	the current turn - reseted it to BLACK)

2000-09-24 17:51  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am,
	game_servers/reversi/.cvsignore, game_servers/reversi/Makefile.am,
	game_servers/reversi/TODO, game_servers/reversi/game.c,
	game_servers/reversi/game.h, game_servers/reversi/ggz.c,
	game_servers/reversi/ggz.h, game_servers/reversi/main.c,
	game_servers/reversi/protocols.h, game_servers/reversi/reversi.dsc,
	game_servers/reversi/reversi.room: 
	- Added reversi game module from Ismael Orenstein

2000-09-24 16:25  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.h, parse_opt.c: - Increased MAX_GAME_TYPES to 15 -
	parse_game() now checks to see if we are adding too many games

2000-09-14 20:07  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/game.c: - Addressed bug #113525 by not issuing
	DOTS_REQ_MOVE until both clients   have specified "yes" to a new
	game request

2000-09-12 14:35  bugg

	* game_servers/dots/ggz.c, game_servers/lapocha/ggz.c,
	game_servers/tictactoe/ggz.c, ggzd/table.c, ggzd/transit.c: Always
	include <sys/types.h> before <sys/socket.h>
	
	Well, it's not technically not always, but it's a good habit
	because with most common things defined in sys/socket.h sys/types.h
	must have been included first.	(If it were always, then socket.h
	should obviously always include types.h for itself)
	
	Bruce Evans (A FreeBSD developer who really, really, really knows
	his stuff) had explained it to a FreeBSD list once, if anyone
	thinks that this behavior is braindead.  To summarize: it's not
	braindead, so include sys/types.h before sys/socket.h for most
	things :)
	
	glibc is in the minority for having sys/socket.h include
	sys/types.h.
	
	First of several commits to make ggzd portable.

2000-09-07 17:09  Brent Hendricks <bmh@users.sourceforge.net>

	* ChangeLog: 
	- Updated ChangeLog before 0.0.3 release

2000-09-07 16:32  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/C/design/client-server.sgml: 
	- Fix missing </para>

2000-09-07 15:32  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/engine.h, ggzd/control.c: 
	- Use RETSIGTYPE as return type for signal handlers

2000-09-01 16:36  Brent Hendricks <bmh@users.sourceforge.net>

	* INSTALL, NEWS: 
	- Modified INSTALL to reflect new dir layout - Deleted excess
	whitespace from NEWS

2000-08-31 21:09  Rich Gade <rgade@users.sourceforge.net>

	* ggz_server.spec: - Moved default location for db files to
	/var/tmp/ggzd

2000-08-31 02:02  Rich Gade <rgade@users.sourceforge.net>

	* ggz_server.spec: - Updated client and server RPM spec files to
	0.0.3

2000-08-29 14:02  Brent Hendricks <bmh@users.sourceforge.net>

	* INSTALL, NEWS, TODO, configure.in, doc/admin-guide.txt,
	doc/game-modules.txt: 
	- Set version to 0.0.3 - Documentation updates for new release

2000-08-29 12:57  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/C/design/design.sgml: 
	- doc updates

2000-08-29 12:55  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/C/design/: Makefile.am, appendix.sgml, client-server.sgml,
	overview.sgml: 
	- More design doc updates - Include all sgml files with dist

2000-08-28 19:33  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/C/design/client-server.sgml: 
	- Wrote section on table commands - Wrote skeleton for chat
	commands

2000-08-27 18:24  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/game.c: - Full leave/rejoin capability coded

2000-08-27 16:52  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/: game.c, game.h: - Handle game leave/rejoin
	during card play only

2000-08-26 15:45  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/C/design/design.sgml: 
	- Changed chapter title - Corrected revision number after move

2000-08-26 15:30  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in, doc/Makefile.am, doc/design.sgml, doc/C/.cvsignore,
	doc/C/Makefile.am, doc/C/design/.cvsignore,
	doc/C/design/Makefile.am, doc/C/design/appendix.sgml,
	doc/C/design/client-server.sgml, doc/C/design/design.sgml,
	doc/C/design/ggz.dsl, doc/C/design/overview.sgml,
	doc/C/design/requirements.sgml, doc/C/design/images/.cvsignore,
	doc/C/design/images/server_arch.fig,
	game_servers/spades/spades.dsc,
	game_servers/tictactoe/tictactoe.dsc: 
	- Documentation overhaul: - Moved design doc into C/design dir so
	that in the future   translations can be done more easily - Split
	out chapters from design doc - Started re-writing the section on
	client-server interactions to be   more descriptive.  - Bumped
	version number of ttt and spades games

2000-08-22 21:47  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/: dots/ggz.h, lapocha/ggz.h, tictactoe/ggz.h: - Game
	servers need to handle 16 character names

2000-08-20 16:48  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, hash.c, hash.h: hash.[ch]	- Added
	hash_initialize() to init lock structures
	
	control.c   - Call hash_initialize() at startup

2000-08-20 00:14  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- s/datadir/tmpdir at one spot.  oops

2000-08-19 23:37  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/control.c: 
	- Use select() on listening socket to determine when there is an  
	incoming connection.  - Make listening socket non-blocking in case
	connection gets removed   between select() and accept().  See UNPv1
	ch15.

2000-08-19 12:59  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- Rewrite table_game_join(): - If player notification of succesful
	join fails, assume player has	logged out and force them to leave
	table

2000-08-19 00:13  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/hash.c: - Does this fix the hash bug?  We think it might....

2000-08-17 23:08  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/game.c: server	- Alter MSG_HAND protocol
	to send a char representing dealer's seat
	
	client	 - Display dealer's seat with a (D) after name	 - Display
	current bidder's seat with a (B) after name ((DB) if dealer too)

2000-08-16 01:42  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Don't attempt to leave table for empty messages (either form
	player	 or from table)

2000-08-16 01:39  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Don't attempt to leave table for empty messages (either from
	player	 of from table)

2000-08-16 00:25  Brent Hendricks <bmh@users.sourceforge.net>

	* acconfig.h, configure.in, game_servers/dots/ggz.c,
	game_servers/spades/engine.h, game_servers/spades/engine_func.c,
	game_servers/spades/engine_main.c, game_servers/tictactoe/ggz.c,
	ggzd/Makefile.am, ggzd/chat.c, ggzd/chat.h, ggzd/control.c,
	ggzd/datatypes.h, ggzd/err_func.h, ggzd/event.c, ggzd/event.h,
	ggzd/ggzd.conf.in, ggzd/ggzd.h, ggzd/hash.c, ggzd/hash.h,
	ggzd/login.c, ggzd/login.h, ggzd/motd.c, ggzd/motd.h,
	ggzd/parse_opt.c, ggzd/players.c, ggzd/players.h, ggzd/protocols.h,
	ggzd/room.c, ggzd/room.h, ggzd/seats.c, ggzd/seats.h, ggzd/table.c,
	ggzd/table.h, ggzd/transit.c, ggzd/transit.h: 
	- Merge experimental dynamic-players branch back into main tree

2000-08-15 23:32  Brent Hendricks <bmh@users.sourceforge.net>

	* acconfig.h, configure.in, game_servers/dots/ggz.c,
	game_servers/lapocha/ggz.c, game_servers/spades/engine.h,
	game_servers/spades/engine_func.c,
	game_servers/spades/engine_main.c, game_servers/tictactoe/ggz.c,
	ggzd/control.c, ggzd/ggzd.conf.in, ggzd/parse_opt.c, ggzd/table.c: 
	- Use TMPDIR to store Unix domain sockets in - enable use of
	--with-tmpdir=PATH to configure it - Default to /tmp/ggzd for
	TMPDIR - enable use of --localstatedir to configure DATADIR (db and
	pid   files) - In spades module, don't send new game to players
	until after sending   REQ_GAME_OVER to ggz server - Create DATADIR
	and TMPDIR (and parent dirs) automatically if they   don't exist

2000-08-14 21:51  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/: cards.c, cards.h: - Added license notice

2000-08-14 21:48  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/ai.h: - Added license notice

2000-08-09 00:56  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, players.h, room.c, table.c, table.h, transit.c,
	transit.h: 
	- Use GGZEvent system to notify players of successful table launch
	- Move table allocation into table_launch() - Move room allocation
	for table into table_new() - New function table_launch_event() for
	notifying users of table  launch status - New member 'launching' of
	player structure so that player does   not attempt to launch
	multiple tables simultaneously - New member 'owner' of table
	structure to hold name of player who   launched table (and is
	notified of launch status) - Moved transit_player() into players.c
	and renamed player_transit() - Moved setting of player->transit
	into player_transit()

2000-08-08 18:59  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/control.c: 
	- As discussed on the mailing list a while back, set SIGPIPE to  
	SIG_IGN so that it gets handled as a "normal" socket error, and  
	doesn't bring down the entire server

2000-08-08 18:29  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, event.c, event.h, ggzd.h, players.c, players.h,
	protocols.h, room.c, table.c, table.h, transit.c, transit.h: 
	- New functions event_table_{enqueu,handle,flush} to handle private
	  table events - Allow private events to be deferred if the
	callback returns   GGZ_EVENT_DEFER - In event_player_enqueue(),
	free event and data if user lookup fails - New transit system using
	GGZEvent infrastructure!!! - Commenting updates in players.c and
	event.[ch] - If the game module closes the socket to the player,
	leave the table - Rewrote player_loop to only have *one* way of
	ending the players   game! - When table is being removed force all
	players to leave

2000-08-05 01:40  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/dots/dots.dsc, game_servers/spades/spades.dsc,
	game_servers/tictactoe/tictactoe.dsc, ggzd/chat.c, ggzd/chat.h,
	ggzd/event.c, ggzd/event.h, ggzd/hash.c, ggzd/hash.h, ggzd/login.c,
	ggzd/players.c, ggzd/table.c: 
	- Output player's name for debug messages, not just pointer address
	- Specify BotsAllowed 0 in all game description files - Return from
	hash_player_lookup() with returned player write-locked:   this
	prevents a situation where the desired player could logout in  
	between when we look them up and when we try to acquire a lock -
	Pass player name, not pointer, to event_player_enqueue() -
	Write-lock player structure when clearing fd in player_remove(): we
	  need to acquire the lock at least once there anyway so that
	someone   holding the lock wil prevent us from being removed -
	Started updating function comments in players.c

2000-07-28 21:19  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/parse_opt.c: 
	- Permit BotsAllowed values of 0

2000-07-28 21:09  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- Check for table removed from room (NULL pointers) before joining
	- When searching for tables, don't assume they start at 0 in the
	room

2000-07-28 00:58  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/: dots/dots.dsc, spades/spades.dsc,
	tictactoe/tictactoe.dsc: - Removed obsolete OptionsSize entries

2000-07-28 00:06  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/main.c: - Almost forgot, don't exit until
	everyone's gone, even if game is over

2000-07-28 00:04  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/: game.c, main.c: - Figure end of game
	winner and notify clients

2000-07-27 23:42  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/: game.c, game.h: - Added game state for
	user-choice trump (hands 13-16) - Request and verify trump from
	dealer

2000-07-26 18:03  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/cards.c: - Fixed stupid miscalculation bug
	in card_value()

2000-07-26 02:12  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/: cards.c, cards.h, game.c, game.h: First
	(semi)playable version of La Pocha
	
	WHAT WORKS ---------- - Cards are dealt out properly, per rules -
	deal passes to the right - Trump is chosen by cutting the remainder
	of the deck in a random fashion - Bidding is properly dealt with,
	per the rules - to the left - Trick play is properly dealt with,
	cards must be played by the rules - End of hand play is properly
	dealt with, score calculated and sent to clients
	
	WHAT DOESN'T WORK ----------------- - Leave/Rejoin is not
	functional (and is going to be hell to implement) - Hands which use
	the full deck will not function (could crash? not sure)   - Don't
	play past the hand where 9 cards are dealt ;) - End of game is not
	detected

2000-07-23 22:16  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- table_join() fails with E_NO_TABLE if table index is -1

2000-07-23 18:24  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/lapocha/: cards.c, cards.h, game.c, game.h, main.c:
	- Deal proper sized hand of cards to players - Cut deck for trump
	card and send to players - Request and process player bids

2000-07-23 12:10  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: ai.c, game.c, game.h: - Implement protocol
	extension to send scoring information with   each move update
	message (DOTS_RSP_MOVE and DOTS_MSG_MOVE_(H/V))

2000-07-14 21:53  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/room.c: 
	- Pack player name (instead of pointer) into room change events. 
	This   fixes the bug where player list update might try to grab
	information   from an already deleted player

2000-06-29 23:18  Rich Gade <rgade@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am,
	game_servers/lapocha/.cvsignore, game_servers/lapocha/Makefile.am,
	game_servers/lapocha/cards.c, game_servers/lapocha/cards.h,
	game_servers/lapocha/game.c, game_servers/lapocha/game.h,
	game_servers/lapocha/ggz.c, game_servers/lapocha/ggz.h,
	game_servers/lapocha/lapocha.dsc,
	game_servers/lapocha/lapocha.room, game_servers/lapocha/main.c,
	game_servers/lapocha/protocols.h: Initial checkin of La Pocha
	server.
	
	Current status: - Clients can connect and a sample 10 cards are
	dealt by the server.  - No game play is functional.  - Player one
	is told to play (so card animation can still be tested)
	
	Bugs: - Far far too numerous to mention, but nothing that appears
	to make either	 server or client unstable

2000-06-29 22:16  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, parse_opt.c: datatypes.h - Removed game
	options size
	
	parse_opt.c - Emit a warning about obsolete OptionsSize
	configuration line

2000-06-29 01:24  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, control.c, motd.c, parse_opt.c, players.c,
	players.h, room.h, seats.c, seats.h, table.c, table.h, transit.c,
	transit.h: 
	- Added locks around table checking in chat.c - Switched over to
	dynamic table allocation (lots changed!) - Disabled global table
	searches - Disabled open table count in for motd - Rewrote
	player_table_launch to be much more robust - Store list table
	pointers in each room - Make players' tabel index an index into the
	*room* (not a pointer	because tables can get removed without
	notifying the player) - Store room index as part in GGZTable
	structure - When enqueuing a table event, copy all of the info we
	need because   the table might be removed before we get to
	processing the event - Adssign table room number in table_launch()
	not player_table_launch() - Issue table UPDATE_ADD event after
	we've been assigned a room number - Statically allocate room for
	seat assignments at table.  This avoids   geting into trouble with
	malloc'd memory when copying tables

2000-06-25 01:24  Brent Hendricks <bmh@users.sourceforge.net>

	* acconfig.h, ggzd/Makefile.am, ggzd/control.c, ggzd/daemon.c,
	ggzd/daemon.h: 
	- Borrowed some of daemon_init() and daemon_cleanup() from atd by  
	Thomas Koenig.	This gives us our daemon pidfile - Add in signal
	handlers for SIGINT and SIGTERM - Do db and daemon cleanup before
	exiting

2000-06-24 12:36  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: event.c, table.c: 
	- Fixes to allow compilation without debugging enabled

2000-06-23 23:15  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Free player structure after removing player

2000-06-23 16:08  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, control.c, datatypes.h, motd.c, parse_opt.c,
	players.c, room.c, table.c, table.h, transit.c: 
	- Massive changes (mostly of a search and replace type): - Moved to
	individual table and game type locks - Moved table and type count
	variables into global state variable - Eliminates GameTypes and
	GameTables structure in favor of simply   accessing arrays of
	GGZTable and GameInfo - Restructured player_list_tables() as
	discussed on mailing list   before the 0.0.2 release to separate
	table searching and actual   sending of data (table searching still
	needs work)

2000-06-23 09:43  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, control.c, err_func.h, motd.c, motd.h, players.c,
	room.h, seats.c, seats.h, table.c, table.h, transit.c: 
	- Renamed table structure to GGZTable to be more consistent -
	Renamed GGZTable.type_index to GGZTable.type - Use player names
	over transit system instead of pointers, this avoids   several
	unnecessary name lookups and keeps the table structure from  
	depending on the player structure

2000-06-23 00:20  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/login.h: file login.h was initially added on branch
	dynamic-players.

2000-06-23 00:20  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, chat.c, chat.h, control.c, datatypes.h,
	err_func.h, event.c, event.h, hash.c, hash.h, login.c, login.h,
	motd.c, motd.h, parse_opt.c, players.c, players.h, room.c, room.h,
	table.c, table.h, transit.c: 
	- Moved player_login functions into login.c and renamed
	login_player - Moved player structire into player.h - Moved MOTD
	structure into moth.h - Created GGZState structure to hold various
	counts - ....and the big one....  - Made player dynamically
	allocated!

2000-06-23 00:20  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/login.c: file login.c was initially added on branch
	dynamic-players.

2000-06-18 22:41  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/ggzdb.h: 
	- Incremented db version number to 0.2 due to increase in player
	name   length to 16

2000-06-18 22:05  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/: engine_func.c, protocols.h: 
	- Use REQ/RSP_GAME_OVER at the end of the game

2000-06-18 21:31  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.h, players.c, seats.c, seats.h, table.c, table.h,
	transit.c: 
	- Changed the internal representation of seat assignments from
	integer   player indices to player name strings: this makes it
	easier when we	 go to dynamically allocated players and eliminate
	player indices - New function seats_type() to translate special
	seat assignment   strings into the old integer codes: GGZ_SEAT_XXXX

2000-06-16 22:52  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, protocols.h, table.c: 
	- Updated to comply with protocol version 3: - send bot_allow_mask
	in RSP_LIST_TYPES - send ID before room in RSP_LIST_TABLES - added
	GGZ_UPDATE_STATE subop to MSG_UPDATE_TABLES

2000-06-16 19:11  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Updated protocol version to 3: - Added bot_mask to RSP_LIST_TYPES
	- Send table ID before room in RSP_LIST_TABLES - Added
	GGZ_UPDATE_STATE subopcode to MSG_UPDATE_TABLES

2000-06-13 23:23  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/game.c: 
	- Removed many debugging statements from ttt bot code

2000-06-13 22:20  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/hash.c: - Added parens around hash_pjw line that caused a
	warning

2000-06-13 22:18  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzdb.c, ggzdb_db2.c, players.c: - Wrote update and close
	functions for the database - Player last login timestamp is now
	updated at login

2000-06-13 21:42  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/err_func.c: - Removed lock for fputs() - stream output in
	glibc2 is threadsafe

2000-06-13 21:35  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, motd.c, players.c, room.c,
	table.c, transit.c: - Switched over completely to personal locks
	for player structures - Renamed main player lock (still used to
	protect count) to mainlock

2000-06-13 21:06  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, motd.c, seats.c, seats.h, table.h:
	
	- Moved definition of table struct into table.h

2000-06-13 11:32  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Uncommented the {REQ,RSP}_LOGIN_NEW and {REQ,RSP}_LOGIN reference
	  pages since they are now supported by the server - NOTE: protocol
	version did not change

2000-06-12 12:54  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.h, players.c, table.c: 
	- Set player's table index to -1 immediately after a successful
	leave:	 This fixes the bug Doug found where a table gets removed
	after one   player leaves - Fixed subtle bug in transit system
	caused by the table getting removed   before a player was notified
	of a successfule leave

2000-06-12 00:28  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in, ggzd/Makefile.am: 
	- Added --database option to configure script.	Currently only
	accepts   db2 - Only build database object code selected at
	configure time

2000-06-11 21:12  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzdb.c, ggzdb.h: - Place a db version in datadir to check
	for outdated database files

2000-06-11 18:15  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzdb.c, ggzdb_db2.c, ggzdb_db2.h: - Altered
	backend definitions to use functions instead of macros	 so Brent
	doesn't have to deal with backend header files

2000-06-11 17:56  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/ggzdb_db2.c: - Fixed stupid error that caused a segfault

2000-06-11 17:40  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, players.c: - Generates a "decent" password,
	common word + 2 digits for new users

2000-06-11 17:11  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzdb.c, ggzdb.h, ggzdb_db2.c, ggzdb_db2.h, players.c:
	Phase 2 of database implementation
	
	ggzdb/db2.c   - Wrote player_get functions   - Altered db2 backend
	to be threadsafe w/o thread locks
	
	players.c   - Wrote player_login_normal to login a registered
	player	 - Altered player_login_anon to check if name is in db

2000-06-11 13:17  Rich Gade <rgade@users.sourceforge.net>

	* acconfig.h, configure.in, ggzd/Makefile.am, ggzd/control.c,
	ggzd/ggzdb.c, ggzd/ggzdb.h, ggzd/ggzdb_db2.c, ggzd/ggzdb_db2.h,
	ggzd/players.c: Big update to kickstart the database stuff
	
	acconfig.h   - Missed an undef
	
	configure.in   - Added check for db2 in libdb
	
	control.c   - Call the ggzdb_init() function
	
	players.c   - Enabled REQ/RSP_LOGIN_NEW   - Updated
	players_login_new to work with newer ggzd features
	
	ggzdb.c   - Wrote initial front-end functions to support writing to
	database
	
	ggzdb_db2.c   - Wrote initial back-end functions to support db2

2000-06-11 00:26  Rich Gade <rgade@users.sourceforge.net>

	* configure.in, ggzd/datatypes.h, ggzd/ggzd.conf.in,
	ggzd/ggzd.test.in, ggzd/parse_opt.c: - Added configure.in variable
	ggzddatadir/DATADIR - Parse and store DataDir from ggzd.conf
	configuration file - Default to DATADIR in config.h if not in
	ggzd.conf - Set DataDir to test directory in ggzd.test

2000-06-09 23:51  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: room.c, table.c: 
	- Don't send MSG_UPDATE_PLAYERS to myself - Pack player number and
	seat into data for table updates - Send GGZ_UPDATE_LEAVE events for
	remaining players when a table is   removed

2000-06-09 19:58  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: chat.c, hash.c: Personal messages between rooms now
	functional
	
	chat.c	 - replace in-room name search with call to
	hash_player_lookup()
	
	hash.c	 - coded hash_player_lookup() - returns p_index or -1 if
	not found

2000-06-09 01:25  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, hash.c, hash.h, players.c: Started work on
	player name hash tables
	
	Makefile.am   - Added hash.[ch] to compilation list, remember to
	run autogen.sh!
	
	players.c   - Call hash_player_add to add player name to hash at
	login	- Use hash_player_add return code to determine if login
	name is in use	 - Call hash_player_delete to remove player name at
	disconnect
	
	hash.[ch]   - Initial coding of hash_player_add/delete - seems
	stable :)   - Initial number of lists coded at 31 - good for small
	to medium site	 - Uses one thread lock per list to minimize
	contention   - List usage tracking coded in (for large site tuning;
	gives min, max,     and average list depths)   - Ripped a hash
	function from Holub who ripped it from Aho

2000-06-08 22:04  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: game.c, game.h: - handle a DOTS_REQ_NEWGAME
	by reseting the game and asking for options

2000-06-06 23:01  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/chat.c: - Personal chats sent from a table are now blocked
	(E_AT_TABLE) - Added note to add read locks in the future

2000-06-06 21:41  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: game.c, game.h: - Send DOTS_REQ_OPTIONS to
	first joining client (the launcher) - Send options to all clients
	(including launcher) when a OPTIONS event occurs - Send seats and
	names on join now that client always has a main dialog

2000-06-06 01:35  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/game.h: - Moved DOTS_SND_OPTIONS to
	client->server portion of protocol where it belongs

2000-06-06 01:05  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: game.c, game.h, ggz.c, ggz.h, main.c: Updated
	server to work with new launch protocol
	
	game.c:   - Get DOTS_SND_OPTIONS (9) opcode and process with
	game_get_options   - Added new state DOTS_STATE_OPTIONS when
	waiting for options   - Queue JOIN events so that they are not
	fulfilled until options are set
	
	ggz.c:	 - Server no longer obtains options from main ggzd server
	on launch
	
	main.c:   - Don't send an options buffer to ggz_init()

2000-06-05 23:34  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: chat.c, protocols.h: - Personal chat messages (/msg,
	/beep) to a user at a table are denied - Added E_AT_TABLE (-14)
	error code to return for RSP_CHAT

2000-06-04 22:06  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: protocols.h, room.c, table.c: 
	- Updated to comply with protocol version 2: - Have MSG_UPDATE_XXX
	send actual update information - In table_loop(), unlock
	transit_lock, not state_lock

2000-06-04 21:51  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Modified MSG_UPDATE_{PLAYERS|TYPES|TABLES|ROOMS} to send update  
	information, rather than just notification of a change - Bumped
	protocol version to 2

2000-05-22 23:26  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c, protocols.h, room.c, room.h,
	table.c: 
	- Use event system for table updates - Remove all traces of old
	timestamp-based update system - No longer send room and type update
	messages upon login - No longer send player and table updates upon
	entering a room

2000-05-22 18:00  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/room.c: 
	- Use event system when players join/leave room (still sends
	"/SxxxS")

2000-05-21 23:37  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, datatypes.h, event.c, parse_opt.c, players.c,
	room.c, room.h, table.c: 
	- s/chat_room/rooms/g; - Move definition of room struct into room.h

2000-05-20 00:19  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml, game_servers/spades/engine.h,
	game_servers/spades/engine_func.c, game_servers/tictactoe/ggz.c,
	game_servers/tictactoe/ggz.h, game_servers/tictactoe/main.c,
	ggzd/datatypes.h, ggzd/players.c, ggzd/protocols.h, ggzd/table.c: 
	- Updated server to comply with protocol version 1: - Moved option
	handling into game server modules - Updated ttt and spades; dots
	still broken

2000-05-19 16:15  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Removed game option handling from REQ_TABLE_LAUNCH.  -
	Incremented protocol version number to 1

2000-05-19 16:08  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Spelling corrections - Misc doc fixes

2000-05-15 21:50  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Updated a few more opcodes

2000-05-15 18:51  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Finished making index entires for client/server protocol items
	(some	still need work though).

2000-05-14 22:33  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Documentation updates

2000-05-14 13:12  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, table.c: Server now verifies validity of
	seating assignments
	
	table.c   - Supplement printing of seats and bots with tests to
	insure validity   - Return E_BAD_OPTIONS if seating invalid
	
	players.c   - Don't bother trying to join the table if it failed to
	create	   (ensures proper return of error code for
	RSP_TABLE_LAUNCH)

2000-05-14 00:48  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, protocols.h: 
	- Updated server to comply with protocol version 0: - Pass protocol
	version and max chat length after MSG_SERVER_ID

2000-05-14 00:15  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Updated MSG_SERVER_ID protocol.  - Added protonum entity and set
	to 0.  - Removed protocol items which we don't implement

2000-05-13 02:45  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/ai.c: - AI skill upgraded to medium, now gives
	away least possible number of squares	if unable to make a safe
	move (1 move lookahead)

2000-05-12 23:45  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml: Updated documentation on chat protocol

2000-05-12 00:36  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: Makefile.am, ai.c, ai.h, dots.dsc, game.c,
	main.c: Added AI to CtD
	
	Fairly simplistic, equates to "easy" mode if difficulty levels are
	ever included.	First looks for any scoring moves, if none it will
	pick a random safe move, and if no safe moves it will pick a random
	move with what is left.
	
	Future (long range?) enhancement is to add look-ahead

2000-05-11 13:49  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, chat.c, chat.h, datatypes.h, event.c,
	event.h, players.c, room.c, room.h: 
	- New event subsystem! - Added room-specific and player-specific
	event queues to player data   structure - Reworked chat system to
	use events

2000-05-10 23:59  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: game.c, game.h: Completed implementation of
	DOTS_SND_SYNC
	
	Server: - Keep track of owned squares and send them as part of
	DOTS_SND_SYNC
	
	Client: - After receiving DOTS_SND_SYNC, call board_redraw() to
	display game - Implemented board_redraw() to draw all lines and
	owned squares

2000-05-10 09:33  Brent Hendricks <bmh@users.sourceforge.net>

	* Makefile.am: 
	- Always rebuild testdir from scratch

2000-05-09 19:46  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: game.c, game.h: Altered CtD protocol to
	always send DOTS_MSG_OPTIONS
	
	- Removed DOTS_REQ_OPTIONS - Renamed DOTS_RSP_OPTIONS ->
	DOTS_MSG_OPTIONS - Send DOTS_MSG_OPTIONS to joining board, before
	SYNC is sent

2000-05-08 00:07  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, game.h: 
	- Made ttt bot a *lot* smarter

2000-05-06 18:18  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/players.c: /msg and /beep implemented
	
	FIXME:	 player's personal chat should be zapped when they leave
	the server

2000-05-06 15:23  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, protocols.h, room.c: Updated to new chat
	protocol, currently handles only GGZ_CHAT_NORMAL

2000-05-05 21:54  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.h, table.c, transit.c: 
	- Small redesign of transit system: - Eliminate GGZ_TRANSIT_RECV -
	Make GGZ_TRANSIT_LEAVE its own bit - When table removed signal
	anyone waiting for transit - Return error if table sends
	RSP_GAME_{JOIN, LEAVE} when we're not in   transit - This should
	eliminate the player handler thread hangs completely

2000-05-05 21:20  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in, game_servers/dots/Makefile.am,
	game_servers/spades/Makefile.am,
	game_servers/tictactoe/Makefile.am: 
	- s/ggzdmod/ggzdexecmod/g;  Now you can do 'make install-exec' to
	just   install executables and not conf files

2000-04-29 13:11  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: game.c, game.h: Connect the Dots getting ever
	closer
	
	- Games now launch, moves are sent to server   (don't know what
	happens if you include a bot - DDT cuz there are no bots) - Server
	calculates moves and responds to both clients - Turn processing not
	handled just right yet (sometimes it's both players turn!) - Game
	leaves ghost at end of game (clients don't handle EOG yet)

2000-04-27 23:21  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/dots/: game.c, game.h, ggz.c, main.c: Get and
	respond to options (board width, board height)

2000-04-27 19:34  Rich Gade <rgade@users.sourceforge.net>

	* configure.in, game_servers/Makefile.am,
	game_servers/dots/.cvsignore, game_servers/dots/Makefile.am,
	game_servers/dots/dots.dsc, game_servers/dots/dots.room,
	game_servers/dots/game.c, game_servers/dots/game.h,
	game_servers/dots/ggz.c, game_servers/dots/ggz.h,
	game_servers/dots/main.c, game_servers/dots/protocols.h: Initial
	stab at Connect the Dots server
	
	- Compiles, but can't test, client needs updating to utilize server
	- Not sure how to handle the option passing, need to talk to Brent
	about this

2000-04-26 16:12  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/: design.sgml, ggz.dsl: 
	- Support for role="bold" attribute of emphasis tag in ggz.dsl -
	Use <emphasis role="bold"> to get bold, not <parameter> hack

2000-04-26 16:11  Brent Hendricks <bmh@users.sourceforge.net>

	* ggz_server.spec, configure.in: 
	- Bump version to 0.0.3pre

2000-04-24 23:00  Brent Hendricks <bmh@users.sourceforge.net>

	* ChangeLog: 
	- Updated ChamgeLog entries

2000-04-24 22:55  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/Makefile.am: 
	- Include our DSSSL file and admin guide in dist

2000-04-24 22:54  Brent Hendricks <bmh@users.sourceforge.net>

	* ggz_server.spec: 
	- Don't include easysock files

2000-04-23 23:35  Brent Hendricks <bmh@users.sourceforge.net>

	* NEWS: 
	- Updated NEWS file for upcoming 0.0.2 release

2000-04-23 23:18  Brent Hendricks <bmh@users.sourceforge.net>

	* INSTALL, README: 
	- Updated docs to reflect new compilation and install procedures

2000-04-23 23:14  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/game-modules.txt: 
	- Updated to document Unix domain socket used for communication -
	Mention tic-tac-toe example module

2000-04-23 21:45  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/admin-guide.txt: 
	- Moved configuration stuff into INSTALL.  Added/clarified some
	stuff.

2000-04-23 21:02  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Added REQ/RSP_LOGIN_* items to appendix

2000-04-23 18:30  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/: design.sgml, ggz.dsl: 
	- Put all server interactions into refentries in appendix

2000-04-22 10:41  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/admin-guide.txt: 
	- Rich's first go at a GGZ admin guide (with the syslog stuff
	added)

2000-04-21 17:49  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/Makefile.am: 
	- Always remake docs

2000-04-21 01:10  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml: Documentation updated muchly:
	
	- New documentation for room, chat, server options, MOTD and log
	internals - Description of the config file parse phases - A few bad
	tags and mispelings fixed I happened to see

2000-04-21 00:06  Rich Gade <rgade@users.sourceforge.net>

	* ggz_server.spec: RPM Spec file modifications
	
	- Wrote the ggz_client spec file - Updated the ggz_server spec file
	to allow a BuildRoot so it can be built   by non-root users -
	Updated ggz_server spec file to use /etc for the SYSCONFDIR

2000-04-18 15:18  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, game_servers/spades/.cvsignore,
	game_servers/spades/Makefile.am, game_servers/spades/spades.dsc,
	game_servers/tictactoe/.cvsignore,
	game_servers/tictactoe/Makefile.am,
	game_servers/tictactoe/tictactoe.dsc, ggzd/ggzd.conf.in: 
	- Renamed game modules to ggzd.* rather than ggzd_*

2000-04-15 12:27  Rich Gade <rgade@users.sourceforge.net>

	* ggz_server.spec: A spec file to generate a GGZ Server RPM

2000-04-15 00:23  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/: spades/Makefile.am, spades/spades.dsc,
	tictactoe/Makefile.am, tictactoe/tictactoe.dsc: spades executable
	now ggzd_spades tictactoe executable now ggzd_tictactoe

2000-04-11 10:41  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/game.c, game_servers/tictactoe/ggz.c,
	game_servers/tictactoe/main.c, game_servers/tictactoe/protocols.h,
	ggzd/players.c, ggzd/protocols.h, ggzd/table.c: 
	- MSG_GAME_OVER -> REQ/RSP_GAME_OVER - Game module doesn't exit
	until receiving RSP_GAME_OVER - As soon as table handler receives
	REQ_GANE_OVER, make table as done - Don't follow through with
	leave, if table marked as done

2000-04-10 21:24  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/transit.c: 
	- If there is an error in transit, set GGZ_TRANSIT_RECV so player  
	thread won't hang.

2000-04-10 19:34  Brent Hendricks <bmh@users.sourceforge.net>

	* Makefile.am, game_servers/spades/Makefile.am,
	game_servers/tictactoe/Makefile.am, game_servers/tictactoe/game.c,
	ggzd/ggzd.conf.in, ggzd/ggzd.test.in, ggzd/transit.c: 
	- Small autoconf updates (typos, omitted files, etc) - Don't forget
	to close the remote end of the socketpair!!!

2000-04-10 17:46  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, table.c: 
	- Added more log entries for failure conditions

2000-04-10 17:35  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/table.c: - Make sure the socket is created before we exec()
	the game server

2000-04-10 16:25  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/Makefile.am,
	game_servers/tictactoe/Makefile.am, ggzd/Makefile.am,
	ggzd/ggzd.motd, ggzd/ggzd.test.in, ggzd/table.c: 
	- Added sample ggzd.motd - Force overwrite of files when doing
	'make test'

2000-04-09 15:12  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: - Turned off TmpDir option parsing for now

2000-04-09 14:56  Brent Hendricks <bmh@users.sourceforge.net>

	* .cvsignore, Makefile.am, TODO, autogen.sh, configure.in,
	game_servers/Makefile.am, game_servers/spades/Makefile.am,
	game_servers/tictactoe/Makefile.am, ggzd/.cvsignore,
	ggzd/Makefile.am, ggzd/ggzd.test.in: 
	- Added 'test' target.	Just do a 'make test' to create the testdir
	- Added ggzd.test.in to be filled in by configure and then used in 
	 testing.

2000-04-09 14:51  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/players.c: - Allocate a MAX_CHAT_LEN buffer for chat
	messages rather than allowing	arbitrary size strings.

2000-04-08 16:12  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, err_func.c, parse_opt.c: - If the user
	specifies --debug=#, don't overwrite it from ggzd.conf

2000-04-08 16:08  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/ggzd.conf.in: 
	- Added example for ConfDir option, but default to commented out

2000-04-08 15:46  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: - Set error defaults for admin name and email

2000-04-08 15:04  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/tictactoe/tictactoe.room: - GameType should be
	TicTacToe

2000-04-08 15:03  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, motd.c, parse_opt.c: Making
	directory structure work
	
	control.c   - Keep logfiles off until JUST before daemon_init
	
	datatypes.h   - Added tmp_dir, conf_dir
	
	motd.c	 - Default to loading MOTD file from conf_dir
	
	parse_opt.c   - Use GGZDCONFDIR for finding config file   - Set
	defaults for directories which are not specified in conf file	-
	Use opt.conf_dir as base directory for game and room files

2000-04-08 14:41  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, acconfig.h, configure.in, game_servers/spades/Makefile.am,
	game_servers/spades/spades.dsc, game_servers/spades/spades.room,
	game_servers/tictactoe/Makefile.am,
	game_servers/tictactoe/tictactoe.dsc,
	game_servers/tictactoe/tictactoe.room, ggzd/Makefile.am,
	ggzd/ggzd.conf, ggzd/ggzd.conf.in, ggzd/ggzd_casual.room,
	ggzd/ggzd_competitive.room, ggzd/parse_opt.c, ggzd/players.c: 
	- Redid autoconf stuff to put things in correct places - Moved room
	files in with game modules - Have configure create ggzd.conf from
	ggzd.conf.in - Enable debugging by default

2000-04-07 14:13  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, room.c: room.c   - room_join - don't ignore
	error code from room_send_chat	 - Don't bother trying to send chat
	if they are moving off the server   - Check for GGZ_REQ_DISCONNECT
	in room_handle_join   - Replaced 0/-1's with
	GGZ_REQ_OK/GGZ_REQ_DISCONNECT
	
	control.c   - Don't ignore a SIGPIPE except in production

2000-04-07 14:11  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/game.c: 
	- Fixed game_send_sync() to send whole board, not just first row

2000-04-06 20:23  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/control.c: - Setup to ignore SIGPIPE from a sick client

2000-04-06 16:16  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/players.c: - Separated player_list_tables() into separate
	functions - player_list_tables_room() handles room-specific table
	lists - player_list_tables_global() handles server-wide table lists

2000-04-05 17:31  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, game.h, ggz.c, tictactoe.dsc: 
	- Collapsed TTT_STATE_WAIT_INIT and TTT_STATE_WAIT_MID - Initalize
	turn to -1 in game_init() and then set to 0 when game	begins -
	Rewrote game_update to be event based, not state based - Add void*
	data parameter to game_update.	Much more useful now - Always send
	name, even if it's a bot - New function game_bot_move() does a
	simple bot (first available   square) - New function game_move()
	abstracts player and bot - Updated .dsc file now that bots are
	allowed

2000-04-05 17:09  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/room.c: 
	- In room_join(), don't call room_send_chat() if in room -1

2000-04-05 13:52  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/control.c: 
	- Remove mtrace stuff (it's GNU specific and not that helpful)

2000-04-05 13:51  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/room.c: 
	- Fixed bug in room_handle_join if user tries to enter non-existent
	  room.

2000-04-05 13:23  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.h, players.c, room.c, room.h: Lock
	fixes/optimizations on room code
	
	players.c   - Send file descriptor to room_join() and
	room_send_chat()
	
	room.c	 - Rewrote room_send_chat, no buffer - chats sent outside
	of locks   - room_send_chat builds a list of chats to delete and
	removes them	 outside of lock   - Don't call
	room_spew_chat_room() unless list debugging is enabled as it	 is
	a high cost algorithm

2000-04-05 07:42  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- s/game/table in a couple places

2000-04-04 23:22  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.h, room.c: ggzd.h   - New define: CHAT_OUTBUF_SIZE
	
	room.c	 - room_chat_send() now copies chats to a buffer, then
	sends out     the I/O in a lock-free loop.

2000-04-04 19:37  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: - Fixed a missing free()

2000-04-04 19:21  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, players.c: - Fixed two nasty memory leaks -
	Added a call to mtrace() in control.c if DEBUG is on

2000-04-04 14:57  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Return error if trying to do a non-global table list when not in 
	 room

2000-04-04 14:51  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/room.c: 
	- In room_send_chat, unlock the chat_room lock if there is an error
	  sending the chats.  This should prevent hangs due to inability to
	  acquire locks held by dead people.

2000-04-03 15:28  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/: game.c, game.h: 
	- Added detection for tie game

2000-04-03 10:48  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO: 
	- Fixed up a bit.  Moved some itmes from 0.0.2 to 0.0.3

2000-04-03 10:43  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/: Makefile.am, game.c, game.h, ggz.c,
	ggz.h, main.c, protocols.h: 
	- First stab at a Tic-Tac-Toe game with GGZ stuff tucked nicely
	away   in ggz.[ch]

2000-04-03 10:37  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: table.c, transit.c: 
	- Fixed bug where a message coming from the game server between  
	REQ_GAME_{LEAVE|JOIN} and RSP_GAME_{LEAVE|JOIN} would cause the  
	table thread to hang.

2000-04-02 18:48  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, parse_opt.c, players.c, protocols.h, room.c,
	room.h: Added MSG_UPDATE_ROOMS to server and client
	
	- Client does not yet act upon it, merely accepts it

2000-04-02 14:17  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, table.c: - Table changes have to trigger a
	player list update

2000-04-02 14:01  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, parse_opt.c, players.c, room.c, table.c: Room
	support for tables:
	
	datatypes.h   - Timestamp for table changes in chat room   - List
	of table indices in chat room
	
	parse_opt.c   - Allocate the list of table indices for chat room
	
	players.c   - Alter update code to use table_timestamp from chat
	room   - Alter joins/launches to update chat room table_timestamp  
	- Alter launches to update table index list in chat room   - Alter
	player_list_tables() to avoid search for valid tables if !global
	
	room.c	 - Zap out the count of tables at room initialization	-
	Small optimization to reordering of player index list
	
	table.c   - Remove table index from chat room on table_remove and
	update timestamp

2000-04-01 02:56  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c: 
	- Added room member to TableInfo - Do some error checking on
	REQ_TABLE_LAUNCH (type checking, and don't   allow multiple tables
	per player) - Add room support to {REQ|RSP}_LIST_TABLES to comply
	with protocol spec

2000-04-01 01:07  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Added MSG_UPDATE_ROOMS and added room stuff to REQ_TABLE_LIST -
	Minor renaming to GGZ <-> game server protocol to prevent namespace
	  clash
	
	**Client/Server Protocol is now frozen for 0.0.2 release**

2000-03-31 17:43  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/engine_func.c: 
	- Comply with protocols (had forgotten to recevie size of options)

2000-03-31 17:41  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, table.c: 
	- Added Rich's patch for player_list_players (more efficient lock
	handling) - Don't send player list if we're not in a room.  -
	Rewrote table_pass_options to be more lock-efficient and to comply 
	 with protocol.

2000-03-31 13:50  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/err_func.c: err_msg_exit() shouldn't print errno string

2000-03-31 00:34  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, players.c: 
	- Removed state member from UserInfo object (it's function can be
	done   just as easily elsewhere)

2000-03-31 00:19  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO: 
	- Updated TODO list

2000-03-31 00:08  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, room.c: 
	- Do better validity checking - Don't allow anything until you're
	logged in (except logging in)

2000-03-30 23:40  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Don't try to update player list when in room -1

2000-03-30 22:28  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c, room.c: Modified RSP_LIST_PLAYERS
	to only list players in a user's room
	
	- Move timestamp into the chat_room, so only if the room contents
	changed   does an update go out - Rewrite of player_list_players -
	room_join updates the timestamps

2000-03-30 21:18  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, room.c: Fixed some lock misuses
	
	players.c   - race condition in room_emit()
	
	both files   - removed extraneous unlocks of player structure

2000-03-30 21:12  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Actually commit these changes....  - Make sure protocol matches
	what we actually do.

2000-03-30 18:24  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, protocols.h: 
	- Check player state in appropriate places - New error codes

2000-03-30 17:10  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.h, players.c, players.h, seats.c, seats.h, table.c: 
	- s/comp/bot in various places (it's shorter and more recognizable)

2000-03-30 16:06  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, parse_opt.c, players.c, protocols.h,
	table.c: 
	- Finally got around to renaming defines to get rid of NG_ prefix -
	Eliminated COMP_ALLOW_XXX - Renamed type allow member elements to
	player_allow_mask and	bot_allow_mask - Renamed UserInfo element
	from playing to state - Created some #defines for player state

2000-03-30 10:19  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: room.c, room.h: - Added warning about room_emit()
	behaviour in room.c and room.h

2000-03-30 08:59  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, ggzd/Makefile.am, ggzd/chat.c, ggzd/chat.h, ggzd/control.c,
	ggzd/players.c: 
	- Removed last vestiges of old chat system - Updated TODO list

2000-03-30 02:12  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: parse_opt.c, room.c: 
	- Added memset() to cleae game_info when we malloc it - Remove
	extraneous RSP_ROOM_JOIN

2000-03-29 21:04  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, protocols.h, room.c: REQ/RSP_ROOM_JOIN
	implemented
	
	room.c	 - Wrote room_handle_join()
	
	players.c   - Players start in room -1	 - Chat in room -1 receives
	a RSP_CHAT code of -1	- "/join" command removed   - cleanups to
	follow

2000-03-29 18:58  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Reverted ROOM_JOIN protocol change

2000-03-29 17:48  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: - Fixed a bug in room_create_additional() -
	realloc() doesn't initialize   memory to 0's like malloc() does -
	Made same change to room_initialize() just in case

2000-03-29 17:06  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml: - Small change to REQ/RSP_ROOM_JOIN for Justin

2000-03-29 17:02  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml: - Added REQ/RSP section for rooms - Documented
	REQ/RSP_ROOM_JOIN

2000-03-29 14:50  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: Rewrote room_create_additional() to use realloc()

2000-03-29 13:50  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml, ggzd/room.c: RSP_LIST_ROOMS protocol fix

2000-03-29 03:42  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: - Fixed lack of fclose() on game and room
	configuration files - Fixed invalid parse of AllowLeave config
	option

2000-03-28 21:34  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, table.c: Altered select call wait times, 5
	seconds is a long time to wait	- just a test to see how it affects
	load (shouldn't)

2000-03-28 20:46  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/room.c: 
	- fixed small bug in room code == -1 to != -1

2000-03-28 20:21  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Expect seat 0 information from client when doing table launch -
	leave table if error in responding to client after successful
	launch	 or join

2000-03-28 01:25  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, room.c, room.h: Implemented REQ/RSP_LIST_ROOMS
	on server end
	
	players.c   - Inserted call to room_handle_request()
	
	room.c	 - Added room_handle_request() to handle all opcodes
	dealing with rooms   - Added room_list_send() to handle a
	REQ_LIST_ROOMS per latest protocol spec

2000-03-27 23:25  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/protocols.h, game_servers/spades/spades.dsc,
	game_servers/tictactoe/protocols.h,
	game_servers/tictactoe/tictactoe.dsc, ggzd/protocols.h,
	ggzd/table.c: 
	- When enough people have joined a table, mark it as
	GGZ_TABLE_PLAYING - Don't attempt leave if table type is -1
	(prevents leaving a removed table) - Don't attempt leave if
	!allow_leave and state is playing - New error code
	E_TABLE_FORBIDDEN for when allow_leave is 0 - Added AllowLeave and
	a comment to .dsc files

2000-03-27 22:49  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml: Protocol change to REQ/RSP_LIST_ROOMS

2000-03-27 22:35  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml, game_servers/spades/protocols.h,
	ggzd/protocols.h: - Added protocol specifier for REQ/RSP_LIST_ROOMS
	- Added documentation for REQ/RSP_LIST_ROOMS

2000-03-27 20:12  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, ggzd.conf, ggzd.h,
	ggzd_casual.room, ggzd_competitive.room, parse_opt.c, parse_opt.h,
	players.c, room.c, room.h: Added AllowLeave game option to GameInfo
	parse and datatype
	
	Removed an unused var from players.c
	
	Implemented room definition files   - Put *.room files into
	game_dir.  Sample files are included.	 - MaxTables parsed,
	stored, but not enforced.

2000-03-27 20:00  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, table.c, transit.c: 
	- Try to avoid another ghost condition by calling table_leave()
	when   doing the player's table cleanup.  - Added some dbg messages
	to the transit code - Don't update timestamp if you've removed last
	player (remove will do	 it)

2000-03-27 18:14  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Call table_leave() upon player logout/error (prevents ghost
	tables)

2000-03-27 17:02  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, ggzd/err_func.h, ggzd/ggzd.conf, ggzd/parse_opt.c,
	ggzd/players.c, ggzd/table.c: 
	- Added new debug level GGZ_DBG_GAME_MSG for those byte-level "User
	to   Game" messages that everybody loves - Lengthed log/debug
	defines to 32 bit - Fixed truncation problem on MSG_LOG/DEBUG

2000-03-27 16:34  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/: engine_main.c, err_func.c, err_func.h: 
	- Added log_msg() function which utilizes MSG_LOG to the GGZ server

2000-03-27 16:32  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/: Makefile.am, ascii-lynx.dsl, design.sgml, ggz.dsl: 
	- Created GGZ stylesheet from gnome one - Improved doc-making
	system

2000-03-27 16:14  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: table.c, transit.c: 
	- Put game module type and pid in log/debug files if options
	enabled

2000-03-27 15:26  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/engine_func.c: 
	- Use es_read_int_or_die() when reading bids.

2000-03-27 15:07  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c, table.c: 
	- When launching a table, don't hardcode self to seat[0].  Instead,
	  wait until table is launched and then call table_join() - Removed
	player_fd member of TableInfo (no longer necessary)

2000-03-27 14:41  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c, table.c, transit.c: 
	- Made transit_flag an unsigned char so we can use all 8 bits -
	Fixup TRANSIT_LEAVE logic since it's not a flag but the absence of 
	 one.  - Added some debug messages to transit code - Remove table
	if seat count goes down to zero (fixes some ghost tables)

2000-03-27 12:55  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: General cleanups to room_join()	 - Cleaned up
	deadlock avoidance strategy   - Now checks for invalid room number
	rather than implicitly trusting caller	 - Send off chat messages
	from old room before switching	 - Check for already NULL chat_head
	before sending off to dequeue()   - A few other misc cleanups

2000-03-27 12:21  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: err_func.c, err_func.h, ggzd.conf, parse_opt.c: Added
	option for GameTypeInLogs
	
	err_func.c   - Intialize log options to default to GameTypeInLogs
	ON
	
	err_func.h   - Added GGZ_LOGOPT_INC_GAMETYPE bitmask
	
	ggzd.conf   - Demonstration of syntax
	
	parse_opt.c   - Parse and set the log option

2000-03-26 22:24  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO: 
	- Fixed up TODO list

2000-03-26 22:22  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, datatypes.h, err_func.h, ggzd.h, players.c,
	table.c, table.h, transit.c, transit.h: 
	- Moved much of transit code to transit.c - Rewrote launch and
	transit systems to not require synchronous messages   from game
	module - Added transit variable transit_seat to hold seat number of
	joining   player - Cleaned up table_handle()

2000-03-26 21:40  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/: engine_func.c, engine_main.c, err_func.c,
	err_func.h, protocols.h: 
	- Use MSG_LOG/MSG_DEBUG mechanism.  - Updated to newest protcols.h
	- Code cleanups

2000-03-26 20:48  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: Streamlined parse_log/dbg_types() using table
	searches

2000-03-26 17:43  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: - room_join() now tests for room full conditions and
	returns E_ROOM_FULL - locks rewritten using trywrlock() to avoid
	deadlock

2000-03-26 03:30  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: motd.c, players.c, protocols.h, table.c: 
	- Implemented REQ/RSP_MOTD - Implemented MSG_LOG and MSG_DBG

2000-03-26 01:47  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Formatting changes - Spelling Fixes - Added REQ/RSP_MOTD - Added
	MSG_LOG, MSG_DBG

2000-03-26 00:58  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/err_func.c: - Added lock around fputs based log output when
	not using multi-threaded logs

2000-03-25 13:48  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Create tictactoe makefile

2000-03-25 13:47  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/Makefile.am: 
	- Added tictactoe to list of modules to make

2000-03-25 13:46  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/engine_func.c: 
	- Added support for REQ_GAME_LEAVE

2000-03-25 13:39  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/tictactoe/: .cvsignore, Makefile.am, ggz.c, ggz.h,
	main.c, protocols.h, tictactoe.dsc: 
	- Added skeleton of new game module

2000-03-25 11:38  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, room.c: - Added array of indexes to
	players in room - Search players in room when chatting, not all
	players - WARNING: There is no check for overstuffing a room yet, I
	want to think	     about how to handle a failed room_join() from
	-1 to 0 first.		  So don't let >100 people in a room :)    
	   -  Option 1: Drop their connection	   -  Option 2: Qeuue them
	for entry	-  Option 3: Find any room we can stuff 'em into

2000-03-24 12:46  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: DOH! - Always 'make' even after a simple change. 
	Missing semicolon fixed.

2000-03-24 12:45  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.h: Removed room_dequeue_chat() - static function now

2000-03-24 12:44  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, room.c: room.c   - Restructured locks to make
	player lock unnecessary   - Made room_dequeue_chat() static
	
	players.c   - Removed an unncessary call to room_dequeue_chat()

2000-03-24 00:17  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Updated to new es_read_string() interface

2000-03-23 20:58  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: - Small chat bug-fix, fixes a "this could never
	happen" crash

2000-03-23 20:43  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: - Minor chat improvement, changed a write lock to a
	read lock

2000-03-22 23:07  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, players.c, room.c: Emit a room change message
	for both entering and leaving a room
	
	control.c   - We now have 2 rooms hardcoded, 0 and 1
	
	players.c   - Players enter at room -1, auto-switched to room 0 at
	login completion   - Blocked off entry to room -1 (old chat can
	cause hung chats)   - Players switch to room -1 at disconnect	 
	(By entering and leaving at room -1 causes a room change msg
	automatically)
	
	room.c	 - Fixed an assumption in room_emit() which is not true for
	room leave msgs     (check for chat emission to an empty room)	 -
	Reconnected room_notify_change() now that problems from last night
	are gone   - Fixed a VERY minor memory leak (only occured if a
	malloc() failed)

2000-03-22 13:25  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: - Repaired a memory leak, strings need to be
	dealloced with chat items

2000-03-21 23:40  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, protocols.h, table.c, table.h: 
	- Implemented {REQ,RSP}_TABLE_LEAVE

2000-03-21 22:12  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/room.c: - Fixed a negative array index bug in room.c - Set
	default # of rooms back to 1

2000-03-21 15:07  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, room.c, room.h: Chat now works in room 0,
	should work in 'X' rooms also, but haven't tried yet
	
	players.c   - Inserted hooks to read chat from our current room
	
	room.c	 - Wrote room_send_chat() to send room chat to a player   -
	Fixed a memory leak in room_dequeue_chat()   - Fixed a nasty server
	lock in room_join()

2000-03-21 13:20  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, err_func.h, ggzd.conf, parse_opt.c,
	players.c, room.c, room.h: - Messages are now enqueued for player
	consumption in room 0 - This server should be memory leak free
	(/join is safe to use) - Can't read messages yet, but can view them
	queueing in debug
	
	datatypes.h   - Couple of tweaks
	
	err_func.h   - Added new debug types (GGZ_DBG_ROOM, GGZ_DBG_LISTS)
	
	parse_opt.h   - Added new debug types (GGZ_DBG_ROOM, GGZ_DBG_LISTS)
	
	players.c   - Calling conventions altered for some room_* calls   -
	Fixed all known memory leaks
	
	room.c	 - Chat now enqueued for (later) consumption   - Dequeueing
	chat works properly   - List debug spewer coded - to check for
	leaks	- No memory leaks have been noticed

2000-03-21 00:54  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, room.c, room.h: Room change code, DON'T use
	'/join #' to change rooms (see ggz-dev)

2000-03-20 23:01  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, control.c, datatypes.h, err_func.h,
	players.c, room.c, room.h: Starting to add room functionality
	
	Changes are pretty self-explanatory, basically what I've done is
	setup the player to automatically join room -1 at connection time. 
	There is no way to change to another room :)
	
	If the player's room is -1, then the old chat functions are used
	as-is.

2000-03-20 21:23  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/players.c: - Emit a log_msg() when a player is removed

2000-03-19 23:00  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/: Makefile.am, engine_func.c, protocols.h: 
	- Updated to work with new table launching/joining system

2000-03-19 22:59  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.h, motd.c, players.c, protocols.h,
	table.c, table.h: 
	- Rewrote table launching/joining code to fork table immediately
	upon   launch and then pass players to table as they join - Removed
	all code that actually deals with table to table.c - Created new
	"transit" system for joining/leaving table - Replaced
	table.info[].playing flag with table.info[].state variable

2000-03-18 23:32  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: Changed the short form option for --debug to -d

2000-03-18 23:27  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: Added --debug configuration line option so we
	can debug GGZ_DBG_CONFIGURATION

2000-03-18 23:05  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: chat.c, control.c, datatypes.h, err_func.c, err_func.h,
	ggzd.conf, motd.c, parse_opt.c, players.c, table.c: DebugTypes is
	now implemented
	
	Important changes:   dbg_msg now requires the FIRST parameter to be
	a valid GGZ_DBG_* debug type   See ggzd.conf for configuration file
	syntax

2000-03-18 21:14  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, err_func.c, err_func.h, ggzd.conf,
	parse_opt.c, parse_opt.h: LogLevel has been replaced by bitmap
	LogTypes
	
	ggzd.conf   - Describes and demonstrates new syntax
	
	control.c   - Updated printf() of log level to print log types as a
	hex value
	
	err_func.c   - log_msg() now outputs if the level passes through
	the log type bitmask
	
	parse_opt.c   - parse_log_types() parses a list of log types and
	returns a bitmask

2000-03-18 18:17  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/err_func.c: - Fixed a reentrancy problem

2000-03-18 18:03  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: err_func.c, ggzd.conf: ThreadLogs configuration option now
	works
	
	err_func.c   - log_open_logfile() opens a logfile, appending PID if
	necessary   - err_doit() now fopen()'s the log before writing and
	the fclose()'s it
	
	ggzd.conf   - Cleaned up example ggzd.conf a little bit

2000-03-18 16:25  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, err_func.c, err_func.h, ggzd.conf,
	parse_opt.c, players.c: Initial changes to support logs by thread
	PID
	
	- Moved all log options into log_info.options bitmap, there were
	enough options	 to make it worthwhile - Altered #defines to reduce
	namespace pollution - Rewrote functions to deal with bitmap options
	- Parse (but don't act on) the ThreadLogs ggzd.conf directive

2000-03-18 13:39  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/players.c: - Replaced inet_ntoa with thread-safe inet_ntop

2000-03-18 01:18  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: parse_opt.c, players.c: - Disabled HostnameLookup until
	further notice

2000-03-18 00:18  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: err_func.c, motd.c: - Replaced all calls to localtime()
	with calls to thread-safe localtime_r()

2000-03-17 23:34  Justin Zaun <jzaun@users.sourceforge.net>

	* TODO, ggzd/players.c: 
	- Update table description

2000-03-17 21:13  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/players.c: - Move motd display into player_login_* so it
	appears after successful login

2000-03-17 17:11  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, err_func.h, motd.c, players.c, table.c: 
	- Removed all occurrences of FAIL() macro since some system   calls
	return different values for success and failure

2000-03-17 10:48  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: ggzd.h, players.c, protocols.h: 
	- Added MSG_ERROR to protocol - New function player_send_error() to
	send MSG_ERROR to client in   response to unrecognized opcodes -
	Rename player_handler() responses - Fixed bug in player_updates()
	where player number not printed   correctly - When checking for
	duplicate names, don't compare to players who	aren't logged in -
	Don't disconnect on failed login - Cleaned up read_name()

2000-03-17 09:45  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, motd.c, parse_opt.c, players.c: 
	- In parse_file(), set motd_info.use_motd if a motd file is
	specified - Call motd_read_file() from main() if it is set - Only
	try to send MOTD to client if it is set - Don't set it by default
	in motd_read_file() - Flag some non-reentrant functions in
	players.c - Close socket if we encounter an error in player_new()

2000-03-17 08:48  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, parse_opt.c: 
	- Removed hardcoded spades gametype.  Game types *MUST* be loaded
	from   description files in gamedir now.  - Various cleanups - Make
	5688 default port (as we discussed on ggz-dev)

2000-03-16 22:36  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/players.c: - Fixed a warning in players.c

2000-03-16 22:33  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: players.c, players.h: - anonymous login now fails on
	duplicate name

2000-03-16 21:09  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c: - player handler thread now
	determines IP address for itself

2000-03-16 20:47  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, players.c, players.h: - We no longer pass
	ip_addr to the thread, it will determine it on it's own

2000-03-16 19:33  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/chat.c: - fixed chat_mark_all_read() to remove a finished
	chat message

2000-03-16 18:52  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c: 
	- Adds the option for players to add coments to games

2000-03-15 21:25  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: chat.c, players.c: - Implemented chat_mark_all_read(),
	should fix bug #102763

2000-03-14 22:04  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/err_func.c: - fixed log file opens to append rather than
	overwrite

2000-03-13 18:37  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, err_func.c, ggzd.conf, parse_opt.c: - Added
	configuration option for logs (TimeInLogs) to include a timestamp
	
	- Fixed some potential buffer overruns in err_doit() - replaced all
	  v/sprintf with v/snprintf so we can't do that in the future.

2000-03-12 17:39  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/ggzd.conf: Removed erroneous (Not Implemented) flags

2000-03-12 17:11  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.conf, parse_opt.c, players.c: Hostname lookup on
	connecting client IP address now performed.  The default is not to
	do a hostname lookup, configurable in ggzd.conf.

2000-03-12 16:23  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, err_func.c, ggzd.conf, parse_opt.c: Enabled
	new ggzd.conf feature (PIDInLogs)

2000-03-12 15:52  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: Fixed a bug which caused a syntax error if
	debugging not enabled

2000-03-12 15:41  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/datatypes.h: Marked some items for eventual cleanup() that I
	hadn't been keeping up with :)

2000-03-12 15:33  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, players.c, players.h: IP address
	is now sent down to player functions to store in player table
	
	datatypes.h   - added ip_addr to UserInfo
	
	control.c   - stuff the ip address into a char buffer
	
	players.c   - modified players_handler_launch() and player_new() to
	pass the     IP address to player_new() in addition to the socket
	fd   - player_new() stores IP address in player info structure

2000-03-12 15:01  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, err_func.c, err_func.h, parse_opt.c: Created
	log_msg function for general log messages
	
	err_func.c   - log_info now gets initialized with some defaults   -
	added log_msg function	 - default log_level is set to 1
	
	err_func.h   - several defines added for log_level implementation
	
	control.c   - added some examples of using log_msg()   - we now
	retrieve the IP address of connections made to the server
	
	parse_opt.c   - don't overwrite log_level if specified at command
	prompt

2000-03-11 00:13  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, err_func.c, err_func.h, ggzd.conf,
	parse_opt.c: Basic logfile handling introduced
	
	err_func.c   - logfile_set_facility() sets the syslogd facility to
	use   - logfile_initialize() opens logfiles or sets up syslog	-
	err_doit() now logs to stderr only if logging not initialized yet  
	- err_doit() is now passed a syslog priority to use
	
	parse_opt.c   - parse the logfile configuration options
	
	datatypes.h   - added a log_info structure to keep things organized
	
	control.c   - calls logfile_initialize() after configuration files
	parsed

2000-03-09 19:52  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, motd.c: - Added cputype to message of the day
	parsing (%C)

2000-03-09 19:51  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml: - Updated to include %C code in MOTD parsing

2000-03-09 14:48  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO: 
	- Some TODO updates (still needs work)

2000-03-09 14:47  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/: engine.h, engine_func.c, engine_main.c,
	socketfunc.c, socketfunc.h: 
	- Use unix domain socket to communicate with GGZ rather than
	stdin/stdout - Fixed various compiler warnings

2000-03-09 14:46  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/table.c: 
	- Changed GGZ to use unix domain sockets for communication with
	game_server.	Socket names take the form of /tmp/<game
	name>.<process id>  - Don't close STDIN and STDOUT on forked table

2000-03-09 00:00  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, chat.c, control.c, datatypes.h, ggzd.h,
	motd.c, parse_opt.c, players.c, seats.c, table.c: 
	- Split out #define statements into ggzd.h

2000-03-08 22:09  Rich Gade <rgade@users.sourceforge.net>

	* doc/design.sgml: - Added docs for MOTD - Fixed a missing
	</listitem>

2000-03-08 17:10  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.conf, motd.c, parse_opt.c: - Added
	AdminName and AdminEmail to ggzd.conf - Added %a and %e to MOTD

2000-03-08 13:56  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, motd.c: - Removed static variables from motd
	functions

2000-03-07 20:36  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/: datatypes.h, motd.c: 
	- Upped the MOTD to 80 lines, should be enought to make most people
	happy - Addet %p for the port number, please check it to make shure
	I did it right

2000-03-07 19:40  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/motd.c: - Implemented %g (total tables running) and %G
	(tables waiting for   players) codes for MOTD

2000-03-07 18:20  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/motd.c: 
	- Added version to motd paser

2000-03-07 18:18  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Filled in section on GGZ-control/game_server protocol - Added
	MOTD subsystem

2000-03-07 17:59  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, motd.c: - More MOTD functionality - Added
	MAX_MOTD_LINES to resolve potential future problems

2000-03-07 17:17  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/datatypes.h: - Upped maximum MOTD lines to 40

2000-03-07 17:09  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/motd.c: 
	- Made the MOTD a little longer 40 lines now.

2000-03-07 00:59  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/datatypes.h: - Just popped a little warning comment in the
	motd structure

2000-03-07 00:53  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/motd.c: - motd lines are now sent through
	motd_parse_motd_line() - %h specifier is replaced by hostname

2000-03-06 22:59  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: motd.c, players.c: motd.c   - altered return code of
	motd_show_motd to return true on failure
	
	players.c   - moved call to motd_show_motd to a more sensible
	location

2000-03-06 22:32  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.conf, motd.c, motd.h, players.c: Server now sends out
	(basic) MOTD file
	
	motd.c	 - added motd_send_motd() function
	
	players.c   - calls motd_send_motd() function after sending server
	ID

2000-03-06 20:55  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/motd.c: - Server now reads in the motd file

2000-03-06 20:27  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: Makefile.am, ggzd.conf, motd.c, motd.h, parse_opt.c: -
	Added motd.c, motd.h - parse_opt.c calls motd_read_file()

2000-03-06 20:23  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/datatypes.h: - Added a structure for message of the day
	information

2000-03-06 18:05  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: - Fixed a few logic errors that could cause a
	segfault later

2000-03-05 19:53  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, parse_opt.c: - parse and store the motd_file
	from the configuration file

2000-03-05 19:15  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/ggzd.conf: - Removed (Not Implemented) notations where
	applicable

2000-03-05 19:05  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/spades/spades.dsc, ggzd/control.c, ggzd/parse_opt.c,
	ggzd/parse_opt.h: control.c   - setup to call parse_game_files()  
	- if it failed, use the old hardwired code for people who don't
	have	 valid conf files   - moved code to set default port to
	parse_opt.c
	
	parse_opt.h   - added prototype for parse_game_files()
	
	parse_opt.c   - set defaults at end of parse_conf_file() for
	important values, including	Port and GameDir   - added
	parse_game_files() - selects game files to add to game_types   -
	parse_game_files() cleans up the add_ignore_list when done   -
	added parse_dselect() - selects filenames ending in ".dsc" for
	scandir   - added parse_game() - opens a game description file and
	imports values	   into a GameInfo struct and finally adding it to
	game_types   - reorganized order of functions in module
	
	spades.dsc   - Updated syntax in spades.dsc

2000-03-05 18:34  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Write timestamp while we still have write lock!

2000-03-05 13:25  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/: spades.dsc, spades/spades.dsc: - Moved spades.dsc
	file into the spades srcdir proper

2000-03-05 08:26  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/players.c: 
	- Added a tables.timestamp to joining a table. The table list
	client side - now show the correct number of open seats.

2000-03-04 14:46  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/: control.c, ggzd.conf, players.c: 
	- When sending the game type list, we now send the num_play_allow
	as well - This is neede by the client so the launch dialog know how
	many combo - items to show.

2000-03-04 11:05  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, doc/design.sgml, game_servers/spades/engine_func.c,
	game_servers/spades/engine_main.c, ggzd/Makefile.am,
	ggzd/datatypes.h, ggzd/players.c, ggzd/seats.c, ggzd/seats.h,
	ggzd/table.c: 
	- Changed TableInfo structure to only hold information about not
	seat   assignments, not num_players, comp_players, etc.  - Updated
	REQ_LAUNCH_GAME and REQ_LIST_TABLES to reflect new table structure
	- Changed the table data passed to game_server for same reason -
	Added seats.[ch] to provide functions seats_num(), seats_open(),
	etc.  - #define special seat assignments GGZ_SEAT_OPEN,
	GGZ_SEAT_COMP,	 GGZ_SEAT_RESV, and GGZ_SEAT_NONE

2000-03-03 18:49  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: ggzd.conf, parse_opt.c: - Added initial functionality for
	AddGame, AddAllGames, and IgnoreGame

2000-03-03 16:13  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, ggzd/table.c: 
	- Acquire readlock in a couple places - Small formatting changes

2000-03-02 23:39  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/parse_opt.c: - Fixed a spurious conf file syntax error

2000-03-02 23:27  Rich Gade <rgade@users.sourceforge.net>

	* game_servers/spades.dsc: - Sample spades.dsc file

2000-03-02 23:08  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: datatypes.h, ggzd.conf, parse_opt.c: - Added some
	functionality for GameDir parameter   (parsed, not acted upon yet)

2000-03-02 16:02  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, players.c: 
	- Fixed list_players() and list_types() send correct results even
	if   desired elements are not the first elements (closes bug
	#102477)

2000-03-02 13:42  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, players.c: 
	- Don't initialize player's table_index and uid upon startup -
	Don't need to obtain write lock when initializing types since at
	that   point there is only one thread - Initialize player info
	fields when we find an open spot.  Then we   don't need to do it in
	player_remove() - Have player_handler() pass players fd as often as
	possible to avoid   having to look it up.  - Fixed a few spots that
	needs to obtain write-lock - Don't rely on players.info[].playing. 
	Do we even need this*? - Mark player timestamp when player leaves
	table at end of game - Some formatting changes

2000-03-02 13:31  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, chat.h: 
	- Change chat_add() to accpet a 'name' string as well.	This  
	eliminates another lookup requiring mutex locks - Acquire read lock
	on players before doing chat_mark_all_unread   since we need to
	determine who is online - Determine online status by looking at fd,
	not uid (since we no   longer initilaize uid to UID_NONE)

2000-03-02 10:16  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, ggzd/chat.c, ggzd/control.c, ggzd/players.c, ggzd/table.c: 
	- Renamed global structure from game_tables to tables (concise is  
	good)

2000-03-02 09:56  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, table.c: 
	-  Rename functions to match file and opcode names where
	appropriate

2000-03-02 09:30  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO, ggzd/players.c, ggzd/protocols.h: 
	- Renamed opcodes according to new design spec

2000-03-02 01:25  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO: 
	- Updated TODO list for 0.0.2

2000-03-02 01:01  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Renamed a few opcodes to be more consistent - Added
	REQ_TABLE_LEAVE

2000-03-02 00:48  Rich Gade <rgade@users.sourceforge.net>

	* ggzd/: control.c, ggzd.conf, parse_opt.c: control.c	- If no
	port specified, default to 1174
	
	ggzd.conf	- Sample ggzd.conf
	
	parse_opt.c	- Altered parse_conf_file to open a configuration
	file  - Added parse_file to drive the configuration file parse	   
	  - Added parse_line to parse individual lines of config file	  -
	Port=### syntax implemented

2000-03-02 00:04  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Bumped version to 0.0.2

2000-02-29 23:10  Brent Hendricks <bmh@users.sourceforge.net>

	* README: 
	- Updated README for new package names

2000-02-29 23:04  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Renamed package to ggz_server (prgram files remain the same)

2000-02-29 15:13  Brent Hendricks <bmh@users.sourceforge.net>

	* ChangeLog, Makefile.am, NEWS, README, configure.in,
	doc/Makefile.am, doc/design.sgml, doc/game-modules.txt: 
	- Documentation updates for 0.0.1 release

2000-02-29 12:42  Brent Hendricks <bmh@users.sourceforge.net>

	* HACKING: 
	- First go at a HACKING file to describe GGZ coding style

2000-02-29 12:25  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/: Makefile.am, err_func.c, err_func.h: 
	- Remove easysock dependent portion since we don't use it here

2000-02-29 12:24  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/Makefile.am: 
	- Fixed up rules so that text and html docs get distributed

2000-02-29 10:22  Brent Hendricks <bmh@users.sourceforge.net>

	* Makefile.am, doc/Makefile.am, game_servers/spades/Makefile.am,
	ggzd/Makefile.am: 
	- make dist chokes when SUBDIRS is empty, so put SUBDIRS = .

2000-02-29 10:21  Brent Hendricks <bmh@users.sourceforge.net>

	* AUTHORS, TODO: 
	- Documentation updates

2000-02-29 09:23  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, players.c: 
	- Don't chdir to / when daemonizing (we still have hardcoded paths)
	- Don't send RSP_GAME header if "message" from game is a closed
	socket

2000-02-29 09:21  Brent Hendricks <bmh@users.sourceforge.net>

	* game_servers/spades/: Makefile.am, engine_func.c, engine_main.c,
	err_func.c, err_func.h, socketfunc.c: 
	- Use dbg_msg() rather than fprintf()

2000-02-29 09:18  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/: Makefile.am, design.sgml, game-modules.txt: 
	- Documentation updates

2000-02-28 21:24  Rich Gade <rgade@users.sourceforge.net>

	* autogen.sh, configure.in: - Fixed a few remaining 'NetGames'
	instances in configure scripts

2000-02-27 01:44  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Send RSP_CHAT status as a char, not an int.  This fixes the
	"can't	 see my own chats" bug which I uncovered when I fixed the
	"my table list	 blanks when I receive my chat" bug.  Sheesh.  -
	Send MSG_SERVER_FULL as int, not char.	Apparently nobody has
	tested this   functionality yet otherwise it would be a bug. 
	Anyway, it's fixed now.

2000-02-26 19:19  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Oops!  After REQ_CHAT we should respond with a RSP_CHAT, not	
	RSP_TABLE_LIST.  This fixes the "vanishing table list" bug - Update
	player timestamps when they launch or join a table.  This fixes  
	the bug that the player table numbers were not getting updated.

2000-02-22 18:25  Justin Zaun <jzaun@users.sourceforge.net>

	* AUTHORS: 
	
	- Updated AUTHORS file.

2000-02-21 17:31  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, chat.h, control.c, datatypes.h, err_func.c,
	err_func.h, parse_opt.c, parse_opt.h, players.c, players.h,
	protocols.h, table.c, table.h: 
	- Replaced occurances of 'NetGames' with 'GGZ' (ok, so it breaks
	the   freeze, but I figured for our first release the server at
	least	ought to know it's own name!)

2000-02-21 15:57  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, parse_opt.c, players.c, table.c: 
	- First stab at MSG_XXX_UPDATE functionality: - Added timestamp
	member to players, game_types, and game_tables	 structures.  -
	Each player thread send MSG_XXX_UPDATE if timestamp is newer than  
	local copy - Update appropriate timestamp when making changes to
	global lists   (table handling needs updating after 0.0.2 re-write)

2000-02-20 01:05  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO: 
	- Added reservations to TODO list

2000-02-20 01:03  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- New function type_match_table() to match game table types
	including   ALL, OPEN, and RES (will need player number for RES...)
	- Fixed up table_list() so that we send tables of interest, not
	just   the first game_tables.count tables regardless of status

2000-02-19 21:40  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/Makefile.am: 
	- Made targets for htmldir, txtdir, and psdir.	- Made XXX-docs
	depend on XXXdir - Uncommented ps-docs stuff (it works here)

2000-02-19 21:34  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/design.sgml: 
	- Updated interactions to reflect reality - Removed title tag from
	programlisting (docbook complains invalid)

2000-02-19 21:25  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: players.c, protocols.h: 
	- When handling REQ_JOIN_GAME, return error if table is empty, and 
	 only create socketpair if table is valid - Redefined some error
	constants

2000-02-19 18:43  Brent Hendricks <bmh@users.sourceforge.net>

	* TODO: 
	- Specified TODO elements for 0.0.1 and 0.0.2

2000-02-19 13:01  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/protocols.h: 
	- Added MSG_USERS_UPDATE, MSG_TYPES_UPDATE, and MSG_TABLES_UPDATE

2000-02-19 11:23  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/.cvsignore: 
	- Added html, txt, and ps dirs

2000-02-19 11:22  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/ascii-lynx.dsl: 
	- Added ascii-lynx.dsl (we use lynx to create our plaintext)

2000-02-19 11:21  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/Makefile.am: 
	- Made more machine-indpendent.  - Made general rules for
	sgml->html,txt,ps

2000-02-18 23:23  Rich Gade <rgade@users.sourceforge.net>

	* doc/: Makefile.am, design.sgml: Makefile.am	- Remove directory
	html so that the following mv command will work     on updates.
	
	design.sgml   - Added tables to sections 2.1/2.2

2000-02-18 08:04  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/README.Design: 
	- Removed old READEME.Design - Added images directory

2000-02-18 07:49  Brent Hendricks <bmh@users.sourceforge.net>

	* Makefile.am, configure.in: 
	- Added doc subdir to build

2000-02-16 23:33  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/: .cvsignore, Makefile.am, design.sgml: 
	- Added DocBook format design.sgml - Begin writing Makefile.am to
	make docs

2000-02-09 18:43  Justin Zaun <jzaun@users.sourceforge.net>

	* ggzd/control.c: 
	- Updated the *hack* for game_types to fill in all the descriptions

2000-02-08 12:29  Brent Hendricks <bmh@users.sourceforge.net>

	* ChangeLog, ggzd/players.c, ggzd/protocols.h: 
	- Make select() in player_loop() timeout after NG_RESYNC_SEC
	seconds   so we can do player_updates() including chats.  - New
	function player_send_chat() when new chat is read - New function
	player_chat() for reading msg from player - Close t_fd if there was
	an error during a game - New protocol opcode MSG_CHAT for chat
	messages from server

2000-02-08 12:22  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: chat.c, chat.h, datatypes.h: 
	- Added unread count to ChatInfo - Added array
	player_unread_count[MAX_USERS] to chats - Finished up chat
	interface functions: - Made chat_remove() and
	chat_mark_all_unread() local to chat.c - Added chat_get() and stub
	for chat_mark_all_read() - Debugging function chat_status()

2000-02-08 07:52  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: datatypes.h, players.c, protocols.h: 
	- Implemented supporyt for REQ_GAME and RSP_GAME   (removes ugly
	message passing hack while at a table) - New functions
	player_msg_{to|from}_sized() for passing messages   between client
	and game server - Fixed ugly reference return of t_fd (now, it's a
	pretty reference   return)

2000-02-07 13:05  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: Makefile.am, chat.c, chat.h, control.c, datatypes.h,
	players.c: 
	- Added infratructure for chat facility (data types and   func.
	interface)

2000-02-05 18:10  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/players.c: 
	- Fixed player_remove() to reses table index to -1, not 0.  - Added
	stub function player_updates() for doing periodic updates

2000-02-05 17:05  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, players.c, players.h, table.c, table.h: 
	- Renamed functions to better reflect filename and purpose   (all
	in the name of clean code)

2000-02-05 16:18  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/: control.c, datatypes.h, err_func.c, err_func.h,
	parse_opt.c, parse_opt.h, players.c, protocols.h, table.c, table.h:
	
	- Ran code through 'indent -kr -i8'

2000-01-29 13:40  Brent Hendricks <bmh@users.sourceforge.net>

	* ggzd/control.c: 
	- Updated path to spades game server (still needs permanenet fix)

2000-01-26 10:43  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Packahe name is ggzd, not ggz

2000-01-26 10:31  Brent Hendricks <bmh@users.sourceforge.net>

	* doc/README.Design: 
	- Created doc dir and put README.Design there

2000-01-26 10:28  Brent Hendricks <bmh@users.sourceforge.net>

	* configure.in: 
	- Moved easysock to beginning of SUBDIRS since other depend on it  
	being compiled

2000-01-26 10:22  Brent Hendricks <bmh@users.sourceforge.net>

	* .cvsignore, AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am,
	NEWS, README, TODO, acconfig.h, autogen.sh, configure.in,
	game_servers/.cvsignore, game_servers/Makefile.am,
	game_servers/spades/.cvsignore, game_servers/spades/Makefile.am,
	game_servers/spades/ai.c, game_servers/spades/card.c,
	game_servers/spades/card.h, game_servers/spades/engine.h,
	game_servers/spades/engine_func.c,
	game_servers/spades/engine_main.c, game_servers/spades/options.h,
	game_servers/spades/protocols.h, game_servers/spades/socketfunc.c,
	game_servers/spades/socketfunc.h, ggzd/.cvsignore,
	ggzd/Makefile.am, ggzd/control.c, ggzd/datatypes.h,
	ggzd/err_func.c, ggzd/err_func.h, ggzd/ggzd.conf, ggzd/parse_opt.c,
	ggzd/parse_opt.h, ggzd/players.c, ggzd/players.h, ggzd/protocols.h,
	ggzd/table.c, ggzd/table.h: 
	- Imported files from NetGames project

