1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
---------------------------------------------------------------------------
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