---------------------------------------------------------------------------
Version 1.0.8 (10-Jan-1999)

Albert den Haan <albertd@corel.ca>:
- Added TOOLBAR support.
- Buffer overflow fix in strncpyWtoA.
- Open embedded files in resource definitions through the include path from
  the commandline.
- Support named icons in dialogs with unquoted names

Bertho Stultiens <bertho@akhphd.au.dk>
- Fixed a major bug in the language propagation in the parser. The parser
  did not copy the current language while binding it to a resource structure
  causing wrong sorting if multiple global languages were in use and was a
  potential segfault because the pointer might not be valid.
- Added language/version/characteristics support for toolbar.
- Moved some defines from wrc.h to wrctypes.h to support in toolbars.
- Removed function stricmp from source and replaced with native function
  strcasecmp.
- Allocate cursor and icon ordinals according to the language of the item to
  decrease the amount of ordinals in use. This reduces the resource
  directory size by reducing the tree size.
- Versions 1.0.5 through 1.0.7 were never commited to cvs but were available
  for download from an alternate site for elf-dll test generation.

---------------------------------------------------------------------------
Version 1.0.7 (19-Dec-1998)
- Changed a couple of labels that are used by dllglue. Also reversed a patch
  that made wrc's generated code dependent on dllglue's code.

---------------------------------------------------------------------------
Version 1.0.6 (12-Dec-1998)
- Fixed the _PEResTab table where incorrect RVA's were put in the table.
  The dllglue should now be merged into wrc for correct labels and the least
  number of loadtime fixups.

---------------------------------------------------------------------------
Version 1.0.5 (12-Dec-1998)
- Fixed an omited .globl statement for dllglue linking.

---------------------------------------------------------------------------
Version 1.0.4 (10-Dec-1998)
- Added a global label for elf-dll linking and a long with the resource
  size and a long with the directory size.
- Killed an annoying warning since version 1.0.0 in parser.y about a
  var being used before init.

---------------------------------------------------------------------------
Version 1.0.3 (02-Nov-1998)
- Bugfix in write_name_str() [writeres.c] where the length byte/word was
  wrongly counted in the length of the string.
  Thanks to Ulrich Weigand <weigand@informatik.uni-erlangen.de>

---------------------------------------------------------------------------
Version 1.0.2 (20-Jun-1998)
- Started this file
- Fixed a bug in filename scanning when they are double quoted. The code now
  is compatible with MS' rc and Borland's brc. There is a compromise in the
  filenames because of case-sensitivity under *nix.
- Backslashes in a filepath are now converted to forward slashes and double
- Fixed a bug in printing the filename if loading of a file should fail.
  backslashes are converted to single forward slash.
- Added -L option to prevent conversion to lower case for embedded filenames
  in resource statements.
- Added language posibilities to icons and cursors so that the current
  language is put into the .res ans .s file.
- Added character position indication of an error.
- Fixed CLASS statement so that it accepts double quoted strings as class
  argument. This seems to be the correct behaviour (see SDK). The unquoted
  class-name is still supported because it seems a reasonable option.
- Fixed accelerators with CONTROL option set so that they generate correct
  code instead of generating an error.
- Added testing for flex version 2.5 or better because wrc needs the
  yy_scan* functions to do preprocessing.

---------------------------------------------------------------------------
Version  1.0.1 (08-Jun-1998)
- Added -A commandline option to generate autoregister code for the winelib
  programs.

---------------------------------------------------------------------------
Version 1.0.0 (28-May-1998)
- Initial release
