wrc vendor drop Added: vendor/wine/tools/wrc/ Added: vendor/wine/tools/wrc/current/ Added: vendor/wine/tools/wrc/current/CHANGES Added: vendor/wine/tools/wrc/current/Makefile.in Added: vendor/wine/tools/wrc/current/dumpres.c Added: vendor/wine/tools/wrc/current/dumpres.h Added: vendor/wine/tools/wrc/current/genres.c Added: vendor/wine/tools/wrc/current/genres.h Added: vendor/wine/tools/wrc/current/newstruc.c Added: vendor/wine/tools/wrc/current/newstruc.h Added: vendor/wine/tools/wrc/current/parser.h Added: vendor/wine/tools/wrc/current/parser.l Added: vendor/wine/tools/wrc/current/parser.y Added: vendor/wine/tools/wrc/current/readres.c Added: vendor/wine/tools/wrc/current/readres.h Added: vendor/wine/tools/wrc/current/translation.c Added: vendor/wine/tools/wrc/current/utils.c Added: vendor/wine/tools/wrc/current/utils.h Added: vendor/wine/tools/wrc/current/wrc.c Added: vendor/wine/tools/wrc/current/wrc.doc Added: vendor/wine/tools/wrc/current/wrc.h Added: vendor/wine/tools/wrc/current/wrc.man Added: vendor/wine/tools/wrc/current/wrctypes.h Added: vendor/wine/tools/wrc/current/writeres.c _____
Added: vendor/wine/tools/wrc/current/CHANGES --- vendor/wine/tools/wrc/current/CHANGES 2005-02-19 22:18:00 UTC (rev 13648) +++ vendor/wine/tools/wrc/current/CHANGES 2005-02-19 22:19:39 UTC (rev 13649) @@ -0,0 +1,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 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 _____
Added: vendor/wine/tools/wrc/current/Makefile.in --- vendor/wine/tools/wrc/current/Makefile.in 2005-02-19 22:18:00 UTC (rev 13648) +++ vendor/wine/tools/wrc/current/Makefile.in 2005-02-19 22:19:39 UTC (rev 13649) @@ -0,0 +1,53 @@
+DEFS = -DINCLUDEDIR=""$(includedir)"" +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +LEXOPT = -Cf #-w -b +YACCOPT = #-v +EXEEXT = @EXEEXT@ + +PROGRAMS = wrc$(EXEEXT) +MODULE = none + +C_SRCS = \ + dumpres.c \ + genres.c \ + newstruc.c \ + readres.c \ + translation.c \ + utils.c \ + wrc.c \ + writeres.c + +EXTRA_SRCS = parser.y parser.l +EXTRA_OBJS = y.tab.o @LEX_OUTPUT_ROOT@.o + +all: $(PROGRAMS) + +@MAKE_RULES@ + +wrc$(EXEEXT): $(OBJS) $(LIBDIR)/wpp/libwpp.a + $(CC) $(CFLAGS) -o $@ $(OBJS) -L$(LIBDIR) -lwpp -lwine_unicode -lwine_port $(LEXLIB) $(LDFLAGS) + +y.tab.c y.tab.h: parser.y + $(YACC) $(YACCOPT) -d -t $(SRCDIR)/parser.y + +# hack to allow parallel make +y.tab.h: y.tab.c +y.tab.o: y.tab.h + +@LEX_OUTPUT_ROOT@.c: parser.l + $(LEX) $(LEXOPT) -d -8 $(SRCDIR)/parser.l + +@LEX_OUTPUT_ROOT@.o: y.tab.h + +install:: $(PROGRAMS) + $(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext) + $(INSTALL_DATA) $(SRCDIR)/wrc.man $(mandir)/man$(prog_manext)/wrc.$(prog_manext) + $(INSTALL_PROGRAM) wrc$(EXEEXT) $(bindir)/wrc$(EXEEXT) + +uninstall:: + $(RM) $(bindir)/wrc$(EXEEXT) $(mandir)/man$(prog_manext)/wrc.$(prog_manext) + +### Dependencies: Property changes on: vendor/wine/tools/wrc/current/Makefile.in ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native _____
Added: vendor/wine/tools/wrc/current/dumpres.c --- vendor/wine/tools/wrc/current/dumpres.c 2005-02-19 22:18:00 UTC (rev 13648) +++ vendor/wine/tools/wrc/current/dumpres.c 2005-02-19 22:19:39 UTC (rev 13649) @@ -0,0 +1,1038 @@
+/* + * Copyright 1998 Bertho A. Stultiens (BS) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include <assert.h> +#include <stdio.h> +#include <ctype.h> + +#include "wrc.h" +#include "dumpres.h" + +/* + ************************************************************************ ***** + * Function : get_typename + * Syntax : char *get_typename(resource_t* r) + * Input : + * r - Resource description + * Output : A pointer to a string representing the resource type + * Description : + * Remarks : + ************************************************************************ ***** +*/ +const char *get_typename(const resource_t* r) +{ + switch(r->type){ + case res_acc: return "ACCELERATOR"; + case res_bmp: return "BITMAP"; + case res_cur: return "CURSOR"; + case res_curg: return "GROUP_CURSOR"; + case res_dlg: return "DIALOG"; + case res_dlgex: return "DIALOGEX"; + case res_fnt: return "FONT"; + case res_ico: return "ICON"; + case res_icog: return "GROUP_ICON"; + case res_men: return "MENU"; + case res_menex: return "MENUEX"; + case res_rdt: return "RCDATA"; + case res_stt: return "STRINGTABLE"; + case res_usr: return "UserResource"; + case res_msg: return "MESSAGETABLE"; + case res_ver: return "VERSIONINFO"; + case res_dlginit: return "DLGINIT"; + case res_toolbar: return "TOOLBAR"; + case res_anicur: return "CURSOR (animated)"; + case res_aniico: return "ICON (animated)"; + default: return "Unknown"; + } +} + +/* + ************************************************************************ ***** + * Function : strncpyWtoA + * Syntax : char *strncpyWtoA(char *cs, short *ws, int maxlen) + * Input : + * cs - Pointer to buffer to receive result + * ws - Source wide-string + * maxlen - Max chars to copy + * Output : 'cs' + * Description : Copy a unicode string to ascii. Copying stops after the + * first occurring '\0' or when maxlen-1 chars are copied. The + * String is always nul terminated. + * Remarks : No codepage translation is done. + ************************************************************************ ***** +*/ +static char *strncpyWtoA(char *cs, const short *ws, int maxlen) +{ + char *cptr = cs; + const short *wsMax = ws + maxlen - 1; + while(*ws && ws < wsMax) + { + if(*ws < -128 || *ws > 127) + fprintf(stderr, "***Warning: Unicode string contains non-printable chars***\n"); + *cptr++ = (char)*ws++; + } + *cptr = '\0'; + return cs; +} + +/* + ************************************************************************ ***** + * Function : print_string + * Syntax : void print_string(string_t *str) + * Input : + * Output : + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void print_string(const string_t *str) +{ + char buffer[512]; + if(!str) + printf("<none>"); + else if(str->type == str_char) + printf(""%s"", str->str.cstr); + else + { + strncpyWtoA(buffer, str->str.wstr, sizeof(buffer)); + printf("L"%s"", buffer); + } +} + +/* + ************************************************************************ ***** + * Function : get_nameid_str + * Syntax : const char *get_nameid_str(const name_id_t *n) + * Input : + * n - nameid to convert to text + * Output : A pointer to the name. + * Description : + * Remarks : Not reentrant because of static buffer + ************************************************************************ ***** +*/ +const char *get_nameid_str(const name_id_t *n) +{ + static char buffer[256]; + + if(!n) + return "<none>"; + + if(n->type == name_ord) + { + sprintf(buffer, "%d", n->name.i_name); + return buffer; + } + else if(n->type == name_str) + { + if(n->name.s_name->type == str_char) + return n->name.s_name->str.cstr; + else + { + strncpyWtoA(buffer, n->name.s_name->str.wstr, sizeof(buffer)); + return buffer; + } + } + else + return "Hoooo, report this: wrong type in nameid"; +} + +/* + ************************************************************************ ***** + * Function : dump_memopt + * Syntax : void dump_memopt(DWORD memopt) + * Input : + * memopt - flag bits of the options set + * Output : + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_memopt(DWORD memopt) +{ + printf("Memory/load options: "); + if(memopt & 0x0040) + printf("PRELOAD "); + else + printf("LOADONCALL "); + if(memopt & 0x0010) + printf("MOVEABLE "); + else + printf("FIXED "); + if(memopt & 0x0020) + printf("PURE "); + else + printf("IMPURE "); + if(memopt & 0x1000) + printf("DISCARDABLE"); + printf("\n"); +} + +/* + ************************************************************************ ***** + * Function : dump_lvc + * Syntax : void dump_lvc(const lvc_t *l) + * Input : + * l - pointer to lvc structure + * Output : + * Description : Dump language, version and characteristics + * Remarks : + ************************************************************************ ***** +*/ +static void dump_lvc(const lvc_t *l) +{ + if(l->language) + printf("LANGUAGE %04x, %04x\n", l->language->id, l->language->sub); + else + printf("LANGUAGE <not set>\n"); + + if(l->version) + printf("VERSION %08lx\n", *(l->version)); + else + printf("VERSION <not set>\n"); + + if(l->characts) + printf("CHARACTERISTICS %08lx\n", *(l->characts)); + else + printf("CHARACTERISTICS <not set>\n"); +} + +/* + ************************************************************************ ***** + * Function : dump_raw_data + * Syntax : void dump_raw_data(const raw_data_t *d) + * Input : + * d - Raw data descriptor + * Output : + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_raw_data(const raw_data_t *d) +{ + unsigned int n; + int i; + int j; + + if(!d) + { + printf("<none>"); + return; + } + printf("Rawdata size: %d\n", d->size); + if(debuglevel < 2) + return; + + for(n = 0; n < d->size; n++) + { + if((n % 16) == 0) + { + if(n) + { + printf("- "); + for(i = 0; i < 16; i++) + printf("%c", isprint(d->data[n-16+i] & 0xff) ? d->data[n-16+i] : '.'); + printf("\n%08x: ", n); + } + else + printf("%08x: ", n); + } + printf("%02x ", d->data[n] & 0xff); + } + printf("- "); + j = d->size % 16; + if(!j) + j = 16; + for(i = 0; i < j; i++) + printf("%c", isprint(d->data[n-j+i] & 0xff) ? d->data[n-j+i] : '.'); + printf("\n"); +} + +/* + ************************************************************************ ***** + * Function : dump_accelerator + * Syntax : void dump_accelerator(const accelerator_t *acc) + * Input : + * acc - Accelerator resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_accelerator(const accelerator_t *acc) +{ + event_t *ev = acc->events; + + dump_memopt(acc->memopt); + dump_lvc(&(acc->lvc)); + + printf("Events: %s\n", ev ? "" : "<none>"); + while(ev) + { + printf("Key="); + if(isprint(ev->key)) + printf(""%c"", ev->key); + else if(iscntrl(ev->key)) + printf(""^%c"", ev->key +'@'); + else + printf("\x%02x", ev->key & 0xff); + + printf(" Id=%d flags=%04x\n", ev->id, ev->flags); + ev = ev->next; + } +} + +/* + ************************************************************************ ***** + * Function : dump_cursor + * Syntax : void dump_cursor(const cursor_t *cur) + * Input : + * cur - Cursor resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_cursor(const cursor_t *cur) +{ + printf("Id: %d\n", cur->id); + printf("Width: %d\n", cur->width); + printf("Height: %d\n", cur->height); + printf("X Hotspot: %d\n", cur->xhot); + printf("Y Hotspot: %d\n", cur->yhot); + dump_raw_data(cur->data); +} + +/* + ************************************************************************ ***** + * Function : dump_cursor_group + * Syntax : void dump_cursor_group(const cursor_group_t *cur) + * Input : + * cur - Cursor group resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_cursor_group(const cursor_group_t *curg) +{ + dump_memopt(curg->memopt); + printf("There are %d cursors in this group\n", curg->ncursor); +} + +/* + ************************************************************************ ***** + * Function : dump_icon + * Syntax : void dump_icon(const icon_t *ico) + * Input : + * ico - Icon resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_icon(const icon_t *ico) +{ + printf("Id: %d\n", ico->id); + printf("Width: %d\n", ico->width); + printf("Height: %d\n", ico->height); + printf("NColor: %d\n", ico->nclr); + printf("NPlanes: %d\n", ico->planes); + printf("NBits: %d\n", ico->bits); + dump_raw_data(ico->data); +} + +/* + ************************************************************************ ***** + * Function : dump_icon_group + * Syntax : void dump_icon_group(const icon_group_t *ico) + * Input : + * ico - Icon group resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_icon_group(const icon_group_t *icog) +{ + dump_memopt(icog->memopt); + printf("There are %d icons in this group\n", icog->nicon); +} + +/* + ************************************************************************ ***** + * Function : dump_ani_curico + * Syntax : void dump_ani_curico(const ani_curico_t *ani) + * Input : + * ani - Animated object resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_ani_curico(const ani_curico_t *ani) +{ + dump_memopt(ani->memopt); + dump_lvc(&ani->data->lvc); + dump_raw_data(ani->data); +} + +/* + ************************************************************************ ***** + * Function : dump_font + * Syntax : void dump_font(const font_t *fnt) + * Input : + * fnt - Font resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_font(const font_t *fnt) +{ + dump_memopt(fnt->memopt); + dump_lvc(&(fnt->data->lvc)); + dump_raw_data(fnt->data); +} + +/* + ************************************************************************ ***** + * Function : dump_bitmap + * Syntax : void dump_bitmap(const bitmap_t *bmp) + * Input : + * bmp - Bitmap resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_bitmap(const bitmap_t *bmp) +{ + dump_memopt(bmp->memopt); + dump_lvc(&(bmp->data->lvc)); + dump_raw_data(bmp->data); +} + +/* + ************************************************************************ ***** + * Function : dump_rcdata + * Syntax : void dump_rcdata(const rcdata_t *rdt) + * Input : + * rdt - RCData resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_rcdata(const rcdata_t *rdt) +{ + dump_memopt(rdt->memopt); + dump_lvc(&(rdt->data->lvc)); + dump_raw_data(rdt->data); +} + +/* + ************************************************************************ ***** + * Function : dump_user + * Syntax : void dump_user(const user_t *usr) + * Input : + * usr - User resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_user(const user_t *usr) +{ + dump_memopt(usr->memopt); + dump_lvc(&(usr->data->lvc)); + printf("Class %s\n", get_nameid_str(usr->type)); + dump_raw_data(usr->data); +} + +/* + ************************************************************************ ***** + * Function : dump_messagetable + * Syntax : void dump_messagetable(const messagetable_t *msg) + * Input : + * msg - Messagetable resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_messagetable(const messagetable_t *msg) +{ + dump_memopt(msg->memopt); + dump_lvc(&(msg->data->lvc)); + dump_raw_data(msg->data); +} + +/* + ************************************************************************ ***** + * Function : dump_stringtable + * Syntax : void dump_stringtable(const stringtable_t *stt) + * Input : + * stt - Stringtable resource descriptor + * Output : nop + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_stringtable(const stringtable_t *stt) +{ + int i; + for(; stt; stt = stt->next) + { + printf("{\n"); + dump_memopt(stt->memopt); + dump_lvc(&(stt->lvc)); + for(i = 0; i < stt->nentries; i++) + { + printf("Id=%-5d (%d) ", stt->idbase+i, stt->entries[i].id); + if(stt->entries[i].str) + print_string(stt->entries[i].str); + else + printf("<none>"); + printf("\n"); + } + printf("}\n"); + } +} + +/* + ************************************************************************ ***** + * Function : dump_control + * Syntax : void dump_control(const control_t *ctrl) + * Input : + * ctrl - Control resource descriptor + * Output : + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_control(const control_t *ctrl) +{ + printf("Control {\n\tClass: %s\n", get_nameid_str(ctrl->ctlclass)); + printf("\tText: "); get_nameid_str(ctrl->title); printf("\n"); + printf("\tId: %d\n", ctrl->id); + printf("\tx, y, w, h: %d, %d, %d, %d\n", ctrl->x, ctrl->y, ctrl->width, ctrl->height); + if(ctrl->gotstyle) + { + assert(ctrl->style != NULL); + assert(ctrl->style->and_mask == 0); + printf("\tStyle: %08lx\n", ctrl->style->or_mask); + } + if(ctrl->gotexstyle) + { + assert(ctrl->exstyle != NULL); + assert(ctrl->exstyle->and_mask == 0); + printf("\tExStyle: %08lx\n", ctrl->exstyle->or_mask); + } + if(ctrl->gothelpid) + printf("\tHelpid: %ld\n", ctrl->helpid); + if(ctrl->extra) + { + printf("\t"); + dump_raw_data(ctrl->extra); + } + printf("}\n"); +} + +/* + ************************************************************************ ***** + * Function : dump_dialog + * Syntax : void dump_dialog(const dialog_t *dlg) + * Input : + * dlg - Dialog resource descriptor + * Output : + * Description : + * Remarks : + ************************************************************************ ***** +*/ +static void dump_dialog(const dialog_t *dlg) +{ + control_t *c = dlg->controls; + + dump_memopt(dlg->memopt); + dump_lvc(&(dlg->lvc)); + printf("x, y, w, h: %d, %d, %d, %d\n", dlg->x, dlg->y, dlg->width, dlg->height); + if(dlg->gotstyle) + { + assert(dlg->style != NULL); + assert(dlg->style->and_mask == 0); + printf("Style: %08lx\n", dlg->style->or_mask); + + } + if(dlg->gotexstyle) + { + assert(dlg->exstyle != NULL); + assert(dlg->exstyle->and_mask == 0); + printf("ExStyle: %08lx\n", dlg->exstyle->or_mask); + } + printf("Menu: %s\n", get_nameid_str(dlg->menu)); + printf("Class: %s\n", get_nameid_str(dlg->dlgclass)); [truncated at 1000 lines; 11461 more skipped]