$FreeBSD$ BUGS: - Fix every XXX in the code :-). - The stream API needs some polishing. It needs proper error numbers and a stream_error() function similar to the ferror() function. - The yacc/lex code to parse the configuration file is sub-optimal. It has global variables because of yacc, but I think it should be possible to do it better by using YYFUNC_PROTOTYPE or something. I think it should also be possible to completely get rid of the lex file. - The $Log$ CVS keyword is not supported. - Add missing support for supfile keywords and add sanity checks for some of them. Also, we're not supposed to choke on unknown keywords to stay in line with CVSup, which just ignores them in order to maintain compatibility with sup configuration files. MISSING FEATURES: - Add support for shell commands sent by the server. - Add missing support for various CVSup options : -D, -e and -E (requires shell commands support) and the destDir parameter. - For now, this code should build fine on FreeBSD, NetBSD, OpenBSD, Linux and Darwin. Solaris support would also be nice at some point. - Implement some new useful options : the ability to generate CVS checkout files (files in CVS/ subdirectores), a command line override to only update a specific collection and a third verbosity level to display commit log messages.