Previously, various error handling functions were defined, but not all
of them were even used. The new error handling functions handle the most
common cases:
- Assertions. These can be handled with `ASSERT()`, which gives the
error location for debugging.
- Errors we don't know how to handle, like GetNewWindow returning NULL.
These can be handled with `EXIT_INTERNAL()`, which gives the error
location for debugging.
- Out of memory conditions. These can be handled with `ShowMemError()`.
- System errors in response to user operations. These can be handled
with `ShowError()`.
The GUI program's project is not checked in. It was compiled and tested
with CodeWarrior Pro 4.
The GUI program allows users to create new synchronization projects,
select folders to synchronize, and save and open projects. The code is
probably broken and buggy, and probably dereferences NULL pointers here
and there, but the basic shell is there.