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