================================================================================
                         The Quoteriser, Version 1.00
                                Source Code
================================================================================

  Contents:

  1. Manifest
  2. Compile Notes
  3. ... and so on

--------------------------------------------------------------------------------

1. Manifest

You should have all of the following files to be able to compile the Quoteriser:

  makefile           - make file (designed for EMX/GCC)

  include/authors.h  - C header for author functions and definitions
  include/general.h  - C header for miscellaneous functions and definitions
  include/html.h     - C header for HTML parsing functions
  include/qotdpm.h   - PM definitions for Quote-of-the-Day utility
  include/quoterpm.h - PM definitions for the Quoteriser main program
  include/quotes.h   - C header for quote functions and definitions
  include/threads.h  - C header for threads
  include/types.h    - C header containing miscellaneous type definitions

  source/adb.c       - C source for author database management functions
  source/asearch.c   - C source for author database search functions
  source/athreads.c  - C source for author threads
  source/authors.c   - C source for author management functions
  source/general.c   - C source for miscellaneous functions
  source/html.c      - C source for HTML parsing functions
  source/paint.c     - C source for PM painting and typesetting functions
  source/qdb.c       - C source for quote database management functions
  source/qotd.c      - C source for the Quote-of-the-Day utility
  source/qotd.def    - OS/2 definition file for the Quote-of-the-Day utility
  source/qotd.rc     - PM resource file for the Quote-of-the-Day utility
  source/qsearch.c   - C source for quote database search functions
  source/qthreads.c  - C source for quote threads
  source/quotes.c    - C source for quote management functions
  source/quoter.c    - C source for the Quoteriser main program
  source/quoter.def  - OS/2 definition file for the Quoteriser main program
  source/quoter.ico  - icon (should work with OS/2 or Windows)
  source/quoter.rc   - PM resource file for the Quoteriser main program

In addition to all of these files, you need GNU database manager (gnugdbm.zip).

--------------------------------------------------------------------------------

2. Compile Notes

  I wrote the make file for EMX/GCC; if you are using this compiler, you should
be able to use the given make file without further ado. If you are using a
different compiler, you might need to change a few settings. What each macro
means is clearly described in the make file comments, and I will not repeat them
here.
  The compilation process is fairly straightforward. Linking is performed by
calling the compiler and letting it figure it out. The only peculiarity in the
process is the compilation of the paint module (paint.c). If QOTD is defined,
paint.c includes qotdpm.h; otherwise it includes quoterpm.h. The former version
is used for compiling the Quote-of-the-Day utility, and the latter version is
used for compiling the Quoteriser main program. Hence, there are two object
files generated by paint.c - paint1.obj (for the main program), and paint2.obj
(for the Quote-of-the-Day utility).
  The makefile is intended to be run from the root directory that you have your
source code in (i.e. above source/ and include/). It is set up to compile normal
executables in a sub-directory bin, and debug-enabled executables in a sub-
directory debug. (Why do I do it this way? This is the way we did it at my first
job, and no job I've had since has convinced me that compiling one version at a
time is better).
  A 'make all' command (which is the default) will compile four executables:

  bin/quoter.exe   - normal executable for the Quoteriser
  bin/qotd.exe     - normal executable for Quote-of-the-Day
  debug/quoter.exe - debug-enabled executable for the Quoteriser
  debug/qotd.exe   - debug-enabled executable for Quote-of-the-Day

  If this is a little extravagant for you, use 'make bin' to compile only the
normal executables, 'make debug' for only the debug versions, 'make quoter'
for the Quoteriser only, and 'make qotd' for Quote-of-the-Day only.

  Once you have compiled everything, you can, of course, delete all the
object files it creates during the process to save yourself some disk space.

--------------------------------------------------------------------------------

3. ... and so on

  The rest of the source code documentation is in the code itself. Each file has
a header describing its purpose and a few other pieces of information. Each
function has a comment in its .c file specifying what it does, the purpose of
all the parameters and the return value. Some of this may be a little terse, but
I hope you can figure it out.
  The code is strictly standard C and the standard OS/2 API because I deplore
proprietry standards and see no purpose in making porting to other compilers
difficult. There is one exeception, and that is the function _beginthread(); EMX
does not like DosCreateThread(), so my hand is forced. All OS/2 compilers have
this function, so far as I know, though some have subtly different parameters to
others. I won't accept any code for the official version of the Quoteriser
unless it obeys these rules.
  Have fun.
