I tried to set it up such that future WB versions can be very easily
patched
to make them support JAWS. I put all JAWS C code in a single file,
jaws.c,
which needs to be #included in winboard.c to define all new functions.
I put the extensions needed to resource.h in a separate file jaws.h,
which
is automatically #included from jaws.c.
It could not be avoided, though, that winboard.c must contain some
scattered
modifications, to actually call the new routines at the applicable
time. To
minimize the work here, jaws.c #defines the required code patches as
macros.
Compiling the thus patched winboard.c, and linking it to jaws.rc (which
automatically includes jaws.h) in stead of winboard.rc (and all other,
unmodified
object files), produces an executable that supports JAWS.
Now my proposal is this:as a compromise between not burdoning ordinary
users
with large chunks of unnecessary code, and easy upgradability of the JAWS
version, we distribute the winboard.c that is needed for the JAWS
version,
(containing some 10 extra lines of code, for the #include and macro
calls), but
distribute a small dummy jaws.c with it. This dummy #defines the
handful of
JAWS macros as no-ops, (empty macros that mark insertion points, macros
copying their argument for those that indicate deetions / replacements).
People that want to build a JAWS version can then obtain jaws.rc, jaws.h,
and the real jaws.c in a separate download, overwrite the dummy with
the latter
and winboard.rc with jaws.rc, and then build as usual.