ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
October 2005
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
26 participants
737 discussions
Start a n
N
ew thread
[blight] 18328: Add 'break_on_module_load' option to KDB. When enabled KDB will be entered for each module beeing loaded, and one can set
by blight@svn.reactos.com
Add 'break_on_module_load' option to KDB. When enabled KDB will be entered for each module beeing loaded, and one can set breakpoints etc. Modified: trunk/reactos/ntoskrnl/kdbg/kdb_cli.c Modified: trunk/reactos/ntoskrnl/ke/process.c _____ Modified: trunk/reactos/ntoskrnl/kdbg/kdb_cli.c --- trunk/reactos/ntoskrnl/kdbg/kdb_cli.c 2005-10-08 12:43:38 UTC (rev 18327) +++ trunk/reactos/ntoskrnl/kdbg/kdb_cli.c 2005-10-08 12:47:53 UTC (rev 18328) @@ -85,6 +85,7 @@ /* GLOBALS *******************************************************************/ STATIC BOOLEAN KdbUseIntelSyntax = FALSE; /* Set to TRUE for intel syntax */ +STATIC BOOLEAN KdbBreakOnModuleLoad = FALSE; /* Set to TRUE to break into KDB when a module is loaded */ STATIC CHAR KdbCommandHistoryBuffer[2048]; /* Command history string ringbuffer */ STATIC PCHAR KdbCommandHistory[sizeof(KdbCommandHistoryBuffer) / 8] = { NULL }; /* Command history ringbuffer */ @@ -1527,6 +1528,7 @@ KdbpPrint("Available settings:\n"); KdbpPrint(" syntax [intel|at&t]\n"); KdbpPrint(" condition [exception|*] [first|last] [never|always|kmode|umode]\n"); + KdbpPrint(" break_on_module_load [true|false]\n"); } else if (strcmp(Argv[1], "syntax") == 0) { @@ -1641,6 +1643,22 @@ } } } + else if (strcmp(Argv[1], "break_on_module_load") == 0) + { + if (Argc == 2) + KdbpPrint("break_on_module_load = %s\n", KdbBreakOnModuleLoad ? "enabled" : "disabled"); + else if (Argc >= 3) + { + if (_stricmp(Argv[2], "enable") == 0 || _stricmp(Argv[2], "enabled") == 0 || + _stricmp(Argv[2], "true") == 0) + KdbBreakOnModuleLoad = TRUE; + else if (_stricmp(Argv[2], "disable") == 0 || _stricmp(Argv[2], "disabled") == 0 || + _stricmp(Argv[2], "false") == 0) + KdbBreakOnModuleLoad = FALSE; + else + KdbpPrint("Unknown setting '%s'.\n", Argv[2]); + } + } else KdbpPrint("Unknown setting '%s'.\n", Argv[1]); @@ -1731,7 +1749,7 @@ if ((KdbNumberOfRowsTerminal < 0) || (KdbNumberOfColsTerminal < 0) || (KdbNumberOfRowsPrinted) == 0) /* Refresh terminal size each time when number of rows printed is 0 */ { - if ((KdbDebugState & KD_DEBUG_KDSERIAL) && TerminalReportsSize) + if ((KdbDebugState & KD_DEBUG_KDSERIAL) && TerminalConnected && TerminalReportsSize) { /* Try to query number of rows from terminal. A reply looks like "\x1b[8;24;80t" */ TerminalReportsSize = FALSE; @@ -1805,7 +1823,8 @@ /*DbgPrint("!%d!%d!%d!%d!", KdbNumberOfRowsPrinted, KdbNumberOfColsPrinted, i, RowsPrintedByTerminal);*/ /* Display a prompt if we printed one screen full of text */ - if ((LONG)(KdbNumberOfRowsPrinted + RowsPrintedByTerminal) >= KdbNumberOfRowsTerminal) + if (KdbNumberOfRowsTerminal > 0 && + (LONG)(KdbNumberOfRowsPrinted + RowsPrintedByTerminal) >= KdbNumberOfRowsTerminal) { if (KdbNumberOfColsPrinted > 0) DbgPrint("\n"); @@ -2246,7 +2265,8 @@ VOID KdbpCliModuleLoaded(IN PUNICODE_STRING Name) { - return; + if (!KdbBreakOnModuleLoad) + return; DbgPrint("Module %wZ loaded.\n", Name); DbgBreakPointWithStatus(DBG_STATUS_CONTROL_C); _____ Modified: trunk/reactos/ntoskrnl/ke/process.c --- trunk/reactos/ntoskrnl/ke/process.c 2005-10-08 12:43:38 UTC (rev 18327) +++ trunk/reactos/ntoskrnl/ke/process.c 2005-10-08 12:47:53 UTC (rev 18328) @@ -205,7 +205,6 @@ KiSwapProcess(PKPROCESS NewProcess, PKPROCESS OldProcess) { - /* FIXME: Write this in ASM. Much easier */ DPRINT("Switching CR3 to: %x\n", NewProcess->DirectoryTableBase.u.LowPart); Ke386SetPageTableDirectory(NewProcess->DirectoryTableBase.u.LowPart); }
19 years, 2 months
1
0
0
0
[gvg] 18327: Sync to Wine-20050930:
by gvg@svn.reactos.com
Sync to Wine-20050930: Alexandre Julliard <julliard(a)winehq.org> - Fixed a number of pointer to integer conversions that wouldn't work right on a 64-bit platform. - Now that we are requiring bison anyway, make the .tab.c file use the same base name as the .y file, so that we can generate correct dependencies in all cases. Modified: trunk/reactos/tools/wrc/Makefile.in Modified: trunk/reactos/tools/wrc/lex.yy.c Modified: trunk/reactos/tools/wrc/newstruc.c Modified: trunk/reactos/tools/wrc/parser.l Added: trunk/reactos/tools/wrc/parser.tab.c Added: trunk/reactos/tools/wrc/parser.tab.h Modified: trunk/reactos/tools/wrc/wrc.mak Deleted: trunk/reactos/tools/wrc/y.tab.c Deleted: trunk/reactos/tools/wrc/y.tab.h _____ Modified: trunk/reactos/tools/wrc/Makefile.in --- trunk/reactos/tools/wrc/Makefile.in 2005-10-08 12:24:39 UTC (rev 18326) +++ trunk/reactos/tools/wrc/Makefile.in 2005-10-08 12:43:38 UTC (rev 18327) @@ -4,7 +4,6 @@ SRCDIR = @srcdir@ VPATH = @srcdir@ LEXOPT = -Cf #-w -b -YACCOPT = #-v EXEEXT = @EXEEXT@ PROGRAMS = wrc$(EXEEXT) @@ -21,7 +20,7 @@ writeres.c EXTRA_SRCS = parser.y parser.l -EXTRA_OBJS = y.tab.o @LEX_OUTPUT_ROOT@.o +EXTRA_OBJS = parser.tab.o @LEX_OUTPUT_ROOT@.o all: $(PROGRAMS) @@ -30,17 +29,17 @@ 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 +parser.tab.c parser.tab.h: parser.y + $(BISON) -d -t $(SRCDIR)/parser.y -o parser.tab.c # hack to allow parallel make -y.tab.h: y.tab.c -y.tab.o: y.tab.h +parser.tab.h: parser.tab.c +parser.tab.o: parser.tab.h @LEX_OUTPUT_ROOT@.c: parser.l $(LEX) $(LEXOPT) -d -8 $(SRCDIR)/parser.l -@LEX_OUTPUT_ROOT@.o: y.tab.h +@LEX_OUTPUT_ROOT@.o: parser.tab.h install:: $(PROGRAMS) $(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext) _____ Modified: trunk/reactos/tools/wrc/lex.yy.c --- trunk/reactos/tools/wrc/lex.yy.c 2005-10-08 12:24:39 UTC (rev 18326) +++ trunk/reactos/tools/wrc/lex.yy.c 2005-10-08 12:43:38 UTC (rev 18327) @@ -7002,7 +7002,7 @@ #include "parser.h" #include "newstruc.h" -#include "y.tab.h" +#include "parser.tab.h" #define YY_USE_PROTOS #define YY_NO_UNPUT _____ Modified: trunk/reactos/tools/wrc/newstruc.c --- trunk/reactos/tools/wrc/newstruc.c 2005-10-08 12:24:39 UTC (rev 18326) +++ trunk/reactos/tools/wrc/newstruc.c 2005-10-08 12:43:38 UTC (rev 18327) @@ -819,8 +819,7 @@ isprint(rtp->tag[2]) ? rtp->tag[2] : '.', isprint(rtp->tag[3]) ? rtp->tag[3] : '.'); - /* FIXME: This relies in sizeof(DWORD) == sizeof(pointer_type) */ - if((DWORD)rtp & 1) + if((UINT_PTR)rtp & 1) rtp = SKIP_TAG(rtp,1); } } @@ -930,8 +929,7 @@ isprint(rtp->tag[2]) ? rtp->tag[2] : '.', isprint(rtp->tag[3]) ? rtp->tag[3] : '.'); - /* FIXME: This relies in sizeof(DWORD) == sizeof(pointer_type) */ - if((DWORD)rtp & 1) + if((UINT_PTR)rtp & 1) rtp = SKIP_TAG(rtp,1); } _____ Modified: trunk/reactos/tools/wrc/parser.l --- trunk/reactos/tools/wrc/parser.l 2005-10-08 12:24:39 UTC (rev 18326) +++ trunk/reactos/tools/wrc/parser.l 2005-10-08 12:43:38 UTC (rev 18327) @@ -109,7 +109,7 @@ #include "parser.h" #include "newstruc.h" -#include "y.tab.h" +#include "parser.tab.h" #define YY_USE_PROTOS #define YY_NO_UNPUT _____ Copied: trunk/reactos/tools/wrc/parser.tab.c (from rev 18319, trunk/reactos/tools/wrc/y.tab.c) --- trunk/reactos/tools/wrc/y.tab.c 2005-10-08 00:41:31 UTC (rev 18319) +++ trunk/reactos/tools/wrc/parser.tab.c 2005-10-08 12:43:38 UTC (rev 18327) @@ -0,0 +1,5593 @@ +/* A Bison parser, made by GNU Bison 1.875c. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Written by Richard Stallman by simplifying the original so called + ``semantic'' parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + tNL = 258, + tNUMBER = 259, + tLNUMBER = 260, + tSTRING = 261, + tIDENT = 262, + tFILENAME = 263, + tRAWDATA = 264, + tACCELERATORS = 265, + tBITMAP = 266, + tCURSOR = 267, + tDIALOG = 268, + tDIALOGEX = 269, + tMENU = 270, + tMENUEX = 271, + tMESSAGETABLE = 272, + tRCDATA = 273, + tVERSIONINFO = 274, + tSTRINGTABLE = 275, + tFONT = 276, + tFONTDIR = 277, + tICON = 278, + tHTML = 279, + tAUTO3STATE = 280, + tAUTOCHECKBOX = 281, + tAUTORADIOBUTTON = 282, + tCHECKBOX = 283, + tDEFPUSHBUTTON = 284, + tPUSHBUTTON = 285, + tRADIOBUTTON = 286, + tSTATE3 = 287, + tGROUPBOX = 288, + tCOMBOBOX = 289, + tLISTBOX = 290, + tSCROLLBAR = 291, + tCONTROL = 292, + tEDITTEXT = 293, + tRTEXT = 294, + tCTEXT = 295, + tLTEXT = 296, + tBLOCK = 297, + tVALUE = 298, + tSHIFT = 299, + tALT = 300, + tASCII = 301, + tVIRTKEY = 302, + tGRAYED = 303, + tCHECKED = 304, + tINACTIVE = 305, + tNOINVERT = 306, + tPURE = 307, + tIMPURE = 308, + tDISCARDABLE = 309, + tLOADONCALL = 310, + tPRELOAD = 311, + tFIXED = 312, + tMOVEABLE = 313, + tCLASS = 314, + tCAPTION = 315, + tCHARACTERISTICS = 316, + tEXSTYLE = 317, + tSTYLE = 318, + tVERSION = 319, + tLANGUAGE = 320, + tFILEVERSION = 321, + tPRODUCTVERSION = 322, + tFILEFLAGSMASK = 323, + tFILEOS = 324, + tFILETYPE = 325, + tFILEFLAGS = 326, + tFILESUBTYPE = 327, + tMENUBARBREAK = 328, + tMENUBREAK = 329, + tMENUITEM = 330, + tPOPUP = 331, + tSEPARATOR = 332, + tHELP = 333, + tTOOLBAR = 334, + tBUTTON = 335, + tBEGIN = 336, + tEND = 337, + tDLGINIT = 338, + tNOT = 339, + pUPM = 340 + }; +#endif +#define tNL 258 +#define tNUMBER 259 +#define tLNUMBER 260 +#define tSTRING 261 +#define tIDENT 262 +#define tFILENAME 263 +#define tRAWDATA 264 +#define tACCELERATORS 265 +#define tBITMAP 266 +#define tCURSOR 267 +#define tDIALOG 268 +#define tDIALOGEX 269 +#define tMENU 270 +#define tMENUEX 271 +#define tMESSAGETABLE 272 +#define tRCDATA 273 +#define tVERSIONINFO 274 +#define tSTRINGTABLE 275 +#define tFONT 276 +#define tFONTDIR 277 +#define tICON 278 +#define tHTML 279 +#define tAUTO3STATE 280 +#define tAUTOCHECKBOX 281 +#define tAUTORADIOBUTTON 282 +#define tCHECKBOX 283 +#define tDEFPUSHBUTTON 284 +#define tPUSHBUTTON 285 +#define tRADIOBUTTON 286 +#define tSTATE3 287 +#define tGROUPBOX 288 +#define tCOMBOBOX 289 +#define tLISTBOX 290 +#define tSCROLLBAR 291 +#define tCONTROL 292 +#define tEDITTEXT 293 +#define tRTEXT 294 +#define tCTEXT 295 +#define tLTEXT 296 +#define tBLOCK 297 +#define tVALUE 298 +#define tSHIFT 299 +#define tALT 300 +#define tASCII 301 +#define tVIRTKEY 302 +#define tGRAYED 303 +#define tCHECKED 304 +#define tINACTIVE 305 +#define tNOINVERT 306 +#define tPURE 307 +#define tIMPURE 308 +#define tDISCARDABLE 309 +#define tLOADONCALL 310 +#define tPRELOAD 311 +#define tFIXED 312 +#define tMOVEABLE 313 +#define tCLASS 314 +#define tCAPTION 315 +#define tCHARACTERISTICS 316 +#define tEXSTYLE 317 +#define tSTYLE 318 +#define tVERSION 319 +#define tLANGUAGE 320 +#define tFILEVERSION 321 +#define tPRODUCTVERSION 322 +#define tFILEFLAGSMASK 323 +#define tFILEOS 324 +#define tFILETYPE 325 +#define tFILEFLAGS 326 +#define tFILESUBTYPE 327 +#define tMENUBARBREAK 328 +#define tMENUBREAK 329 +#define tMENUITEM 330 +#define tPOPUP 331 +#define tSEPARATOR 332 +#define tHELP 333 +#define tTOOLBAR 334 +#define tBUTTON 335 +#define tBEGIN 336 +#define tEND 337 +#define tDLGINIT 338 +#define tNOT 339 +#define pUPM 340 + + + + +/* Copy the first part of user declarations. */ +#line 1 "./parser.y" + +/* + * Copyright 1994 Martin von Loewis + * Copyright 1998-2000 Bertho A. Stultiens (BS) + * 1999 Juergen Schmied (JS) + * + * 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 + * + * History: + * 24-Jul-2000 BS - Made a fix for broken Berkeley yacc on + * non-terminals (see cjunk rule). + * 21-May-2000 BS - Partial implementation of font resources. + * - Corrected language propagation for binary + * resources such as bitmaps, icons, cursors, + * userres and rcdata. The language is now + * correct in .res files. + * - Fixed reading the resource name as ident, + * so that it may overlap keywords. + * 20-May-2000 BS - Implemented animated cursors and icons + * resource types. + * 30-Apr-2000 BS - Reintegration into the wine-tree + * 14-Jan-2000 BS - Redid the usertype resources so that they + * are compatible. + * 02-Jan-2000 BS - Removed the preprocessor from the grammar + * except for the # command (line numbers). + * + * 06-Nov-1999 JS - see CHANGES + * + * 29-Dec-1998 AdH - Grammar and function extensions. + * grammar: TOOLBAR resources, Named ICONs in + * DIALOGS + * functions: semantic actions for the grammar + * changes, resource files can now be anywhere + * on the include path instead of just in the + * current directory + * + * 20-Jun-1998 BS - Fixed a bug in load_file() where the name was not + * printed out correctly. + * + * 17-Jun-1998 BS - Fixed a bug in CLASS statement parsing which should + * also accept a tSTRING as argument. + * + * 25-May-1998 BS - Found out that I need to support language, version + * and characteristics in inline resources (bitmap, + * cursor, etc) but they can also be specified with + * a filename. This renders my filename-scanning scheme + * worthless. Need to build newline parsing to solve + * this one. + * It will come with version 1.1.0 (sigh). + * + * 19-May-1998 BS - Started to build a builtin preprocessor + * + * 30-Apr-1998 BS - Redid the stringtable parsing/handling. My previous + * ideas had some serious flaws. + * + * 27-Apr-1998 BS - Removed a lot of dead comments and put it in a doc + * file. + * + * 21-Apr-1998 BS - Added correct behavior for cursors and icons. + * - This file is growing too big. It is time to strip + * things and put it in a support file. + * + * 19-Apr-1998 BS - Tagged the stringtable resource so that only one + * resource will be created. This because the table + * has a different layout than other resources. The + * table has to be sorted, and divided into smaller + * resource entries (see comment in source). + * + * 17-Apr-1998 BS - Almost all strings, including identifiers, are parsed + * as string_t which include unicode strings upon + * input. + * - Parser now emits a warning when compiling win32 + * extensions in win16 mode. + * + * 16-Apr-1998 BS - Raw data elements are now *optionally* separated + * by commas. Read the comments in file sq2dq.l. + * - FIXME: there are instances in the source that rely + * on the fact that int==32bit and pointers are int size. + * - Fixed the conflict in menuex by changing a rule + * back into right recursion. See note in source. + * - UserType resources cannot have an expression as its + * typeclass. See note in source. + * + * 15-Apr-1998 BS - Changed all right recursion into left recursion to + * get reduction of the parsestack. + * This also helps communication between bison and flex. + * Main advantage is that the Empty rule gets reduced + * first, which is used to allocate/link things. + * It also added a shift/reduce conflict in the menuex + * handling, due to expression/option possibility, + * although not serious. + * + * 14-Apr-1998 BS - Redone almost the entire parser. We're not talking + * about making it more efficient, but readable (for me) + * and slightly easier to expand/change. + * This is done primarily by using more reduce states + * with many (intuitive) types for the various resource + * statements. + * - Added expression handling for all resources where a + * number is accepted (not only for win32). Also added + * multiply and division (not MS compatible, but handy). + * Unary minus introduced a shift/reduce conflict, but + * it is not serious. + * + * 13-Apr-1998 BS - Reordered a lot of things + * - Made the source more readable + * - Added Win32 resource definitions + * - Corrected syntax problems with an old yacc (;) + * - Added extra comment about grammar + */ +#include "config.h" +#include "wine/port.h" + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <assert.h> +#include <ctype.h> +#include <string.h> +#ifdef HAVE_ALLOCA_H +#include <alloca.h> +#endif + +#include "wrc.h" +#include "utils.h" +#include "newstruc.h" +#include "dumpres.h" +#include "wine/wpp.h" +#include "wine/unicode.h" +#include "parser.h" +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" + +#if defined(YYBYACC) + /* Berkeley yacc (byacc) doesn't seem to know about these */ + /* Some *BSD supplied versions do define these though */ +# ifndef YYEMPTY +# define YYEMPTY (-1) /* Empty lookahead value of yychar */ +# endif +# ifndef YYLEX +# define YYLEX yylex() +# endif + +#elif defined(YYBISON) + /* Bison was used for original development */ + /* #define YYEMPTY -2 */ + /* #define YYLEX yylex() */ + +#else + /* No yacc we know yet */ +# if !defined(YYEMPTY) || !defined(YYLEX) +# error Yacc version/type unknown. This version needs to be verified for settings of YYEMPTY and YYLEX. +# elif defined(__GNUC__) /* gcc defines the #warning directive */ +# warning Yacc version/type unknown. It defines YYEMPTY and YYLEX, but is not tested + /* #else we just take a chance that it works... */ +# endif +#endif + +int want_nl = 0; /* Signal flex that we need the next newline */ +int want_id = 0; /* Signal flex that we need the next identifier */ +stringtable_t *tagstt; /* Stringtable tag. + * It is set while parsing a stringtable to one of + * the stringtables in the sttres list or a new one + * if the language was not parsed before. + */ +stringtable_t *sttres; /* Stringtable resources. This holds the list of + * stringtables with different lanuages + */ +static int dont_want_id = 0; /* See language parsing for details */ + +/* Set to the current options of the currently scanning stringtable */ +static int *tagstt_memopt; +static characts_t *tagstt_characts; +static version_t *tagstt_version; + +static const char riff[4] = "RIFF"; /* RIFF file magic for animated cursor/icon */ + +/* Prototypes of here defined functions */ +static event_t *get_event_head(event_t *p); +static control_t *get_control_head(control_t *p); +static ver_value_t *get_ver_value_head(ver_value_t *p); +static ver_block_t *get_ver_block_head(ver_block_t *p); +static resource_t *get_resource_head(resource_t *p); +static menuex_item_t *get_itemex_head(menuex_item_t *p); +static menu_item_t *get_item_head(menu_item_t *p); +static raw_data_t *merge_raw_data_str(raw_data_t *r1, string_t *str); +static raw_data_t *merge_raw_data_int(raw_data_t *r1, int i); +static raw_data_t *merge_raw_data_long(raw_data_t *r1, int i); +static raw_data_t *merge_raw_data(raw_data_t *r1, raw_data_t *r2); +static raw_data_t *str2raw_data(string_t *str); +static raw_data_t *int2raw_data(int i); +static raw_data_t *long2raw_data(int i); +static raw_data_t *load_file(string_t *name, language_t *lang); +static itemex_opt_t *new_itemex_opt(int id, int type, int state, int helpid); +static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev); +static event_t *add_event(int key, int id, int flags, event_t *prev); +static dialogex_t *dialogex_version(version_t *v, dialogex_t *dlg); +static dialogex_t *dialogex_characteristics(characts_t *c, dialogex_t *dlg); +static dialogex_t *dialogex_language(language_t *l, dialogex_t *dlg); +static dialogex_t *dialogex_menu(name_id_t *m, dialogex_t *dlg); +static dialogex_t *dialogex_class(name_id_t *n, dialogex_t *dlg); +static dialogex_t *dialogex_font(font_id_t *f, dialogex_t *dlg); +static dialogex_t *dialogex_caption(string_t *s, dialogex_t *dlg); +static dialogex_t *dialogex_exstyle(style_t *st, dialogex_t *dlg); +static dialogex_t *dialogex_style(style_t *st, dialogex_t *dlg); +static name_id_t *convert_ctlclass(name_id_t *cls); +static control_t *ins_ctrl(int type, int special_style, control_t *ctrl, control_t *prev); +static dialog_t *dialog_version(version_t *v, dialog_t *dlg); +static dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg); +static dialog_t *dialog_language(language_t *l, dialog_t *dlg); +static dialog_t *dialog_menu(name_id_t *m, dialog_t *dlg); +static dialog_t *dialog_class(name_id_t *n, dialog_t *dlg); +static dialog_t *dialog_font(font_id_t *f, dialog_t *dlg); +static dialog_t *dialog_caption(string_t *s, dialog_t *dlg); +static dialog_t *dialog_exstyle(style_t * st, dialog_t *dlg); +static dialog_t *dialog_style(style_t * st, dialog_t *dlg); +static resource_t *build_stt_resources(stringtable_t *stthead); +static stringtable_t *find_stringtable(lvc_t *lvc); +static toolbar_item_t *ins_tlbr_button(toolbar_item_t *prev, toolbar_item_t *idrec); +static toolbar_item_t *get_tlbr_buttons_head(toolbar_item_t *p, int *nitems); +static string_t *make_filename(string_t *s); +static resource_t *build_fontdirs(resource_t *tail); +static resource_t *build_fontdir(resource_t **fnt, int nfnt); +static int rsrcid_to_token(int lookahead); + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 241 "./parser.y" +typedef union YYSTYPE { + string_t *str; + int num; + int *iptr; + char *cptr; + resource_t *res; + accelerator_t *acc; + bitmap_t *bmp; + dialog_t *dlg; + dialogex_t *dlgex; + font_t *fnt; + fontdir_t *fnd; + menu_t *men; + menuex_t *menex; + html_t *html; + rcdata_t *rdt; + stringtable_t *stt; + stt_entry_t *stte; + user_t *usr; + messagetable_t *msg; + versioninfo_t *veri; + control_t *ctl; + name_id_t *nid; + font_id_t *fntid; + language_t *lan; + version_t *ver; + characts_t *chars; + event_t *event; + menu_item_t *menitm; + menuex_item_t *menexitm; + itemex_opt_t *exopt; + raw_data_t *raw; + lvc_t *lvc; + ver_value_t *val; + ver_block_t *blk; + ver_words_t *verw; + toolbar_t *tlbar; + toolbar_item_t *tlbarItems; + dlginit_t *dginit; + style_pair_t *styles; + style_t *style; + ani_any_t *ani; +} YYSTYPE; +/* Line 191 of yacc.c. */ +#line 531 "parser.tab.c" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 214 of yacc.c. */ +#line 543 "parser.tab.c" + +#if ! defined (yyoverflow) || YYERROR_VERBOSE + +# ifndef YYFREE +# define YYFREE free +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# endif + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# define YYSTACK_ALLOC alloca +# endif +# else +# if defined (alloca) || defined (_ALLOCA_H) +# define YYSTACK_ALLOC alloca +# else +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# endif +#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined (__GNUC__) && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + register YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined (__STDC__) || defined (__cplusplus) + typedef signed char yysigned_char; +#else + typedef short yysigned_char; +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 713 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 97 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 84 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 259 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 575 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 340 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const unsigned char yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 86, 2, + 95, 96, 89, 87, 94, 88, 2, 90, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 85, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 84, 2, 91, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 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, 92, + 93 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const unsigned short yyprhs[] = +{ + 0, 0, 3, 5, 6, 9, 12, 16, 20, 22, + 23, 29, 30, 32, 34, 36, 38, 40, 42, 44, + 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, + 66, 68, 70, 72, 74, 76, 78, 82, 86, 90, + 94, 98, 102, 106, 110, 114, 118, 120, 122, 129, + 130, 136, 142, 143, 146, 148, 152, 154, 156, 158, + 160, 162, 164, 178, 179, 183, 187, 191, 194, 198, + 202, 205, 208, 211, 212, 216, 220, 224, 228, 232, + 236, 240, 244, 248, 252, 256, 260, 264, 268, 272, + 276, 280, 291, 304, 315, 316, 321, 328, 337, 355, + 371, 376, 377, 380, 385, 389, 393, 395, 398, 400, + 402, 417, 418, 422, 426, 430, 433, 436, 440, 444, + 447, 450, 453, 454, 458, 462, 466, 470, 474, 478, + 482, 486, 490, 494, 498, 502, 506, 510, 514, 518, + 522, 533, 553, 570, 585, 598, 599, 601, 602, 605, + 615, 616, 619, 624, 628, 629, 636, 640, 646, 647, + 651, 655, 659, 663, 667, 671, 676, 680, 681, 686, + 690, 696, 697, 700, 706, 713, 714, 717, 722, 729, + 738, 743, 747, 748, 753, 754, 756, 763, 764, 774, + 784, 788, 792, 796, 800, 804, 805, 808, 814, 815, + 818, 820, 825, 830, 832, 836, 846, 847, 851, 854, + 855, 858, 861, 863, 865, 867, 869, 871, 873, 875, + 876, 879, 882, 885, 890, 893, 896, 901, 903, 905, + 908, 910, 913, 915, 919, 923, 928, 932, 937, 941, + 943, 945, 946, 948, 950, 954, 958, 962, 966, 970, + 974, 978, 981, 984, 987, 991, 993, 995, 998, 1000 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const short yyrhs[] = +{ + 98, 0, -1, 99, -1, -1, 99, 100, -1, 99, + 3, -1, 177, 102, 105, -1, 7, 102, 105, -1, + 153, -1, -1, 65, 101, 177, 94, 177, -1, -1, + 177, -1, 7, -1, 103, -1, 6, -1, 118, -1, + 107, -1, 108, -1, 123, -1, 134, -1, 115, -1, + 110, -1, 111, -1, 109, -1, 144, -1, 148, -1, + 112, -1, 113, -1, 114, -1, 164, -1, 116, -1, + 157, -1, 8, -1, 7, -1, 6, -1, 11, 166, + 175, -1, 12, 166, 175, -1, 23, 166, 175, -1, + 21, 166, 175, -1, 22, 166, 175, -1, 17, 166, + 175, -1, 24, 166, 175, -1, 18, 166, 175, -1, + 83, 166, 175, -1, 117, 166, 175, -1, 4, -1, + 7, -1, 10, 166, 169, 81, 119, 82, -1, -1, + 119, 6, 94, 177, 120, -1, 119, 177, 94, 177, + 120, -1, -1, 94, 121, -1, 122, -1, 121, 94, + 122, -1, 51, -1, 44, -1, 37, -1, 45, -1, + 46, -1, 47, -1, 13, 166, 177, 94, 177, 94, + 177, 94, 177, 124, 81, 125, 82, -1, -1, 124, + 63, 132, -1, 124, 62, 132, -1, 124, 60, 6, + -1, 124, 130, -1, 124, 59, 104, -1, 124, 15, + 103, -1, 124, 170, -1, 124, 171, -1, 124, 172, + -1, -1, 125, 37, 129, -1, 125, 38, 127, -1, + 125, 35, 127, -1, 125, 34, 127, -1, 125, 36, + 127, -1, 125, 28, 126, -1, 125, 29, 126, -1, + 125, 33, 126, -1, 125, 30, 126, -1, 125, 31, + 126, -1, 125, 25, 126, -1, 125, 32, 126, -1, + 125, 26, 126, -1, 125, 27, 126, -1, 125, 41, + 126, -1, 125, 40, 126, -1, 125, 39, 126, -1, + 125, 23, 104, 156, 177, 94, 177, 94, 177, 128, + -1, 6, 156, 177, 94, 177, 94, 177, 94, 177, + 94, 177, 131, -1, 177, 94, 177, 94, 177, 94, + 177, 94, 177, 131, -1, -1, 94, 177, 94, 177, + -1, 94, 177, 94, 177, 94, 132, -1, 94, 177, + 94, 177, 94, 132, 94, 132, -1, 104, 156, 177, + 94, 133, 94, 132, 94, 177, 94, 177, 94, 177, + 94, 177, 94, 132, -1, 104, 156, 177, 94, 133, + 94, 132, 94, 177, 94, 177, 94, 177, 94, 177, + -1, 21, 177, 94, 6, -1, -1, 94, 132, -1, + 94, 132, 94, 132, -1, 132, 84, 132, -1, 95, + 132, 96, -1, 178, -1, 92, 178, -1, 177, -1, + 6, -1, 14, 166, 177, 94, 177, 94, 177, 94, + 177, 141, 135, 81, 136, 82, -1, -1, 135, 63, + 132, -1, 135, 62, 132, -1, 135, 60, 6, -1, + 135, 130, -1, 135, 142, -1, 135, 59, 104, -1, + 135, 15, 103, -1, 135, 170, -1, 135, 171, -1, + 135, 172, -1, -1, 136, 37, 137, -1, 136, 38, + 139, -1, 136, 35, 139, -1, 136, 34, 139, -1, + 136, 36, 139, -1, 136, 28, 138, -1, 136, 29, + 138, -1, 136, 33, 138, -1, 136, 30, 138, -1, + 136, 31, 138, -1, 136, 25, 138, -1, 136, 32, + 138, -1, 136, 26, 138, -1, 136, 27, 138, -1, + 136, 41, 138, -1, 136, 40, 138, -1, 136, 39, + 138, -1, 136, 23, 104, 156, 177, 94, 177, 94, + 177, 128, -1, 104, 156, 177, 94, 133, 94, 132, + 94, 177, 94, 177, 94, 177, 94, 177, 94, 132, + 141, 140, -1, 104, 156, 177, 94, 133, 94, 132, + 94, 177, 94, 177, 94, 177, 94, 177, 140, -1, + 6, 156, 177, 94, 177, 94, 177, 94, 177, 94, + 177, 131, 141, 140, -1, 177, 94, 177, 94, 177, + 94, 177, 94, 177, 131, 141, 140, -1, -1, 173, + -1, -1, 94, 177, -1, 21, 177, 94, 6, 94, + 177, 94, 177, 143, -1, -1, 94, 177, -1, 15, + 166, 169, 145, -1, 81, 146, 82, -1, -1, 146, + 75, 6, 156, 177, 147, -1, 146, 75, 77, -1, + 146, 76, 6, 147, 145, -1, -1, 156, 49, 147, + -1, 156, 48, 147, -1, 156, 78, 147, -1, 156, + 50, 147, -1, 156, 73, 147, -1, 156, 74, 147, + -1, 16, 166, 169, 149, -1, 81, 150, 82, -1, + -1, 150, 75, 6, 151, -1, 150, 75, 77, -1, + 150, 76, 6, 152, 149, -1, -1, 94, 177, -1, + 94, 176, 94, 176, 147, -1, 94, 176, 94, 176, + 94, 177, -1, -1, 94, 177, -1, 94, 176, 94, + 177, -1, 94, 176, 94, 176, 94, 177, -1, 94, + 176, 94, 176, 94, 176, 94, 177, -1, 154, 81, + 155, 82, -1, 20, 166, 169, -1, -1, 155, 177, + 156, 6, -1, -1, 94, -1, 19, 166, 158, 81, + 159, 82, -1, -1, 158, 66, 177, 94, 177, 94, + 177, 94, 177, -1, 158, 67, 177, 94, 177, 94, + 177, 94, 177, -1, 158, 71, 177, -1, 158, 68, + 177, -1, 158, 69, 177, -1, 158, 70, 177, -1, + 158, 72, 177, -1, -1, 159, 160, -1, 42, 6, + 81, 161, 82, -1, -1, 161, 162, -1, 160, -1, + 43, 6, 94, 6, -1, 43, 6, 94, 163, -1, + 177, -1, 163, 94, 177, -1, 79, 166, 177, 94, + 177, 169, 81, 165, 82, -1, -1, 165, 80, 177, + -1, 165, 77, -1, -1, 166, 167, -1, 166, 168, + -1, 56, -1, 58, -1, 54, -1, 52, -1, 55, + -1, 57, -1, 53, -1, -1, 169, 170, -1, 169, + 171, -1, 169, 172, -1, 65, 177, 94, 177, -1, + 61, 177, -1, 64, 177, -1, 169, 81, 174, 82, + -1, 9, -1, 4, -1, 88, 4, -1, 5, -1, + 88, 5, -1, 6, -1, 174, 156, 9, -1, 174, + 156, 4, -1, 174, 156, 88, 4, -1, 174, 156, + 5, -1, 174, 156, 88, 5, -1, 174, 156, 6, + -1, 106, -1, 173, -1, -1, 177, -1, 179, -1, + 179, 87, 179, -1, 179, 88, 179, -1, 179, 84, + 179, -1, 179, 86, 179, -1, 179, 89, 179, -1, + 179, 90, 179, -1, 179, 85, 179, -1, 91, 179, + -1, 88, 179, -1, 87, 179, -1, 95, 179, 96, + -1, 180, -1, 178, -1, 92, 180, -1, 4, -1, + 5, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const unsigned short yyrline[] = +{ + 0, 364, 364, 398, 399, 469, 475, 487, 497, 505, + 505, 549, 555, 562, 572, 573, 582, 583, 584, 608, + 609, 615, 616, 617, 618, 642, 643, 649, 650, 651, + 652, 653, 654, 658, 659, 660, 664, 668, 684, 706, + 716, 724, 732, 736, 740, 744, 755, 760, 769, 793, + 794, 795, 804, 805, 808, 809, 812, 813, 814, 815, + 816, 817, 822, 857, 858, 859, 860, 861, 862, 863, + 864, 865, 866, 869, 870, 871, 872, 873, 874, 875, + 876, 877, 878, 880, 881, 882, 883, 884, 885, 886, + 887, 889, 899, 924, 946, 948, 953, 960, 971, 985, + 1000, 1005, 1006, 1007, 1011, 1012, 1013, 1014, 1018, 1023, + 1031, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, + 1084, 1085, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, + 1096, 1097, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, + 1108, 1118, 1143, 1159, 1187, 1210, 1211, 1214, 1215, 1219, + 1226, 1227, 1231, 1254, 1258, 1259, 1268, 1274, 1293, 1294, + 1295, 1296, 1297, 1298, 1299, 1303, 1328, 1332, 1333, 1349, + 1355, 1375, 1376, 1380, 1388, 1399, 1400, 1404, 1410, 1418, + 1438, 1479, 1490, 1491, 1524, 1526, 1531, 1547, 1548, 1558, + 1568, 1575, 1582, 1589, 1596, 1606, 1607, 1616, 1624, 1625, + 1634, 1639, 1645, 1654, 1655, 1659, 1685, 1686, 1691, 1700, + 1701, 1711, 1726, 1727, 1728, 1729, 1732, 1733, 1734, 1738, + 1739, 1747, 1755, 1773, 1780, 1784, 1788, 1803, 1804, 1805, + 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1818, + 1819, 1826, 1827, 1831, 1834, 1835, 1836, 1837, 1838, 1839, + 1840, 1841, 1842, 1843, 1844, 1845, 1849, 1850, 1853, 1854 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE +/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "tNL", "tNUMBER", "tLNUMBER", "tSTRING", + "tIDENT", "tFILENAME", "tRAWDATA", "tACCELERATORS", "tBITMAP", "tCURSOR", + "tDIALOG", "tDIALOGEX", "tMENU", "tMENUEX", "tMESSAGETABLE", "tRCDATA", + "tVERSIONINFO", "tSTRINGTABLE", "tFONT", "tFONTDIR", "tICON", "tHTML", + "tAUTO3STATE", "tAUTOCHECKBOX", "tAUTORADIOBUTTON", "tCHECKBOX", + "tDEFPUSHBUTTON", "tPUSHBUTTON", "tRADIOBUTTON", "tSTATE3", "tGROUPBOX", + "tCOMBOBOX", "tLISTBOX", "tSCROLLBAR", "tCONTROL", "tEDITTEXT", "tRTEXT", + "tCTEXT", "tLTEXT", "tBLOCK", "tVALUE", "tSHIFT", "tALT", "tASCII", + "tVIRTKEY", "tGRAYED", "tCHECKED", "tINACTIVE", "tNOINVERT", "tPURE", + "tIMPURE", "tDISCARDABLE", "tLOADONCALL", "tPRELOAD", "tFIXED", + "tMOVEABLE", "tCLASS", "tCAPTION", "tCHARACTERISTICS", "tEXSTYLE", + "tSTYLE", "tVERSION", "tLANGUAGE", "tFILEVERSION", "tPRODUCTVERSION", + "tFILEFLAGSMASK", "tFILEOS", "tFILETYPE", "tFILEFLAGS", "tFILESUBTYPE", + "tMENUBARBREAK", "tMENUBREAK", "tMENUITEM", "tPOPUP", "tSEPARATOR", + "tHELP", "tTOOLBAR", "tBUTTON", "tBEGIN", "tEND", "tDLGINIT", "'|'", + "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'~'", "tNOT", "pUPM", "','", + "'('", "')'", "$accept", "resource_file", "resources", "resource", "@1", + "usrcvt", "nameid", "nameid_s", "resource_definition", "filename", + "bitmap", "cursor", "icon", "font", "fontdir", "messagetable", "html", + "rcdata", "dlginit", "userres", "usertype", "accelerators", "events", [truncated at 1000 lines; 10840 more skipped]
19 years, 2 months
1
0
0
0
[hpoussin] 18326: Fix Hardware IDs and Compatible IDs returned for PCI devices
by hpoussin@svn.reactos.com
Fix Hardware IDs and Compatible IDs returned for PCI devices Modified: trunk/reactos/drivers/bus/pci/pci.c _____ Modified: trunk/reactos/drivers/bus/pci/pci.c --- trunk/reactos/drivers/bus/pci/pci.c 2005-10-08 12:18:07 UTC (rev 18325) +++ trunk/reactos/drivers/bus/pci/pci.c 2005-10-08 12:24:39 UTC (rev 18326) @@ -288,6 +288,23 @@ Device->PciConfig.u.type0.SubVendorID); Index++; + Index += swprintf(&Buffer[Index], + L"PCI\\VEN_%04X&DEV_%04X&CC_%02X%02X%02X", + Device->PciConfig.VendorID, + Device->PciConfig.DeviceID, + Device->PciConfig.BaseClass, + Device->PciConfig.SubClass, + Device->PciConfig.ProgIf); + Index++; + + Index += swprintf(&Buffer[Index], + L"PCI\\VEN_%04X&DEV_%04X&CC_%02X%02X", + Device->PciConfig.VendorID, + Device->PciConfig.DeviceID, + Device->PciConfig.BaseClass, + Device->PciConfig.SubClass); + Index++; + Buffer[Index] = UNICODE_NULL; Length = (Index + 1) * sizeof(WCHAR); @@ -315,32 +332,19 @@ Index = 0; Index += swprintf(&Buffer[Index], - L"PCI\\VEN_%04X&DEV_%04X&REV_%02X&CC_%02X%02X", + L"PCI\\VEN_%04X&DEV_%04X&REV_%02X", Device->PciConfig.VendorID, Device->PciConfig.DeviceID, - Device->PciConfig.RevisionID, - Device->PciConfig.BaseClass, - Device->PciConfig.SubClass); + Device->PciConfig.RevisionID); Index++; Index += swprintf(&Buffer[Index], - L"PCI\\VEN_%04X&DEV_%04X&CC_%02X%02X%02X", + L"PCI\\VEN_%04X&DEV_%04X", Device->PciConfig.VendorID, - Device->PciConfig.DeviceID, - Device->PciConfig.BaseClass, - Device->PciConfig.SubClass, - Device->PciConfig.ProgIf); + Device->PciConfig.DeviceID); Index++; Index += swprintf(&Buffer[Index], - L"PCI\\VEN_%04X&DEV_%04X&CC_%02X%02X", - Device->PciConfig.VendorID, - Device->PciConfig.DeviceID, - Device->PciConfig.BaseClass, - Device->PciConfig.SubClass); - Index++; - - Index += swprintf(&Buffer[Index], L"PCI\\VEN_%04X&CC_%02X%02X%02X", Device->PciConfig.VendorID, Device->PciConfig.BaseClass,
19 years, 2 months
1
0
0
0
[gvg] 18325: Sync to Wine-20050930:
by gvg@svn.reactos.com
Sync to Wine-20050930: Alexandre Julliard <julliard(a)winehq.org> - Generate 16-bit spec files as assembly code too. - Output the resource data in assembly too. - Factor out a couple of useful helper functions. - Store RVAs instead of pointers wherever possible in the generated NT header and directories. - Output constant strings in a more appropriate section than .text. - Make sure that values of absolute symbols fit in 16 bits. - Implemented import thunks for x86-64. - Generate stub functions directly in assembly. - Moved stub function generation to import.c. Added a get_stub_name function to ensure naming consistency. - Now that everything is done in assembly in the spec file, directly generate a .s file to bypass gcc inefficiency with large data structures. - Added support for 64-bit format NT header and export/import tables. - Now that we have to be able to run the assembler from winebuild, added an option to generate a .spec.o file in a single step. Added --save-temps and --verbose options for easier debugging. - Added an entry point routine for native drivers. - Added a bit of framework for future x86_64 support. - Create an assembly file with all undefined symbols and add it to the link command so that the symbols show up in the final undefined list. Use that list to create thunks for all exported but undefined symbols, to make sure all export RVAs point somewhere inside the module. - Take into account -noname functions when checking for duplicate export names. Fixed a couple of issues found by the stricter check. - Generate the NT header in assembly instead of using a C structure. - Don't remove ignored symbols from the undefined list, simply skip them when resolving imports. Added get_temp_file_name utility function. - Fixed stack offset of %eax register. - Output the delayed import table using assembly too. - Added a common function to declare global symbols, and make them hidden on platforms that support it. - Fixed a number of pointer to integer conversions that wouldn't work right on a 64-bit platform. - Output the import directory using assembly instead of C structures. - Defined a proper structure for debug channels. Also put all the function pointers inside a structure and added __wine_dbg_set_functions to change them instead of exporting the pointers directly. - Moved return value handling to the individual relay thunks so that we only need one version of wine_call_from_16. Patch the wine_call_from_16 address along with the cs value directly in the 16-bit code segment to avoid the need for special magic in the import thunks. - Moved the spec file init function and constructor to winecrt0. - Make the users of wine_call_from_32_regs save %eax so that we don't need a special hack in the import thunk. Added a get_pc_thunk_eax function to simplify the code a bit. - Get rid of the debug channels support. Modified: trunk/reactos/lib/shdocvw/shdocvw.spec Modified: trunk/reactos/lib/shlwapi/shlwapi.spec Modified: trunk/reactos/tools/winebuild/build.h Modified: trunk/reactos/tools/winebuild/import.c Modified: trunk/reactos/tools/winebuild/main.c Modified: trunk/reactos/tools/winebuild/parser.c Modified: trunk/reactos/tools/winebuild/relay.c Modified: trunk/reactos/tools/winebuild/res16.c Modified: trunk/reactos/tools/winebuild/res32.c Modified: trunk/reactos/tools/winebuild/spec16.c Modified: trunk/reactos/tools/winebuild/spec32.c Modified: trunk/reactos/tools/winebuild/utils.c Modified: trunk/reactos/tools/winebuild/winebuild.man.in Modified: trunk/reactos/tools/winebuild/winglue.h _____ Modified: trunk/reactos/lib/shdocvw/shdocvw.spec --- trunk/reactos/lib/shdocvw/shdocvw.spec 2005-10-08 11:26:13 UTC (rev 18324) +++ trunk/reactos/lib/shdocvw/shdocvw.spec 2005-10-08 12:18:07 UTC (rev 18325) @@ -65,7 +65,7 @@ 185 stub -noname FireEvent_Quit 187 stub -noname SHDGetPageLocation 188 stub -noname SHIEErrorMsgBox -189 stub -noname IEGetDisplayName +189 stub @ # FIXME: same as ordinal 148 190 stub -noname SHRunIndirectRegClientCommandForward 191 stub -noname SHIsRegisteredClient 192 stub -noname SHGetHistoryPIDL _____ Modified: trunk/reactos/lib/shlwapi/shlwapi.spec --- trunk/reactos/lib/shlwapi/shlwapi.spec 2005-10-08 11:26:13 UTC (rev 18324) +++ trunk/reactos/lib/shlwapi/shlwapi.spec 2005-10-08 12:18:07 UTC (rev 18325) @@ -493,8 +493,8 @@ 493 stub -noname SHPropertyBag_ReadType 494 stub -noname SHPropertyBag_ReadStr 495 stub -noname SHPropertyBag_WriteStr -496 stub -noname SHPropertyBag_ReadInt -497 stub -noname SHPropertyBag_WriteInt +496 stub -noname SHPropertyBag_ReadLONG +497 stub -noname SHPropertyBag_WriteLONG 498 stub -noname SHPropertyBag_ReadBOOLOld 499 stub -noname SHPropertyBag_WriteBOOL @@ -531,7 +531,7 @@ 535 stub -noname SHPropertyBag_Delete 536 stub -noname IUnknown_QueryServicePropertyBag 537 stub -noname SHBoolSystemParametersInfo -538 stub -noname IUnknown_QueryServicePropertyBag +538 stub -noname IUnknown_QueryServiceForWebBrowserApp 539 stub -noname IUnknown_ShowBrowserBar 540 stub -noname SHInvokeCommandOnContextMenu 541 stub -noname SHInvokeCommandsOnContextMen _____ Modified: trunk/reactos/tools/winebuild/build.h --- trunk/reactos/tools/winebuild/build.h 2005-10-08 11:26:13 UTC (rev 18324) +++ trunk/reactos/tools/winebuild/build.h 2005-10-08 12:18:07 UTC (rev 18325) @@ -63,14 +63,13 @@ typedef struct { - int value; + unsigned short value; } ORD_ABS; typedef struct { ORD_TYPE type; int ordinal; - int offset; int lineno; int flags; char *name; /* public name of this function */ @@ -110,7 +109,7 @@ enum target_cpu { - CPU_x86, CPU_SPARC, CPU_ALPHA, CPU_POWERPC + CPU_x86, CPU_x86_64, CPU_SPARC, CPU_ALPHA, CPU_POWERPC }; enum target_platform @@ -131,6 +130,7 @@ #define FLAG_PRIVATE 0x40 /* function is private (cannot be imported) */ #define FLAG_FORWARD 0x80 /* function is a forwarded name */ +#define FLAG_EXT_LINK 0x100 /* function links to an external symbol */ /* Offset of a structure field relative to the start of the struct */ #define STRUCTOFFSET(type,field) ((int)&((type *)0)->field) @@ -169,22 +169,28 @@ __attribute__ ((__format__ (__printf__, 1, 2))); extern void warning( const char *msg, ... ) __attribute__ ((__format__ (__printf__, 1, 2))); +extern char *get_temp_file_name( const char *prefix, const char *suffix ); extern void output_standard_file_header( FILE *outfile ); extern FILE *open_input_file( const char *srcdir, const char *name ); extern void close_input_file( FILE *file ); -extern void dump_bytes( FILE *outfile, const unsigned char *data, int len, - const char *label, int constant ); +extern void dump_bytes( FILE *outfile, const void *buffer, unsigned int size ); extern int remove_stdcall_decoration( char *name ); +extern void assemble_file( const char *src_file, const char *obj_file ); extern DLLSPEC *alloc_dll_spec(void); extern void free_dll_spec( DLLSPEC *spec ); extern const char *make_c_identifier( const char *str ); +extern const char *get_stub_name( const ORDDEF *odp, const DLLSPEC *spec ); extern unsigned int get_alignment(unsigned int align); extern unsigned int get_page_size(void); +extern unsigned int get_ptr_size(void); extern const char *asm_name( const char *func ); extern const char *func_declaration( const char *func ); -extern const char *func_size( const char *func ); +extern const char *asm_globl( const char *func ); +extern const char *get_asm_ptr_keyword(void); extern const char *get_asm_string_keyword(void); extern const char *get_asm_short_keyword(void); +extern const char *get_asm_string_section(void); +extern void output_function_size( FILE *outfile, const char *name ); extern void add_import_dll( const char *name, const char *filename ); extern void add_delayed_import( const char *name ); @@ -192,48 +198,43 @@ extern void add_extra_ld_symbol( const char *name ); extern void read_undef_symbols( DLLSPEC *spec, char **argv ); extern int resolve_imports( DLLSPEC *spec ); -extern int output_imports( FILE *outfile, DLLSPEC *spec, int *nb_delayed ); -extern void output_import_thunks( FILE *outfile, DLLSPEC *spec ); +extern int has_imports(void); +extern void output_get_pc_thunk( FILE *outfile ); +extern void output_stubs( FILE *outfile, DLLSPEC *spec ); +extern void output_imports( FILE *outfile, DLLSPEC *spec ); extern int load_res32_file( const char *name, DLLSPEC *spec ); extern void output_resources( FILE *outfile, DLLSPEC *spec ); extern void load_res16_file( const char *name, DLLSPEC *spec ); -extern unsigned int get_res16_data_size( DLLSPEC *spec, unsigned int res_offset, - unsigned int alignment ); -extern unsigned int output_res16_data( unsigned char **ret_buf, DLLSPEC *spec, - unsigned int res_offset, unsigned int alignment ); -extern unsigned int get_res16_directory_size( DLLSPEC *spec ); -extern unsigned int output_res16_directory( unsigned char **ret_buf, DLLSPEC *spec, - unsigned int res_offset, unsigned int alignment ); -extern void output_dll_init( FILE *outfile, const char *constructor, const char *destructor ); +extern void output_res16_data( FILE *outfile, DLLSPEC *spec ); +extern void output_res16_directory( FILE *outfile, DLLSPEC *spec, const char *header_name ); extern void BuildRelays16( FILE *outfile ); extern void BuildRelays32( FILE *outfile ); extern void BuildSpec16File( FILE *outfile, DLLSPEC *spec ); extern void BuildSpec32File( FILE *outfile, DLLSPEC *spec ); extern void BuildDef32File( FILE *outfile, DLLSPEC *spec ); -extern void BuildDebugFile( FILE *outfile, const char *srcdir, char **argv ); extern void BuildPedllFile( FILE *outfile, DLLSPEC *spec ); extern int parse_spec_file( FILE *file, DLLSPEC *spec ); extern int parse_def_file( FILE *file, DLLSPEC *spec ); -extern int parse_debug_channels( const char *srcdir, const char *filename ); /* global variables */ extern int current_line; extern int UsePIC; -extern int nb_debug_channels; extern int nb_lib_paths; extern int nb_errors; extern int display_warnings; extern int kill_at; +extern int verbose; +extern int save_temps; extern char *input_file_name; extern char *spec_file_name; extern const char *output_file_name; -extern char **debug_channels; extern char **lib_path; +extern char *as_command; extern char *ld_command; extern char *nm_command; _____ Modified: trunk/reactos/tools/winebuild/import.c --- trunk/reactos/tools/winebuild/import.c 2005-10-08 11:26:13 UTC (rev 18324) +++ trunk/reactos/tools/winebuild/import.c 2005-10-08 12:18:07 UTC (rev 18325) @@ -66,9 +66,8 @@ static struct name_table ignore_symbols; /* list of symbols to ignore */ static struct name_table extra_ld_symbols; /* list of extra symbols that ld should resolve */ static struct name_table delayed_imports; /* list of delayed import dlls */ +static struct name_table ext_link_imports; /* list of external symbols to link to */ -static char *ld_tmp_file; /* ld temp file name */ - static struct import **dll_imports = NULL; static int nb_imports = 0; /* number of imported dlls (delayed or not) */ static int nb_delayed = 0; /* number of delayed dlls */ @@ -210,12 +209,6 @@ return res ? *res : NULL; } -inline static void output_function_size( FILE *outfile, const char *name ) -{ - const char *size = func_size( name ); - if (size[0]) fprintf( outfile, " \"\\t%s\\n\"\n", size ); -} - /* free an import structure */ static void free_imports( struct import *imp ) { @@ -226,12 +219,6 @@ free( imp ); } -/* remove the temp file at exit */ -static void remove_ld_tmp_file(void) -{ - if (ld_tmp_file) unlink( ld_tmp_file ); -} - /* check whether a given dll is imported in delayed mode */ static int is_delayed_import( const char *name ) { @@ -458,6 +445,14 @@ if (imp->delay) total_delayed++; } +/* get the default entry point for a given spec file */ +static const char *get_default_entry_point( const DLLSPEC *spec ) +{ + if (spec->characteristics & IMAGE_FILE_DLL) return "__wine_spec_dll_entry"; + if (spec->subsystem == IMAGE_SUBSYSTEM_NATIVE) return "__wine_spec_drv_entry"; + return "__wine_spec_exe_entry"; +} + /* check if the spec file exports any stubs */ static int has_stubs( const DLLSPEC *spec ) { @@ -470,14 +465,6 @@ return 0; } -/* get the default entry point for a given spec file */ -static const char *get_default_entry_point( const DLLSPEC *spec ) -{ - if (spec->characteristics & IMAGE_FILE_DLL) return "__wine_spec_dll_entry"; - if (spec->subsystem == IMAGE_SUBSYSTEM_NATIVE) return "DriverEntry"; - return "__wine_spec_exe_entry"; -} - /* add the extra undefined symbols that will be contained in the generated spec file itself */ static void add_extra_undef_symbols( DLLSPEC *spec ) { @@ -507,35 +494,69 @@ return 1; } -/* combine a list of object files with ld into a single object file */ -/* returns the name of the combined file */ -static const char *ldcombine_files( char **argv ) +/* flag the dll exports that link to an undefined symbol */ +static void check_undefined_exports( DLLSPEC *spec ) { - unsigned int i, len = 0; - char *cmd, *p; - int fd, err; + int i; - if (output_file_name && output_file_name[0]) + for (i = 0; i < spec->nb_entry_points; i++) { - ld_tmp_file = xmalloc( strlen(output_file_name) + 10 ); - strcpy( ld_tmp_file, output_file_name ); - strcat( ld_tmp_file, ".XXXXXX.o" ); + ORDDEF *odp = &spec->entry_points[i]; + if (odp->type == TYPE_STUB) continue; + if (odp->flags & FLAG_FORWARD) continue; + if (find_name( odp->link_name, &undef_symbols )) + { + odp->flags |= FLAG_EXT_LINK; + add_name( &ext_link_imports, odp->link_name ); + } } - else ld_tmp_file = xstrdup( "/tmp/winebuild.tmp.XXXXXX.o" ); +} - if ((fd = mkstemps( ld_tmp_file, 2 ) == -1)) fatal_error( "could not generate a temp file\n" ); - close( fd ); - atexit( remove_ld_tmp_file ); +/* create a .o file that references all the undefined symbols we want to resolve */ +static char *create_undef_symbols_file( DLLSPEC *spec ) +{ + char *as_file, *obj_file; + unsigned int i; + FILE *f; + as_file = get_temp_file_name( output_file_name, ".s" ); + if (!(f = fopen( as_file, "w" ))) fatal_error( "Cannot create %s\n", as_file ); + fprintf( f, "\t.data\n" ); + + for (i = 0; i < spec->nb_entry_points; i++) + { + ORDDEF *odp = &spec->entry_points[i]; + if (odp->type == TYPE_STUB) continue; + if (odp->flags & FLAG_FORWARD) continue; + fprintf( f, "\t%s %s\n", get_asm_ptr_keyword(), asm_name(odp->link_name) ); + } + for (i = 0; i < extra_ld_symbols.count; i++) + fprintf( f, "\t%s %s\n", get_asm_ptr_keyword(), asm_name(extra_ld_symbols.names[i]) ); + fclose( f ); + + obj_file = get_temp_file_name( output_file_name, ".o" ); + assemble_file( as_file, obj_file ); + return obj_file; +} + +/* combine a list of object files with ld into a single object file */ +/* returns the name of the combined file */ +static const char *ldcombine_files( DLLSPEC *spec, char **argv ) +{ + unsigned int i, len = 0; + char *cmd, *p, *ld_tmp_file, *undef_file; + int err; + + undef_file = create_undef_symbols_file( spec ); + len += strlen(undef_file) + 1; + ld_tmp_file = get_temp_file_name( output_file_name, ".o" ); if (!ld_command) ld_command = xstrdup("ld"); - for (i = 0; i < extra_ld_symbols.count; i++) len += strlen(extra_ld_symbols.names[i]) + 5; for (i = 0; argv[i]; i++) len += strlen(argv[i]) + 1; cmd = p = xmalloc( len + strlen(ld_tmp_file) + 8 + strlen(ld_command) ); - p += sprintf( cmd, "%s -r -o %s", ld_command, ld_tmp_file ); - for (i = 0; i < extra_ld_symbols.count; i++) - p += sprintf( p, " -u %s", asm_name(extra_ld_symbols.names[i]) ); + p += sprintf( cmd, "%s -r -o %s %s", ld_command, ld_tmp_file, undef_file ); for (i = 0; argv[i]; i++) p += sprintf( p, " %s", argv[i] ); + if (verbose) fprintf( stderr, "%s\n", cmd ); err = system( cmd ); if (err) fatal_error( "%s -r failed with status %d\n", ld_command, err ); free( cmd ); @@ -558,7 +579,7 @@ strcpy( name_prefix, asm_name("") ); prefix_len = strlen( name_prefix ); - name = ldcombine_files( argv ); + name = ldcombine_files( spec, argv ); if (!nm_command) nm_command = xstrdup("nm"); cmd = xmalloc( strlen(nm_command) + strlen(name) + 5 ); @@ -581,25 +602,14 @@ free( cmd ); } -static void remove_ignored_symbols(void) -{ - unsigned int i; - - if (!ignore_symbols.size) init_ignored_symbols(); - sort_names( &ignore_symbols ); - for (i = 0; i < undef_symbols.count; i++) - { - if (find_name( undef_symbols.names[i], &ignore_symbols )) - remove_name( &undef_symbols, i-- ); - } -} - /* resolve the imports for a Win32 module */ int resolve_imports( DLLSPEC *spec ) { unsigned int i, j, removed; + ORDDEF *odp; - remove_ignored_symbols(); + if (!ignore_symbols.size) init_ignored_symbols(); + sort_names( &ignore_symbols ); for (i = 0; i < nb_imports; i++) { @@ -607,7 +617,8 @@ for (j = removed = 0; j < undef_symbols.count; j++) { - ORDDEF *odp = find_export( undef_symbols.names[j], imp->exports, imp->nb_exports ); + if (find_name( undef_symbols.names[j], &ignore_symbols )) continue; + odp = find_export( undef_symbols.names[j], imp->exports, imp->nb_exports ); if (odp) { add_import_func( imp, odp ); @@ -623,186 +634,199 @@ i--; } } + + sort_names( &undef_symbols ); + check_undefined_exports( spec ); + return 1; } +/* output the get_pc thunk if needed */ +void output_get_pc_thunk( FILE *outfile ) +{ + if (target_cpu != CPU_x86) return; + if (!UsePIC) return; + fprintf( outfile, "\n\t.text\n" ); + fprintf( outfile, "\t.align %d\n", get_alignment(4) ); + fprintf( outfile, "\t%s\n", func_declaration("__wine_spec_get_pc_thunk_eax") ); + fprintf( outfile, "%s:\n", asm_name("__wine_spec_get_pc_thunk_eax") ); + fprintf( outfile, "\tpopl %%eax\n" ); + fprintf( outfile, "\tpushl %%eax\n" ); + fprintf( outfile, "\tret\n" ); + output_function_size( outfile, "__wine_spec_get_pc_thunk_eax" ); +} + /* output a single import thunk */ static void output_import_thunk( FILE *outfile, const char *name, const char *table, int pos ) { - fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(4) ); - fprintf( outfile, " \"\\t%s\\n\"\n", func_declaration(name) ); - fprintf( outfile, " \"\\t.globl %s\\n\"\n", asm_name(name) ); - fprintf( outfile, " \"%s:\\n\"\n", asm_name(name) ); + fprintf( outfile, "\n\t.align %d\n", get_alignment(4) ); + fprintf( outfile, "\t%s\n", func_declaration(name) ); + fprintf( outfile, "%s\n", asm_globl(name) ); switch(target_cpu) { case CPU_x86: if (!UsePIC) { - if (strstr( name, "__wine_call_from_16" )) fprintf( outfile, " \"\\t.byte 0x2e\\n\"\n" ); - fprintf( outfile, " \"\\tjmp *(%s+%d)\\n\"\n", asm_name(table), pos ); + fprintf( outfile, "\tjmp *(%s+%d)\n", table, pos ); } else { - if (!strcmp( name, "__wine_call_from_32_regs" )) - { - /* special case: need to preserve all registers */ - fprintf( outfile, " \"\\tpushl %%eax\\n\"\n" ); - fprintf( outfile, " \"\\tcall .L__wine_spec_%s\\n\"\n", name ); - fprintf( outfile, " \".L__wine_spec_%s:\\n\"\n", name ); - fprintf( outfile, " \"\\tpopl %%eax\\n\"\n" ); - if (!strcmp( name, "__wine_call_from_16_regs" )) - fprintf( outfile, " \"\\t.byte 0x2e\\n\"\n" ); - fprintf( outfile, " \"\\tmovl %s+%d-.L__wine_spec_%s(%%eax),%%eax\\n\"\n", - asm_name(table), pos, name ); - fprintf( outfile, " \"\\txchgl %%eax,(%%esp)\\n\"\n" ); - fprintf( outfile, " \"\\tret\\n\"\n" ); - } - else if (!strcmp( name, "__wine_call_from_16_regs" )) - { - /* special case: need to preserve all registers */ - fprintf( outfile, " \"\\tpushl %%eax\\n\"\n" ); - fprintf( outfile, " \"\\tpushl %%ecx\\n\"\n" ); - fprintf( outfile, " \"\\tcall .L__wine_spec_%s\\n\"\n", name ); - fprintf( outfile, " \".L__wine_spec_%s:\\n\"\n", name ); - fprintf( outfile, " \"\\tpopl %%eax\\n\"\n" ); - fprintf( outfile, " \"\\t.byte 0x2e\\n\"\n" ); - fprintf( outfile, " \"\\tmovl %s+%d-.L__wine_spec_%s(%%eax),%%eax\\n\"\n", - asm_name(table), pos, name ); - fprintf( outfile, " \"\\tmovzwl %%sp, %%ecx\\n\"\n" ); - fprintf( outfile, " \"\\t.byte 0x36\\n\"\n" ); - fprintf( outfile, " \"\\txchgl %%eax,4(%%ecx)\\n\"\n" ); - fprintf( outfile, " \"\\tpopl %%ecx\\n\"\n" ); - fprintf( outfile, " \"\\tret\\n\"\n" ); - } - else - { - fprintf( outfile, " \"\\tcall .L__wine_spec_%s\\n\"\n", name ); - fprintf( outfile, " \".L__wine_spec_%s:\\n\"\n", name ); - fprintf( outfile, " \"\\tpopl %%eax\\n\"\n" ); - if (strstr( name, "__wine_call_from_16" )) - fprintf( outfile, " \"\\t.byte 0x2e\\n\"\n" ); - fprintf( outfile, " \"\\tjmp *%s+%d-.L__wine_spec_%s(%%eax)\\n\"\n", - asm_name(table), pos, name ); - } + fprintf( outfile, "\tcall %s\n", asm_name("__wine_spec_get_pc_thunk_eax") ); + fprintf( outfile, "1:\tjmp *%s+%d-1b(%%eax)\n", table, pos ); } break; + case CPU_x86_64: + fprintf( outfile, "\tjmpq *%s+%d(%%rip)\n", table, pos ); + break; case CPU_SPARC: if ( !UsePIC ) { - fprintf( outfile, " \"\\tsethi %%hi(%s+%d), %%g1\\n\"\n", table, pos ); - fprintf( outfile, " \"\\tld [%%g1+%%lo(%s+%d)], %%g1\\n\"\n", table, pos ); - fprintf( outfile, " \"\\tjmp %%g1\\n\\tnop\\n\"\n" ); + fprintf( outfile, "\tsethi %%hi(%s+%d), %%g1\n", table, pos ); + fprintf( outfile, "\tld [%%g1+%%lo(%s+%d)], %%g1\n", table, pos ); + fprintf( outfile, "\tjmp %%g1\n" ); + fprintf( outfile, "\tnop\n" ); } else { /* Hmpf. Stupid sparc assembler always interprets global variable names as GOT offsets, so we have to do it the long way ... */ - fprintf( outfile, " \"\\tsave %%sp, -96, %%sp\\n\"\n" ); - fprintf( outfile, " \"0:\\tcall 1f\\n\\tnop\\n\"\n" ); - fprintf( outfile, " \"1:\\tsethi %%hi(%s+%d-0b), %%g1\\n\"\n", table, pos ); - fprintf( outfile, " \"\\tor %%g1, %%lo(%s+%d-0b), %%g1\\n\"\n", table, pos ); - fprintf( outfile, " \"\\tld [%%g1+%%o7], %%g1\\n\"\n" ); - fprintf( outfile, " \"\\tjmp %%g1\\n\\trestore\\n\"\n" ); + fprintf( outfile, "\tsave %%sp, -96, %%sp\n" ); + fprintf( outfile, "0:\tcall 1f\n" ); + fprintf( outfile, "\tnop\n" ); + fprintf( outfile, "1:\tsethi %%hi(%s+%d-0b), %%g1\n", table, pos ); + fprintf( outfile, "\tor %%g1, %%lo(%s+%d-0b), %%g1\n", table, pos ); + fprintf( outfile, "\tld [%%g1+%%o7], %%g1\n" ); + fprintf( outfile, "\tjmp %%g1\n" ); + fprintf( outfile, "\trestore\n" ); } break; case CPU_ALPHA: - fprintf( outfile, " \"\\tlda $0,%s\\n\"\n", table ); - fprintf( outfile, " \"\\tlda $0,%d($0)\\n\"\n", pos); - fprintf( outfile, " \"\\tjmp $31,($0)\\n\"\n" ); + fprintf( outfile, "\tlda $0,%s\n", table ); + fprintf( outfile, "\tlda $0,%d($0)\n", pos ); + fprintf( outfile, "\tjmp $31,($0)\n" ); break; case CPU_POWERPC: - fprintf(outfile, " \"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg(1), ppc_reg(1)); - fprintf(outfile, " \"\\tstw %s, 0(%s)\\n\"\n", ppc_reg(9), ppc_reg(1)); - fprintf(outfile, " \"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg(1), ppc_reg(1)); - fprintf(outfile, " \"\\tstw %s, 0(%s)\\n\"\n", ppc_reg(8), ppc_reg(1)); - fprintf(outfile, " \"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg(1), ppc_reg(1)); - fprintf(outfile, " \"\\tstw %s, 0(%s)\\n\"\n", ppc_reg(7), ppc_reg(1)); + fprintf( outfile, "\taddi %s, %s, -0x4\n", ppc_reg(1), ppc_reg(1) ); + fprintf( outfile, "\tstw %s, 0(%s)\n", ppc_reg(9), ppc_reg(1) ); + fprintf( outfile, "\taddi %s, %s, -0x4\n", ppc_reg(1), ppc_reg(1) ); + fprintf( outfile, "\tstw %s, 0(%s)\n", ppc_reg(8), ppc_reg(1) ); + fprintf( outfile, "\taddi %s, %s, -0x4\n", ppc_reg(1), ppc_reg(1) ); + fprintf( outfile, "\tstw %s, 0(%s)\n", ppc_reg(7), ppc_reg(1) ); if (target_platform == PLATFORM_APPLE) { - fprintf(outfile, " \"\\tlis %s, ha16(%s+%d)\\n\"\n", - ppc_reg(9), asm_name(table), pos); - fprintf(outfile, " \"\\tla %s, lo16(%s+%d)(%s)\\n\"\n", - ppc_reg(8), asm_name(table), pos, ppc_reg(9)); + fprintf( outfile, "\tlis %s, ha16(%s+%d)\n", ppc_reg(9), table, pos ); + fprintf( outfile, "\tla %s, lo16(%s+%d)(%s)\n", ppc_reg(8), table, pos, ppc_reg(9) ); } else { - fprintf(outfile, " \"\\tlis %s, (%s+%d)@hi\\n\"\n", - ppc_reg(9), asm_name(table), pos); - fprintf(outfile, " \"\\tla %s, (%s+%d)@l(%s)\\n\"\n", - ppc_reg(8), asm_name(table), pos, ppc_reg(9)); + fprintf( outfile, "\tlis %s, (%s+%d)@hi\n", ppc_reg(9), table, pos ); + fprintf( outfile, "\tla %s, (%s+%d)@l(%s)\n", ppc_reg(8), table, pos, ppc_reg(9) ); } - fprintf(outfile, " \"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg(7), ppc_reg(8)); - fprintf(outfile, " \"\\tmtctr %s\\n\"\n", ppc_reg(7)); - fprintf(outfile, " \"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg(7), ppc_reg(1)); - fprintf(outfile, " \"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg(1), ppc_reg(1)); - fprintf(outfile, " \"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg(8), ppc_reg(1)); - fprintf(outfile, " \"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg(1), ppc_reg(1)); - fprintf(outfile, " \"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg(9), ppc_reg(1)); - fprintf(outfile, " \"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg(1), ppc_reg(1)); - fprintf(outfile, " \"\\tbctr\\n\"\n"); + fprintf( outfile, "\tlwz %s, 0(%s)\n", ppc_reg(7), ppc_reg(8) ); + fprintf( outfile, "\tmtctr %s\n", ppc_reg(7) ); + fprintf( outfile, "\tlwz %s, 0(%s)\n", ppc_reg(7), ppc_reg(1) ); + fprintf( outfile, "\taddi %s, %s, 0x4\n", ppc_reg(1), ppc_reg(1) ); + fprintf( outfile, "\tlwz %s, 0(%s)\n", ppc_reg(8), ppc_reg(1) ); + fprintf( outfile, "\taddi %s, %s, 0x4\n", ppc_reg(1), ppc_reg(1) ); + fprintf( outfile, "\tlwz %s, 0(%s)\n", ppc_reg(9), ppc_reg(1) ); + fprintf( outfile, "\taddi %s, %s, 0x4\n", ppc_reg(1), ppc_reg(1) ); + fprintf( outfile, "\tbctr\n" ); break; } output_function_size( outfile, name ); } +/* check if we need an import directory */ +int has_imports(void) +{ + return (nb_imports - nb_delayed) > 0; +} + /* output the import table of a Win32 module */ -static int output_immediate_imports( FILE *outfile ) +static void output_immediate_imports( FILE *outfile ) { - int i, j, nb_imm = nb_imports - nb_delayed; + int i, j; + const char *dll_name; - if (!nb_imm) return 0; + if (nb_imports == nb_delayed) return; /* no immediate imports */ /* main import header */ - fprintf( outfile, "\nstatic struct {\n" ); - fprintf( outfile, " struct {\n" ); - fprintf( outfile, " void *OriginalFirstThunk;\n" ); - fprintf( outfile, " unsigned int TimeDateStamp;\n" ); - fprintf( outfile, " unsigned int ForwarderChain;\n" ); - fprintf( outfile, " const char *Name;\n" ); - fprintf( outfile, " void *FirstThunk;\n" ); - fprintf( outfile, " } imp[%d];\n", nb_imm+1 ); - fprintf( outfile, " const char *data[%d];\n", - total_imports - total_delayed + nb_imm ); - fprintf( outfile, "} imports = {\n {\n" ); + fprintf( outfile, "\n/* import table */\n" ); + fprintf( outfile, "\n\t.data\n" ); + fprintf( outfile, "\t.align %d\n", get_alignment(4) ); + fprintf( outfile, ".L__wine_spec_imports:\n" ); /* list of dlls */ for (i = j = 0; i < nb_imports; i++) { if (dll_imports[i]->delay) continue; - fprintf( outfile, " { 0, 0, 0, \"%s\", &imports.data[%d] },\n", - dll_imports[i]->spec->file_name, j ); + dll_name = make_c_identifier( dll_imports[i]->spec->file_name ); + fprintf( outfile, "\t.long 0\n" ); /* OriginalFirstThunk */ + fprintf( outfile, "\t.long 0\n" ); /* TimeDateStamp */ + fprintf( outfile, "\t.long 0\n" ); /* ForwarderChain */ + fprintf( outfile, "\t.long .L__wine_spec_import_name_%s-.L__wine_spec_rva_base\n", /* Name */ + dll_name ); + fprintf( outfile, "\t.long .L__wine_spec_import_data_ptrs+%d-.L__wine_spec_rva_base\n", /* FirstThunk */ + j * get_ptr_size() ); j += dll_imports[i]->nb_imports + 1; } + fprintf( outfile, "\t.long 0\n" ); /* OriginalFirstThunk */ + fprintf( outfile, "\t.long 0\n" ); /* TimeDateStamp */ + fprintf( outfile, "\t.long 0\n" ); /* ForwarderChain */ + fprintf( outfile, "\t.long 0\n" ); /* Name */ + fprintf( outfile, "\t.long 0\n" ); /* FirstThunk */ - fprintf( outfile, " { 0, 0, 0, 0, 0 },\n" ); - fprintf( outfile, " },\n {\n" ); + fprintf( outfile, "\n\t.align %d\n", get_alignment(get_ptr_size()) ); + fprintf( outfile, ".L__wine_spec_import_data_ptrs:\n" ); + for (i = 0; i < nb_imports; i++) + { + if (dll_imports[i]->delay) continue; + dll_name = make_c_identifier( dll_imports[i]->spec->file_name ); + for (j = 0; j < dll_imports[i]->nb_imports; j++) + { + ORDDEF *odp = dll_imports[i]->imports[j]; + if (!(odp->flags & FLAG_NONAME)) + fprintf( outfile, "\t%s .L__wine_spec_import_data_%s_%s-.L__wine_spec_rva_base\n", + get_asm_ptr_keyword(), dll_name, odp->name ); + else + { + if (get_ptr_size() == 8) + fprintf( outfile, "\t.quad 0x800000000000%04x\n", odp->ordinal ); + else + fprintf( outfile, "\t.long 0x8000%04x\n", odp->ordinal ); + } + } + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); + } + fprintf( outfile, ".L__wine_spec_imports_end:\n" ); - /* list of imported functions */ - for (i = 0; i < nb_imports; i++) { if (dll_imports[i]->delay) continue; - fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); + dll_name = make_c_identifier( dll_imports[i]->spec->file_name ); for (j = 0; j < dll_imports[i]->nb_imports; j++) { ORDDEF *odp = dll_imports[i]->imports[j]; if (!(odp->flags & FLAG_NONAME)) { - unsigned short ord = odp->ordinal; - fprintf( outfile, " \"\\%03o\\%03o%s\",\n", - *(unsigned char *)&ord, *((unsigned char *)&ord + 1), odp->name ); + fprintf( outfile, "\t.align %d\n", get_alignment(2) ); + fprintf( outfile, ".L__wine_spec_import_data_%s_%s:\n", dll_name, odp->name ); + fprintf( outfile, "\t%s %d\n", get_asm_short_keyword(), odp->ordinal ); + fprintf( outfile, "\t%s \"%s\"\n", get_asm_string_keyword(), odp->name ); } - else - fprintf( outfile, " (char *)%d,\n", odp->ordinal ); } - fprintf( outfile, " 0,\n" ); } - fprintf( outfile, " }\n};\n\n" ); - return nb_imm; + for (i = 0; i < nb_imports; i++) + { + if (dll_imports[i]->delay) continue; + dll_name = make_c_identifier( dll_imports[i]->spec->file_name ); + fprintf( outfile, ".L__wine_spec_import_name_%s:\n\t%s \"%s\"\n", + dll_name, get_asm_string_keyword(), dll_imports[i]->spec->file_name ); + } } /* output the import thunks of a Win32 module */ @@ -814,35 +838,66 @@ if (!nb_imm) return; - pos = (sizeof(void *) + 2*sizeof(unsigned int) + sizeof(const char *) + sizeof(void *)) * - (nb_imm + 1); /* offset of imports.data from start of imports */ - fprintf( outfile, "/* immediate import thunks */\n" ); - fprintf( outfile, "asm(\".text\\n\\t.align %d\\n\"\n", get_alignment(8) ); - fprintf( outfile, " \"%s:\\n\"\n", asm_name(import_thunks)); + fprintf( outfile, "\n/* immediate import thunks */\n\n" ); + fprintf( outfile, "\t.text\n" ); + fprintf( outfile, "\t.align %d\n", get_alignment(8) ); + fprintf( outfile, "%s:\n", asm_name(import_thunks)); - for (i = 0; i < nb_imports; i++) + for (i = pos = 0; i < nb_imports; i++) { if (dll_imports[i]->delay) continue; - for (j = 0; j < dll_imports[i]->nb_imports; j++, pos += sizeof(const char *)) + for (j = 0; j < dll_imports[i]->nb_imports; j++, pos += get_ptr_size()) { ORDDEF *odp = dll_imports[i]->imports[j]; output_import_thunk( outfile, odp->name ? odp->name : odp->export_name, - "imports", pos ); + ".L__wine_spec_import_data_ptrs", pos ); } - pos += 4; + pos += get_ptr_size(); } output_function_size( outfile, import_thunks ); - fprintf( outfile, ");\n" ); } /* output the delayed import table of a Win32 module */ -static int output_delayed_imports( FILE *outfile, const DLLSPEC *spec ) +static void output_delayed_imports( FILE *outfile, const DLLSPEC *spec ) { int i, j; - if (!nb_delayed) return 0; + if (!nb_delayed) return; - fprintf( outfile, "static void *__wine_delay_imp_hmod[%d];\n", nb_delayed ); + fprintf( outfile, "\n/* delayed imports */\n\n" ); + fprintf( outfile, "\t.data\n" ); + fprintf( outfile, "\t.align %d\n", get_alignment(get_ptr_size()) ); + fprintf( outfile, "%s\n", asm_globl("__wine_spec_delay_imports") ); + + /* list of dlls */ + + for (i = j = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* grAttrs */ + fprintf( outfile, "\t%s .L__wine_delay_name_%d\n", /* szName */ + get_asm_ptr_keyword(), i ); + fprintf( outfile, "\t%s .L__wine_delay_modules+%d\n", /* phmod */ + get_asm_ptr_keyword(), i * get_ptr_size() ); + fprintf( outfile, "\t%s .L__wine_delay_IAT+%d\n", /* pIAT */ + get_asm_ptr_keyword(), j * get_ptr_size() ); + fprintf( outfile, "\t%s .L__wine_delay_INT+%d\n", /* pINT */ + get_asm_ptr_keyword(), j * get_ptr_size() ); + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* pBoundIAT */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* pUnloadIAT */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* dwTimeStamp */ + j += dll_imports[i]->nb_imports; + } + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* grAttrs */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* szName */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* phmod */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* pIAT */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* pINT */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* pBoundIAT */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* pUnloadIAT */ + fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); /* dwTimeStamp */ + + fprintf( outfile, "\n.L__wine_delay_IAT:\n" ); for (i = 0; i < nb_imports; i++) { if (!dll_imports[i]->delay) continue; @@ -850,61 +905,52 @@ { ORDDEF *odp = dll_imports[i]->imports[j]; const char *name = odp->name ? odp->name : odp->export_name; - fprintf( outfile, "void __wine_delay_imp_%d_%s();\n", i, name ); + fprintf( outfile, "\t%s .L__wine_delay_imp_%d_%s\n", + get_asm_ptr_keyword(), i, name ); } } - fprintf( outfile, "\n" ); - fprintf( outfile, "struct {\n" ); - fprintf( outfile, " struct ImgDelayDescr {\n" ); - fprintf( outfile, " unsigned int grAttrs;\n" ); - fprintf( outfile, " const char *szName;\n" ); - fprintf( outfile, " void **phmod;\n" ); - fprintf( outfile, " void **pIAT;\n" ); - fprintf( outfile, " const char **pINT;\n" ); - fprintf( outfile, " void* pBoundIAT;\n" ); - fprintf( outfile, " void* pUnloadIAT;\n" ); - fprintf( outfile, " unsigned long dwTimeStamp;\n" ); - fprintf( outfile, " } imp[%d];\n", nb_delayed + 1 ); - fprintf( outfile, " void *IAT[%d];\n", total_delayed ); - fprintf( outfile, " const char *INT[%d];\n", total_delayed ); - fprintf( outfile, "} __wine_spec_delay_imports = {\n" ); - fprintf( outfile, " {\n" ); - for (i = j = 0; i < nb_imports; i++) - { - if (!dll_imports[i]->delay) continue; - fprintf( outfile, " { 0, \"%s\", &__wine_delay_imp_hmod[%d], &__wine_spec_delay_imports.IAT[%d], &__wine_spec_delay_imports.INT[%d], 0, 0, 0 },\n", - dll_imports[i]->spec->file_name, i, j, j ); - j += dll_imports[i]->nb_imports; - } - fprintf( outfile, " },\n {\n" ); + + fprintf( outfile, "\n.L__wine_delay_INT:\n" ); for (i = 0; i < nb_imports; i++) { if (!dll_imports[i]->delay) continue; - fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); for (j = 0; j < dll_imports[i]->nb_imports; j++) { ORDDEF *odp = dll_imports[i]->imports[j]; - const char *name = odp->name ? odp->name : odp->export_name; - fprintf( outfile, " &__wine_delay_imp_%d_%s,\n", i, name ); + if (!odp->name) + fprintf( outfile, "\t%s %d\n", get_asm_ptr_keyword(), odp->ordinal ); + else + fprintf( outfile, "\t%s .L__wine_delay_data_%d_%s\n", + get_asm_ptr_keyword(), i, odp->name ); } } - fprintf( outfile, " },\n {\n" ); + + fprintf( outfile, "\n.L__wine_delay_modules:\n" ); for (i = 0; i < nb_imports; i++) { + if (dll_imports[i]->delay) fprintf( outfile, "\t%s 0\n", get_asm_ptr_keyword() ); + } + + for (i = 0; i < nb_imports; i++) + { if (!dll_imports[i]->delay) continue; - fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); + fprintf( outfile, ".L__wine_delay_name_%d:\n", i ); + fprintf( outfile, "\t%s \"%s\"\n", + get_asm_string_keyword(), dll_imports[i]->spec->file_name ); + } + + for (i = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; for (j = 0; j < dll_imports[i]->nb_imports; j++) { ORDDEF *odp = dll_imports[i]->imports[j]; - if (!odp->name) - fprintf( outfile, " (char *)%d,\n", odp->ordinal ); - else - fprintf( outfile, " \"%s\",\n", odp->name ); + if (!odp->name) continue; + fprintf( outfile, ".L__wine_delay_data_%d_%s:\n", i, odp->name ); + fprintf( outfile, "\t%s \"%s\"\n", get_asm_string_keyword(), odp->name ); } } - fprintf( outfile, " }\n};\n\n" ); - - return nb_delayed; + output_function_size( outfile, "__wine_spec_delay_imports" ); } /* output the delayed import thunks of a Win32 module */ @@ -916,107 +962,123 @@ if (!nb_delayed) return; - fprintf( outfile, "/* delayed import thunks */\n" ); - fprintf( outfile, "asm(\".text\\n\"\n" ); - fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(8) ); - fprintf( outfile, " \"%s:\\n\"\n", asm_name(delayed_import_loaders)); - fprintf( outfile, " \"\\t%s\\n\"\n", func_declaration("__wine_delay_load_asm") ); - fprintf( outfile, " \"%s:\\n\"\n", asm_name("__wine_delay_load_asm") ); + fprintf( outfile, "\n/* delayed import thunks */\n\n" ); + fprintf( outfile, "\t.text\n" ); + fprintf( outfile, "\t.align %d\n", get_alignment(8) ); + fprintf( outfile, "%s:\n", asm_name(delayed_import_loaders)); + fprintf( outfile, "\t%s\n", func_declaration("__wine_delay_load_asm") ); + fprintf( outfile, "%s:\n", asm_name("__wine_delay_load_asm") ); switch(target_cpu) { case CPU_x86: - fprintf( outfile, " \"\\tpushl %%ecx\\n\\tpushl %%edx\\n\\tpushl %%eax\\n\"\n" ); - fprintf( outfile, " \"\\tcall %s\\n\"\n", asm_name("__wine_spec_delay_load") ); - fprintf( outfile, " \"\\tpopl %%edx\\n\\tpopl %%ecx\\n\\tjmp *%%eax\\n\"\n" ); + fprintf( outfile, "\tpushl %%ecx\n" ); + fprintf( outfile, "\tpushl %%edx\n" ); + fprintf( outfile, "\tpushl %%eax\n" ); + fprintf( outfile, "\tcall %s\n", asm_name("__wine_spec_delay_load") ); + fprintf( outfile, "\tpopl %%edx\n" ); + fprintf( outfile, "\tpopl %%ecx\n" ); + fprintf( outfile, "\tjmp *%%eax\n" ); break; + case CPU_x86_64: + fprintf( outfile, "\tpushq %%rdi\n" ); + fprintf( outfile, "\tsubq $8,%%rsp\n" ); + fprintf( outfile, "\tmovq %%r11,%%rdi\n" ); + fprintf( outfile, "\tcall %s\n", asm_name("__wine_spec_delay_load") ); + fprintf( outfile, "\taddq $8,%%rsp\n" ); + fprintf( outfile, "\tpopq %%rdi\n" ); + fprintf( outfile, "\tjmp *%%rax\n" ); + break; case CPU_SPARC: - fprintf( outfile, " \"\\tsave %%sp, -96, %%sp\\n\"\n" ); - fprintf( outfile, " \"\\tcall %s\\n\"\n", asm_name("__wine_spec_delay_load") ); - fprintf( outfile, " \"\\tmov %%g1, %%o0\\n\"\n" ); - fprintf( outfile, " \"\\tjmp %%o0\\n\\trestore\\n\"\n" ); + fprintf( outfile, "\tsave %%sp, -96, %%sp\n" ); + fprintf( outfile, "\tcall %s\n", asm_name("__wine_spec_delay_load") ); + fprintf( outfile, "\tmov %%g1, %%o0\n" ); + fprintf( outfile, "\tjmp %%o0\n" ); + fprintf( outfile, "\trestore\n" ); break; case CPU_ALPHA: - fprintf( outfile, " \"\\tjsr $26,%s\\n\"\n", asm_name("__wine_spec_delay_load") ); - fprintf( outfile, " \"\\tjmp $31,($0)\\n\"\n" ); + fprintf( outfile, "\tjsr $26,%s\n", asm_name("__wine_spec_delay_load") ); + fprintf( outfile, "\tjmp $31,($0)\n" ); break; case CPU_POWERPC: if (target_platform == PLATFORM_APPLE) extra_stack_storage = 56; /* Save all callee saved registers into a stackframe. */ - fprintf( outfile, " \"\\tstwu %s, -%d(%s)\\n\"\n",ppc_reg(1), 48+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(3), 4+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(4), 8+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(5), 12+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(6), 16+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(7), 20+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(8), 24+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(9), 28+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(10),32+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(11),36+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(12),40+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstwu %s, -%d(%s)\n",ppc_reg(1), 48+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(3), 4+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(4), 8+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(5), 12+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(6), 16+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(7), 20+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(8), 24+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(9), 28+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(10),32+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(11),36+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(12),40+extra_stack_storage, ppc_reg(1)); /* r0 -> r3 (arg1) */ - fprintf( outfile, " \"\\tmr %s, %s\\n\"\n", ppc_reg(3), ppc_reg(0)); + fprintf( outfile, "\tmr %s, %s\n", ppc_reg(3), ppc_reg(0)); /* save return address */ - fprintf( outfile, " \"\\tmflr %s\\n\"\n", ppc_reg(0)); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg(0), 44+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tmflr %s\n", ppc_reg(0)); + fprintf( outfile, "\tstw %s, %d(%s)\n", ppc_reg(0), 44+extra_stack_storage, ppc_reg(1)); /* Call the __wine_delay_load function, arg1 is arg1. */ - fprintf( outfile, " \"\\tbl %s\\n\"\n", asm_name("__wine_spec_delay_load") ); + fprintf( outfile, "\tbl %s\n", asm_name("__wine_spec_delay_load") ); /* Load return value from call into ctr register */ - fprintf( outfile, " \"\\tmtctr %s\\n\"\n", ppc_reg(3)); + fprintf( outfile, "\tmtctr %s\n", ppc_reg(3)); /* restore all saved registers and drop stackframe. */ - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(3), 4+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(4), 8+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(5), 12+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(6), 16+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(7), 20+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(8), 24+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(9), 28+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(10),32+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(11),36+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(12),40+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(3), 4+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(4), 8+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(5), 12+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(6), 16+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(7), 20+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(8), 24+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(9), 28+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(10),32+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(11),36+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(12),40+extra_stack_storage, ppc_reg(1)); /* Load return value from call into return register */ - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg(0), 44+extra_stack_storage, ppc_reg(1)); - fprintf( outfile, " \"\\tmtlr %s\\n\"\n", ppc_reg(0)); - fprintf( outfile, " \"\\taddi %s, %s, %d\\n\"\n", ppc_reg(1), ppc_reg(1), 48+extra_stack_storage); + fprintf( outfile, "\tlwz %s, %d(%s)\n", ppc_reg(0), 44+extra_stack_storage, ppc_reg(1)); + fprintf( outfile, "\tmtlr %s\n", ppc_reg(0)); + fprintf( outfile, "\taddi %s, %s, %d\n", ppc_reg(1), ppc_reg(1), 48+extra_stack_storage); /* branch to ctr register. */ - fprintf( outfile, " \"bctr\\n\"\n"); + fprintf( outfile, "\tbctr\n"); break; } output_function_size( outfile, "__wine_delay_load_asm" ); + fprintf( outfile, "\n" ); for (i = idx = 0; i < nb_imports; i++) { if (!dll_imports[i]->delay) continue; for (j = 0; j < dll_imports[i]->nb_imports; j++) { - char buffer[128]; ORDDEF *odp = dll_imports[i]->imports[j]; const char *name = odp->name ? odp->name : odp->export_name; [truncated at 1000 lines; 4033 more skipped]
19 years, 2 months
1
0
0
0
[greatlrd] 18324: Fixing dsdesc stuct with right name from wine
by greatlrd@svn.reactos.com
Fixing dsdesc stuct with right name from wine I did correct right datatype in the struct fix minor change in dsound.h Modified: trunk/reactos/w32api/include/dsdriver.h Modified: trunk/reactos/w32api/include/dsound.h _____ Modified: trunk/reactos/w32api/include/dsdriver.h --- trunk/reactos/w32api/include/dsdriver.h 2005-10-08 10:52:43 UTC (rev 18323) +++ trunk/reactos/w32api/include/dsdriver.h 2005-10-08 11:26:13 UTC (rev 18324) @@ -61,8 +61,8 @@ typedef struct _DSDRIVERDESC { DWORD dwFlags; - CHAR szDesc[256]; - CHAR szDrvName[256]; + TCHAR szDesc[256]; + TCHAR szDrvname[256]; DWORD dnDevNode; WORD wVxdId; WORD wReserved; @@ -76,6 +76,9 @@ LPVOID pvReserved2; } DSDRIVERDESC,*PDSDRIVERDESC; + + + typedef struct _DSDRIVERCAPS { DWORD dwFlags; _____ Modified: trunk/reactos/w32api/include/dsound.h --- trunk/reactos/w32api/include/dsound.h 2005-10-08 10:52:43 UTC (rev 18323) +++ trunk/reactos/w32api/include/dsound.h 2005-10-08 11:26:13 UTC (rev 18324) @@ -86,7 +86,7 @@ DEFINE_GUID(IID_IDirectSoundCapture, 0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE; #define IID_IDirectSoundCapture8 IID_IDirectSoundCapture -typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8; +typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8; DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF, 0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER; @@ -384,14 +384,11 @@ #define DSCBSTATUS_CAPTURING 0x00000001 #define DSCBSTATUS_LOOPING 0x00000002 -// this is already in ros include files #ifndef __LPCGUID_DEFINED__ -//#define __LPCGUID_DEFINED__ -//typedef const GUID *LPCGUID; +#define __LPCGUID_DEFINED__ +typedef const GUID *LPCGUID; #endif -typedef LPVOID* LPLPVOID; - typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID); typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID); @@ -404,7 +401,7 @@ extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID); extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC8, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel, LPDIRECTSOUNDFULLDUPLEX *ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter);
19 years, 2 months
1
0
0
0
[greatlrd] 18323: prepare for dsound
by greatlrd@svn.reactos.com
prepare for dsound Added: trunk/reactos/include/wine/guiddef.h Added: trunk/reactos/include/wine/library.h _____ Added: trunk/reactos/include/wine/guiddef.h --- trunk/reactos/include/wine/guiddef.h 2005-10-08 10:28:57 UTC (rev 18322) +++ trunk/reactos/include/wine/guiddef.h 2005-10-08 10:52:43 UTC (rev 18323) @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2000 Alexandre Julliard + * + * 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 + */ + +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID +{ + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[ 8 ]; +} GUID; +#endif + +#undef DEFINE_GUID + +#ifdef INITGUID +#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + const GUID name = \ + { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } +#else +#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + extern const GUID name; +#endif + + + + +#ifndef _GUIDDEF_H_ +#define _GUIDDEF_H_ + +#ifndef __REACTOS__ +typedef GUID *LPGUID; +#endif +typedef GUID CLSID,*LPCLSID; +typedef GUID IID,*LPIID; +typedef GUID FMTID,*LPFMTID; + +#if 0 +#if defined(__cplusplus) && !defined(CINTERFACE) +#define REFGUID const GUID & +#define REFCLSID const CLSID & +#define REFIID const IID & +#define REFFMTID const FMTID & +#else /* !defined(__cplusplus) && !defined(CINTERFACE) */ +#define REFGUID const GUID* const +#define REFCLSID const CLSID* const +#define REFIID const IID* const +#define REFFMTID const FMTID* const +#endif /* !defined(__cplusplus) && !defined(CINTERFACE) */ +#endif + + +#if defined(__cplusplus) && !defined(CINTERFACE) +#define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID))) +#else /* defined(__cplusplus) && !defined(CINTERFACE) */ +#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#endif /* defined(__cplusplus) && !defined(CINTERFACE) */ + +#if defined(__cplusplus) && !defined(CINTERFACE) +#include <string.h> +inline bool operator==(const GUID& guidOne, const GUID& guidOther) +{ + return !memcmp(&guidOne,&guidOther,sizeof(GUID)); +} +inline bool operator!=(const GUID& guidOne, const GUID& guidOther) +{ + return !(guidOne == guidOther); +} +#endif + +extern const IID GUID_NULL; +#define IID_NULL GUID_NULL +#define CLSID_NULL GUID_NULL +#define FMTID_NULL GUID_NULL + +#endif /* _GUIDDEF_H_ */ _____ Added: trunk/reactos/include/wine/library.h --- trunk/reactos/include/wine/library.h 2005-10-08 10:28:57 UTC (rev 18322) +++ trunk/reactos/include/wine/library.h 2005-10-08 10:52:43 UTC (rev 18323) @@ -0,0 +1,210 @@ +/* + * Definitions for the Wine library + * + * Copyright 2000 Alexandre Julliard + * + * 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 + */ + +#ifndef __WINE_WINE_LIBRARY_H +#define __WINE_WINE_LIBRARY_H + +#include <stdarg.h> +#include <sys/types.h> + +#include <windef.h> +#include <winbase.h> + +/* configuration */ + +extern const char *wine_get_config_dir(void); +extern const char *wine_get_server_dir(void); +extern const char *wine_get_user_name(void); +extern void wine_init_argv0_path( const char *argv0 ); +extern void wine_exec_wine_binary( const char *name, char **argv, char **envp, int use_preloader ); + +/* dll loading */ + +typedef void (*load_dll_callback_t)( void *, const char * ); + +extern void *wine_dlopen( const char *filename, int flag, char *error, int errorsize ); +extern void *wine_dlsym( void *handle, const char *symbol, char *error, int errorsize ); +extern int wine_dlclose( void *handle, char *error, int errorsize ); +extern void wine_dll_set_callback( load_dll_callback_t load ); +extern void *wine_dll_load( const char *filename, char *error, int errorsize, int *file_exists ); +extern void *wine_dll_load_main_exe( const char *name, char *error, int errorsize, + int test_only, int *file_exists ); +extern void wine_dll_unload( void *handle ); +extern int wine_dll_get_owner( const char *name, char *buffer, int size, int *file_exists ); + +extern int __wine_main_argc; +extern char **__wine_main_argv; +extern WCHAR **__wine_main_wargv; +extern char **__wine_main_environ; +extern void wine_init( int argc, char *argv[], char *error, int error_size ); + +/* debugging */ + +extern const char * (*__wine_dbgstr_an)( const char * s, int n ); +extern const char * (*__wine_dbgstr_wn)( const WCHAR *s, int n ); +extern const char * (*__wine_dbg_vsprintf)( const char *format, va_list args ); +extern int (*__wine_dbg_vprintf)( const char *format, va_list args ); +extern int (*__wine_dbg_vlog)( unsigned int cls, const char *channel, + const char *function, const char *format, va_list args ); + +extern void wine_dbg_add_option( const char *name, unsigned char set, unsigned char clear ); +extern int wine_dbg_parse_options( const char *str ); + +/* portability */ + +extern void DECLSPEC_NORETURN wine_switch_to_stack( void (*func)(void *), void *arg, void *stack ); +extern void wine_set_pe_load_area( void *base, size_t size ); +extern void wine_free_pe_load_area(void); + +/* memory mappings */ + +extern void *wine_anon_mmap( void *start, size_t size, int prot, int flags ); +extern void wine_mmap_add_reserved_area( void *addr, size_t size ); +extern void wine_mmap_remove_reserved_area( void *addr, size_t size, int unmap ); +extern int wine_mmap_is_in_reserved_area( void *addr, size_t size ); + +/* LDT management */ + +extern void wine_ldt_init_locking( void (*lock_func)(void), void (*unlock_func)(void) ); +extern void wine_ldt_get_entry( unsigned short sel, LDT_ENTRY *entry ); +extern int wine_ldt_set_entry( unsigned short sel, const LDT_ENTRY *entry ); +extern int wine_ldt_is_system( unsigned short sel ); +extern void *wine_ldt_get_ptr( unsigned short sel, unsigned int offset ); +extern unsigned short wine_ldt_alloc_entries( int count ); +extern unsigned short wine_ldt_realloc_entries( unsigned short sel, int oldcount, int newcount ); +extern void wine_ldt_free_entries( unsigned short sel, int count ); +#ifdef __i386__ +extern unsigned short wine_ldt_alloc_fs(void); +extern void wine_ldt_init_fs( unsigned short sel, const LDT_ENTRY *entry ); +extern void wine_ldt_free_fs( unsigned short sel ); +#else /* __i386__ */ +static inline unsigned short wine_ldt_alloc_fs(void) { return 0x0b; /* pseudo GDT selector */ } +static inline void wine_ldt_init_fs( unsigned short sel, const LDT_ENTRY *entry ) { } +static inline void wine_ldt_free_fs( unsigned short sel ) { } +#endif /* __i386__ */ + + +/* the local copy of the LDT */ +#ifdef __CYGWIN__ +# ifdef WINE_EXPORT_LDT_COPY +# define WINE_LDT_EXTERN __declspec(dllexport) +# else +# define WINE_LDT_EXTERN __declspec(dllimport) +# endif +#else +# define WINE_LDT_EXTERN extern +#endif + +WINE_LDT_EXTERN struct __wine_ldt_copy +{ + void *base[8192]; /* base address or 0 if entry is free */ + unsigned long limit[8192]; /* limit in bytes or 0 if entry is free */ + unsigned char flags[8192]; /* flags (defined below) */ +} wine_ldt_copy; + +#define WINE_LDT_FLAGS_DATA 0x13 /* Data segment */ +#define WINE_LDT_FLAGS_STACK 0x17 /* Stack segment */ +#define WINE_LDT_FLAGS_CODE 0x1b /* Code segment */ +#define WINE_LDT_FLAGS_TYPE_MASK 0x1f /* Mask for segment type */ +#define WINE_LDT_FLAGS_32BIT 0x40 /* Segment is 32-bit (code or stack) */ +#define WINE_LDT_FLAGS_ALLOCATED 0x80 /* Segment is allocated (no longer free) */ + +/* helper functions to manipulate the LDT_ENTRY structure */ +inline static void wine_ldt_set_base( LDT_ENTRY *ent, const void *base ) +{ + ent->BaseLow = (WORD)(unsigned long)base; + ent->HighWord.Bits.BaseMid = (BYTE)((unsigned long)base >> 16); + ent->HighWord.Bits.BaseHi = (BYTE)((unsigned long)base >> 24); +} +inline static void wine_ldt_set_limit( LDT_ENTRY *ent, unsigned int limit ) +{ + if ((ent->HighWord.Bits.Granularity = (limit >= 0x100000))) limit >>= 12; + ent->LimitLow = (WORD)limit; + ent->HighWord.Bits.LimitHi = (limit >> 16); +} +inline static void *wine_ldt_get_base( const LDT_ENTRY *ent ) +{ + return (void *)(ent->BaseLow | + (unsigned long)ent->HighWord.Bits.BaseMid << 16 | + (unsigned long)ent->HighWord.Bits.BaseHi << 24); +} +inline static unsigned int wine_ldt_get_limit( const LDT_ENTRY *ent ) +{ + unsigned int limit = ent->LimitLow | (ent->HighWord.Bits.LimitHi << 16); + if (ent->HighWord.Bits.Granularity) limit = (limit << 12) | 0xfff; + return limit; +} +inline static void wine_ldt_set_flags( LDT_ENTRY *ent, unsigned char flags ) +{ + ent->HighWord.Bits.Dpl = 3; + ent->HighWord.Bits.Pres = 1; + ent->HighWord.Bits.Type = flags; + ent->HighWord.Bits.Sys = 0; + ent->HighWord.Bits.Reserved_0 = 0; + ent->HighWord.Bits.Default_Big = (flags & WINE_LDT_FLAGS_32BIT) != 0; +} +inline static unsigned char wine_ldt_get_flags( const LDT_ENTRY *ent ) +{ + unsigned char ret = ent->HighWord.Bits.Type; + if (ent->HighWord.Bits.Default_Big) ret |= WINE_LDT_FLAGS_32BIT; + return ret; +} +inline static int wine_ldt_is_empty( const LDT_ENTRY *ent ) +{ + const DWORD *dw = (const DWORD *)ent; + return (dw[0] | dw[1]) == 0; +} + +/* segment register access */ + +#ifdef __i386__ +# ifdef __GNUC__ +# define __DEFINE_GET_SEG(seg) \ + extern inline unsigned short wine_get_##seg(void) \ + { unsigned short res; __asm__("movw %%" #seg ",%w0" : "=r"(res)); return res; } +# define __DEFINE_SET_SEG(seg) \ + extern inline void wine_set_##seg(int val) { __asm__("movw %w0,%%" #seg : : "r" (val)); } +# elif defined(_MSC_VER) +# define __DEFINE_GET_SEG(seg) \ + extern inline unsigned short wine_get_##seg(void) \ + { unsigned short res; __asm { mov res, seg } return res; } +# define __DEFINE_SET_SEG(seg) \ + extern inline void wine_set_##seg(unsigned short val) { __asm { mov seg, val } } +# else /* __GNUC__ || _MSC_VER */ +# define __DEFINE_GET_SEG(seg) extern unsigned short wine_get_##seg(void); +# define __DEFINE_SET_SEG(seg) extern void wine_set_##seg(unsigned int); +# endif /* __GNUC__ || _MSC_VER */ +#else /* __i386__ */ +# define __DEFINE_GET_SEG(seg) inline static unsigned short wine_get_##seg(void) { return 0; } +# define __DEFINE_SET_SEG(seg) inline static void wine_set_##seg(int val) { /* nothing */ } +#endif /* __i386__ */ + +__DEFINE_GET_SEG(cs) +__DEFINE_GET_SEG(ds) +__DEFINE_GET_SEG(es) +__DEFINE_GET_SEG(fs) +__DEFINE_GET_SEG(gs) +__DEFINE_GET_SEG(ss) +__DEFINE_SET_SEG(fs) +__DEFINE_SET_SEG(gs) +#undef __DEFINE_GET_SEG +#undef __DEFINE_SET_SEG + +#endif /* __WINE_WINE_LIBRARY_H */
19 years, 2 months
1
0
0
0
[gvg] 18322: Sync to Wine-20050930:
by gvg@svn.reactos.com
Sync to Wine-20050930: Alexandre Julliard <julliard(a)winehq.org> - Now that we are requiring bison anyway, make the .tab.c file use the same base name as the .y file, so that we can generate correct dependencies in all cases. Deleted: trunk/reactos/tools/wpp/Makefile.in Modified: trunk/reactos/tools/wpp/lex.yy.c Modified: trunk/reactos/tools/wpp/ppl.l Added: trunk/reactos/tools/wpp/ppy.tab.c Added: trunk/reactos/tools/wpp/ppy.tab.h Modified: trunk/reactos/tools/wpp/wpp.mak Deleted: trunk/reactos/tools/wpp/wpp.tab.c Deleted: trunk/reactos/tools/wpp/wpp.tab.h _____ Deleted: trunk/reactos/tools/wpp/Makefile.in --- trunk/reactos/tools/wpp/Makefile.in 2005-10-08 09:33:47 UTC (rev 18321) +++ trunk/reactos/tools/wpp/Makefile.in 2005-10-08 10:28:57 UTC (rev 18322) @@ -1,37 +0,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -LEXOPT = -Cf #-w -b -YACCOPT = #-v -MODULE = libwpp.a - -C_SRCS = \ - preproc.c \ - wpp.c - -EXTRA_SRCS = ppy.y ppl.l -EXTRA_OBJS = y.tab.o @LEX_OUTPUT_ROOT@.o - -all: $(MODULE) - -@MAKE_RULES@ - -$(MODULE): $(OBJS) - $(RM) $@ - $(AR) $@ $(OBJS) - $(RANLIB) $@ - -y.tab.c y.tab.h: ppy.y - $(YACC) $(YACCOPT) -ppp -d -t $(SRCDIR)/ppy.y - -# hack to allow parallel make -y.tab.h: y.tab.c -y.tab.o: y.tab.h - -@LEX_OUTPUT_ROOT@.c: ppl.l - $(LEX) $(LEXOPT) -d -Ppp -o$@ -8 $(SRCDIR)/ppl.l - -@LEX_OUTPUT_ROOT@.o: y.tab.h - -### Dependencies: _____ Modified: trunk/reactos/tools/wpp/lex.yy.c --- trunk/reactos/tools/wpp/lex.yy.c 2005-10-08 09:33:47 UTC (rev 18321) +++ trunk/reactos/tools/wpp/lex.yy.c 2005-10-08 10:28:57 UTC (rev 18322) @@ -13901,7 +13901,7 @@ #include <assert.h> #include "wpp_private.h" -#include "wpp.tab.h" +#include "ppy.tab.h" /* * Make sure that we are running an appropriate version of flex. _____ Modified: trunk/reactos/tools/wpp/ppl.l --- trunk/reactos/tools/wpp/ppl.l 2005-10-08 09:33:47 UTC (rev 18321) +++ trunk/reactos/tools/wpp/ppl.l 2005-10-08 10:28:57 UTC (rev 18322) @@ -163,7 +163,7 @@ #include <assert.h> #include "wpp_private.h" -#include "wpp.tab.h" +#include "ppy.tab.h" /* * Make sure that we are running an appropriate version of flex. _____ Copied: trunk/reactos/tools/wpp/ppy.tab.c (from rev 18319, trunk/reactos/tools/wpp/wpp.tab.c) --- trunk/reactos/tools/wpp/wpp.tab.c 2005-10-08 00:41:31 UTC (rev 18319) +++ trunk/reactos/tools/wpp/ppy.tab.c 2005-10-08 10:28:57 UTC (rev 18322) @@ -0,0 +1,2328 @@ +/* A Bison parser, made by GNU Bison 1.875b. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Written by Richard Stallman by simplifying the original so called + ``semantic'' parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* If NAME_PREFIX is specified substitute the variables and functions + names. */ +#define yyparse ppparse +#define yylex pplex +#define yyerror pperror +#define yylval pplval +#define yychar ppchar +#define yydebug ppdebug +#define yynerrs ppnerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + tRCINCLUDE = 258, + tIF = 259, + tIFDEF = 260, + tIFNDEF = 261, + tELSE = 262, + tELIF = 263, + tENDIF = 264, + tDEFINED = 265, + tNL = 266, + tINCLUDE = 267, + tINCLUDE_NEXT = 268, + tLINE = 269, + tGCCLINE = 270, + tERROR = 271, + tWARNING = 272, + tPRAGMA = 273, + tPPIDENT = 274, + tUNDEF = 275, + tMACROEND = 276, + tCONCAT = 277, + tELIPSIS = 278, + tSTRINGIZE = 279, + tIDENT = 280, + tLITERAL = 281, + tMACRO = 282, + tDEFINE = 283, + tDQSTRING = 284, + tSQSTRING = 285, + tIQSTRING = 286, + tUINT = 287, + tSINT = 288, + tULONG = 289, + tSLONG = 290, + tULONGLONG = 291, + tSLONGLONG = 292, + tRCINCLUDEPATH = 293, + tLOGOR = 294, + tLOGAND = 295, + tNE = 296, + tEQ = 297, + tGTE = 298, + tLTE = 299, + tRSHIFT = 300, + tLSHIFT = 301 + }; +#endif +#define tRCINCLUDE 258 +#define tIF 259 +#define tIFDEF 260 +#define tIFNDEF 261 +#define tELSE 262 +#define tELIF 263 +#define tENDIF 264 +#define tDEFINED 265 +#define tNL 266 +#define tINCLUDE 267 +#define tINCLUDE_NEXT 268 +#define tLINE 269 +#define tGCCLINE 270 +#define tERROR 271 +#define tWARNING 272 +#define tPRAGMA 273 +#define tPPIDENT 274 +#define tUNDEF 275 +#define tMACROEND 276 +#define tCONCAT 277 +#define tELIPSIS 278 +#define tSTRINGIZE 279 +#define tIDENT 280 +#define tLITERAL 281 +#define tMACRO 282 +#define tDEFINE 283 +#define tDQSTRING 284 +#define tSQSTRING 285 +#define tIQSTRING 286 +#define tUINT 287 +#define tSINT 288 +#define tULONG 289 +#define tSLONG 290 +#define tULONGLONG 291 +#define tSLONGLONG 292 +#define tRCINCLUDEPATH 293 +#define tLOGOR 294 +#define tLOGAND 295 +#define tNE 296 +#define tEQ 297 +#define tGTE 298 +#define tLTE 299 +#define tRSHIFT 300 +#define tLSHIFT 301 + + + + +/* Copy the first part of user declarations. */ +#line 30 "wpp/ppy.y" + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <assert.h> +#include <ctype.h> +#include <string.h> + +#include "wpp_private.h" + + +#define UNARY_OP(r, v, OP) \ + switch(v.type) \ + { \ + case cv_sint: r.val.si = OP v.val.si; break; \ + case cv_uint: r.val.ui = OP v.val.ui; break; \ + case cv_slong: r.val.sl = OP v.val.sl; break; \ + case cv_ulong: r.val.ul = OP v.val.ul; break; \ + case cv_sll: r.val.sll = OP v.val.sll; break; \ + case cv_ull: r.val.ull = OP v.val.ull; break; \ + } + +#define cv_signed(v) ((v.type & FLAG_SIGNED) != 0) + +#define BIN_OP_INT(r, v1, v2, OP) \ + r.type = v1.type; \ + if(cv_signed(v1) && cv_signed(v2)) \ + r.val.si = v1.val.si OP v2.val.si; \ + else if(cv_signed(v1) && !cv_signed(v2)) \ + r.val.si = v1.val.si OP v2.val.ui; \ + else if(!cv_signed(v1) && cv_signed(v2)) \ + r.val.ui = v1.val.ui OP v2.val.si; \ + else \ + r.val.ui = v1.val.ui OP v2.val.ui; + +#define BIN_OP_LONG(r, v1, v2, OP) \ + r.type = v1.type; \ + if(cv_signed(v1) && cv_signed(v2)) \ + r.val.sl = v1.val.sl OP v2.val.sl; \ + else if(cv_signed(v1) && !cv_signed(v2)) \ + r.val.sl = v1.val.sl OP v2.val.ul; \ + else if(!cv_signed(v1) && cv_signed(v2)) \ + r.val.ul = v1.val.ul OP v2.val.sl; \ + else \ + r.val.ul = v1.val.ul OP v2.val.ul; + +#define BIN_OP_LONGLONG(r, v1, v2, OP) \ + r.type = v1.type; \ + if(cv_signed(v1) && cv_signed(v2)) \ + r.val.sll = v1.val.sll OP v2.val.sll; \ + else if(cv_signed(v1) && !cv_signed(v2)) \ + r.val.sll = v1.val.sll OP v2.val.ull; \ + else if(!cv_signed(v1) && cv_signed(v2)) \ + r.val.ull = v1.val.ull OP v2.val.sll; \ + else \ + r.val.ull = v1.val.ull OP v2.val.ull; + +#define BIN_OP(r, v1, v2, OP) \ + switch(v1.type & SIZE_MASK) \ + { \ + case SIZE_INT: BIN_OP_INT(r, v1, v2, OP); break; \ + case SIZE_LONG: BIN_OP_LONG(r, v1, v2, OP); break; \ + case SIZE_LONGLONG: BIN_OP_LONGLONG(r, v1, v2, OP); break; \ + default: pp_internal_error(__FILE__, __LINE__, "Invalid type indicator (0x%04x)", v1.type); \ + } + + +/* + * Prototypes + */ +static int boolean(cval_t *v); +static void promote_equal_size(cval_t *v1, cval_t *v2); +static void cast_to_sint(cval_t *v); +static void cast_to_uint(cval_t *v); +static void cast_to_slong(cval_t *v); +static void cast_to_ulong(cval_t *v); +static void cast_to_sll(cval_t *v); +static void cast_to_ull(cval_t *v); +static marg_t *new_marg(char *str, def_arg_t type); +static marg_t *add_new_marg(char *str, def_arg_t type); +static int marg_index(char *id); +static mtext_t *new_mtext(char *str, int idx, def_exp_t type); +static mtext_t *combine_mtext(mtext_t *tail, mtext_t *mtp); +static char *merge_text(char *s1, char *s2); + +/* + * Local variables + */ +static marg_t **macro_args; /* Macro parameters array while parsing */ +static int nmacro_args; + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 126 "wpp/ppy.y" +typedef union YYSTYPE { + int sint; + unsigned int uint; + long slong; + unsigned long ulong; + wrc_sll_t sll; + wrc_ull_t ull; + int *iptr; + char *cptr; + cval_t cval; + marg_t *marg; + mtext_t *mtext; +} YYSTYPE; +/* Line 191 of yacc.c. */ +#line 287 "wpp/ppy.tab.c" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 214 of yacc.c. */ +#line 299 "wpp/ppy.tab.c" + +#if ! defined (yyoverflow) || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# if YYSTACK_USE_ALLOCA +# define YYSTACK_ALLOC alloca +# else +# ifndef YYSTACK_USE_ALLOCA +# if defined (alloca) || defined (_ALLOCA_H) +# define YYSTACK_ALLOC alloca +# else +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC malloc +# define YYSTACK_FREE free +# endif +#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + register YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined (__STDC__) || defined (__cplusplus) + typedef signed char yysigned_char; +#else + typedef short yysigned_char; +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 2 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 308 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 63 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 13 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 86 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 158 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 301 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const unsigned char yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 59, 2, 2, 2, 2, 45, 2, + 61, 62, 56, 54, 60, 55, 2, 57, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 40, 2, + 48, 2, 49, 39, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 44, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 43, 2, 58, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 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, 41, 42, 46, 47, 50, 51, + 52, 53 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const unsigned short yyprhs[] = +{ + 0, 0, 3, 4, 7, 11, 15, 19, 23, 27, + 31, 35, 39, 42, 45, 49, 53, 60, 65, 70, + 76, 83, 91, 100, 103, 107, 111, 115, 119, 122, + 125, 126, 128, 130, 132, 134, 137, 140, 143, 144, + 145, 147, 149, 153, 157, 159, 160, 162, 164, 167, + 169, 171, 173, 175, 178, 180, 182, 184, 186, 188, + 190, 192, 195, 200, 202, 206, 210, 214, 218, 222, + 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, + 266, 270, 273, 276, 279, 282, 286 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yysigned_char yyrhs[] = +{ + 64, 0, -1, -1, 64, 65, -1, 12, 29, 11, + -1, 12, 31, 11, -1, 13, 29, 11, -1, 13, + 31, 11, -1, 4, 75, 11, -1, 5, 25, 11, + -1, 6, 25, 11, -1, 8, 75, 11, -1, 7, + 11, -1, 9, 11, -1, 20, 25, 11, -1, 28, + 66, 11, -1, 27, 68, 69, 21, 72, 11, -1, + 14, 33, 29, 11, -1, 15, 33, 29, 11, -1, + 15, 33, 29, 33, 11, -1, 15, 33, 29, 33, + 33, 11, -1, 15, 33, 29, 33, 33, 33, 11, + -1, 15, 33, 29, 33, 33, 33, 33, 11, -1, + 15, 11, -1, 16, 66, 11, -1, 17, 66, 11, + -1, 18, 66, 11, -1, 19, 66, 11, -1, 3, + 38, -1, 3, 29, -1, -1, 67, -1, 26, -1, + 29, -1, 30, -1, 67, 26, -1, 67, 29, -1, + 67, 30, -1, -1, -1, 70, -1, 71, -1, 71, + 60, 23, -1, 71, 60, 25, -1, 25, -1, -1, + 73, -1, 74, -1, 73, 74, -1, 26, -1, 29, + -1, 30, -1, 22, -1, 24, 25, -1, 25, -1, + 33, -1, 32, -1, 35, -1, 34, -1, 37, -1, + 36, -1, 10, 25, -1, 10, 61, 25, 62, -1, + 25, -1, 75, 41, 75, -1, 75, 42, 75, -1, + 75, 47, 75, -1, 75, 46, 75, -1, 75, 48, + 75, -1, 75, 49, 75, -1, 75, 51, 75, -1, + 75, 50, 75, -1, 75, 54, 75, -1, 75, 55, + 75, -1, 75, 44, 75, -1, 75, 45, 75, -1, + 75, 43, 75, -1, 75, 56, 75, -1, 75, 57, + 75, -1, 75, 53, 75, -1, 75, 52, 75, -1, + 54, 75, -1, 55, 75, -1, 58, 75, -1, 59, + 75, -1, 61, 75, 62, -1, 75, 39, 75, 40, + 75, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const unsigned short yyrline[] = +{ + 0, 181, 181, 182, 186, 187, 188, 189, 190, 191, + 192, 212, 233, 256, 271, 272, 273, 276, 277, 278, + 280, 282, 284, 286, 287, 288, 289, 290, 291, 298, + 304, 305, 308, 309, 310, 311, 312, 313, 316, 319, + 320, 323, 324, 327, 328, 332, 333, 339, 340, 343, + 344, 345, 346, 347, 353, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE +/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "tRCINCLUDE", "tIF", "tIFDEF", "tIFNDEF", + "tELSE", "tELIF", "tENDIF", "tDEFINED", "tNL", "tINCLUDE", + "tINCLUDE_NEXT", "tLINE", "tGCCLINE", "tERROR", "tWARNING", "tPRAGMA", + "tPPIDENT", "tUNDEF", "tMACROEND", "tCONCAT", "tELIPSIS", "tSTRINGIZE", + "tIDENT", "tLITERAL", "tMACRO", "tDEFINE", "tDQSTRING", "tSQSTRING", + "tIQSTRING", "tUINT", "tSINT", "tULONG", "tSLONG", "tULONGLONG", + "tSLONGLONG", "tRCINCLUDEPATH", "'?'", "':'", "tLOGOR", "tLOGAND", + "'|'", "'^'", "'&'", "tNE", "tEQ", "'<'", "'>'", "tGTE", "tLTE", + "tRSHIFT", "tLSHIFT", "'+'", "'-'", "'*'", "'/'", "'~'", "'!'", "','", + "'('", "')'", "$accept", "pp_file", "preprocessor", "opt_text", "text", + "res_arg", "allmargs", "emargs", "margs", "opt_mtexts", "mtexts", + "mtext", "pp_expr", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const unsigned short yytoknum[] = +{ + 0, 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, 63, + 58, 294, 295, 124, 94, 38, 296, 297, 60, 62, + 298, 299, 300, 301, 43, 45, 42, 47, 126, 33, + 44, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const unsigned char yyr1[] = +{ + 0, 63, 64, 64, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 66, 66, 67, 67, 67, 67, 67, 67, 68, 69, + 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, + 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const unsigned char yyr2[] = +{ + 0, 2, 0, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 3, 3, 6, 4, 4, 5, + 6, 7, 8, 2, 3, 3, 3, 3, 2, 2, + 0, 1, 1, 1, 1, 2, 2, 2, 0, 0, + 1, 1, 3, 3, 1, 0, 1, 1, 2, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 2, 2, 3, 5 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const unsigned char yydefact[] = +{ + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 30, 30, 30, 0, 38, + 30, 3, 29, 28, 0, 63, 56, 55, 58, 57, + 60, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 13, 0, 0, 0, 0, 0, 23, 0, + 32, 33, 34, 0, 31, 0, 0, 0, 0, 39, + 0, 61, 0, 81, 82, 83, 84, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, + 4, 5, 6, 7, 0, 0, 24, 35, 36, 37, + 25, 26, 27, 14, 44, 0, 40, 41, 15, 0, + 85, 0, 64, 65, 76, 74, 75, 67, 66, 68, + 69, 71, 70, 80, 79, 72, 73, 77, 78, 17, + 18, 0, 45, 0, 62, 0, 19, 0, 52, 0, + 54, 49, 50, 51, 0, 46, 47, 42, 43, 86, + 20, 0, 53, 16, 48, 21, 0, 22 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const short yydefgoto[] = +{ + -1, 1, 21, 53, 54, 59, 105, 106, 107, 144, + 145, 146, 37 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -28 +static const short yypact[] = +{ + -28, 126, -28, -27, -3, -13, -5, 4, -3, 12, + -10, 28, 21, 2, -20, -20, -20, -20, 35, -28, + -20, -28, -28, -28, -24, -28, -28, -28, -28, -28, + -28, -28, -3, -3, -3, -3, -3, 42, 95, 97, + -28, 68, -28, 117, 137, 138, 141, 127, -28, 170, + -28, -28, -28, 277, 121, 281, 282, 285, 286, 273, + 288, -28, 275, 80, 80, -28, -28, 116, -28, -3, + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, + -3, -3, -3, -3, -3, -3, -3, -28, -28, -28, + -28, -28, -28, -28, 290, 3, -28, -28, -28, -28, + -28, -28, -28, -28, -28, 283, -28, 242, -28, 241, + -28, 140, 175, 190, 204, 217, 229, -7, -7, 48, + 48, 48, 48, 120, 120, 80, 80, -28, -28, -28, + -28, 5, 265, 57, -28, -3, -28, 6, -28, 280, + -28, -28, -28, -28, 295, 265, -28, -28, -28, 159, + -28, 7, -28, -28, -28, -28, 296, -28 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const short yypgoto[] = +{ + -28, -28, -28, -12, -28, -28, -28, -28, -28, -28, + -28, 163, -8 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const unsigned char yytable[] = +{ + 41, 61, 22, 55, 56, 57, 50, 24, 60, 51, + 52, 23, 38, 48, 130, 40, 136, 150, 155, 43, + 39, 44, 25, 42, 63, 64, 65, 66, 67, 26, + 27, 28, 29, 30, 31, 49, 131, 62, 137, 151, + 156, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 32, 33, 68, 47, 34, 35, 45, 36, 46, + 58, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 89, + 147, 69, 148, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 81, 82, 83, 84, 85, 86, 87, 69, 88, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 2, 149, 90, 3, + 4, 5, 6, 7, 8, 9, 85, 86, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 97, 91, 92, + 98, 99, 93, 19, 20, 69, 94, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 83, 84, 85, 86, 110, 69, + 135, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 69, 95, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 138, 96, 139, + 140, 141, 100, 101, 142, 143, 102, 103, 104, 108, + 109, 129, 133, 134, 132, 152, 153, 157, 154 +}; + +static const unsigned char yycheck[] = +{ + 8, 25, 29, 15, 16, 17, 26, 10, 20, 29, + 30, 38, 25, 11, 11, 11, 11, 11, 11, 29, + 25, 31, 25, 11, 32, 33, 34, 35, 36, 32, + 33, 34, 35, 36, 37, 33, 33, 61, 33, 33, + 33, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 54, 55, 11, 33, 58, 59, 29, 61, 31, + 25, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 11, + 23, 39, 25, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 52, 53, 54, 55, 56, 57, 11, 39, 11, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 0, 135, 11, 3, + 4, 5, 6, 7, 8, 9, 56, 57, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 26, 11, 11, + 29, 30, 11, 27, 28, 39, 29, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 54, 55, 56, 57, 62, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 39, 29, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 22, 11, 24, + 25, 26, 11, 11, 29, 30, 11, 11, 25, 11, + 25, 11, 60, 62, 21, 25, 11, 11, 145 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const unsigned char yystos[] = +{ + 0, 64, 0, 3, 4, 5, 6, 7, 8, 9, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 27, + 28, 65, 29, 38, 10, 25, 32, 33, 34, 35, + 36, 37, 54, 55, 58, 59, 61, 75, 25, 25, + 11, 75, 11, 29, 31, 29, 31, 33, 11, 33, + 26, 29, 30, 66, 67, 66, 66, 66, 25, 68, + 66, 25, 61, 75, 75, 75, 75, 75, 11, 39, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 11, 11, 11, + 11, 11, 11, 11, 29, 29, 11, 26, 29, 30, + 11, 11, 11, 11, 25, 69, 70, 71, 11, 25, + 62, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 11, + 11, 33, 21, 60, 62, 40, 11, 33, 22, 24, + 25, 26, 29, 30, 72, 73, 74, 23, 25, 75, + 11, 33, 25, 11, 74, 11, 33, 11 +}; + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int +#endif + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror ("syntax error: cannot back up");\ + YYERROR; \ + } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +/* YYLLOC_DEFAULT -- Compute the default location (before the actions + are run). */ + +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.first_line = Rhs[1].first_line; \ + Current.first_column = Rhs[1].first_column; \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; +#endif + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +# define YYDSYMPRINT(Args) \ +do { \ + if (yydebug) \ + yysymprint Args; \ +} while (0) + +# define YYDSYMPRINTF(Title, Token, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yysymprint (stderr, \ + Token, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (cinluded). | +`------------------------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_stack_print (short *bottom, short *top) +#else +static void +yy_stack_print (bottom, top) + short *bottom; + short *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_reduce_print (int yyrule) +#else +static void +yy_reduce_print (yyrule) + int yyrule; +#endif +{ + int yyi; + unsigned int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", + yyrule - 1, yylno); + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) + YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); + YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YYDSYMPRINT(Args) +# define YYDSYMPRINTF(Title, Token, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#if YYMAXDEPTH == 0 +# undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif [truncated at 1000 lines; 4068 more skipped]
19 years, 2 months
1
0
0
0
[gvg] 18321: Sync to Wine-20050930:
by gvg@svn.reactos.com
Sync to Wine-20050930: Alexandre Julliard <julliard(a)winehq.org> - Avoid some warnings on 64-bit platforms. Modified: trunk/reactos/tools/unicode/cptable.c _____ Modified: trunk/reactos/tools/unicode/cptable.c --- trunk/reactos/tools/unicode/cptable.c 2005-10-08 09:19:17 UTC (rev 18320) +++ trunk/reactos/tools/unicode/cptable.c 2005-10-08 09:33:47 UTC (rev 18321) @@ -156,7 +156,7 @@ static int cmp_codepage( const void *codepage, const void *entry ) { - return (unsigned int)codepage - (*(const union cptable *const *)entry)->info.codepage; + return *(unsigned int *)codepage - (*(const union cptable *const *)entry)->info.codepage; } @@ -165,7 +165,7 @@ { const union cptable **res; - if (!(res = bsearch( (void *)codepage, cptables, NB_CODEPAGES, + if (!(res = bsearch( &codepage, cptables, NB_CODEPAGES, sizeof(cptables[0]), cmp_codepage ))) return NULL; return *res; }
19 years, 2 months
1
0
0
0
[gvg] 18320: Wine-20050930 vendor drop
by gvg@svn.reactos.com
Wine-20050930 vendor drop Modified: vendor/wine/dlls/comctl32/current/animate.c Modified: vendor/wine/dlls/comctl32/current/comboex.c Modified: vendor/wine/dlls/comctl32/current/comctl32.h Modified: vendor/wine/dlls/comctl32/current/comctl32.spec Modified: vendor/wine/dlls/comctl32/current/comctl32undoc.c Added: vendor/wine/dlls/comctl32/current/comctl_Bg.rc Added: vendor/wine/dlls/comctl32/current/comctl_No.rc Modified: vendor/wine/dlls/comctl32/current/commctrl.c Modified: vendor/wine/dlls/comctl32/current/header.c Modified: vendor/wine/dlls/comctl32/current/listview.c Modified: vendor/wine/dlls/comctl32/current/propsheet.c Modified: vendor/wine/dlls/comctl32/current/rebar.c Modified: vendor/wine/dlls/comctl32/current/rsrc.rc Modified: vendor/wine/dlls/comctl32/current/theming.c Modified: vendor/wine/dlls/comctl32/current/toolbar.c Modified: vendor/wine/dlls/comctl32/current/treeview.c Modified: vendor/wine/dlls/commdlg/current/cdlg32.c Added: vendor/wine/dlls/commdlg/current/cdlg_Bg.rc Modified: vendor/wine/dlls/commdlg/current/cdlg_Fi.rc Modified: vendor/wine/dlls/commdlg/current/cdlg_No.rc Modified: vendor/wine/dlls/commdlg/current/colordlg.c Modified: vendor/wine/dlls/commdlg/current/filedlg.c Modified: vendor/wine/dlls/commdlg/current/fontdlg.c Modified: vendor/wine/dlls/commdlg/current/printdlg.c Modified: vendor/wine/dlls/commdlg/current/printdlg16.c Modified: vendor/wine/dlls/commdlg/current/rsrc.rc Added: vendor/wine/dlls/dinput/ Modified: vendor/wine/dlls/dinput/current/Makefile.in Modified: vendor/wine/dlls/dinput/current/data_formats.c Modified: vendor/wine/dlls/dinput/current/device.c Modified: vendor/wine/dlls/dinput/current/device_private.h Modified: vendor/wine/dlls/dinput/current/dinput.spec Modified: vendor/wine/dlls/dinput/current/dinput_main.c Modified: vendor/wine/dlls/dinput/current/dinput_private.h Added: vendor/wine/dlls/dinput/current/effect_linuxinput.c Modified: vendor/wine/dlls/dinput/current/joystick_linux.c Modified: vendor/wine/dlls/dinput/current/joystick_linuxinput.c Modified: vendor/wine/dlls/dinput/current/keyboard.c Modified: vendor/wine/dlls/dinput/current/mouse.c Modified: vendor/wine/dlls/dinput/current/regsvr.c Modified: vendor/wine/dlls/dinput/current/version.rc Modified: vendor/wine/dlls/dsound/current/buffer.c Modified: vendor/wine/dlls/dsound/current/capture.c Modified: vendor/wine/dlls/dsound/current/dsound.c Modified: vendor/wine/dlls/dsound/current/dsound_main.c Modified: vendor/wine/dlls/dsound/current/duplex.c Modified: vendor/wine/dlls/dsound/current/primary.c Modified: vendor/wine/dlls/dsound/current/propset.c Modified: vendor/wine/dlls/mpr/current/mpr.rc Added: vendor/wine/dlls/mpr/current/mpr_Bg.rc Added: vendor/wine/dlls/mpr/current/mpr_No.rc Modified: vendor/wine/dlls/mpr/current/mpr_main.c Modified: vendor/wine/dlls/msi/current/action.c Modified: vendor/wine/dlls/msi/current/action.h Modified: vendor/wine/dlls/msi/current/appsearch.c Modified: vendor/wine/dlls/msi/current/classes.c Modified: vendor/wine/dlls/msi/current/cond.y Modified: vendor/wine/dlls/msi/current/create.c Modified: vendor/wine/dlls/msi/current/custom.c Modified: vendor/wine/dlls/msi/current/database.c Modified: vendor/wine/dlls/msi/current/delete.c Modified: vendor/wine/dlls/msi/current/dialog.c Modified: vendor/wine/dlls/msi/current/distinct.c Modified: vendor/wine/dlls/msi/current/events.c Modified: vendor/wine/dlls/msi/current/files.c Modified: vendor/wine/dlls/msi/current/format.c Modified: vendor/wine/dlls/msi/current/handle.c Modified: vendor/wine/dlls/msi/current/helpers.c Modified: vendor/wine/dlls/msi/current/insert.c Modified: vendor/wine/dlls/msi/current/install.c Modified: vendor/wine/dlls/msi/current/msi.c Modified: vendor/wine/dlls/msi/current/msi.rc Modified: vendor/wine/dlls/msi/current/msi.spec Added: vendor/wine/dlls/msi/current/msi_Bg.rc Added: vendor/wine/dlls/msi/current/msi_Fi.rc Added: vendor/wine/dlls/msi/current/msi_No.rc Modified: vendor/wine/dlls/msi/current/msipriv.h Modified: vendor/wine/dlls/msi/current/msiquery.c Modified: vendor/wine/dlls/msi/current/order.c Modified: vendor/wine/dlls/msi/current/package.c Modified: vendor/wine/dlls/msi/current/preview.c Modified: vendor/wine/dlls/msi/current/record.c Modified: vendor/wine/dlls/msi/current/registry.c Modified: vendor/wine/dlls/msi/current/select.c Modified: vendor/wine/dlls/msi/current/source.c Modified: vendor/wine/dlls/msi/current/sql.y Modified: vendor/wine/dlls/msi/current/string.c Modified: vendor/wine/dlls/msi/current/suminfo.c Modified: vendor/wine/dlls/msi/current/table.c Modified: vendor/wine/dlls/msi/current/update.c Modified: vendor/wine/dlls/msi/current/upgrade.c Modified: vendor/wine/dlls/msi/current/where.c Modified: vendor/wine/dlls/ole32/current/bindctx.c Modified: vendor/wine/dlls/ole32/current/clipboard.c Modified: vendor/wine/dlls/ole32/current/compobj.c Modified: vendor/wine/dlls/ole32/current/compobj_private.h Modified: vendor/wine/dlls/ole32/current/datacache.c Modified: vendor/wine/dlls/ole32/current/dcom.idl Modified: vendor/wine/dlls/ole32/current/defaulthandler.c Modified: vendor/wine/dlls/ole32/current/errorinfo.c [truncated at 100 lines; 124 more skipped] _____ Modified: vendor/wine/dlls/comctl32/current/animate.c --- vendor/wine/dlls/comctl32/current/animate.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/animate.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -252,15 +252,12 @@ static BOOL ANIMATE_PaintFrame(ANIMATE_INFO* infoPtr, HDC hDC) { - void* pBitmapData = NULL; - LPBITMAPINFO pBitmapInfo = NULL; - + void *pBitmapData; + LPBITMAPINFO pBitmapInfo; HDC hdcMem; HBITMAP hbmOld; - int nOffsetX = 0; int nOffsetY = 0; - int nWidth; int nHeight; @@ -289,11 +286,11 @@ infoPtr->hbmPrevFrame=CreateCompatibleBitmap(hDC, nWidth,nHeight ); } - SetDIBits(hDC, infoPtr->hbmPrevFrame, 0, nHeight, pBitmapData, (LPBITMAPINFO)pBitmapInfo, DIB_RGB_COLORS); - hdcMem = CreateCompatibleDC(hDC); hbmOld = SelectObject(hdcMem, infoPtr->hbmPrevFrame); + SetDIBits(hdcMem, infoPtr->hbmPrevFrame, 0, nHeight, pBitmapData, pBitmapInfo, DIB_RGB_COLORS); + /* * we need to get the transparent color even without ACS_TRANSPARENT, * because the style can be changed later on and the color should always _____ Modified: vendor/wine/dlls/comctl32/current/comboex.c --- vendor/wine/dlls/comctl32/current/comboex.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/comboex.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -473,7 +473,7 @@ CBE_ITEMDATA *item; INT i; - if ((index > infoPtr->nb_items) || (index < -1)) + if ((index >= infoPtr->nb_items) || (index < -1)) return 0; if (index == -1) return infoPtr->edit; @@ -509,7 +509,7 @@ TRACE("(index=%d)\n", index); /* if item number requested does not exist then return failure */ - if ((index > infoPtr->nb_items) || (index < 0)) return CB_ERR; + if ((index >= infoPtr->nb_items) || (index < 0)) return CB_ERR; if (!(item = COMBOEX_FindItem(infoPtr, index))) return CB_ERR; /* doing this will result in WM_DELETEITEM being issued */ @@ -527,7 +527,7 @@ TRACE("(...)\n"); /* if item number requested does not exist then return failure */ - if ((index > infoPtr->nb_items) || (index < -1)) return FALSE; + if ((index >= infoPtr->nb_items) || (index < -1)) return FALSE; /* if the item is the edit control and there is no edit control, skip */ if ((index == -1) && !COMBOEX_HasEdit(infoPtr)) return FALSE; @@ -587,7 +587,7 @@ /* get real index of item to insert */ index = cit->iItem; if (index == -1) index = infoPtr->nb_items; - if (index > infoPtr->nb_items) index = infoPtr->nb_items; + if (index > infoPtr->nb_items) return -1; /* get zero-filled space and chain it in */ if(!(item = (CBE_ITEMDATA *)Alloc (sizeof(*item)))) return -1; @@ -740,7 +740,7 @@ if (TRACE_ON(comboex)) COMBOEX_DumpInput (cit); /* if item number requested does not exist then return failure */ - if ((index > infoPtr->nb_items) || (index < -1)) return FALSE; + if ((index >= infoPtr->nb_items) || (index < -1)) return FALSE; /* if the item is the edit control and there is no edit control, skip */ if ((index == -1) && !COMBOEX_HasEdit(infoPtr)) return FALSE; _____ Modified: vendor/wine/dlls/comctl32/current/comctl32.h --- vendor/wine/dlls/comctl32/current/comctl32.h 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/comctl32.h 2005-10-08 09:19:17 UTC (rev 18320) @@ -250,6 +250,7 @@ } extern void THEMING_Initialize(void); +extern void THEMING_Uninitialize(void); extern LRESULT THEMING_CallOriginalClass(HWND, UINT, WPARAM, LPARAM); extern void THEMING_SetSubclassData(HWND, ULONG_PTR); _____ Modified: vendor/wine/dlls/comctl32/current/comctl32.spec --- vendor/wine/dlls/comctl32/current/comctl32.spec 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/comctl32.spec 2005-10-08 09:19:17 UTC (rev 18320) @@ -15,7 +15,7 @@ 11 stdcall -noname DPA_Merge(ptr ptr long ptr ptr long) #12 stub Cctl1632_ThunkData32 13 stdcall MakeDragList(long) - 14 stdcall LBItemFromPt(long long long long) + 14 stdcall LBItemFromPt(long double long) 15 stdcall DrawInsert(long long long) 16 stdcall CreateUpDownControl(long long long long long long long long long long long long) 17 stdcall InitCommonControls() _____ Modified: vendor/wine/dlls/comctl32/current/comctl32undoc.c --- vendor/wine/dlls/comctl32/current/comctl32undoc.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/comctl32undoc.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -579,7 +579,7 @@ if (!stringW) return -1; - MultiByteToWideChar(CP_ACP, 0, lpszString, -1, stringW, len); + MultiByteToWideChar(CP_ACP, 0, lpszString, -1, stringW, len/sizeof(WCHAR)); ret = AddMRUData(hList, stringW, len); Free(stringW); return ret; @@ -682,13 +682,15 @@ /* get values from key 'MRUList' */ if (newkey) { - datasize = mp->extview.nMaxItems + 1; + datasize = (mp->extview.nMaxItems + 1) * sizeof(WCHAR); if((err=RegQueryValueExW( newkey, strMRUList, 0, &type, (LPBYTE)mp->realMRU, &datasize))) { /* not present - set size to 1 (will become 0 later) */ datasize = 1; *mp->realMRU = 0; } + else + datasize /= sizeof(WCHAR); TRACE("MRU list = %s, datasize = %ld\n", debugstr_w(mp->realMRU), datasize); _____ Added: vendor/wine/dlls/comctl32/current/comctl_Bg.rc --- vendor/wine/dlls/comctl32/current/comctl_Bg.rc 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/comctl_Bg.rc 2005-10-08 09:19:17 UTC (rev 18320) @@ -0,0 +1,89 @@ +/* + * comctl (Bulgarian resource) + * + * Copyright 2005 Milko Krachounov + * + * 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 + */ + +LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT + +IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 +STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "ÐÔ¯Ú±?ÔÓ ÝÓ " +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP + PUSHBUTTON "??ýÕÝÞ", IDCANCEL,58,122,50,14 + PUSHBUTTON "&¤¯?Ô·õÞ", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED + PUSHBUTTON "¤¯ý¯¨", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP + CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS _MULTILINE,4,4,212,114 +END + + +IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Wizard" +FONT 8, "MS Shell Dlg" +BEGIN + PUSHBUTTON "< ?Ó&þÓõ", IDC_BACK_BUTTON,71,138,50,14 + DEFPUSHBUTTON "?Ó&´Õõ >", IDC_NEXT_BUTTON,121,138,50,14 + DEFPUSHBUTTON "¤ÞÛÙ?¸Þ", IDC_FINISH_BUTTON,121,138,50,14 + PUSHBUTTON "??ýÕÝÞ", IDCANCEL,178,138,50,14 + PUSHBUTTON "¤¯ý¯¨", IDHELP,235,138,50,14,WS_GROUP + LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN + CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 + LTEXT "", IDC_SUNKEN_LINEHEADER,0,35,290,1,SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE +END + + +IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 407, 125 /* 357 -> 407 ? */ +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "¤Õ±¯ÝÓÙÞþÞÓÝÕ ÝÓ ÙÕÝ?Ó?Ó ± Þݱ?¾ýÕÝ?Þ" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "&ÃÓ?Ô¯Þ", IDCANCEL,318,6,84,14 /* 44 -> 84; 308 -> 318 ? */ + PUSHBUTTON "&?·þ±?ÓݯÔÞ", IDC_RESET_BTN,318,23,84,14 /* 44 -> 84 ? */ + PUSHBUTTON "&¤¯ý¯¨", IDC_HELP_BTN,318,40,84,14 /* 44 -> 84 ? */ + PUSHBUTTON "¤ÕýÕ±?Þ ÝÓ&Ò¯Õ", IDC_MOVEUP_BTN,318,74,84,14 /* 44 -> 84 ? */ + PUSHBUTTON "¤ÕýÕ±?Þ ÝÓ&õ¯Ù¾", IDC_MOVEDN_BTN,318,91,84,14 /* 44 -> 84 ? */ + LTEXT "&?ÓÙÞ¸ÝÞ ß¾?¯ÝÞ:", -1,4,5,84,10 + LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "?¯&ßÓÔÞ ->", IDOK, 131, 42, 54, 14 /* 44 -> 54 ? */ + PUSHBUTTON "<- ¤Õ&ýÓ§ÝÞ", IDC_REMOVE_BTN,131,62,54,14 /* 44 -> 54 ? */ + LTEXT "&?¾?¯ÝÞ ÝÓ ÙÕÝ?Ó?Ó ± Þݱ?¾ýÕÝ?Þ:", -1,192,5,78,10 /* 182 -> 192 ? */ + LISTBOX IDC_TOOLBARBTN_LBOX, 192,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP /* 182 -> 192 ? */ +END + +STRINGTABLE DISCARDABLE +{ + IDS_CLOSE "ÃÓ?Ô¯Þ" +} + +STRINGTABLE DISCARDABLE +{ + IDM_TODAY "?ÝÕ±:" + IDM_GOTODAY "?õÞ ÝÓ õÝÕ±" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SEPARATOR "ðÓþõÕÙÞ?ÕÙ" +} + +STRINGTABLE DISCARDABLE +{ + HKY_NONE "?Þ¨¯" +} Property changes on: vendor/wine/dlls/comctl32/current/comctl_Bg.rc ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native _____ Added: vendor/wine/dlls/comctl32/current/comctl_No.rc --- vendor/wine/dlls/comctl32/current/comctl_No.rc 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/comctl_No.rc 2005-10-08 09:19:17 UTC (rev 18320) @@ -0,0 +1,87 @@ +/* + * Copyright 2005 Alexander N. S°rnes + * + * 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 + */ + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL + +IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 +STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Egenskaper for " +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP + PUSHBUTTON "Avbryt", IDCANCEL,58,122,50,14 + PUSHBUTTON "&Bruk", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED + PUSHBUTTON "Hjelp", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP + CONTROL "Fane", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS _MULTILINE,4,4,212,114 +END + + +IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Veiviser" +FONT 8, "MS Shell Dlg" +BEGIN + PUSHBUTTON "< Til&bake", IDC_BACK_BUTTON,71,138,50,14 + DEFPUSHBUTTON "&Neste >", IDC_NEXT_BUTTON,121,138,50,14 + DEFPUSHBUTTON "Fullf°r", IDC_FINISH_BUTTON,121,138,50,14 + PUSHBUTTON "Avbryt", IDCANCEL,178,138,50,14 + PUSHBUTTON "Hjelp", IDHELP,235,138,50,14,WS_GROUP + LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN + CONTROL "Fane", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 + LTEXT "", IDC_SUNKEN_LINEHEADER,0,35,290,1,SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE +END + + +IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Tilpass verkt°ylinje" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "&Lukk", IDCANCEL,308,6,44,14 + PUSHBUTTON "Tilbak&estill", IDC_RESET_BTN,308,23,44,14 + PUSHBUTTON "&Hjelp", IDC_HELP_BTN,308,40,44,14 + PUSHBUTTON "Flytt &opp", IDC_MOVEUP_BTN,308,74,44,14 + PUSHBUTTON "Flytt ne&d", IDC_MOVEDN_BTN,308,91,44,14 + LTEXT "Tilgjengelige &knapper:", -1,4,5,84,10 + LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "Le&gg til ->", IDOK, 131, 42, 44, 14 + PUSHBUTTON "<- Fje&rn", IDC_REMOVE_BTN,131,62,44,14 + LTEXT "Verk&t°ylinje-knapper:", -1,182,5,78,10 + LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP +END + +STRINGTABLE DISCARDABLE +{ + IDS_CLOSE "Lukk" +} + +STRINGTABLE DISCARDABLE +{ + IDM_TODAY "Idag:" + IDM_GOTODAY "GÕ til idag" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SEPARATOR "Adskiller" +} + +STRINGTABLE DISCARDABLE +{ + HKY_NONE "Ingen" +} Property changes on: vendor/wine/dlls/comctl32/current/comctl_No.rc ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native _____ Modified: vendor/wine/dlls/comctl32/current/commctrl.c --- vendor/wine/dlls/comctl32/current/commctrl.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/commctrl.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -150,6 +150,9 @@ break; case DLL_PROCESS_DETACH: + /* clean up subclassing */ + THEMING_Uninitialize(); + /* unregister all common control classes */ ANIMATE_Unregister (); COMBOEX_Unregister (); _____ Modified: vendor/wine/dlls/comctl32/current/header.c --- vendor/wine/dlls/comctl32/current/header.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/header.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -930,6 +930,10 @@ nItem = infoPtr->uNumItem; iOrder = (phdi->mask & HDI_ORDER) ? phdi->iOrder : nItem; + if (iOrder < 0) + iOrder = 0; + else if (infoPtr->uNumItem < iOrder) + iOrder = infoPtr->uNumItem; if (infoPtr->uNumItem == 0) { infoPtr->items = Alloc (sizeof (HEADER_ITEM)); _____ Modified: vendor/wine/dlls/comctl32/current/listview.c --- vendor/wine/dlls/comctl32/current/listview.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/listview.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -389,7 +389,7 @@ #define LISTVIEW_DUMP(iP) do { \ TRACE("hwndSelf=%p, clrBk=0x%06lx, clrText=0x%06lx, clrTextBk=0x%06lx, ItemHeight=%d, ItemWidth=%d, Style=0x%08lx\n", \ iP->hwndSelf, iP->clrBk, iP->clrText, iP->clrTextBk, \ - iP->nItemHeight, iP->nItemWidth, infoPtr->dwStyle); \ + iP->nItemHeight, iP->nItemWidth, iP->dwStyle); \ TRACE("hwndSelf=%p, himlNor=%p, himlSml=%p, himlState=%p, Focused=%d, Hot=%d, exStyle=0x%08lx, Focus=%d\n", \ iP->hwndSelf, iP->himlNormal, iP->himlSmall, iP->himlState, \ iP->nFocusedItem, iP->nHotItem, iP->dwLvExStyle, iP->bFocus ); \ _____ Modified: vendor/wine/dlls/comctl32/current/propsheet.c --- vendor/wine/dlls/comctl32/current/propsheet.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/propsheet.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -2161,7 +2161,7 @@ { WCHAR szTitle[256]; MultiByteToWideChar(CP_ACP, 0, lpszText, -1, - szTitle, sizeof(szTitle)); + szTitle, sizeof(szTitle)/sizeof(WCHAR)); PROPSHEET_SetTitleW(hwndDlg, dwStyle, szTitle); } else _____ Modified: vendor/wine/dlls/comctl32/current/rebar.c --- vendor/wine/dlls/comctl32/current/rebar.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/rebar.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -366,7 +366,7 @@ { if( !TRACE_ON(rebar) ) return; TRACE("band info: "); - if (pB->fMask & RBBIM_ID); + if (pB->fMask & RBBIM_ID) TRACE("ID=%u, ", pB->wID); TRACE("size=%u, child=%p", pB->cbSize, pB->hwndChild); if (pB->fMask & RBBIM_COLORS) @@ -415,7 +415,7 @@ for (i = 0; i < iP->uNumBands; i++) { pB = &iP->bands[i]; TRACE("band # %u:", i); - if (pB->fMask & RBBIM_ID); + if (pB->fMask & RBBIM_ID) TRACE(" ID=%u", pB->wID); if (pB->fMask & RBBIM_CHILD) TRACE(" child=%p", pB->hwndChild); _____ Modified: vendor/wine/dlls/comctl32/current/rsrc.rc --- vendor/wine/dlls/comctl32/current/rsrc.rc 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/rsrc.rc 2005-10-08 09:19:17 UTC (rev 18320) @@ -1192,6 +1192,7 @@ * get localized bitmaps for example. */ +#include "comctl_Bg.rc" #include "comctl_Cn.rc" #include "comctl_Cs.rc" #include "comctl_De.rc" @@ -1202,6 +1203,7 @@ #include "comctl_Ja.rc" #include "comctl_Ko.rc" #include "comctl_Nl.rc" +#include "comctl_No.rc" #include "comctl_Pl.rc" #include "comctl_Pt.rc" #include "comctl_Ru.rc" _____ Modified: vendor/wine/dlls/comctl32/current/theming.c --- vendor/wine/dlls/comctl32/current/theming.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/theming.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -147,6 +147,20 @@ } /*********************************************************************** + * THEMING_Uninitialize + * + * Unregister shadow classes for standard controls. + */ +void THEMING_Uninitialize (void) +{ + int i; + for (i = 0; i < NUM_SUBCLASSES; i++) + { + UnregisterClassW (subclasses[i].className, NULL); + } +} + +/********************************************************************** * * THEMING_CallOriginalClass * * Determines the original window proc and calls it. _____ Modified: vendor/wine/dlls/comctl32/current/toolbar.c --- vendor/wine/dlls/comctl32/current/toolbar.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/toolbar.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -41,7 +41,6 @@ * - WM_WININICHANGE * - Notifications: * - NM_CHAR - * - NM_KEYDOWN * - TBN_GETOBJECT * - TBN_SAVE * - Button wrapping (under construction). @@ -1278,12 +1277,21 @@ btnPtr = infoPtr->buttons; x = infoPtr->nIndent; - /* this can get the parents width, to know how far we can extend - * this toolbar. We cannot use its height, as there may be multiple - * toolbars in a rebar control - */ - GetClientRect( GetParent(hwnd), &rc ); - infoPtr->nWidth = rc.right - rc.left; + if (GetParent(hwnd)) + { + /* this can get the parents width, to know how far we can extend + * this toolbar. We cannot use its height, as there may be multiple + * toolbars in a rebar control + */ + GetClientRect( GetParent(hwnd), &rc ); + infoPtr->nWidth = rc.right - rc.left; + } + else + { + GetWindowRect( hwnd, &rc ); + infoPtr->nWidth = rc.right - rc.left; + } + bButtonWrap = FALSE; TRACE("start ButtonWidth=%d, BitmapWidth=%d, nWidth=%d, nIndent=%d\n", @@ -2193,6 +2201,7 @@ WCHAR Buffer[256]; int i = 0; int index; + NMTBINITCUSTOMIZE nmtbic; infoPtr = custInfo->tbInfo; @@ -2202,10 +2211,9 @@ if (!TOOLBAR_SendNotify(&nmtb.hdr, infoPtr, TBN_QUERYINSERT)) return FALSE; - /* UNDOCUMENTED: dialog hwnd immediately follows NMHDR */ - memcpy(&nmtb.iItem, &hwnd, sizeof(hwnd)); + nmtbic.hwndDialog = hwnd; /* Send TBN_INITCUSTOMIZE notification */ - if (TOOLBAR_SendNotify ((NMHDR *) &nmtb, infoPtr, TBN_INITCUSTOMIZE) == + if (TOOLBAR_SendNotify (&nmtbic.hdr, infoPtr, TBN_INITCUSTOMIZE) == TBNRF_HIDEHELP) { TRACE("TBNRF_HIDEHELP requested\n"); @@ -5783,7 +5791,78 @@ } +static void +TOOLBAR_SetRelativeHotItem(TOOLBAR_INFO *infoPtr, INT iDirection, DWORD dwReason) +{ + INT i; + INT nNewHotItem = infoPtr->nHotItem; + + for (i = 0; i < infoPtr->nNumButtons; i++) + { + /* did we wrap? */ + if ((nNewHotItem + iDirection < 0) || + (nNewHotItem + iDirection >= infoPtr->nNumButtons)) + { + NMTBWRAPHOTITEM nmtbwhi; + nmtbwhi.idNew = infoPtr->buttons[nNewHotItem].idCommand; + nmtbwhi.iDirection = iDirection; + nmtbwhi.dwReason = dwReason; + + if (TOOLBAR_SendNotify(&nmtbwhi.hdr, infoPtr, TBN_WRAPHOTITEM)) + return; + } + + nNewHotItem += iDirection; + nNewHotItem = (nNewHotItem + infoPtr->nNumButtons) % infoPtr->nNumButtons; + + if ((infoPtr->buttons[nNewHotItem].fsState & TBSTATE_ENABLED) && + !(infoPtr->buttons[nNewHotItem].fsStyle & BTNS_SEP)) + { + TOOLBAR_SetHotItemEx(infoPtr, nNewHotItem, dwReason); + break; + } + } +} + static LRESULT +TOOLBAR_KeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); + NMKEY nmkey; + + nmkey.nVKey = (UINT)wParam; + nmkey.uFlags = HIWORD(lParam); + + if (TOOLBAR_SendNotify(&nmkey.hdr, infoPtr, NM_KEYDOWN)) + return DefWindowProcW(hwnd, WM_KEYDOWN, wParam, lParam); + + switch ((UINT)wParam) + { + case VK_LEFT: + case VK_UP: + TOOLBAR_SetRelativeHotItem(infoPtr, -1, HICF_ARROWKEYS); + break; + case VK_RIGHT: + case VK_DOWN: + TOOLBAR_SetRelativeHotItem(infoPtr, 1, HICF_ARROWKEYS); + break; + case VK_SPACE: + case VK_RETURN: + if ((infoPtr->nHotItem >= 0) && + (infoPtr->buttons[infoPtr->nHotItem].fsState & TBSTATE_ENABLED)) + { + SendMessageW (infoPtr->hwndNotify, WM_COMMAND, + MAKEWPARAM(infoPtr->buttons[infoPtr->nHotItem].idCommand, BN_CLICKED), + (LPARAM)hwnd); + } + break; + } + + return 0; +} + + +static LRESULT TOOLBAR_LButtonDblClk (HWND hwnd, WPARAM wParam, LPARAM lParam) { POINT pt; @@ -6080,7 +6159,7 @@ if (btnPtr->fsState & TBSTATE_ENABLED) { SendMessageW (infoPtr->hwndNotify, WM_COMMAND, - MAKEWPARAM(infoPtr->buttons[nHit].idCommand, 0), (LPARAM)hwnd); + MAKEWPARAM(infoPtr->buttons[nHit].idCommand, BN_CLICKED), (LPARAM)hwnd); } } @@ -6320,6 +6399,7 @@ /* paranoid!! */ infoPtr->dwStructSize = sizeof(TBBUTTON); infoPtr->nRows = 1; + infoPtr->nWidth = 0; /* fix instance handle, if the toolbar was created by CreateToolbarEx() */ if (!GetWindowLongPtrW (hwnd, GWLP_HINSTANCE)) { @@ -6483,23 +6563,24 @@ TRACE("TBN_GETINFOTIPA - got string %s\n", debugstr_a(tbgit.pszText)); - len = -1 + MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1, NULL, 0); - if (len > sizeof(lpnmtdi->szText)/sizeof(lpnmtdi->szText[0])-1) + len = MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1, NULL, 0); + if (len > sizeof(lpnmtdi->szText)/sizeof(lpnmtdi->szText[0])) { /* need to allocate temporary buffer in infoPtr as there * isn't enough space in buffer passed to us by the * tooltip control */ - infoPtr->pszTooltipText = Alloc((len+1)*sizeof(WCHAR)); + infoPtr->pszTooltipText = Alloc(len*sizeof(WCHAR)); if (infoPtr->pszTooltipText) { - MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, len+1, infoPtr->pszTooltipText, (len+1)*sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1, infoPtr->pszTooltipText, len); lpnmtdi->lpszText = infoPtr->pszTooltipText; return 0; } } else if (len > 0) { - MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, len+1, lpnmtdi->lpszText, (len+1)*sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1, + lpnmtdi->lpszText, sizeof(lpnmtdi->szText)/sizeof(lpnmtdi->szText[0])); return 0; } } @@ -6639,6 +6720,21 @@ static LRESULT +TOOLBAR_SetFocus (HWND hwnd, WPARAM wParam) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); + + TRACE("nHotItem = %d\n", infoPtr->nHotItem); + + /* make first item hot */ + if (infoPtr->nNumButtons > 0) + TOOLBAR_SetHotItemEx(infoPtr, 0, HICF_OTHER); + + return 0; +} + + +static LRESULT TOOLBAR_SetRedraw (HWND hwnd, WPARAM wParam, LPARAM lParam) /***************************************************** * @@ -7091,7 +7187,9 @@ case WM_GETFONT: return TOOLBAR_GetFont (hwnd, wParam, lParam); -/* case WM_KEYDOWN: */ + case WM_KEYDOWN: + return TOOLBAR_KeyDown (hwnd, wParam, lParam); + /* case WM_KILLFOCUS: */ case WM_LBUTTONDBLCLK: @@ -7139,6 +7237,9 @@ case WM_PAINT: return TOOLBAR_Paint (hwnd, wParam); + case WM_SETFOCUS: + return TOOLBAR_SetFocus (hwnd, wParam); + case WM_SETREDRAW: return TOOLBAR_SetRedraw (hwnd, wParam, lParam); _____ Modified: vendor/wine/dlls/comctl32/current/treeview.c --- vendor/wine/dlls/comctl32/current/treeview.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/comctl32/current/treeview.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -775,8 +775,8 @@ wineItem->pszText = newText; MultiByteToWideChar( CP_ACP, 0, (LPSTR)callback.item.pszText, -1, - wineItem->pszText, buflen); - wineItem->cchTextMax = buflen; + wineItem->pszText, buflen/sizeof(WCHAR)); + wineItem->cchTextMax = buflen/sizeof(WCHAR); } /* If ReAlloc fails we have nothing to do, but keep original text */ } @@ -818,8 +818,8 @@ wineItem->pszText = newText; MultiByteToWideChar( CP_ACP, 0, (LPSTR)callback.item.pszText, -1, - wineItem->pszText, buflen); - wineItem->cchTextMax = buflen; + wineItem->pszText, buflen/sizeof(WCHAR)); + wineItem->cchTextMax = buflen/sizeof(WCHAR); if (oldText) Free(oldText); } _____ Modified: vendor/wine/dlls/commdlg/current/cdlg32.c --- vendor/wine/dlls/commdlg/current/cdlg32.c 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/commdlg/current/cdlg32.c 2005-10-08 09:19:17 UTC (rev 18320) @@ -158,7 +158,7 @@ if (COMDLG32_TlsIndex == TLS_OUT_OF_INDEXES) COMDLG32_TlsIndex = TlsAlloc(); if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES) - TlsSetValue(COMDLG32_TlsIndex, (void *)err); + TlsSetValue(COMDLG32_TlsIndex, (LPVOID)(DWORD_PTR)err); else FIXME("No Tls Space\n"); } @@ -176,7 +176,7 @@ DWORD WINAPI CommDlgExtendedError(void) { if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES) - return (DWORD)TlsGetValue(COMDLG32_TlsIndex); + return (DWORD_PTR)TlsGetValue(COMDLG32_TlsIndex); else return 0; /* we never set an error, so there isn't one */ } _____ Added: vendor/wine/dlls/commdlg/current/cdlg_Bg.rc --- vendor/wine/dlls/commdlg/current/cdlg_Bg.rc 2005-10-08 00:41:31 UTC (rev 18319) +++ vendor/wine/dlls/commdlg/current/cdlg_Bg.rc 2005-10-08 09:19:17 UTC (rev 18320) @@ -0,0 +1,472 @@ +/* + * Copyright 2005 Milko Krachounov + * + * 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 + */ + +/* + * Ê¾Û Þþ޸ݯ ´Þ°Õ°Õ õÓ ÝÕ ´Þ´Óý ÝÕ¨¯, ÓýÓ Óþ Ò¯ ´Þ´ÝÓ§. + * ?Û¯ ÞýÓ ´¯ßÙÕýÞ Ý Û¯Ú õÓ ÒÞ ¯´ÓÔÞ. + */ + +LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "??Ô¯Þ" +FONT 8, "MS Shell Dlg" +{ + LTEXT "&?ýÕ ÝÓ ¶ÓÚÙ:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&?ÞÕÛ?¯ÞÞ:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&ÊÞ´ ¶ÓÚÙ¯ÔÕ:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&˱?¯Ú±?ÔÓ:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "??Ô¯Þ", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "??ýÕÝÞ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&¤¯ý¯¨", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "ÐÓý¯ þÓ &¸Õ?ÕÝÕ", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "з§ÓÝÞ ÛÓ?¯ ..." +FONT 8, "MS Shell Dlg" +{ + LTEXT "&?ýÕ ÝÓ ¶ÓÚÙ:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&?ÞÕÛ?¯ÞÞ:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&ÊÞ´ ¶ÓÚÙ¯ÔÕ:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&˱?¯Ú±?ÔÓ:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "з§ÓÝÞ", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "??ýÕÝÞ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&¤¯ý¯¨", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "ÐÓý¯ þÓ &¸Õ?ÕÝÕ", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "¤Õ¸Ó?" +FONT 8, "MS Shell Dlg" +{ + LTEXT "¤ÞÝ?Õ:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "ðÓþ´Õ¸Ó?ÓÚ", grp1, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&?±Þ¸Û¯", rad1, 16, 45, 60, 12 + RADIOBUTTON "&?þßÓݯ?¯", rad2, 16, 60, 60, 12 + RADIOBUTTON "&Ð?ÓÝÞ÷Þ", rad3, 16, 75, 60, 12 + DEFPUSHBUTTON "ðÓþ´Õ¸Ó?ÓÚ", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "??ýÕÝÞ", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&?Ó±?¯ÚÛÞ", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&??:", 1090, 60, 80, 30, 9 + LTEXT "&?¯:", 1091, 120, 80, 30, 9 + LTEXT "&?Ó¸Õ±?Ô¯:", 1092, 6, 100, 76, 9 + COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "¤Õ¸Ó? Ô·Ô &¶ÓÚÙ", chx1, 20, 100, 60, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "ÐÒ·±?Õݯ", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "?Ó±?¯ÚÛÞ ÝÓ ´Õ¸Ó?ÓÝÕ?¯" +FONT 8, "MS Shell Dlg" +{ + GROUPBOX "¤ÞÝ?Õ", grp1, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "¤ÞÝ?Õ ´¯ ´¯õ&ÓþßÞÓÝÕ", rad1, 16, 20, 80, 12 + LTEXT "[Ý ýÓ]", 1088, 35, 35, 120, 9 + RADIOBUTTON "?¾Ò &´ÞÝ?Õ", rad2, 16, 50, 80, 12 + COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "??ýÕÝÞ", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&?Ó±?¯ÚÛÞ", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "?ÞÕÝ?Ó÷Þ ", grp2, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "¤¯&?Õ?", rad3, 50, 100, 40, 12 + RADIOBUTTON "¤ÕÚþÓ&µ", rad4, 50, 115, 40, 12 + ICON "LANDSCAP", stc10, 10, 95, 32, 32 + ICON "PORTRAIT", stc11, 10, 95, 32, 32 + GROUPBOX "Paper", grp3, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "ðÓþ&ýÕ", 1089, 130, 95, 30, 9 + LTEXT "&?þ?¯¸ÝÞÛ", 1090, 130, 110, 30, 9 + COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ÏÞ¶?" +FONT 8, "MS Shell Dlg" +{ + LTEXT "&ÏÞ¶?:",stc1 ,6,3,40,9 + COMBOBOX cmb1, 6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Ð?ÞÙ:",stc2 ,108,3,44,9 + COMBOBOX cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "ðÓ&þýÕ:",stc3,179,3,30,9 + COMBOBOX cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "??ýÕÝÞ",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "¤Þ&Ù¯µÞ", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&¤¯ý¯¨" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "?¶ÕÛ?Þ",grp1,6,72,84,34,WS_GROUP + CHECKBOX "&ÃÓ¸Õ?ÓÝ", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "¤¯õ&¸Õ?ÓÝ", chx2, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&ÍÔ ?:", stc4 ,6,110,30,9 + COMBOBOX cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "¤ÞýÕ",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "&?þß¾ÛÓ:",stc7 ,98,114,40,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 314, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ÍÔ ?" +FONT 8, "MS Shell Dlg" +{ + LTEXT "&?±Ý¯ÔÝÞ ÷ÔÕ?¯ÔÕ:", 1088, 4, 4, 140, 10 + LTEXT "&¤¯?ÕßÞ?ÕÙ±ÛÞ ÷ÔÕ?¯ÔÕ:", 1089, 4, 106, 140, 10 + LTEXT "ÍÔ ?|&¤Ù·?ÕÝ", 1090, 150, 151, 48, 10 + LTEXT "&ÎÕÔÕݯ:", 726 /*1094*/,261,126,32,10 + EDITTEXT 706, 295,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&ÃÕÙÕݯ:",727/*1095*/,261,140,32,10 + EDITTEXT 707, 295,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&ÐÞݳ¯:",728 /*1096*/,261,154,32,10 + EDITTEXT 708, 295,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&ʯÝ:" ,723 /*1091*/,197,126,42,10 + EDITTEXT 703, 241,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&?Ó±Þ?Õݯ±?:" ,724 /*1092*/,197,140,42,10 + EDITTEXT 704, 241,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&?±ÔÕ?Õݯ±?:" ,725 /*1093*/,197,154,42,10 + EDITTEXT 705, 241,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "OK", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "??ýÕÝÞ", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "¤¯ý¯¨", pshHelp,100,166, 44, 14 + PUSHBUTTON "&?¯ßÓÔÞ ´¯?ÕßÞ?ÕÙ±ÛÞ ÷Ô ?", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&?´ÕõÕÙÞ ÷ÔÕ?¯ÔÕ >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&¤",713,300,200,4,14 /* just a dummy: '¤' is like &¤ in "&¤Ù·?ÕÝ" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 281, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Ê·±ÕÝÕ" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Ê·±Þ &þÓ:", -1, 4, 8, 42, 8 + EDITTEXT edt1, 47, 7, 158, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&ÐÓý¯ ÷ÕÙÞ õ¾ýÞ", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&ξԱ?ÔÞ?ÕÙÕÝ ÕÒÞ±?·", chx2, 4, 42, 96, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "¤¯±¯ÛÓ", grp1, 107, 26, 98, 28 + CONTROL "?Ó&Ò¯Õ", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 40, 12 + CONTROL "?Ó&õ¯Ù¾", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 158, 38, 40, 12 + + DEFPUSHBUTTON "&?ÓýÕÞ ±ÙÕõÔÓ¨", IDOK, 212, 5, 65, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "??ýÕÝÞ", IDCANCEL , 212, 23, 65, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&¤¯ý¯¨", pshHelp , 212, 45, 65, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 281, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ÃÓý ÝÓ" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Ê·±Þ &þÓ:", -1, 4, 9, 48, 8 + EDITTEXT edt1, 47, 7, 158, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "ÃÓ&ý ÝÓ ±:", -1, 4, 26, 48, 8 + EDITTEXT edt2, 47, 24, 158, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&ÐÓý¯ ÷ÕÙÞ õ¾ýÞ", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&ξԱ?ÔÞ?ÕÙÕÝ ÕÒÞ±?·", chx2, 5, 62, 100, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "&?ÓýÕÞ ±ÙÕõÔÓ¨", IDOK, 212, 4, 65, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "&ÃÓýÕÝÞ", psh1 , 212, 21, 65, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ÃÓýÕÝÞ &Ô±Þ¸ÛÞ", psh2 , 212, 38, 65, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "??ý ÝÓ", IDCANCEL , 212, 55, 65, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&¤¯ý¯¨", pshHelp , 212, 75, 65, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 321, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "¤Õ¸Ó?" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "??ýÕÝÞ", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&¤¯ý¯¨", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "¤ÞÝ?Õ", grp4, 8, 4, 305,84, WS_GROUP + CONTROL "¤Õ¸Ó? Ô·Ô &¶ÓÚÙ", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,217,70,74,12 + PUSHBUTTON "ÐÔ¯&Ú±?ÔÓ", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&?ýÕ:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "з±?¯ ÝÞÕ:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "ÊÕÛ±?", stc12, 57, 36, 219,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "ÊÞ´:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "ÊÕÛ±?", stc11, 57, 48, 219,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "? ±?¯:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "ÊÕÛ±?", stc14, 57, 60, 219,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "?¯ýÕÝ?Ó:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "ÊÕÛ±?", stc13, 57, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "?¯´Þ ", grp2, 172, 92, 141,64, WS_GROUP + LTEXT "?¯Ú &Û¯´Þ :",stc5,180,108,68,8 + ICON "", ico3, 174,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "¤¯õ&ÕµõÓÝÕ", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,252,130,57,12 + EDITTEXT edt3, 252,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "ðÓþ´Õ¸Ó?ÓÚ", grp1, 8,92, 156,64, WS_GROUP + CONTROL "&?±Þ¸Û¯", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "&Ð?ÓÝÞ÷Þ", rad3,"Button",BS_AUTORADIOBUTTON,16,122,48,12 + CONTROL "&?þßÓݯ?¯", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 [truncated at 1000 lines; 47611 more skipped]
19 years, 2 months
1
0
0
0
[greatlrd] 18319: change from warning to allowwarnings ="true" thx Christoph_vW and blight_
by greatlrd@svn.reactos.com
change from warning to allowwarnings ="true" thx Christoph_vW and blight_ Modified: trunk/reactos/lib/dinput/dinput.xml _____ Modified: trunk/reactos/lib/dinput/dinput.xml --- trunk/reactos/lib/dinput/dinput.xml 2005-10-08 00:21:29 UTC (rev 18318) +++ trunk/reactos/lib/dinput/dinput.xml 2005-10-08 00:41:31 UTC (rev 18319) @@ -1,4 +1,4 @@ -<module name="dinput" type="win32dll" baseaddress="${BASEADDRESS_DINPUT}" installbase="system32" installname="dinput.dll" warnings="true"> +<module name="dinput" type="win32dll" baseaddress="${BASEADDRESS_DINPUT}" installbase="system32" installname="dinput.dll" allowwarnings ="true"> <importlibrary definition="dinput.spec.def" /> <include base="dinput">.</include> <include base="ReactOS">include/wine</include>
19 years, 2 months
1
0
0
0
← Newer
1
...
57
58
59
60
61
62
63
...
74
Older →
Jump to page:
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
Results per page:
10
25
50
100
200