---------------------------------------------------------------------------
Version 1.1.9 (31-Dec-2000)

Ulrich Weigand <weigand@informatik.uni-erlangen.de>
- Fixed a byteorder conversion problem with message tables.
- Carefully read and write (possibly) misaligned data elements
  to avoid crashes on architectures where this is not allowed.

---------------------------------------------------------------------------
Version 1.1.8 (24-Aug-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Fixed a LALR(2) problem while scanning usertype resources which
  had identifiers for both name and type.

---------------------------------------------------------------------------
Version 1.1.7 (24-Jul-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Implemented a bug-work-arround for Berkeley yacc (byacc) which
  does not generate proper default transition rules for non-terminals.
  See comments in parser.y how the fix works.
- Changed the error-line/char position to make emacs happy parsing
  the position of the error.
- Added comments in the documentation in which order the line-numer
  and character-position of the error is written.

---------------------------------------------------------------------------
Version 1.1.6 (05-Jun-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Bugfix: Macro expansion of strings would assert an internal error
  or a segfault due to a lacking '\0' in the expansion.
- Bugfix: Prevent buffer overflow in reallocation of macro expansion
  buffers.
- Bugfix: Wrc's version information was not passed as numerical to the
  preprocessor due to an error in the definition of the macro.
- Relaxed the newline constraint in global LANGUAGE statements, which
  was introduced in version 1.1.3, so that some fancy preprocessor
  constructs can work.
- Removed the gcc-style #line handling from the resource-parser to the
  resource-scanner so that it is possible to include files at any stage
  of the source, independent of the parser-state.
- Bugfix: Stringtables were not correctly searched for duplicates
  because the language comparison disregarded the sublanguage.
- Eliminated a repetitive warning when writing stringtables with zero
  length string entries. These are perfectly valid (but make no sense:-).
  Warning are now only generated during parse in pedantic mode.

---------------------------------------------------------------------------
Version 1.1.5 (12-Jun-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Bugfix: Corrected "off by one" error in the linenumber while parsing
  resource.
- Bugfix: A segfault would occur if messagetables were parsed without
  memory options attached. Also added buffer-overflow safeguard while
  converting between byteorders.
- Finished remapping usertype resources onto standars types by tricking
  the parser into accepting a different token. The remapping can be
  disabled with a new commandline option '-m'.
- Resolved some warning about chars used as index on SGI O2 machine
  (the ctype isXXX() routines are macros there).

---------------------------------------------------------------------------
Version 1.1.4 (07-Jun-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Implemented MESSAGETABLE resource type.
- Usertype resources that cause a type-clash with defined resources
  are now detected and a warning is generated. Some types should be
  rerouted through other code so that they will be (re-)interpreted.
- Bugfix: Line-continuation in strings in resources include a newline.
  This `feature' got deleted with the builtin preprocessor, but has been
  put back into place (see last changes comment from version 1.1.0).
- Bugfix: The preprocessor now correctly will see "\\\r\n" as a line-
  continuation.
- Bugfix: Assemblers on some platforms do not use 16bit quantities
  for `.word'. This directive is now changed into `.short'.
- All types that accept inline data definitions (a la RCDATA) now
  also accept a file specification. This unifies the structure a bit.

---------------------------------------------------------------------------
Version 1.1.3 (21-May-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Implemented animated cursors and icons resource types.
- Added partial support for font resources (user supplied fontdir is
  required).
- All resources with inline data (a la RCDATA) now support language,
  version and characteristics data.
- Implemented resource name duplicate checks. It is now an error if
  two resources of the same type have the same name.
- Bugfix: Language propagation was not correct when .res files were
  generated.
- Bugfix: VERSIONINFO now handles memory options.
- Bugfix: resource names and the resource type may be equal (e.g. MENU
  MENU {...}). This support was mistakingly deleted in the upgrade to
  the builtin preprocessor.
  The standalone LANGUAGE setting became context sensitive as a consequence
  of this. Now it *must* end with a newline *after* both expressions and
  no newlines are allowed within the line (the statement must fit on one
  line). This is no practical problem though.

Patrik Stridvall <ps@leissner.se>
- Fixed byte order on Solaris and FreeBSD.

---------------------------------------------------------------------------
Version 1.1.2 (08-May-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Bugfix: Corrected a SEGV in the rawdata handling. Mistakingly took the
  address of a pointer instead of its value. This probably slipped in
  during the merge of my tree into the winetree.
  Lesson learned: always double check.
- Verified most resources so that win16 compile also generates correct
  output for reversed endian.

---------------------------------------------------------------------------
Version 1.1.1 (07-May-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Implemented byte-ordering for resources. All resources can be forced
  to be little-, big- or native endian with command-line option -B.
- Reading resources from .res-files are only accepted in native byte-
  ordering so that no additional semantic analysis is required.
- Resource directory is still written in native-only format, including
  the strings.
- Wrc is now installed through the makefile with 'make install' and also
  uninstalled with 'make uninstall'.
- Wrote a man-page for better reference. The manpage also gets installed
  and uninstalled.
- Cleaned up the namespace a bit by more agressive use of static.

---------------------------------------------------------------------------
Version 1.1.0 (01-May-2000)

Bertho Stultiens <bertho@akhphd.au.dk>
- Implemented a new preprocessor that is (nearly) ANSI-C compliant. The
  old parser has been stripped from the old preprocessor-code which 
  cleaned up both resource-scanner and -parser.
- Standard defines have been introduced (see README.wrc)
- Both preprocessor- and resource-scanner have been optimized slightly
  so that no backing up is required (one char lookahead is enough).
- Filename-scanning has been cleaned up, though not perfect yet.
- User-type resources are compatible now.
- Line-continuation in strings is corrected so that it does not
  introduce a newline in the output.

---------------------------------------------------------------------------
Version 1.0.18 (28-Dec-1999)

Bertho Stultiens <bertho@akhphd.au.dk>
- Bugfix: The named resources were not named correctly for indirectly
  addressable resources, which resulted in an undefined variable. The
  previous fix was incomplete (I was probably sleeping while I made it).

---------------------------------------------------------------------------
Version 1.0.17 (20-Dec-1999)

Bertho Stultiens <bertho@akhphd.au.dk>
- Bugfix: Named resources of different types generated the same assembly-
  label twice, resulting in a compile failure.

---------------------------------------------------------------------------
Version 1.0.16 (6-Nov-1999)

Juergen.Schmied@debitel.net
- Bugfix: Styles were evaluated as expressions. The NOT in combination
  with style flags was not overwriting the default styles like WS_VISIBLE.
  Solved by introducing own rules for parsing styles.

---------------------------------------------------------------------------
Version 1.0.15 (13-Aug-1999)

Bertho Stultiens <bertho@akhphd.au.dk>
- Bugfix: IDs were not checked which resulted in numbers > 2^16-1 being
  accepted as IDs. This resulted in duplicate IDs and all other sort of
  trouble.

---------------------------------------------------------------------------
Version 1.0.14 (08-Aug-1999)

Bertho Stultiens <bertho@akhphd.au.dk>
- Deeply ashamed that I thought that flex had a bug. Of course my own fault
  not recognizing unmatched text in start condition yyrcd and pp_strip[ps].
  There is a catch all rule now in the flexer with a warning to mark the
  condition and promptly revealed errors in the wine-headers.

---------------------------------------------------------------------------
Version 1.0.13 (08-Aug-1999)

Bertho Stultiens <bertho@akhphd.au.dk>
- Fixed uppercase conversion of titles in dialog controls which was
  introduced with the icon changes.
- Fixed strings longer than 1024 bytes/shorts by autosizing the array. A
  warning is issued whenever more than 64k is allocated.
- Made a workarround for a flex bug where an ECHO put '\\' and '\n'
  characters on the screen.

---------------------------------------------------------------------------
Version 1.0.12 (18-Jul-1999)

Bertho Stultiens <bertho@akhphd.au.dk>
- Generalized the distinction between 2 and 4 byte integers slightly through
  a new parser state. The is now a warning when a 2 byte integer is larger
  than 16 bit (and is truncated).
- Fixed a couple of cosmetic things in the DLGINIT stuff so that dumping of
  this type will work as expected.
- Added generalized language/version/characteristics support to the DLGINIT
  resource type.

Ulrich Czekalla <ulrichc@corel.ca>
- Added support for DLGINIT resource-type.
- Added string continuation and embedded quoting.
- Added numeric IDs for icons in controls.

Eric Pouech <Eric.Pouech@wanadoo.fr>
- Bugfix: Distinguish between 2 and 4 byte integers in RCDATA.

---------------------------------------------------------------------------
Version 1.0.11 (22-Apr-1999)

Bertho Stultiens <bertho@akhphd.au.dk>
- Fixed a counting bug in the win32 count and sort routine.
- Fixed sort order of resources (must be name before ordinal).
- Shuffled a couple of global variables so that built-in dlls now can
  load resources through the proper PE interface.

---------------------------------------------------------------------------
Version 1.0.10 (18-Feb-1999)

Alexandre Julliard <julliard@lrc.epfl.ch>
- Fixed the TIME_LONG ugliness.

David Luyer <luyer@ucs.uwa.edu.au>
- Added string.h include in newstruc.c for compilation on 64bit platforms.
- Added TIME_LONG to support time_t==int in printf formats on alpha
  platforms.

Bertho Stultiens <bertho@akhphd.au.dk>
- Added some more use of TIME_LONG in implicit format used in header-file
  generation.
- Removed the windows.h include and replaced it with wintypes.h in
  wrctypes.h and added winuser.h in two other sources. This cuts compilation
  time by a factor of 2 and final executable size with debug by a factor 2.5.

---------------------------------------------------------------------------
Version 1.0.9 (01-Feb-1999)

Albert den Haan <albertd@corel.ca>:
- Fixed wrong order of res_ico and res_bmp which must be in RT_xxx order.

---------------------------------------------------------------------------
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
