CAVEATS ======= Please do NOT send me email with your "make" output, asking me what to do to get the source code working on your system. You would not believe the volume of email that I get like this, and I just don't have the time to even respond to these any more. My suggestion is to get someone locally to help (at work or at school) or to ask on some vendor-specific Usenet newsgroup. My publisher graciously allows all the code to be made available (to save you from having to type it in), but the code is provided "as is" with no support implied. I use tab stops every four columns, not the more usual eight. Use "ts=4" in vi for the formatting to be correct. BUILDING THE EXAMPLES ===================== If you are using Sun's compiler, building the examples is as simple as running ./build from inside this directory. The build script determines which version of Solaris you are using, and calls make with an appropriate target. If you are using gcc, you will have to edit four lines in Make.defines first (this file contains instructions with the necessary changes), and then set the CC variable to gcc. Running the command "CC=gcc ./build" will do the trick. Whatever compiler you use, if you're attempting to build these examples on Solaris 2.5 or Solaris 2.5.1, you will need to uncomment a line in Make.defines and another in lib/Makefile before running the build script. If you prefer, you can run make manually; without a specific target, make will try to compile all the examples (the targets are sol-2.5 for Solaris 2.5, sol-2.5.1 for Solaris 2.5.1, and so on, up to sol-9 for Solaris 9 and later). This will fail if you're not using Solaris 9 or later. You can also run make from any of the subdirectories, if you want to build the examples for that chapter--in this case, make sure that the library (lib/ssp.a) is built first. Note that if you want to do this, the horizontal lines at the beginning and end of each listing in the book contain the directory and filename. The build process is pretty quiet by default, just saying which directory is being processed. Setting the VERBOSE variable to "y" before running make or the build script will result in a line of output for every program. For example, VERBOSE=y make sol-8 will verbosely build all of the examples that compile on Solaris 8. (It is possible to set multiple variables at once, so constructs like "CC=gcc VERBOSE=y make sol-8" are valid.) ALL of the programs compile without warning when using Sun's compiler. If you're using gcc, a small number of warnings will appear; all of these are benign and can be safely ignored. (These appear because I always run gcc with -Wall, which causes it to perform certain lint-like checks; similarly, I always run Sun's compiler with -v.)