Here are some notes to help you develop code for Xmlrpc-c. I include as "developing" debugging to figure out why Xmlrpc-c doesn't work for you. CODE LIBRARY ------------ The master Xmlrpc-c source code tree is the CVS repository on Sourceforge. Anybody can read it; only the maintainer can commit to it. If you're not the maintainer, simply use a 'cvs diff' command in your CVS working directory to create a patch file that embodies your changes and email that to the maintainer. He can easily apply that patch to his own CVS working directory and then commit the changes. MAKE VARIABLES -------------- You can pass make variable values to GNU Make to change the build. There are two common ways to do this: 1) Like this: $ make MYVAR=myvalue 2) Via an environment variable, like this: $ MYVAR=myvalue make or $ export MYVAR=myvalue $ make See GNU Make and shell documentation for details. In Xmlrpc-c make files, there are two make variables that add arbitrary options to every compile command: CADD and CFLAGS_PERSONAL. They both do the same thing. CADD is meant to be set on an individual make command, whereas CFLAGS_PERSONAL is meant to be a long-lived environment variable. CFLAGS_PERSONAL is for flags you like on all your compiles, but maybe others don't. One of my favorite CADD settings is CADD=--save-temps. To the GNU Compiler, --save-temps means to create, in addition to the object code, a file containing the intermediate preprocessed C code and a file containing the intermediate assembler source code. I can use that to debug certain things. The Xmlrpc-c build uses -g by default with Gcc, so you don't need to use CADD to get debugging symbols in your object code. There's also LADD for linker options. CODE STYLE ---------- The maintainer is pretty particular about coding style, but doesn't require anyone to submit code in any particular style. He changes what he thinks isn't maintainable enough as submitted. You could do him a big favor, though, and reduce the chance of him introducing bugs into your code, but trying to copy the style you see in existing code. The major theme is high level programming -- closer to English prose and further from machine instructions. Probably the most important thing is not to use tabs. Tabs are actually quite common in Unix C programming, but apart from tradition, they are a bad idea. They don't look the same to everyone. A person must suffer an additional configuration step -- setting up tab stops in order to see the code the right way. Spaces, on the other hand, look the same to everyone. Very old editors made it easier to compose with tabs than with spaces, but with modern ones, there is no difference. The maintainer tries to catch all tabs in code submitted to him and convert them to spaces, but this often leaves the code incorrectly indented. Better to give him code that already has the right number of spaces explicitly.