* WriteWindow.c: modified the file notification to only obey changes to the
file's contents, because a notification will be sent for *every* change
made, i.e. changing the file's comment will also trigger a notification.
This is archived by watching changes to the file's date stamp.

* YAM_WR.c: StrBufCat() was called with a NULL source pointer which caused
crashes on OS4, because newlib.library's strlen() function is not NULL
pointer safe. Added a check for this. This should fix bug #1978261.

* YAM.cd, german.ct, YAM_TR.c: added the account name to all error messages
during a POP3 mail transfer to make it easier to spot the faulty account
in case a user has more than one account at the same provider. This fixes
bug #1931612.

* misc: splitted all requesters into separate classes and a function to open
a requester. By doing this we can get rid of the ugly pair of
COLLECT_RETURNIDS and REISSUE_RETURNIDS macro calls, which may cause crashes
because of double node removals.

* YAM_WR.c, YAM_COg.c, misc: moved the charset configuration to the read
configuration pane and changed all internals to accept a different default
charset for the write window/operations instead. This should deal with
bug #1881825 and help users wanting to have more control over the default
charsets used for reading/writing an e-mail. Let's see how this goes,
thought.

* YAM_UT.c: dos.library 52.12 from the July update doesn't use the supplied
match string correctly and simply returns all directory entries instead of
just the matching ones. This bug has been fixed since dos.library 52.17.
As a temporaty workaround until the next OS4 update we simply supply a
suitable match hook to do the dirty work. This should fix bug #1971328.

* YAM_WR.c, WriteWindow.c: reimplemented the bounce mail functionality
by adding the necessary GUI code to the 'WriteWindow' class and
reactiving its functionality in YAM_WR.c. Now bouncing a mail should
work as expected again.

* YAM_WR.c: changed the autosavefilename composing function to always
generate ".autosaveXX.txt" files with two digits.
* YAM_WR.c, misc: changed the CreateWriteWindow() function to accept an
additional paramater with the "mode" the write is being initialized for.
In addition, changed the "enum NewMode" to be called "enum NewMailMode"
and used respectively.

* MimeTypes.c: added a missing include statement which ended up in a
compiler warning. BTW: This is the 4000th (!) commit since YAM is open
sources :). So please cheer with us on this important milestone and
thanks to all involved parties who keep YAM floating.

* Mime.c, mime, misc: splitted the Mime.c file into smaller modules and
put them into the "mime" subdirectory. Now, e.g., the base64 routines
are in a separate file instead of having all those mime encoding/decoding
routines in one file. In addition, renamed the old Mime.c to MimeTypes.c
as only the mime types managing routines are left here.

* tools/genclasses, misc: added a parameter type check to the GenClasses
tool so that it checks for used BOOL parameters in the DECLARE()
statements of our classes. BOOL parameters are known to cause trouble
and therefore should be replaced by ULONG parameters instead.

* YAM_WR.c, rexx/*.c: forgot to reset the ActiveRexxWMData pointer as soon
as a writeMailData object was cleaned up and it was the currently active
rexx related window. In addition, the arexx commands will now cleanup
and dispose a previously existing write window in quiet mode so that
no memory/window leak may happen due to the constantly hided status
of subsequent write windows using in arexx. That means, in practice,
there can only be one currently active write windwo in quiet mode for
arexx usage. I hope this is will be no serve limitation, thought.

* WriteWindow.c, YAM_WR.c, YAM_MA.c, YAM_write.h: reimplanted the quietMode
functionality used for the Arexx command handling of write windows. Now
the Arexx commands dealing with the write windows should work as expected
again and keep things "quiet" in case background processing is selected.

* YAM_WR.c, WriteWindow.c, misc: largely rewrote the write window implementation
to fully use the MUI classes system in the "classes" directory. Also changed
the write window implementation to use a global exec list to manage the
write windows rather than using a fixed amount (3) of global write window
structures. This change therefore allows to open a theoretically unlimited
amount of write windows now. In addition, due to the port of the write
window code to the internal classes system the whole write window
functionality should be way more flexible now for future adaptions. As this
whole thing implies a rather large code change, please bear in mind that
some functionality may be broken and needs to be fixed in some way. In
addition, some minor things are still missing and need to be adapted.
Therefore "#warning 'TODO'" statements were added to the code where
some things still need to be moved to the new write window implementation
and which are currently disabled. This includes:

- YAM_MA.c: the bounce mail functionality which requires a new
"BounceWindow" class and/or adaptions to the current WriteWindow class
to open a bounce window (old WR_NewBounce) instead.
- YAM.c: the check for eventually existing .autosaveX.txt files have
to be adapted to search for such files and open a new write window
regardless of the X number.
- Arexx: the 'quietMode' functionality of the WriteWindow class still
needs some adaptions so that the window can really be opened in
quietMode (hided) and that the write Arexx commands still work as
expected.

So please keep the above write window rewrite in mind when running this
version because some things might still not work as expected or even
crash YAM.

* Rexx.c, rexx/*.c: reworked the ARexx handling once more. The commands don't
use one single memory buffer for arguments and results anymore, but separate
buffers instead. This makes variable parsing and handling much easier and
safer.

* extrasrc.h, lib/mos: again reworked the URL_Open() stub handling by
adding stub libraries to 'lib/mos' rather than defining our own inline
stubs in extrasrc.h. This should be the way we are dealing with such
missing vararg stubs.

* MUIObjects.c, Requesters.c: separated lots of functions into distinct
modules. All requester functions are now located in Requesters.c and all
simplified MUI object creation functions are located in MUIObjects.c. This
should help to shrink that monster YAM_UT.c.

* YAM_UT.c: the AppIcon now uses the same image logic as the folder icons do.
That means that the "new" image will be used, whenever there is either new
or unread mail, "old" otherwise. Before the "new" image was used for really
true new mails. But since YAM removes the "new" state from a mail after
getting new mails this is much more intuitive, since the mail is "almost
new" and still unread.

* Rexx.c, rexx/*.c: reworked the source layout again. Now the parameter
structures are strictly local and the required index for a possible result
of an indiviual command is returned upon memory allocation. Also removed
the possibility to disable certain commands, as this wasn't used at all.

* YAM_rexx.c, YAM_rexx_rxcl.c, YAM_rexx_rxif.c: replace the outdated custom
search method for ARexx command by a simple binary search. The old method
stems from an old tool to generate linked lists. Unfortunately the generated
code is not extendable without that tool and with the binary search the
parsing code becomes much easier to understand. All in all this change
makes the YAM_rexx_rxcl.c module completely unnecessary.

* YAM_rexx.c, YAM_rexx_rxcl.c, YAM_rexx_rxif.c: replace the outdated custom
search method for ARexx command by a simple binary search. The old method
stems from an old tool to generate linked lists. Unfortunately the generated
code is not extendable without that tool and with the binary search the
parsing code becomes much easier to understand. All in all this change
makes the YAM_rexx_rxcl.c module completely unnecessary.

* YAM_MA.c, YAM_TR.c, YAM_FI.c: replace the single boolean parameters of
MA_DeleteSingle() by flags, because an additional information was needed
to prevent an update of the AppIcon, which could cause nested locks of
the folder list.