2004/08/29 - Diego Essaya
	* Terminal size: Server now warns when the terminal size is greater
	  than 80x25.
	* Bugfixes: (Found with valgrind) 
	    - Wrong call to memcpy() in add_client() (Bug #15).
	    - Invalid read after client has been deleted in tcp_server() (Bug
	      #15).
	    - Bug #16: Implemented lock creation/release.
	    

2004/08/29 - Diego Essaya
	* Messages: Supressed the boring initialization messages. The only
	  message that remained is "gems-server initialized.\n".

2004/07/27 - Diego Essaya
	* Bugfix: The server freezed if it received a connection with
	  telnet. To solve this, now client connections are handled in
	  child processes (one for each new connection), until they are
	  accepted. When this child process terminates, the father adds the
	  client to the connected clients list.

2004/07/23 - Diego Essaya
	* Protocol: The version used to compare at connection-time is
	  PROTOCOL_VERSION instead of PROJECT_VERSION. This way, the
	  connection will be refused only when protocol versions difer.

2004/02/29 - Diego Essaya
	* Logging: Server now does not emit logs by default.

2004/02/28 - Diego Essaya
	* main.c: Improved agrument parsing.
	* Logging: Improved log module. g_log() now takes one mandatory
	  argument: errno. Also, now the messages are categorized by their
	  priority (a la syslog).

2004/02/27 - Diego Essaya
	* tcp_server(): Now takes only two parameters:
	  status_t tcp_server(int *input_fd, t_options *options);
	* FD_ADD() macro: Simplifies the process of adding a fd to
	  data->open_fds.
	* New option: '-wait M'. Enables the server to wait for the connection
	  of M clients before starting data transmission.

2004/02/26 - Diego Essaya
	* New options: '-h' to show a help message; '-v' to show version.

2004/02/25 - Diego Essaya
	* Connections: New option: '-maxconn N' to set the maximum number of
	  simultaneous client connections. Default: 25.
	* script: New option: '-script_bin' to set the location of the
	  script(1) binary. Default: "/usr/bin/script".
	* Log: '-log' option is now fully functional; it allows to specify
	  the log destination.
	* Syslog: If '-log syslog' is used, the server logs through syslogd.
	* log.c: The log destination is now stored in a global variable.
	  Thus, the g_log() function now takes one less parameter.
	  g_set_logfile() allows setting the log destination.

2004/02/23 - Diego Essaya
	* gems-server.c/h / code cleanup: Implemented the t_server_data
	  structure containing all the important server data. This way,
	  the function prototypes are much shorter.

2004/02/22 - Diego Essaya
	* Makefile: Everything is now nicer :) . gcc's -I parameter is
	  now used, and also make's VPATH variable; so it is no longer 
	  necessary to specify include directory in the sources.

2004/02/16 - Diego Essaya
	* General code cleanup: Every c/h file was adapted to the specs in
	  CodingStandards. I used the indent(1) tool to acomplish this. The
	  only problem were the comments at the right of code, because indent
	  uses tabs instead of spaces. Indentation was set to 4 spaces.
	* Makefile: make does not work well with symlinks. Fixed Makefile.
	* Signal handling: Code rewritten:
	  - It is now a separate module: common/signal.c/h. This module is
	    common to both server and client.
	  - It is not necessary to use too many global variables; only one
	    for each signal to be caught. These are declared in the signal
	    module.
	  - The program is more stable upon arrival of signals in an
	    asynchronous way, as the signal handlers take a minimum amount of
	    time to modify the appropriate variable.
	* Global variables: Given the enhanced signal handling code, the
	  prototype of almost all functions were changed, so the only global
	  variables used are the ones relative to signals. The only problem
	  with this approach is that each function receives about 5
	  parameters, and prototypes are now endless :P.
	* call_script.c/h: Functions for running script(1) as a child.
	* sock_info.h: Data types related to the client information (IP,
	  port, etc).
	* log.c / g_log(): A '\n' is appended to the log, so it is not
	  necessary to include it in the message.
	* add_client(): Bugfix in list handling.

2004/01/15 - Emiliano Castagnari
	* Logging: The logging function changes to g_log(). Logging can
	  now be done to a file (the command-line argument is not implemented
	  yet). Also, the logs are now written in a syslog fashion, with the
	  date and stuff ;) .

2004/01/15 - Emiliano Castagnari
	* log.c / g_time(): Function that returns actual time.
	* gems-server.c / init_sock_server(): Starts listening in a
	specified port & IP.

2004/01/15 - Emiliano Castagnari
	* Change in ADT for clientes: Now the clients are stored in a
	  doubly-linked list, along with their IP address, port, etc.

2004/01/13 - Emiliano Castagnari
	* Makefile: Makefile improved: "all" target added. It creates 'bin/' 
	  directory if it is not found. Added links in client/source to files
	  in common directory, so to not use relative paths.

2004/01/09 - Diego Essaya
	* Protocol: With the changes in the protocol (see common/Changelog), 
	  the server now can produce more precise logs, when client
	  connections are refused. These logs are not yet implemented.

2004/01/06 - Diego Essaya
        * Bugfix: Terminal size was not correctly obtained when running
	  script.
	* Code cleanup.

2004/01/04 - Diego Essaya
	* script: Unless the -noscript parameter is used, the server runs
	  "script -fq" automatically. This change is not permanent; we
	  plan to add script's functionality to gems-server.

2004/01/02 - Diego Essaya
	* Protocol: Data is no longer received directly. The new protocol
	  is now used instead.
	* Winsize: Implemented terminal size detection.

2004/01/01 - Diego Essaya
	* Server: Server code rewritten, now using select(2). Now
	  the server "sleeps" until an event is detected (data input,
	  client connection/disconnection, etc).
	* Version: Server now compares its version with the client's.
	  This is to be improved yet, because the connection is
	  refused if the versions are _different_.

2003/12/31 - Diego Essaya
	* Protocol: Started to implement a new communication protocol. As 
	  for now, the client sends its version at the beginning of the
	  connection. The rest works exactly as before.

2003/12/29 - Diego Essaya
	* Release: 0.2.0
	* Code cleanup: Created common.c/h, with declarations common to
	  server and client.
	* Bugfix: "address already in use". Now the server can be run
	  immediately after closing it.

2003/10/12 - Diego essaya
	* Release: 0.1.0
        * Bugfix: If stdin received EOF, or if server was interrupted
	  by CTRL-C, the sockets were not closed. Both cases are now
	  handled properly. To this avail, the server_sock and remote_sock[]
	  variables are now global, with names server_sock and client_sock[].

2003/10/10 - Emiliano castagnari y Diego essaya
        * Bugfix: Multiple connections problem fixed.
	* Logueo: Logging function enhanced: it now supports variable
	  arguments.

2003/10/09 - Diego Essaya
	Server now accepts multiple client connections, in a somewhat
	rudimentary fashion... but it works :) . There is one little
	problem, though: if one of the clients disconnects, the server
	dies.

2003/10/03 - Emiliano Castagnari
	Added the capability of running the program with no command-line
	arguments (default options are defined in defaults.h). Implemented
	the set_options() function. The optios structure was subdivided
	in two new structures containing IP and port info.

2003/10/01 - Emiliano Castagnari
	Finished command-line argument parsing functions.

2003/09/30 - Emiliano Castagnari
	Implemented a function for logging to a file descriptor (this
	is yet to be defined).

2003/09/29 - Emiliano Castagnari
	Server sources renamed (tcp_server -> gems-server).
	Cerated main.c/h, containing the initialization functions.
	Created types.h, with definition of various data types.

2003/09/26 - Emiliano Castagnari
	Project "gemsd" started. Server and client sources are under
	development.
