The code follows the code formatting of the Funambol Sync4j C++ client library. Just emulate the existing code when possible. Exceptions are used to report errors, but not in code which is called from inside the Sync4j library because that library does not handle exceptions for compatibility reasons. In that case special case must be taken to not forget that an error occurred (EvolutionSyncSource::m_hasFailed). "make check" in the src directory compiles and runs unit tests. Those tests were written inside the CppUnit [http://cppunit.sourceforge.net/cppunit-wiki] framework and so they (and just they) require that "cppunit-config" is in the shell search path. Running the test with the environment variable SYNC4J_LOG set to the server's log file ensures that for each individual sync session both the client and the corresponding server log are stored in individual files in the src directory. The filenames are derived from the tests and the steps executed for each of them. "make valgrind" runs the same tests inside valgrind [http://www.valgrind.org]. A suppression file is used to hide errors inside system libraries which are not caused by the sync4jevolution or Sync4j C++ library code. Most likely the suppressions will only work on Debian GNU/Linux 3.1 ("Sarge") - feel free to add more for your system.