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